1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5efeef26fSAndrew Rist * distributed with this work for additional information
6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist * software distributed under the License is distributed on an
15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17efeef26fSAndrew Rist * specific language governing permissions and limitations
18efeef26fSAndrew Rist * under the License.
19cdf0e10cSrcweir *
20efeef26fSAndrew Rist *************************************************************/
21efeef26fSAndrew Rist
22efeef26fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include <swtypes.hxx>
32cdf0e10cSrcweir #include <sfx2/linkmgr.hxx>
33cdf0e10cSrcweir #include <usrfld.hxx>
34cdf0e10cSrcweir #include <docufld.hxx>
35cdf0e10cSrcweir #include <expfld.hxx>
36cdf0e10cSrcweir #include <ddefld.hxx>
37cdf0e10cSrcweir #include <view.hxx>
38cdf0e10cSrcweir #include <wrtsh.hxx>
39cdf0e10cSrcweir #include <doc.hxx>
40cdf0e10cSrcweir #include <docary.hxx>
41cdf0e10cSrcweir #include <swmodule.hxx>
42cdf0e10cSrcweir #include <fldvar.hxx>
43cdf0e10cSrcweir #include <calc.hxx>
44cdf0e10cSrcweir #include <svl/zformat.hxx>
45cdf0e10cSrcweir #include <globals.hrc>
46cdf0e10cSrcweir #include <fldui.hrc>
47cdf0e10cSrcweir #include <fldtdlg.hrc>
48cdf0e10cSrcweir
49cdf0e10cSrcweir #define USER_DATA_VERSION_1 "1"
50cdf0e10cSrcweir #define USER_DATA_VERSION USER_DATA_VERSION_1
51cdf0e10cSrcweir /*--------------------------------------------------------------------
52cdf0e10cSrcweir Beschreibung:
53cdf0e10cSrcweir --------------------------------------------------------------------*/
54cdf0e10cSrcweir
SwFldVarPage(Window * pParent,const SfxItemSet & rCoreSet)55cdf0e10cSrcweir SwFldVarPage::SwFldVarPage(Window* pParent, const SfxItemSet& rCoreSet ) :
56cdf0e10cSrcweir SwFldPage ( pParent, SW_RES( TP_FLD_VAR ), rCoreSet ),
57cdf0e10cSrcweir aTypeFT (this, SW_RES(FT_VARTYPE)),
58cdf0e10cSrcweir aTypeLB (this, SW_RES(LB_VARTYPE)),
59cdf0e10cSrcweir aSelectionFT (this, SW_RES(FT_VARSELECTION)),
60cdf0e10cSrcweir aSelectionLB (this, SW_RES(LB_VARSELECTION)),
61cdf0e10cSrcweir aNameFT (this, SW_RES(FT_VARNAME)),
62cdf0e10cSrcweir aNameED (this, SW_RES(ED_VARNAME)),
63cdf0e10cSrcweir aValueFT (this, SW_RES(FT_VARVALUE)),
64cdf0e10cSrcweir aValueED (this, SW_RES(ED_VARVALUE)),
65cdf0e10cSrcweir aFormatFT (this, SW_RES(FT_VARFORMAT)),
66cdf0e10cSrcweir aNumFormatLB (this, SW_RES(LB_VARNUMFORMAT)),
67cdf0e10cSrcweir aFormatLB (this, SW_RES(LB_VARFORMAT)),
68cdf0e10cSrcweir aChapterHeaderFT(this, SW_RES(FT_VARCHAPTERHEADER)),
69cdf0e10cSrcweir aChapterLevelFT (this, SW_RES(FT_VARCHAPTERLEVEL)),
70cdf0e10cSrcweir aChapterLevelLB (this, SW_RES(LB_VARCHAPTERLEVEL)),
71cdf0e10cSrcweir aInvisibleCB (this, SW_RES(CB_VARINVISIBLE)),
72cdf0e10cSrcweir aSeparatorFT (this, SW_RES(FT_VARSEPARATOR)),
73cdf0e10cSrcweir aSeparatorED (this, SW_RES(ED_VARSEPARATOR)),
74cdf0e10cSrcweir aNewDelTBX (this, SW_RES(TBX_VARNEWDEL)),
75cdf0e10cSrcweir bInit (sal_True)
76cdf0e10cSrcweir {
77cdf0e10cSrcweir FreeResource();
78cdf0e10cSrcweir
79cdf0e10cSrcweir aNewDelTBX.SetSizePixel( aNewDelTBX.CalcWindowSizePixel() );
80cdf0e10cSrcweir
81cdf0e10cSrcweir long nDelta = ( aValueED.GetSizePixel().Height() -
82cdf0e10cSrcweir aNewDelTBX.GetSizePixel().Height() ) / 2;
83cdf0e10cSrcweir Point aNewPnt = aNewDelTBX.GetPosPixel();
84cdf0e10cSrcweir aNewPnt.Y() += nDelta;
85cdf0e10cSrcweir aNewDelTBX.SetPosPixel( aNewPnt );
86cdf0e10cSrcweir
87cdf0e10cSrcweir sOldValueFT = aValueFT.GetText();
88cdf0e10cSrcweir sOldNameFT = aNameFT.GetText();
89cdf0e10cSrcweir
90cdf0e10cSrcweir for (sal_uInt16 i = 1; i <= MAXLEVEL; i++)
91cdf0e10cSrcweir aChapterLevelLB.InsertEntry(String::CreateFromInt32(i));
92cdf0e10cSrcweir
93cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos(0);
94cdf0e10cSrcweir //enable 'active' language selection
95cdf0e10cSrcweir aNumFormatLB.SetShowLanguageControl(sal_True);
96cdf0e10cSrcweir }
97cdf0e10cSrcweir
98cdf0e10cSrcweir /*--------------------------------------------------------------------
99cdf0e10cSrcweir Beschreibung:
100cdf0e10cSrcweir --------------------------------------------------------------------*/
101cdf0e10cSrcweir
~SwFldVarPage()102cdf0e10cSrcweir SwFldVarPage::~SwFldVarPage()
103cdf0e10cSrcweir {
104cdf0e10cSrcweir }
105cdf0e10cSrcweir
106cdf0e10cSrcweir /*--------------------------------------------------------------------
107cdf0e10cSrcweir Beschreibung:
108cdf0e10cSrcweir --------------------------------------------------------------------*/
109cdf0e10cSrcweir
Reset(const SfxItemSet &)110cdf0e10cSrcweir void SwFldVarPage::Reset(const SfxItemSet& )
111cdf0e10cSrcweir {
112cdf0e10cSrcweir SavePos(&aTypeLB);
113cdf0e10cSrcweir
114cdf0e10cSrcweir Init(); // Allgemeine initialisierung
115cdf0e10cSrcweir
116cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_False);
117cdf0e10cSrcweir aTypeLB.Clear();
118cdf0e10cSrcweir
119cdf0e10cSrcweir sal_uInt16 nPos, nTypeId;
120cdf0e10cSrcweir
121cdf0e10cSrcweir if (!IsFldEdit())
122cdf0e10cSrcweir {
123cdf0e10cSrcweir // TypeListBox initialisieren
124cdf0e10cSrcweir const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
125cdf0e10cSrcweir
126cdf0e10cSrcweir for (short i = rRg.nStart; i < rRg.nEnd; ++i)
127cdf0e10cSrcweir {
128cdf0e10cSrcweir nTypeId = GetFldMgr().GetTypeId(i);
129cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
130cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
131cdf0e10cSrcweir }
132cdf0e10cSrcweir }
133cdf0e10cSrcweir else
134cdf0e10cSrcweir {
135*1786df5aSOliver-Rainer Wittmann const SwField* pCurField = GetCurField();
136*1786df5aSOliver-Rainer Wittmann ASSERT( pCurField != NULL,
137*1786df5aSOliver-Rainer Wittmann "<SwFldVarPage::Reset(..)> - <SwField> instance missing!" );
138cdf0e10cSrcweir nTypeId = pCurField->GetTypeId();
139cdf0e10cSrcweir if ( nTypeId == TYP_SETINPFLD )
140cdf0e10cSrcweir nTypeId = TYP_INPUTFLD;
141cdf0e10cSrcweir nPos = aTypeLB.InsertEntry( GetFldMgr().GetTypeStr( GetFldMgr().GetPos( nTypeId ) ) );
142cdf0e10cSrcweir aTypeLB.SetEntryData( nPos, reinterpret_cast< void* >( nTypeId ) );
143cdf0e10cSrcweir aNumFormatLB.SetAutomaticLanguage( pCurField->IsAutomaticLanguage() );
144cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
145cdf0e10cSrcweir if ( !pSh )
146cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
147cdf0e10cSrcweir if ( pSh )
148cdf0e10cSrcweir {
149cdf0e10cSrcweir const SvNumberformat* pFormat = pSh->GetNumberFormatter()->GetEntry( pCurField->GetFormat() );
150cdf0e10cSrcweir if ( pFormat )
151cdf0e10cSrcweir aNumFormatLB.SetLanguage( pFormat->GetLanguage() );
152cdf0e10cSrcweir }
153cdf0e10cSrcweir }
154cdf0e10cSrcweir
155cdf0e10cSrcweir // alte Pos selektieren
156cdf0e10cSrcweir RestorePos(&aTypeLB);
157cdf0e10cSrcweir
158cdf0e10cSrcweir aTypeLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
159cdf0e10cSrcweir aTypeLB.SetSelectHdl (LINK(this, SwFldVarPage, TypeHdl));
160cdf0e10cSrcweir aSelectionLB.SetSelectHdl (LINK(this, SwFldVarPage, SubTypeHdl));
161cdf0e10cSrcweir aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
162cdf0e10cSrcweir aFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
163cdf0e10cSrcweir aNumFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
164cdf0e10cSrcweir aNameED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl));
165cdf0e10cSrcweir aValueED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl));
166cdf0e10cSrcweir aNewDelTBX.SetClickHdl (LINK(this, SwFldVarPage, TBClickHdl));
167cdf0e10cSrcweir aChapterLevelLB.SetSelectHdl (LINK(this, SwFldVarPage, ChapterHdl));
168cdf0e10cSrcweir aSeparatorED.SetModifyHdl (LINK(this, SwFldVarPage, SeparatorHdl));
169cdf0e10cSrcweir
170cdf0e10cSrcweir if( !IsRefresh() )
171cdf0e10cSrcweir {
172cdf0e10cSrcweir String sUserData = GetUserData();
173cdf0e10cSrcweir if(!IsRefresh() && sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
174cdf0e10cSrcweir {
175cdf0e10cSrcweir String sVal = sUserData.GetToken(1, ';');
176cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)sVal.ToInt32();
177cdf0e10cSrcweir if( USHRT_MAX != nVal )
178cdf0e10cSrcweir {
179cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aTypeLB.GetEntryCount(); i++)
180cdf0e10cSrcweir if(nVal == (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(i))
181cdf0e10cSrcweir {
182cdf0e10cSrcweir aTypeLB.SelectEntryPos(i);
183cdf0e10cSrcweir break;
184cdf0e10cSrcweir }
185cdf0e10cSrcweir }
186cdf0e10cSrcweir }
187cdf0e10cSrcweir }
188cdf0e10cSrcweir TypeHdl(0);
189cdf0e10cSrcweir
190cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_True);
191cdf0e10cSrcweir
192cdf0e10cSrcweir if (IsFldEdit())
193cdf0e10cSrcweir {
194cdf0e10cSrcweir aSelectionLB.SaveValue();
195cdf0e10cSrcweir aFormatLB.SaveValue();
196cdf0e10cSrcweir nOldFormat = aNumFormatLB.GetFormat();
197cdf0e10cSrcweir aNameED.SaveValue();
198cdf0e10cSrcweir aValueED.SaveValue();
199cdf0e10cSrcweir aInvisibleCB.SaveValue();
200cdf0e10cSrcweir aChapterLevelLB.SaveValue();
201cdf0e10cSrcweir aSeparatorED.SaveValue();
202cdf0e10cSrcweir }
203cdf0e10cSrcweir }
204cdf0e10cSrcweir
205cdf0e10cSrcweir /*--------------------------------------------------------------------
206cdf0e10cSrcweir Beschreibung:
207cdf0e10cSrcweir --------------------------------------------------------------------*/
208cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,TypeHdl,ListBox *,EMPTYARG)209cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, TypeHdl, ListBox *, EMPTYARG )
210cdf0e10cSrcweir {
211cdf0e10cSrcweir // Alte ListBoxPos sichern
212cdf0e10cSrcweir const sal_uInt16 nOld = GetTypeSel();
213cdf0e10cSrcweir
214cdf0e10cSrcweir // Aktuelle ListBoxPos
215cdf0e10cSrcweir SetTypeSel(aTypeLB.GetSelectEntryPos());
216cdf0e10cSrcweir
217cdf0e10cSrcweir if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
218cdf0e10cSrcweir {
219cdf0e10cSrcweir SetTypeSel(0);
220cdf0e10cSrcweir aTypeLB.SelectEntryPos(0);
221cdf0e10cSrcweir }
222cdf0e10cSrcweir
223cdf0e10cSrcweir if (nOld != GetTypeSel() || nOld == LISTBOX_ENTRY_NOTFOUND)
224cdf0e10cSrcweir {
225cdf0e10cSrcweir bInit = sal_True;
226cdf0e10cSrcweir if (nOld != LISTBOX_ENTRY_NOTFOUND)
227cdf0e10cSrcweir {
228cdf0e10cSrcweir aNameED.SetText(aEmptyStr);
229cdf0e10cSrcweir aValueED.SetText(aEmptyStr);
230cdf0e10cSrcweir }
231cdf0e10cSrcweir
232cdf0e10cSrcweir aValueED.SetDropEnable(sal_False);
233cdf0e10cSrcweir UpdateSubType(); // Auswahl-Listboxen initialisieren
234cdf0e10cSrcweir }
235cdf0e10cSrcweir
236cdf0e10cSrcweir bInit = sal_False;
237cdf0e10cSrcweir
238cdf0e10cSrcweir return 0;
239cdf0e10cSrcweir }
240cdf0e10cSrcweir
241cdf0e10cSrcweir /*--------------------------------------------------------------------
242cdf0e10cSrcweir Beschreibung:
243cdf0e10cSrcweir --------------------------------------------------------------------*/
244cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,SubTypeHdl,ListBox *,pBox)245cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, SubTypeHdl, ListBox *, pBox )
246cdf0e10cSrcweir {
247cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
248cdf0e10cSrcweir sal_uInt16 nSelPos = aSelectionLB.GetSelectEntryPos();
249cdf0e10cSrcweir
250cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
251cdf0e10cSrcweir nSelPos = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSelPos);
252cdf0e10cSrcweir
253cdf0e10cSrcweir if (IsFldEdit() && (!pBox || bInit))
254cdf0e10cSrcweir {
255cdf0e10cSrcweir if (nTypeId != TYP_FORMELFLD)
256cdf0e10cSrcweir aNameED.SetText(GetFldMgr().GetCurFldPar1());
257cdf0e10cSrcweir
258cdf0e10cSrcweir aValueED.SetText(GetFldMgr().GetCurFldPar2());
259cdf0e10cSrcweir }
260cdf0e10cSrcweir
261cdf0e10cSrcweir if (aNameFT.GetText() != sOldNameFT)
262cdf0e10cSrcweir aNameFT.SetText(sOldNameFT);
263cdf0e10cSrcweir if (aValueFT.GetText() != sOldValueFT)
264cdf0e10cSrcweir aValueFT.SetText(sOldValueFT);
265cdf0e10cSrcweir
266cdf0e10cSrcweir aNumFormatLB.SetUpdateMode(sal_False);
267cdf0e10cSrcweir aFormatLB.SetUpdateMode(sal_False);
268cdf0e10cSrcweir FillFormatLB(nTypeId);
269cdf0e10cSrcweir
270cdf0e10cSrcweir sal_uInt16 nSize = aFormatLB.GetEntryCount();
271cdf0e10cSrcweir
272cdf0e10cSrcweir sal_Bool bValue = sal_False, bName = sal_False, bNumFmt = sal_False,
273cdf0e10cSrcweir bInvisible = sal_False, bSeparator = sal_False, bChapterLevel = sal_False;
274cdf0e10cSrcweir sal_Bool bFormat = nSize != 0;
275cdf0e10cSrcweir
276cdf0e10cSrcweir switch ( nTypeId )
277cdf0e10cSrcweir {
278cdf0e10cSrcweir case TYP_USERFLD:
279cdf0e10cSrcweir {
280cdf0e10cSrcweir // Benutzertyp aendern oder anlegen
281cdf0e10cSrcweir SwUserFieldType* pType = (SwUserFieldType*)
282cdf0e10cSrcweir GetFldMgr().GetFldType( RES_USERFLD, nSelPos );
283cdf0e10cSrcweir
284cdf0e10cSrcweir if ( pType )
285cdf0e10cSrcweir {
286cdf0e10cSrcweir if ( !IsFldEdit() )
287cdf0e10cSrcweir {
288cdf0e10cSrcweir if ( pBox || ( bInit && !IsRefresh() ) ) // Nur bei Interaktion mit Maus
289cdf0e10cSrcweir {
290cdf0e10cSrcweir aNameED.SetText( pType->GetName() );
291cdf0e10cSrcweir
292cdf0e10cSrcweir if ( pType->GetType() == UF_STRING )
293cdf0e10cSrcweir {
294cdf0e10cSrcweir aValueED.SetText( pType->GetContent() );
295cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 0 );
296cdf0e10cSrcweir }
297cdf0e10cSrcweir else
298cdf0e10cSrcweir aValueED.SetText( pType->GetContent() );
299cdf0e10cSrcweir // aValueED.SetText(pType->GetContent(aNumFormatLB.GetFormat()));
300cdf0e10cSrcweir }
301cdf0e10cSrcweir }
302cdf0e10cSrcweir else
303cdf0e10cSrcweir aValueED.SetText( pType->GetContent() );
304cdf0e10cSrcweir }
305cdf0e10cSrcweir else
306cdf0e10cSrcweir {
307cdf0e10cSrcweir if ( pBox ) // Nur bei Interaktion mit Maus
308cdf0e10cSrcweir {
309cdf0e10cSrcweir aNameED.SetText( aEmptyStr );
310cdf0e10cSrcweir aValueED.SetText( aEmptyStr );
311cdf0e10cSrcweir }
312cdf0e10cSrcweir }
313cdf0e10cSrcweir bValue = bName = bNumFmt = bInvisible = sal_True;
314cdf0e10cSrcweir
315cdf0e10cSrcweir aValueED.SetDropEnable( sal_True );
316cdf0e10cSrcweir break;
317cdf0e10cSrcweir }
318cdf0e10cSrcweir
319cdf0e10cSrcweir case TYP_SETFLD:
320cdf0e10cSrcweir bValue = sal_True;
321cdf0e10cSrcweir
322cdf0e10cSrcweir bNumFmt = bInvisible = sal_True;
323cdf0e10cSrcweir
324cdf0e10cSrcweir if ( !IsFldDlgHtmlMode() )
325cdf0e10cSrcweir bName = sal_True;
326cdf0e10cSrcweir else
327cdf0e10cSrcweir {
328cdf0e10cSrcweir aNumFormatLB.Clear();
329cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_SETVAR_TEXT ), 0 );
330cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
331cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 0 );
332cdf0e10cSrcweir }
333cdf0e10cSrcweir // gibt es ein entprechendes SetField
334cdf0e10cSrcweir if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus
335cdf0e10cSrcweir {
336cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
337cdf0e10cSrcweir {
338cdf0e10cSrcweir String sName( aSelectionLB.GetSelectEntry() );
339cdf0e10cSrcweir aNameED.SetText( sName );
340cdf0e10cSrcweir
341cdf0e10cSrcweir if ( !IsFldDlgHtmlMode() )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
344cdf0e10cSrcweir if ( !pSh )
345cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
346cdf0e10cSrcweir if ( pSh )
347cdf0e10cSrcweir {
348cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
349cdf0e10cSrcweir pSh->GetFldType( RES_SETEXPFLD, sName );
350cdf0e10cSrcweir
351cdf0e10cSrcweir if ( pSetTyp && pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING )
352cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 0 ); // Textuell
353cdf0e10cSrcweir }
354cdf0e10cSrcweir }
355cdf0e10cSrcweir }
356cdf0e10cSrcweir }
357*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && IsFldEdit() )
358cdf0e10cSrcweir {
359cdf0e10cSrcweir // GetFormula fuehrt bei Datumsformaten zu Problemen,
360cdf0e10cSrcweir // da nur der numerische Wert ohne Formatierung returned wird.
361cdf0e10cSrcweir // Muss aber verwendet werden, da sonst bei GetPar2 nur der vom
362cdf0e10cSrcweir // Kalkulator errechnete Wert angezeigt werden wuerde
363cdf0e10cSrcweir // (statt test2 = test + 1)
364cdf0e10cSrcweir aValueED.SetText( ( (SwSetExpField*) GetCurField() )->GetFormula() );
365cdf0e10cSrcweir }
366cdf0e10cSrcweir aValueED.SetDropEnable( sal_True );
367cdf0e10cSrcweir break;
368cdf0e10cSrcweir
369cdf0e10cSrcweir case TYP_FORMELFLD:
370cdf0e10cSrcweir {
371cdf0e10cSrcweir bValue = sal_True;
372cdf0e10cSrcweir bNumFmt = sal_True;
373cdf0e10cSrcweir aValueFT.SetText( SW_RESSTR( STR_FORMULA ) );
374cdf0e10cSrcweir aValueED.SetDropEnable( sal_True );
375cdf0e10cSrcweir }
376cdf0e10cSrcweir break;
377cdf0e10cSrcweir
378cdf0e10cSrcweir case TYP_GETFLD:
379cdf0e10cSrcweir {
380cdf0e10cSrcweir if ( !IsFldEdit() )
381cdf0e10cSrcweir {
382cdf0e10cSrcweir aNameED.SetText( aEmptyStr );
383cdf0e10cSrcweir aValueED.SetText( aEmptyStr );
384cdf0e10cSrcweir }
385cdf0e10cSrcweir
386cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
387cdf0e10cSrcweir {
388cdf0e10cSrcweir String sName( aSelectionLB.GetSelectEntry() );
389cdf0e10cSrcweir if ( !IsFldEdit() )
390cdf0e10cSrcweir aNameED.SetText( sName );
391cdf0e10cSrcweir
392cdf0e10cSrcweir // gibt es ein entprechendes SetField
393cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
394cdf0e10cSrcweir if ( !pSh )
395cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
396cdf0e10cSrcweir if ( pSh )
397cdf0e10cSrcweir {
398cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
399cdf0e10cSrcweir pSh->GetFldType( RES_SETEXPFLD, sName );
400cdf0e10cSrcweir
401cdf0e10cSrcweir if ( pSetTyp )
402cdf0e10cSrcweir {
403cdf0e10cSrcweir if ( pSetTyp->GetType() & nsSwGetSetExpType::GSE_STRING ) // Textuell?
404cdf0e10cSrcweir bFormat = sal_True;
405*1786df5aSOliver-Rainer Wittmann else
406*1786df5aSOliver-Rainer Wittmann // Numerisch
407cdf0e10cSrcweir bNumFmt = sal_True;
408cdf0e10cSrcweir }
409cdf0e10cSrcweir }
410cdf0e10cSrcweir }
411cdf0e10cSrcweir else
412cdf0e10cSrcweir bFormat = sal_False;
413cdf0e10cSrcweir
414cdf0e10cSrcweir EnableInsert( bFormat | bNumFmt );
415cdf0e10cSrcweir }
416cdf0e10cSrcweir break;
417cdf0e10cSrcweir
418cdf0e10cSrcweir case TYP_INPUTFLD:
419cdf0e10cSrcweir aValueFT.SetText( SW_RESSTR( STR_PROMPT ) );
420cdf0e10cSrcweir
421cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
422cdf0e10cSrcweir {
423cdf0e10cSrcweir bValue = bNumFmt = sal_True;
424cdf0e10cSrcweir
425cdf0e10cSrcweir String sName;
426cdf0e10cSrcweir
427cdf0e10cSrcweir sName = aSelectionLB.GetSelectEntry();
428cdf0e10cSrcweir aNameED.SetText( sName );
429cdf0e10cSrcweir
430cdf0e10cSrcweir // User- oder SetField ?
431cdf0e10cSrcweir sal_uInt16 nInpType = 0;
432cdf0e10cSrcweir nInpType = static_cast< sal_uInt16 >( GetFldMgr().GetFldType( RES_USERFLD, sName ) ? 0 : TYP_SETINPFLD );
433cdf0e10cSrcweir
434cdf0e10cSrcweir if ( nInpType ) // SETEXPFLD
435cdf0e10cSrcweir {
436cdf0e10cSrcweir // gibt es ein entprechendes SetField
437cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
438cdf0e10cSrcweir GetFldMgr().GetFldType( RES_SETEXPFLD, sName );
439cdf0e10cSrcweir
440cdf0e10cSrcweir if ( pSetTyp )
441cdf0e10cSrcweir {
442cdf0e10cSrcweir if ( pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING ) // Textuell?
443cdf0e10cSrcweir {
444cdf0e10cSrcweir aNumFormatLB.Clear();
445cdf0e10cSrcweir
446cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_USERVAR_TEXT ), 0 );
447cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
448cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 0 );
449cdf0e10cSrcweir }
450cdf0e10cSrcweir }
451*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL
452*1786df5aSOliver-Rainer Wittmann && IsFldEdit() && ( !pBox || bInit ) )
453*1786df5aSOliver-Rainer Wittmann {
454cdf0e10cSrcweir aValueED.SetText( ( (SwSetExpField*) GetCurField() )->GetPromptText() );
455cdf0e10cSrcweir }
456*1786df5aSOliver-Rainer Wittmann }
457*1786df5aSOliver-Rainer Wittmann else
458*1786df5aSOliver-Rainer Wittmann // USERFLD
459cdf0e10cSrcweir bFormat = bNumFmt = sal_False;
460cdf0e10cSrcweir }
461cdf0e10cSrcweir break;
462cdf0e10cSrcweir
463cdf0e10cSrcweir case TYP_DDEFLD:
464cdf0e10cSrcweir aValueFT.SetText( SW_RESSTR( STR_DDE_CMD ) );
465cdf0e10cSrcweir
466cdf0e10cSrcweir if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus
467cdf0e10cSrcweir {
468cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
469cdf0e10cSrcweir {
470cdf0e10cSrcweir SwDDEFieldType* pType =
471cdf0e10cSrcweir (SwDDEFieldType*) GetFldMgr().GetFldType( RES_DDEFLD, nSelPos );
472cdf0e10cSrcweir
473cdf0e10cSrcweir if ( pType )
474cdf0e10cSrcweir {
475cdf0e10cSrcweir aNameED.SetText( pType->GetName() );
476cdf0e10cSrcweir
477cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
478cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet
479cdf0e10cSrcweir String sCmd( pType->GetCmd() );
480cdf0e10cSrcweir sal_uInt16 nTmpPos = sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ' );
481cdf0e10cSrcweir sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ', nTmpPos );
482cdf0e10cSrcweir
483cdf0e10cSrcweir aValueED.SetText( sCmd );
484cdf0e10cSrcweir aFormatLB.SelectEntryPos( pType->GetType() );
485cdf0e10cSrcweir }
486cdf0e10cSrcweir }
487cdf0e10cSrcweir }
488cdf0e10cSrcweir bName = bValue = sal_True;
489cdf0e10cSrcweir break;
490cdf0e10cSrcweir
491cdf0e10cSrcweir case TYP_SEQFLD:
492cdf0e10cSrcweir {
493cdf0e10cSrcweir // aNumRB.Check(sal_True);
494cdf0e10cSrcweir bName = bValue = bSeparator = bChapterLevel = sal_True;
495cdf0e10cSrcweir
496cdf0e10cSrcweir SwFieldType* pFldTyp;
497*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && IsFldEdit() )
498cdf0e10cSrcweir pFldTyp = GetCurField()->GetTyp();
499cdf0e10cSrcweir else
500cdf0e10cSrcweir {
501cdf0e10cSrcweir String sFldTypeName( aSelectionLB.GetEntry( nSelPos ) );
502cdf0e10cSrcweir if ( sFldTypeName.Len() )
503*1786df5aSOliver-Rainer Wittmann pFldTyp = GetFldMgr().GetFldType( RES_SETEXPFLD, sFldTypeName );
504cdf0e10cSrcweir else
505cdf0e10cSrcweir pFldTyp = 0;
506cdf0e10cSrcweir }
507cdf0e10cSrcweir
508*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && IsFldEdit() )
509*1786df5aSOliver-Rainer Wittmann aValueED.SetText( ( (SwSetExpField*) GetCurField() )-> GetFormula() );
510cdf0e10cSrcweir
511cdf0e10cSrcweir if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus
512cdf0e10cSrcweir aNameED.SetText( aSelectionLB.GetSelectEntry() );
513cdf0e10cSrcweir
514cdf0e10cSrcweir if ( pFldTyp )
515cdf0e10cSrcweir {
516cdf0e10cSrcweir sal_uInt8 nLevel = ( (SwSetExpFieldType*) pFldTyp )->GetOutlineLvl();
517cdf0e10cSrcweir if ( 0x7f == nLevel )
518cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos( 0 );
519cdf0e10cSrcweir else
520cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos( nLevel + 1 );
521cdf0e10cSrcweir String sDelim = ( (SwSetExpFieldType*) pFldTyp )->GetDelimiter();
522cdf0e10cSrcweir aSeparatorED.SetText( sDelim );
523cdf0e10cSrcweir ChapterHdl();
524cdf0e10cSrcweir }
525cdf0e10cSrcweir }
526cdf0e10cSrcweir break;
527cdf0e10cSrcweir
528cdf0e10cSrcweir case TYP_SETREFPAGEFLD:
529cdf0e10cSrcweir {
530cdf0e10cSrcweir bValue = sal_False;
531cdf0e10cSrcweir aValueFT.SetText( SW_RESSTR( STR_OFFSET ) );
532cdf0e10cSrcweir
533cdf0e10cSrcweir if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus
534cdf0e10cSrcweir aNameED.SetText( aEmptyStr );
535cdf0e10cSrcweir
536cdf0e10cSrcweir if ( nSelPos != 0 && nSelPos != LISTBOX_ENTRY_NOTFOUND )
537cdf0e10cSrcweir {
538cdf0e10cSrcweir bValue = sal_True; // SubType OFF - kennt keinen Offset
539*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && IsFldEdit() )
540cdf0e10cSrcweir aValueED.SetText( String::CreateFromInt32( ( (SwRefPageSetField*) GetCurField() )->GetOffset() ) );
541cdf0e10cSrcweir }
542cdf0e10cSrcweir }
543cdf0e10cSrcweir break;
544cdf0e10cSrcweir
545cdf0e10cSrcweir case TYP_GETREFPAGEFLD:
546cdf0e10cSrcweir aNameED.SetText( aEmptyStr );
547cdf0e10cSrcweir aValueED.SetText( aEmptyStr );
548cdf0e10cSrcweir break;
549cdf0e10cSrcweir }
550cdf0e10cSrcweir
551cdf0e10cSrcweir aNumFormatLB.Show( bNumFmt );
552cdf0e10cSrcweir aFormatLB.Show( !bNumFmt );
553cdf0e10cSrcweir
554cdf0e10cSrcweir if ( IsFldEdit() )
555cdf0e10cSrcweir bName = sal_False;
556cdf0e10cSrcweir
557cdf0e10cSrcweir aFormatLB.Enable( bFormat );
558cdf0e10cSrcweir aFormatFT.Enable( bFormat | bNumFmt );
559cdf0e10cSrcweir aNameFT.Enable( bName );
560cdf0e10cSrcweir aNameED.Enable( bName );
561cdf0e10cSrcweir aValueFT.Enable( bValue );
562cdf0e10cSrcweir aValueED.Enable( bValue );
563cdf0e10cSrcweir
564cdf0e10cSrcweir Size aSz( aFormatLB.GetSizePixel() );
565cdf0e10cSrcweir if ( bChapterLevel )
566cdf0e10cSrcweir aSz.Height() = aFormatLB.LogicToPixel( Size( 1, 94 ), MAP_APPFONT ).Height();
567cdf0e10cSrcweir else
568cdf0e10cSrcweir aSz.Height() = aFormatLB.LogicToPixel( Size( 1, 123 ), MAP_APPFONT ).Height();
569cdf0e10cSrcweir aFormatLB.SetSizePixel( aSz );
570cdf0e10cSrcweir
571cdf0e10cSrcweir aInvisibleCB.Show( !bSeparator );
572cdf0e10cSrcweir aSeparatorFT.Show( bSeparator );
573cdf0e10cSrcweir aSeparatorED.Show( bSeparator );
574cdf0e10cSrcweir aChapterHeaderFT.Show( bChapterLevel );
575cdf0e10cSrcweir aChapterLevelFT.Show( bChapterLevel );
576cdf0e10cSrcweir aChapterLevelLB.Show( bChapterLevel );
577cdf0e10cSrcweir aInvisibleCB.Enable( bInvisible );
578cdf0e10cSrcweir
579cdf0e10cSrcweir ModifyHdl(); // Anwenden/Einfuegen/Loeschen Status update
580cdf0e10cSrcweir
581cdf0e10cSrcweir aNumFormatLB.SetUpdateMode( sal_True );
582cdf0e10cSrcweir aFormatLB.SetUpdateMode( sal_True );
583cdf0e10cSrcweir
584cdf0e10cSrcweir if ( aSelectionLB.IsCallAddSelection() )
585cdf0e10cSrcweir {
586cdf0e10cSrcweir nTypeId = (sal_uInt16) (sal_uLong) aTypeLB.GetEntryData( GetTypeSel() );
587cdf0e10cSrcweir
588cdf0e10cSrcweir switch ( nTypeId )
589cdf0e10cSrcweir {
590cdf0e10cSrcweir case TYP_FORMELFLD:
591cdf0e10cSrcweir {
592cdf0e10cSrcweir nSelPos = aSelectionLB.GetSelectEntryPos();
593cdf0e10cSrcweir
594cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
595cdf0e10cSrcweir nSelPos = (sal_uInt16) (sal_uLong) aSelectionLB.GetEntryData( nSelPos );
596cdf0e10cSrcweir
597cdf0e10cSrcweir if ( nSelPos != LISTBOX_ENTRY_NOTFOUND && pBox && !bInit )
598cdf0e10cSrcweir {
599cdf0e10cSrcweir aValueED.ReplaceSelected( aSelectionLB.GetSelectEntry() );
600cdf0e10cSrcweir ModifyHdl();
601cdf0e10cSrcweir }
602cdf0e10cSrcweir }
603cdf0e10cSrcweir break;
604cdf0e10cSrcweir }
605cdf0e10cSrcweir aSelectionLB.ResetCallAddSelection();
606cdf0e10cSrcweir }
607cdf0e10cSrcweir return 0;
608cdf0e10cSrcweir }
609cdf0e10cSrcweir
610cdf0e10cSrcweir /*--------------------------------------------------------------------
611cdf0e10cSrcweir Beschreibung: Typen in der SelectionBox erneuern
612cdf0e10cSrcweir --------------------------------------------------------------------*/
613cdf0e10cSrcweir
UpdateSubType()614cdf0e10cSrcweir void SwFldVarPage::UpdateSubType()
615cdf0e10cSrcweir {
616cdf0e10cSrcweir SetSelectionSel( aSelectionLB.GetSelectEntryPos() );
617*1786df5aSOliver-Rainer Wittmann
618*1786df5aSOliver-Rainer Wittmann String sOldSel;
619cdf0e10cSrcweir if ( GetSelectionSel() != LISTBOX_ENTRY_NOTFOUND )
620cdf0e10cSrcweir sOldSel = aSelectionLB.GetEntry( GetSelectionSel() );
621cdf0e10cSrcweir
622cdf0e10cSrcweir // Auswahl-Listbox fuellen
623cdf0e10cSrcweir aSelectionLB.SetUpdateMode( sal_False );
624cdf0e10cSrcweir aSelectionLB.Clear();
625cdf0e10cSrcweir
626*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nTypeId = (sal_uInt16) (sal_uLong) aTypeLB.GetEntryData( GetTypeSel() );
627cdf0e10cSrcweir SvStringsDtor aList;
628cdf0e10cSrcweir GetFldMgr().GetSubTypes( nTypeId, aList );
629*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nCount = aList.Count();
630cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i )
631cdf0e10cSrcweir {
632cdf0e10cSrcweir if ( nTypeId != TYP_INPUTFLD || i )
633cdf0e10cSrcweir {
634cdf0e10cSrcweir if ( !IsFldEdit() )
635cdf0e10cSrcweir {
636*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] );
637cdf0e10cSrcweir aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) );
638cdf0e10cSrcweir }
639cdf0e10cSrcweir else
640cdf0e10cSrcweir {
641cdf0e10cSrcweir sal_Bool bInsert = sal_False;
642cdf0e10cSrcweir
643cdf0e10cSrcweir switch ( nTypeId )
644cdf0e10cSrcweir {
645cdf0e10cSrcweir case TYP_INPUTFLD:
646*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetPar1() )
647cdf0e10cSrcweir bInsert = sal_True;
648cdf0e10cSrcweir break;
649cdf0e10cSrcweir
650cdf0e10cSrcweir case TYP_FORMELFLD:
651cdf0e10cSrcweir bInsert = sal_True;
652cdf0e10cSrcweir break;
653cdf0e10cSrcweir
654cdf0e10cSrcweir case TYP_GETFLD:
655*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && *aList[i] == ( (SwFormulaField*) GetCurField() )->GetFormula() )
656cdf0e10cSrcweir bInsert = sal_True;
657cdf0e10cSrcweir break;
658cdf0e10cSrcweir
659cdf0e10cSrcweir case TYP_SETFLD:
660cdf0e10cSrcweir case TYP_USERFLD:
661*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetTyp()->GetName() )
662cdf0e10cSrcweir {
663cdf0e10cSrcweir bInsert = sal_True;
664cdf0e10cSrcweir if ( GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_INVISIBLE )
665cdf0e10cSrcweir aInvisibleCB.Check();
666cdf0e10cSrcweir }
667cdf0e10cSrcweir break;
668cdf0e10cSrcweir
669cdf0e10cSrcweir case TYP_SETREFPAGEFLD:
670*1786df5aSOliver-Rainer Wittmann {
671*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL
672*1786df5aSOliver-Rainer Wittmann && ( ( ( (SwRefPageSetField*) GetCurField() )->IsOn() && i )
673*1786df5aSOliver-Rainer Wittmann || ( !( (SwRefPageSetField*) GetCurField() )->IsOn() && !i ) ) )
674*1786df5aSOliver-Rainer Wittmann {
675cdf0e10cSrcweir sOldSel = *aList[i];
676*1786df5aSOliver-Rainer Wittmann }
677cdf0e10cSrcweir
678cdf0e10cSrcweir // Alle Eintr?ge zur Auswahl zulassen:
679*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] );
680cdf0e10cSrcweir aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) );
681*1786df5aSOliver-Rainer Wittmann }
682cdf0e10cSrcweir break;
683cdf0e10cSrcweir
684cdf0e10cSrcweir default:
685*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetPar1() )
686cdf0e10cSrcweir bInsert = sal_True;
687cdf0e10cSrcweir break;
688cdf0e10cSrcweir }
689*1786df5aSOliver-Rainer Wittmann
690cdf0e10cSrcweir if ( bInsert )
691cdf0e10cSrcweir {
692*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] );
693cdf0e10cSrcweir aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) );
694cdf0e10cSrcweir if ( nTypeId != TYP_FORMELFLD )
695cdf0e10cSrcweir break;
696cdf0e10cSrcweir }
697cdf0e10cSrcweir }
698cdf0e10cSrcweir }
699cdf0e10cSrcweir }
700cdf0e10cSrcweir
701*1786df5aSOliver-Rainer Wittmann const sal_Bool bEnable = aSelectionLB.GetEntryCount() != 0;
702cdf0e10cSrcweir ListBox *pLB = 0;
703cdf0e10cSrcweir
704cdf0e10cSrcweir if ( bEnable )
705cdf0e10cSrcweir {
706cdf0e10cSrcweir aSelectionLB.SelectEntry( sOldSel );
707cdf0e10cSrcweir if ( !aSelectionLB.GetSelectEntryCount() )
708cdf0e10cSrcweir {
709cdf0e10cSrcweir aSelectionLB.SelectEntryPos( 0 );
710cdf0e10cSrcweir pLB = &aSelectionLB; // Alle Controls neu initialisieren
711cdf0e10cSrcweir }
712cdf0e10cSrcweir }
713cdf0e10cSrcweir
714cdf0e10cSrcweir aSelectionLB.Enable( bEnable );
715cdf0e10cSrcweir aSelectionFT.Enable( bEnable );
716cdf0e10cSrcweir
717cdf0e10cSrcweir SubTypeHdl( pLB );
718cdf0e10cSrcweir aSelectionLB.SetUpdateMode( sal_True );
719cdf0e10cSrcweir }
720cdf0e10cSrcweir
721cdf0e10cSrcweir /*--------------------------------------------------------------------
722cdf0e10cSrcweir Beschreibung:
723cdf0e10cSrcweir --------------------------------------------------------------------*/
724cdf0e10cSrcweir
FillFormatLB(sal_uInt16 nTypeId)725cdf0e10cSrcweir sal_uInt16 SwFldVarPage::FillFormatLB(sal_uInt16 nTypeId)
726cdf0e10cSrcweir {
727*1786df5aSOliver-Rainer Wittmann String sOldSel;
728*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nFormatSel = aFormatLB.GetSelectEntryPos();
729cdf0e10cSrcweir if ( nFormatSel != LISTBOX_ENTRY_NOTFOUND )
730cdf0e10cSrcweir sOldSel = aFormatLB.GetEntry( nFormatSel );
731cdf0e10cSrcweir
732*1786df5aSOliver-Rainer Wittmann String sOldNumSel;
733*1786df5aSOliver-Rainer Wittmann sal_uLong nOldNumFormat = 0;
734cdf0e10cSrcweir sal_uInt16 nNumFormatSel = aNumFormatLB.GetSelectEntryPos();
735cdf0e10cSrcweir if ( nNumFormatSel != LISTBOX_ENTRY_NOTFOUND )
736cdf0e10cSrcweir {
737cdf0e10cSrcweir sOldNumSel = aNumFormatLB.GetEntry( nNumFormatSel );
738cdf0e10cSrcweir nOldNumFormat = aNumFormatLB.GetFormat();
739cdf0e10cSrcweir }
740cdf0e10cSrcweir
741cdf0e10cSrcweir // Format-Listbox fuellen
742cdf0e10cSrcweir aFormatLB.Clear();
743cdf0e10cSrcweir aNumFormatLB.Clear();
744*1786df5aSOliver-Rainer Wittmann bool bSpecialFmt = false;
745cdf0e10cSrcweir
746cdf0e10cSrcweir if ( TYP_GETREFPAGEFLD != nTypeId )
747cdf0e10cSrcweir {
748*1786df5aSOliver-Rainer Wittmann if ( GetCurField() != NULL && IsFldEdit() )
749cdf0e10cSrcweir {
750cdf0e10cSrcweir bSpecialFmt = GetCurField()->GetFormat() == SAL_MAX_UINT32;
751cdf0e10cSrcweir
752cdf0e10cSrcweir if ( !bSpecialFmt )
753cdf0e10cSrcweir {
754cdf0e10cSrcweir aNumFormatLB.SetDefFormat( GetCurField()->GetFormat() );
755cdf0e10cSrcweir sOldNumSel = aEmptyStr;
756cdf0e10cSrcweir }
757*1786df5aSOliver-Rainer Wittmann else if ( nTypeId == TYP_GETFLD || nTypeId == TYP_FORMELFLD )
758*1786df5aSOliver-Rainer Wittmann {
759cdf0e10cSrcweir aNumFormatLB.SetFormatType( NUMBERFORMAT_NUMBER );
760cdf0e10cSrcweir }
761*1786df5aSOliver-Rainer Wittmann }
762cdf0e10cSrcweir else
763cdf0e10cSrcweir {
764cdf0e10cSrcweir if ( nOldNumFormat && nOldNumFormat != ULONG_MAX )
765cdf0e10cSrcweir aNumFormatLB.SetDefFormat( nOldNumFormat );
766cdf0e10cSrcweir else
767cdf0e10cSrcweir aNumFormatLB.SetFormatType( NUMBERFORMAT_NUMBER );
768cdf0e10cSrcweir }
769cdf0e10cSrcweir }
770cdf0e10cSrcweir
771cdf0e10cSrcweir switch ( nTypeId )
772cdf0e10cSrcweir {
773cdf0e10cSrcweir case TYP_USERFLD:
774cdf0e10cSrcweir {
775cdf0e10cSrcweir if ( !IsFldEdit() || bSpecialFmt )
776cdf0e10cSrcweir {
777cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_MARK_TEXT ), 0 );
778cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
779cdf0e10cSrcweir nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_USERVAR_CMD ), 1 );
780cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
781cdf0e10cSrcweir }
782cdf0e10cSrcweir }
783cdf0e10cSrcweir break;
784cdf0e10cSrcweir
785cdf0e10cSrcweir case TYP_SETFLD:
786cdf0e10cSrcweir {
787cdf0e10cSrcweir if ( !IsFldEdit() || bSpecialFmt )
788cdf0e10cSrcweir {
789cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_SETVAR_TEXT ), 0 );
790cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
791cdf0e10cSrcweir }
792cdf0e10cSrcweir }
793cdf0e10cSrcweir break;
794cdf0e10cSrcweir
795cdf0e10cSrcweir case TYP_FORMELFLD:
796cdf0e10cSrcweir {
797cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_GETVAR_NAME ), 0 );
798cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
799cdf0e10cSrcweir }
800cdf0e10cSrcweir break;
801cdf0e10cSrcweir
802cdf0e10cSrcweir case TYP_GETFLD:
803cdf0e10cSrcweir {
804cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_GETVAR_NAME ), 0 );
805cdf0e10cSrcweir aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX );
806cdf0e10cSrcweir }
807cdf0e10cSrcweir break;
808cdf0e10cSrcweir }
809cdf0e10cSrcweir
810cdf0e10cSrcweir if ( IsFldEdit() && bSpecialFmt )
811cdf0e10cSrcweir {
812cdf0e10cSrcweir if ( nTypeId == TYP_USERFLD && ( GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_CMD ) )
813cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 1 );
814cdf0e10cSrcweir else
815cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( 0 );
816cdf0e10cSrcweir }
817cdf0e10cSrcweir else
818cdf0e10cSrcweir {
819cdf0e10cSrcweir if ( !nOldNumFormat && ( nNumFormatSel = aNumFormatLB.GetEntryPos( sOldNumSel ) ) != LISTBOX_ENTRY_NOTFOUND )
820cdf0e10cSrcweir aNumFormatLB.SelectEntryPos( nNumFormatSel );
821cdf0e10cSrcweir else if ( nOldNumFormat && nOldNumFormat == ULONG_MAX )
822cdf0e10cSrcweir aNumFormatLB.SelectEntry( sOldSel );
823cdf0e10cSrcweir }
824cdf0e10cSrcweir
825*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nSize = GetFldMgr().GetFormatCount(nTypeId, sal_False, IsFldDlgHtmlMode());
826cdf0e10cSrcweir
827cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nSize; i++ )
828cdf0e10cSrcweir {
829*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nPos = aFormatLB.InsertEntry( GetFldMgr().GetFormatStr( nTypeId, i ) );
830*1786df5aSOliver-Rainer Wittmann const sal_uInt16 nFldId = GetFldMgr().GetFormatId( nTypeId, i );
831cdf0e10cSrcweir aFormatLB.SetEntryData( nPos, reinterpret_cast< void* >( nFldId ) );
832*1786df5aSOliver-Rainer Wittmann if ( IsFldEdit()
833*1786df5aSOliver-Rainer Wittmann && GetCurField() != NULL
834*1786df5aSOliver-Rainer Wittmann && nFldId == GetCurField()->GetFormat() )
835*1786df5aSOliver-Rainer Wittmann {
836cdf0e10cSrcweir aFormatLB.SelectEntryPos( nPos );
837cdf0e10cSrcweir }
838*1786df5aSOliver-Rainer Wittmann }
839cdf0e10cSrcweir
840cdf0e10cSrcweir if ( nSize && ( !IsFldEdit() || !aFormatLB.GetSelectEntryCount() ) )
841cdf0e10cSrcweir {
842cdf0e10cSrcweir aFormatLB.SelectEntry( sOldSel );
843cdf0e10cSrcweir
844cdf0e10cSrcweir if ( !aFormatLB.GetSelectEntryCount() )
845cdf0e10cSrcweir {
846cdf0e10cSrcweir aFormatLB.SelectEntry( SW_RESSTR( FMT_NUM_PAGEDESC ) );
847cdf0e10cSrcweir if ( !aFormatLB.GetSelectEntryCount() )
848cdf0e10cSrcweir {
849cdf0e10cSrcweir aFormatLB.SelectEntry( SW_RESSTR( FMT_NUM_ARABIC ) );
850cdf0e10cSrcweir if ( !aFormatLB.GetSelectEntryCount() )
851cdf0e10cSrcweir aFormatLB.SelectEntryPos( 0 );
852cdf0e10cSrcweir }
853cdf0e10cSrcweir }
854cdf0e10cSrcweir }
855cdf0e10cSrcweir
856cdf0e10cSrcweir return nSize;
857cdf0e10cSrcweir }
858cdf0e10cSrcweir
859cdf0e10cSrcweir /*--------------------------------------------------------------------
860cdf0e10cSrcweir Beschreibung: Modify
861cdf0e10cSrcweir --------------------------------------------------------------------*/
862cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,ModifyHdl,Edit *,EMPTYARG)863cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, ModifyHdl, Edit *, EMPTYARG )
864cdf0e10cSrcweir {
865cdf0e10cSrcweir String sValue(aValueED.GetText());
866cdf0e10cSrcweir sal_Bool bHasValue = sValue.Len() != 0;
867cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
868cdf0e10cSrcweir sal_Bool bInsert = sal_False, bApply = sal_False, bDelete = sal_False;
869cdf0e10cSrcweir
870cdf0e10cSrcweir String sName( aNameED.GetText() );
871cdf0e10cSrcweir xub_StrLen nLen = sName.Len();
872cdf0e10cSrcweir
873cdf0e10cSrcweir switch( nTypeId )
874cdf0e10cSrcweir {
875cdf0e10cSrcweir case TYP_DDEFLD:
876cdf0e10cSrcweir case TYP_USERFLD:
877cdf0e10cSrcweir case TYP_SETFLD:
878cdf0e10cSrcweir case TYP_SEQFLD:
879cdf0e10cSrcweir SwCalc::IsValidVarName( sName, &sName );
880cdf0e10cSrcweir if( sName.Len() != nLen )
881cdf0e10cSrcweir {
882cdf0e10cSrcweir nLen = sName.Len();
883cdf0e10cSrcweir Selection aSel(aNameED.GetSelection());
884cdf0e10cSrcweir aNameED.SetText( sName );
885cdf0e10cSrcweir aNameED.SetSelection( aSel ); // Cursorpos restaurieren
886cdf0e10cSrcweir }
887cdf0e10cSrcweir break;
888cdf0e10cSrcweir }
889cdf0e10cSrcweir
890cdf0e10cSrcweir
891cdf0e10cSrcweir // Buttons ueberpruefen
892cdf0e10cSrcweir switch (nTypeId)
893cdf0e10cSrcweir {
894cdf0e10cSrcweir case TYP_DDEFLD:
895cdf0e10cSrcweir if( nLen )
896cdf0e10cSrcweir {
897cdf0e10cSrcweir // Gibts schon einen entsprechenden Type
898cdf0e10cSrcweir bInsert = bApply = sal_True;
899cdf0e10cSrcweir
900cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_DDEFLD, sName);
901cdf0e10cSrcweir
902cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
903cdf0e10cSrcweir if(!pSh)
904cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
905cdf0e10cSrcweir if(pSh && pType)
906cdf0e10cSrcweir bDelete = !pSh->IsUsed( *pType );
907cdf0e10cSrcweir }
908cdf0e10cSrcweir break;
909cdf0e10cSrcweir
910cdf0e10cSrcweir case TYP_USERFLD:
911cdf0e10cSrcweir if( nLen )
912cdf0e10cSrcweir {
913cdf0e10cSrcweir // Gibts schon einen entsprechenden Type
914cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, sName);
915cdf0e10cSrcweir
916cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
917cdf0e10cSrcweir if(!pSh)
918cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
919cdf0e10cSrcweir if(pSh && pType)
920cdf0e10cSrcweir bDelete = !pSh->IsUsed( *pType );
921cdf0e10cSrcweir
922cdf0e10cSrcweir pType = GetFldMgr().GetFldType(RES_SETEXPFLD, sName);
923cdf0e10cSrcweir if (!pType) // Kein Namenskonflikt mit Variablen
924cdf0e10cSrcweir {
925cdf0e10cSrcweir // Benutzerfelder duerfen auch ohne Inhalt eingefuegt werden!
926cdf0e10cSrcweir // Bug #56845
927cdf0e10cSrcweir bInsert = bApply = sal_True;
928cdf0e10cSrcweir }
929cdf0e10cSrcweir }
930cdf0e10cSrcweir break;
931cdf0e10cSrcweir
932cdf0e10cSrcweir default:
933cdf0e10cSrcweir bInsert = sal_True;
934cdf0e10cSrcweir
935cdf0e10cSrcweir if (nTypeId == TYP_SETFLD || nTypeId == TYP_SEQFLD)
936cdf0e10cSrcweir {
937cdf0e10cSrcweir SwSetExpFieldType* pFldType = (SwSetExpFieldType*)
938cdf0e10cSrcweir GetFldMgr().GetFldType(RES_SETEXPFLD, sName);
939cdf0e10cSrcweir
940cdf0e10cSrcweir if (pFldType)
941cdf0e10cSrcweir {
942cdf0e10cSrcweir
943cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
944cdf0e10cSrcweir if(!pSh)
945cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
946cdf0e10cSrcweir if(pSh)
947cdf0e10cSrcweir {
948cdf0e10cSrcweir const SwFldTypes* p = pSh->GetDoc()->GetFldTypes();
949cdf0e10cSrcweir sal_uInt16 i;
950cdf0e10cSrcweir
951cdf0e10cSrcweir for (i = 0; i < INIT_FLDTYPES; i++)
952cdf0e10cSrcweir {
953cdf0e10cSrcweir SwFieldType* pType = (*p)[ i ];
954cdf0e10cSrcweir if (pType == pFldType)
955cdf0e10cSrcweir break;
956cdf0e10cSrcweir }
957cdf0e10cSrcweir
958cdf0e10cSrcweir if (i >= INIT_FLDTYPES && !pSh->IsUsed(*pFldType))
959cdf0e10cSrcweir bDelete = sal_True;
960cdf0e10cSrcweir
961cdf0e10cSrcweir if (nTypeId == TYP_SEQFLD && !(pFldType->GetType() & nsSwGetSetExpType::GSE_SEQ))
962cdf0e10cSrcweir bInsert = sal_False;
963cdf0e10cSrcweir
964cdf0e10cSrcweir if (nTypeId == TYP_SETFLD && (pFldType->GetType() & nsSwGetSetExpType::GSE_SEQ))
965cdf0e10cSrcweir bInsert = sal_False;
966cdf0e10cSrcweir }
967cdf0e10cSrcweir }
968cdf0e10cSrcweir if (GetFldMgr().GetFldType(RES_USERFLD, sName))
969cdf0e10cSrcweir bInsert = sal_False;
970cdf0e10cSrcweir }
971cdf0e10cSrcweir
972cdf0e10cSrcweir if( !nLen && ( nTypeId == TYP_SETFLD ||
973cdf0e10cSrcweir (!IsFldEdit() && nTypeId == TYP_GETFLD ) ) )
974cdf0e10cSrcweir bInsert = sal_False;
975cdf0e10cSrcweir
976cdf0e10cSrcweir if( (nTypeId == TYP_SETFLD || nTypeId == TYP_FORMELFLD) &&
977cdf0e10cSrcweir !bHasValue )
978cdf0e10cSrcweir bInsert = sal_False;
979cdf0e10cSrcweir break;
980cdf0e10cSrcweir }
981cdf0e10cSrcweir
982cdf0e10cSrcweir aNewDelTBX.EnableItem(BT_VARAPPLY, bApply);
983cdf0e10cSrcweir aNewDelTBX.EnableItem(BT_VARDELETE, bDelete);
984cdf0e10cSrcweir EnableInsert(bInsert);
985cdf0e10cSrcweir
986cdf0e10cSrcweir return 0;
987cdf0e10cSrcweir }
988cdf0e10cSrcweir
989cdf0e10cSrcweir /*--------------------------------------------------------------------
990cdf0e10cSrcweir Beschreibung:
991cdf0e10cSrcweir --------------------------------------------------------------------*/
992cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,TBClickHdl,ToolBox *,pBox)993cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, TBClickHdl, ToolBox *, pBox )
994cdf0e10cSrcweir {
995cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
996cdf0e10cSrcweir
997cdf0e10cSrcweir switch (pBox->GetCurItemId())
998cdf0e10cSrcweir {
999cdf0e10cSrcweir case BT_VARDELETE:
1000cdf0e10cSrcweir {
1001cdf0e10cSrcweir if( nTypeId == TYP_USERFLD )
1002cdf0e10cSrcweir GetFldMgr().RemoveFldType(RES_USERFLD, aSelectionLB.GetSelectEntry());
1003cdf0e10cSrcweir else
1004cdf0e10cSrcweir {
1005cdf0e10cSrcweir sal_uInt16 nWhich;
1006cdf0e10cSrcweir
1007cdf0e10cSrcweir switch(nTypeId)
1008cdf0e10cSrcweir {
1009cdf0e10cSrcweir case TYP_SETFLD:
1010cdf0e10cSrcweir case TYP_SEQFLD:
1011cdf0e10cSrcweir nWhich = RES_SETEXPFLD;
1012cdf0e10cSrcweir break;
1013cdf0e10cSrcweir default:
1014cdf0e10cSrcweir nWhich = RES_DDEFLD;
1015cdf0e10cSrcweir break;
1016cdf0e10cSrcweir }
1017cdf0e10cSrcweir
1018cdf0e10cSrcweir GetFldMgr().RemoveFldType(nWhich, aSelectionLB.GetSelectEntry());
1019cdf0e10cSrcweir }
1020cdf0e10cSrcweir
1021cdf0e10cSrcweir UpdateSubType();
1022cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
1023cdf0e10cSrcweir if(!pSh)
1024cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
1025cdf0e10cSrcweir if(pSh)
1026cdf0e10cSrcweir {
1027cdf0e10cSrcweir pSh->SetModified();
1028cdf0e10cSrcweir }
1029cdf0e10cSrcweir }
1030cdf0e10cSrcweir break;
1031cdf0e10cSrcweir
1032cdf0e10cSrcweir case BT_VARAPPLY:
1033cdf0e10cSrcweir {
1034cdf0e10cSrcweir String sName(aNameED.GetText()), sValue(aValueED.GetText());
1035cdf0e10cSrcweir SwFieldType* pType = 0;
1036cdf0e10cSrcweir sal_uInt16 nId = 0;
1037cdf0e10cSrcweir sal_uInt16 nNumFormatPos = aNumFormatLB.GetSelectEntryPos();
1038cdf0e10cSrcweir
1039cdf0e10cSrcweir switch (nTypeId)
1040cdf0e10cSrcweir {
1041cdf0e10cSrcweir case TYP_USERFLD: nId = RES_USERFLD; break;
1042cdf0e10cSrcweir case TYP_DDEFLD: nId = RES_DDEFLD; break;
1043cdf0e10cSrcweir case TYP_SETFLD: nId = RES_SETEXPFLD;break;
1044cdf0e10cSrcweir }
1045cdf0e10cSrcweir pType = GetFldMgr().GetFldType(nId, sName);
1046cdf0e10cSrcweir
1047cdf0e10cSrcweir sal_uLong nFormat = aFormatLB.GetSelectEntryPos();
1048cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND)
1049cdf0e10cSrcweir nFormat = (sal_uLong)aFormatLB.GetEntryData((sal_uInt16)nFormat);
1050cdf0e10cSrcweir
1051cdf0e10cSrcweir if (pType) // Aendern
1052cdf0e10cSrcweir {
1053cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
1054cdf0e10cSrcweir if(!pSh)
1055cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
1056cdf0e10cSrcweir if(pSh)
1057cdf0e10cSrcweir {
1058cdf0e10cSrcweir pSh->StartAllAction();
1059cdf0e10cSrcweir
1060cdf0e10cSrcweir if (nTypeId == TYP_USERFLD)
1061cdf0e10cSrcweir {
1062cdf0e10cSrcweir if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND)
1063cdf0e10cSrcweir {
1064cdf0e10cSrcweir sal_uLong nFmt = nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat();
1065cdf0e10cSrcweir if (nFmt)
1066cdf0e10cSrcweir { // Sprache auf Office-Sprache umstellen, da String im Office
1067cdf0e10cSrcweir // Format vom Kalkulator erwartet wird und so in den Dlg
1068cdf0e10cSrcweir // eingegeben werden sollte
1069cdf0e10cSrcweir nFmt = SwValueField::GetSystemFormat(pSh->GetNumberFormatter(), nFmt);
1070cdf0e10cSrcweir }
1071cdf0e10cSrcweir ((SwUserFieldType*)pType)->SetContent(aValueED.GetText(), nFmt);
1072cdf0e10cSrcweir ((SwUserFieldType*)pType)->SetType(
1073cdf0e10cSrcweir nNumFormatPos == 0 ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR );
1074cdf0e10cSrcweir }
1075cdf0e10cSrcweir }
1076cdf0e10cSrcweir else
1077cdf0e10cSrcweir {
1078cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND)
1079cdf0e10cSrcweir {
1080cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
1081cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet.
1082cdf0e10cSrcweir sal_uInt16 nTmpPos = sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator );
1083cdf0e10cSrcweir sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator, nTmpPos );
1084cdf0e10cSrcweir ((SwDDEFieldType*)pType)->SetCmd(sValue);
1085cdf0e10cSrcweir ((SwDDEFieldType*)pType)->SetType((sal_uInt16)nFormat);
1086cdf0e10cSrcweir }
1087cdf0e10cSrcweir }
1088cdf0e10cSrcweir pType->UpdateFlds();
1089cdf0e10cSrcweir
1090cdf0e10cSrcweir pSh->EndAllAction();
1091cdf0e10cSrcweir }
1092cdf0e10cSrcweir }
1093cdf0e10cSrcweir else // Neu
1094cdf0e10cSrcweir {
1095cdf0e10cSrcweir if(nTypeId == TYP_USERFLD)
1096cdf0e10cSrcweir {
1097cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
1098cdf0e10cSrcweir if(!pSh)
1099cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
1100cdf0e10cSrcweir if(pSh)
1101cdf0e10cSrcweir {
1102cdf0e10cSrcweir SwUserFieldType aType( pSh->GetDoc(), sName );
1103cdf0e10cSrcweir
1104cdf0e10cSrcweir if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND)
1105cdf0e10cSrcweir {
1106cdf0e10cSrcweir aType.SetType(nNumFormatPos == 0 ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR);
1107cdf0e10cSrcweir aType.SetContent( sValue, nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat() );
1108cdf0e10cSrcweir aSelectionLB.InsertEntry(sName);
1109cdf0e10cSrcweir aSelectionLB.SelectEntry(sName);
1110cdf0e10cSrcweir GetFldMgr().InsertFldType( aType ); // Userfld Neu
1111cdf0e10cSrcweir }
1112cdf0e10cSrcweir }
1113cdf0e10cSrcweir }
1114cdf0e10cSrcweir else
1115cdf0e10cSrcweir {
1116cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND)
1117cdf0e10cSrcweir {
1118cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
1119cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet.
1120cdf0e10cSrcweir sal_uInt16 nTmpPos = sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator );
1121cdf0e10cSrcweir sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator, nTmpPos );
1122cdf0e10cSrcweir
1123cdf0e10cSrcweir SwDDEFieldType aType(sName, sValue, (sal_uInt16)nFormat);
1124cdf0e10cSrcweir aSelectionLB.InsertEntry(sName);
1125cdf0e10cSrcweir aSelectionLB.SelectEntry(sName);
1126cdf0e10cSrcweir GetFldMgr().InsertFldType(aType); // DDE-Feld Neu
1127cdf0e10cSrcweir }
1128cdf0e10cSrcweir }
1129cdf0e10cSrcweir }
1130cdf0e10cSrcweir if (IsFldEdit())
1131cdf0e10cSrcweir GetFldMgr().GetCurFld(); // FieldManager Updaten
1132cdf0e10cSrcweir
1133cdf0e10cSrcweir UpdateSubType();
1134cdf0e10cSrcweir }
1135cdf0e10cSrcweir break;
1136cdf0e10cSrcweir }
1137cdf0e10cSrcweir
1138cdf0e10cSrcweir return sal_True;
1139cdf0e10cSrcweir }
1140cdf0e10cSrcweir
1141cdf0e10cSrcweir /*--------------------------------------------------------------------
1142cdf0e10cSrcweir Beschreibung:
1143cdf0e10cSrcweir --------------------------------------------------------------------*/
1144cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,ChapterHdl,ListBox *,EMPTYARG)1145cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, ChapterHdl, ListBox *, EMPTYARG )
1146cdf0e10cSrcweir {
1147cdf0e10cSrcweir sal_Bool bEnable = aChapterLevelLB.GetSelectEntryPos() != 0;
1148cdf0e10cSrcweir
1149cdf0e10cSrcweir aSeparatorED.Enable(bEnable);
1150cdf0e10cSrcweir aSeparatorFT.Enable(bEnable);
1151cdf0e10cSrcweir SeparatorHdl();
1152cdf0e10cSrcweir
1153cdf0e10cSrcweir return 0;
1154cdf0e10cSrcweir }
1155cdf0e10cSrcweir
1156cdf0e10cSrcweir /*--------------------------------------------------------------------
1157cdf0e10cSrcweir Beschreibung:
1158cdf0e10cSrcweir --------------------------------------------------------------------*/
1159cdf0e10cSrcweir
IMPL_LINK(SwFldVarPage,SeparatorHdl,Edit *,EMPTYARG)1160cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, SeparatorHdl, Edit *, EMPTYARG )
1161cdf0e10cSrcweir {
1162cdf0e10cSrcweir sal_Bool bEnable = aSeparatorED.GetText().Len() != 0 ||
1163cdf0e10cSrcweir aChapterLevelLB.GetSelectEntryPos() == 0;
1164cdf0e10cSrcweir EnableInsert(bEnable);
1165cdf0e10cSrcweir
1166cdf0e10cSrcweir return 0;
1167cdf0e10cSrcweir }
1168cdf0e10cSrcweir
1169cdf0e10cSrcweir /*--------------------------------------------------------------------
1170cdf0e10cSrcweir Beschreibung:
1171cdf0e10cSrcweir --------------------------------------------------------------------*/
1172cdf0e10cSrcweir
FillItemSet(SfxItemSet &)1173cdf0e10cSrcweir sal_Bool SwFldVarPage::FillItemSet(SfxItemSet& )
1174cdf0e10cSrcweir {
1175cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
1176cdf0e10cSrcweir
1177cdf0e10cSrcweir String aVal(aValueED.GetText());
1178cdf0e10cSrcweir String aName(aNameED.GetText());
1179cdf0e10cSrcweir
1180cdf0e10cSrcweir sal_uInt16 nSubType = aSelectionLB.GetSelectEntryPos();
1181cdf0e10cSrcweir if(nSubType == LISTBOX_ENTRY_NOTFOUND)
1182cdf0e10cSrcweir nSubType = 0;
1183cdf0e10cSrcweir else
1184cdf0e10cSrcweir nSubType = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSubType);
1185cdf0e10cSrcweir
1186cdf0e10cSrcweir sal_uLong nFormat;
1187cdf0e10cSrcweir
1188cdf0e10cSrcweir if (!aNumFormatLB.IsVisible())
1189cdf0e10cSrcweir {
1190cdf0e10cSrcweir nFormat = aFormatLB.GetSelectEntryPos();
1191cdf0e10cSrcweir
1192cdf0e10cSrcweir if(nFormat == LISTBOX_ENTRY_NOTFOUND)
1193cdf0e10cSrcweir nFormat = 0;
1194cdf0e10cSrcweir else
1195cdf0e10cSrcweir nFormat = (sal_uLong)aFormatLB.GetEntryData((sal_uInt16)nFormat);
1196cdf0e10cSrcweir }
1197cdf0e10cSrcweir else
1198cdf0e10cSrcweir {
1199cdf0e10cSrcweir nFormat = aNumFormatLB.GetFormat();
1200cdf0e10cSrcweir
1201cdf0e10cSrcweir if (nFormat && nFormat != ULONG_MAX && aNumFormatLB.IsAutomaticLanguage())
1202cdf0e10cSrcweir {
1203cdf0e10cSrcweir // Sprache auf Office-Sprache umstellen, da String im Office-
1204cdf0e10cSrcweir // Format vom Kalkulator erwartet wird und so in den Dlg
1205cdf0e10cSrcweir // eingegeben werden sollte
1206cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
1207cdf0e10cSrcweir if(!pSh)
1208cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
1209cdf0e10cSrcweir if(pSh)
1210cdf0e10cSrcweir {
1211cdf0e10cSrcweir nFormat = SwValueField::GetSystemFormat(pSh->GetNumberFormatter(), nFormat);
1212cdf0e10cSrcweir }
1213cdf0e10cSrcweir }
1214cdf0e10cSrcweir }
1215cdf0e10cSrcweir sal_Unicode cSeparator = ' ';
1216cdf0e10cSrcweir switch (nTypeId)
1217cdf0e10cSrcweir {
1218cdf0e10cSrcweir case TYP_USERFLD:
1219cdf0e10cSrcweir {
1220cdf0e10cSrcweir nSubType = (nFormat == ULONG_MAX) ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR;
1221cdf0e10cSrcweir
1222cdf0e10cSrcweir if (nFormat == ULONG_MAX && aNumFormatLB.GetSelectEntry() == SW_RESSTR(FMT_USERVAR_CMD))
1223cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD;
1224cdf0e10cSrcweir
1225cdf0e10cSrcweir if (aInvisibleCB.IsChecked())
1226cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_INVISIBLE;
1227cdf0e10cSrcweir break;
1228cdf0e10cSrcweir }
1229cdf0e10cSrcweir case TYP_FORMELFLD:
1230cdf0e10cSrcweir {
1231cdf0e10cSrcweir nSubType = nsSwGetSetExpType::GSE_FORMULA;
1232cdf0e10cSrcweir if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX)
1233cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD;
1234cdf0e10cSrcweir break;
1235cdf0e10cSrcweir }
1236cdf0e10cSrcweir case TYP_GETFLD:
1237cdf0e10cSrcweir {
1238cdf0e10cSrcweir nSubType &= 0xff00;
1239cdf0e10cSrcweir if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX)
1240cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD;
1241cdf0e10cSrcweir break;
1242cdf0e10cSrcweir }
1243cdf0e10cSrcweir case TYP_INPUTFLD:
1244cdf0e10cSrcweir {
1245cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, aName);
1246cdf0e10cSrcweir nSubType = static_cast< sal_uInt16 >((nSubType & 0xff00) | ((pType) ? INP_USR : INP_VAR));
1247cdf0e10cSrcweir break;
1248cdf0e10cSrcweir }
1249cdf0e10cSrcweir
1250cdf0e10cSrcweir case TYP_SETFLD:
1251cdf0e10cSrcweir {
1252cdf0e10cSrcweir if (IsFldDlgHtmlMode())
1253cdf0e10cSrcweir {
1254cdf0e10cSrcweir nSubType = 0x0100;
1255cdf0e10cSrcweir nSubType = (nSubType & 0xff00) | nsSwGetSetExpType::GSE_STRING;
1256cdf0e10cSrcweir }
1257cdf0e10cSrcweir else
1258cdf0e10cSrcweir nSubType = (nSubType & 0xff00) | ((nFormat == ULONG_MAX) ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR);
1259cdf0e10cSrcweir
1260cdf0e10cSrcweir if (aInvisibleCB.IsChecked())
1261cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_INVISIBLE;
1262cdf0e10cSrcweir break;
1263cdf0e10cSrcweir }
1264cdf0e10cSrcweir case TYP_SEQFLD:
1265cdf0e10cSrcweir {
1266cdf0e10cSrcweir // nSubType = nsSwGetSetExpType::GSE_SEQ; // nsSwGetSetExpType::GSE_SEQ wird im Fldmgr fest gesetzt, kann also entfallen
1267cdf0e10cSrcweir nSubType = aChapterLevelLB.GetSelectEntryPos();
1268cdf0e10cSrcweir if (nSubType == 0)
1269cdf0e10cSrcweir nSubType = 0x7f;
1270cdf0e10cSrcweir else
1271cdf0e10cSrcweir {
1272cdf0e10cSrcweir nSubType--;
1273cdf0e10cSrcweir String sSeparator(aSeparatorED.GetText().GetChar(0));
1274cdf0e10cSrcweir cSeparator = sSeparator.Len() ? sSeparator.GetChar(0) : ' ';
1275cdf0e10cSrcweir //nSubType |= (sal_uInt16)(((sal_uInt8)) << 8);
1276cdf0e10cSrcweir }
1277cdf0e10cSrcweir break;
1278cdf0e10cSrcweir }
1279cdf0e10cSrcweir case TYP_GETREFPAGEFLD:
1280cdf0e10cSrcweir if( SVX_NUM_CHAR_SPECIAL == nFormat )
1281cdf0e10cSrcweir aVal = aValueED.GetText();
1282cdf0e10cSrcweir break;
1283cdf0e10cSrcweir }
1284cdf0e10cSrcweir
1285cdf0e10cSrcweir if (!IsFldEdit() ||
1286cdf0e10cSrcweir aNameED.GetSavedValue() != aNameED.GetText() ||
1287cdf0e10cSrcweir aValueED.GetSavedValue() != aValueED.GetText() ||
1288cdf0e10cSrcweir aSelectionLB.GetSavedValue() != aSelectionLB.GetSelectEntryPos() ||
1289cdf0e10cSrcweir aFormatLB.GetSavedValue() != aFormatLB.GetSelectEntryPos() ||
1290cdf0e10cSrcweir nOldFormat != aNumFormatLB.GetFormat() ||
1291cdf0e10cSrcweir aInvisibleCB.GetState() != aInvisibleCB.GetSavedValue() ||
1292cdf0e10cSrcweir aChapterLevelLB.GetSavedValue() != aChapterLevelLB.GetSelectEntryPos() ||
1293cdf0e10cSrcweir aSeparatorED.GetSavedValue() != aSeparatorED.GetText())
1294cdf0e10cSrcweir {
1295cdf0e10cSrcweir InsertFld( nTypeId, nSubType, aName, aVal, nFormat,
1296cdf0e10cSrcweir cSeparator, aNumFormatLB.IsAutomaticLanguage() );
1297cdf0e10cSrcweir }
1298cdf0e10cSrcweir
1299cdf0e10cSrcweir UpdateSubType();
1300cdf0e10cSrcweir
1301cdf0e10cSrcweir return sal_False;
1302cdf0e10cSrcweir }
1303cdf0e10cSrcweir
1304cdf0e10cSrcweir
1305cdf0e10cSrcweir /*--------------------------------------------------------------------
1306cdf0e10cSrcweir Beschreibung:
1307cdf0e10cSrcweir --------------------------------------------------------------------*/
1308cdf0e10cSrcweir
Create(Window * pParent,const SfxItemSet & rAttrSet)1309cdf0e10cSrcweir SfxTabPage* SwFldVarPage::Create( Window* pParent,
1310cdf0e10cSrcweir const SfxItemSet& rAttrSet )
1311cdf0e10cSrcweir {
1312cdf0e10cSrcweir return ( new SwFldVarPage( pParent, rAttrSet ) );
1313cdf0e10cSrcweir }
1314cdf0e10cSrcweir
1315cdf0e10cSrcweir /*--------------------------------------------------------------------
1316cdf0e10cSrcweir Beschreibung:
1317cdf0e10cSrcweir --------------------------------------------------------------------*/
1318cdf0e10cSrcweir
GetGroup()1319cdf0e10cSrcweir sal_uInt16 SwFldVarPage::GetGroup()
1320cdf0e10cSrcweir {
1321cdf0e10cSrcweir return GRP_VAR;
1322cdf0e10cSrcweir }
1323cdf0e10cSrcweir
1324cdf0e10cSrcweir /*--------------------------------------------------------------------
1325cdf0e10cSrcweir Beschreibung:
1326cdf0e10cSrcweir --------------------------------------------------------------------*/
1327cdf0e10cSrcweir
SelectionListBox(SwFldVarPage * pDialog,const ResId & rResId)1328cdf0e10cSrcweir SelectionListBox::SelectionListBox( SwFldVarPage* pDialog, const ResId& rResId ) :
1329cdf0e10cSrcweir ListBox (pDialog, rResId),
1330cdf0e10cSrcweir pDlg (pDialog),
1331cdf0e10cSrcweir bCallAddSelection(sal_False)
1332cdf0e10cSrcweir {
1333cdf0e10cSrcweir }
1334cdf0e10cSrcweir
1335cdf0e10cSrcweir /*--------------------------------------------------------------------
1336cdf0e10cSrcweir Beschreibung:
1337cdf0e10cSrcweir --------------------------------------------------------------------*/
1338cdf0e10cSrcweir
PreNotify(NotifyEvent & rNEvt)1339cdf0e10cSrcweir long SelectionListBox::PreNotify( NotifyEvent& rNEvt )
1340cdf0e10cSrcweir {
1341cdf0e10cSrcweir long nHandled = ListBox::PreNotify( rNEvt );
1342cdf0e10cSrcweir //sal_Bool bAddSel = sal_False;
1343cdf0e10cSrcweir if ( rNEvt.GetType() == EVENT_KEYUP )
1344cdf0e10cSrcweir {
1345cdf0e10cSrcweir const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
1346cdf0e10cSrcweir const KeyCode aKeyCode = pKEvt->GetKeyCode();
1347cdf0e10cSrcweir const sal_uInt16 nModifier = aKeyCode.GetModifier();
1348cdf0e10cSrcweir if( aKeyCode.GetCode() == KEY_SPACE && !nModifier)
1349cdf0e10cSrcweir // bAddSel = sal_True;
1350cdf0e10cSrcweir bCallAddSelection = sal_True;
1351cdf0e10cSrcweir }
1352cdf0e10cSrcweir if ( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN )
1353cdf0e10cSrcweir {
1354cdf0e10cSrcweir const MouseEvent* pMEvt = rNEvt.GetMouseEvent();
1355cdf0e10cSrcweir
1356cdf0e10cSrcweir if (pMEvt && (pMEvt->IsMod1() || pMEvt->IsMod2())) // Alt oder Ctrl
1357cdf0e10cSrcweir //bAddSel = sal_True;
1358cdf0e10cSrcweir bCallAddSelection = sal_True;
1359cdf0e10cSrcweir }
1360cdf0e10cSrcweir
1361cdf0e10cSrcweir // if (bAddSel)
1362cdf0e10cSrcweir // pDlg->AddSelection(this);
1363cdf0e10cSrcweir
1364cdf0e10cSrcweir return nHandled;
1365cdf0e10cSrcweir }
1366cdf0e10cSrcweir /* -----------------12.01.99 11:14-------------------
1367cdf0e10cSrcweir *
1368cdf0e10cSrcweir * --------------------------------------------------*/
FillUserData()1369cdf0e10cSrcweir void SwFldVarPage::FillUserData()
1370cdf0e10cSrcweir {
1371cdf0e10cSrcweir String sData(String::CreateFromAscii(USER_DATA_VERSION));
1372cdf0e10cSrcweir sData += ';';
1373cdf0e10cSrcweir sal_uInt16 nTypeSel = aTypeLB.GetSelectEntryPos();
1374cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
1375cdf0e10cSrcweir nTypeSel = USHRT_MAX;
1376cdf0e10cSrcweir else
1377cdf0e10cSrcweir nTypeSel = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData( nTypeSel );
1378cdf0e10cSrcweir sData += String::CreateFromInt32( nTypeSel );
1379cdf0e10cSrcweir SetUserData(sData);
1380cdf0e10cSrcweir }
1381cdf0e10cSrcweir
1382