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