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