1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5efeef26fSAndrew Rist * distributed with this work for additional information
6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10efeef26fSAndrew Rist *
11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12efeef26fSAndrew Rist *
13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist * software distributed under the License is distributed on an
15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17efeef26fSAndrew Rist * specific language governing permissions and limitations
18efeef26fSAndrew Rist * under the License.
19efeef26fSAndrew Rist *
20efeef26fSAndrew Rist *************************************************************/
21efeef26fSAndrew Rist
22efeef26fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include <swmodule.hxx>
32cdf0e10cSrcweir #ifndef _VIEW_HXX
33cdf0e10cSrcweir #include <view.hxx>
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #include <wrtsh.hxx>
36cdf0e10cSrcweir #ifndef _GLOBALS_HRC
37cdf0e10cSrcweir #include <globals.hrc>
38cdf0e10cSrcweir #endif
39cdf0e10cSrcweir #include <dbfld.hxx>
40cdf0e10cSrcweir #ifndef _FLDTDLG_HXX
41cdf0e10cSrcweir #include <fldtdlg.hxx>
42cdf0e10cSrcweir #endif
43cdf0e10cSrcweir #include <numrule.hxx>
44cdf0e10cSrcweir
45cdf0e10cSrcweir #ifndef _FLDTDLG_HRC
46cdf0e10cSrcweir #include <fldtdlg.hrc>
47cdf0e10cSrcweir #endif
48cdf0e10cSrcweir #ifndef _FLDUI_HRC
49cdf0e10cSrcweir #include <fldui.hrc>
50cdf0e10cSrcweir #endif
51cdf0e10cSrcweir #ifndef _FLDDB_HXX
52cdf0e10cSrcweir #include <flddb.hxx>
53cdf0e10cSrcweir #endif
54cdf0e10cSrcweir #include <dbconfig.hxx>
55cdf0e10cSrcweir #ifndef _DBMGR_HXX
56cdf0e10cSrcweir #include <dbmgr.hxx>
57cdf0e10cSrcweir #endif
58cdf0e10cSrcweir
59cdf0e10cSrcweir #define USER_DATA_VERSION_1 "1"
60cdf0e10cSrcweir #define USER_DATA_VERSION USER_DATA_VERSION_1
61cdf0e10cSrcweir /*--------------------------------------------------------------------
62cdf0e10cSrcweir Beschreibung:
63cdf0e10cSrcweir --------------------------------------------------------------------*/
64cdf0e10cSrcweir
SwFldDBPage(Window * pParent,const SfxItemSet & rCoreSet)65cdf0e10cSrcweir SwFldDBPage::SwFldDBPage(Window* pParent, const SfxItemSet& rCoreSet ) :
66cdf0e10cSrcweir SwFldPage( pParent, SW_RES( TP_FLD_DB ), rCoreSet ),
67cdf0e10cSrcweir aTypeFT (this, SW_RES(FT_DBTYPE)),
68cdf0e10cSrcweir aTypeLB (this, SW_RES(LB_DBTYPE)),
69cdf0e10cSrcweir aSelectionFT(this, SW_RES(FT_DBSELECTION)),
70cdf0e10cSrcweir aDatabaseTLB(this, SW_RES(TLB_DBLIST), 0, aEmptyStr, sal_False),
71cdf0e10cSrcweir aAddDBFT(this, SW_RES(FT_ADDDB)),
72cdf0e10cSrcweir aAddDBPB(this, SW_RES(PB_ADDDB)),
73cdf0e10cSrcweir aConditionFT(this, SW_RES(FT_DBCONDITION)),
74cdf0e10cSrcweir aConditionED(this, SW_RES(ED_DBCONDITION)),
75cdf0e10cSrcweir aValueFT (this, SW_RES(FT_DBSETNUMBER)),
76cdf0e10cSrcweir aValueED (this, SW_RES(ED_DBSETNUMBER)),
77cdf0e10cSrcweir aDBFormatRB (this, SW_RES(RB_DBOWNFORMAT)),
78cdf0e10cSrcweir aNewFormatRB(this, SW_RES(RB_DBFORMAT)),
79cdf0e10cSrcweir aNumFormatLB(this, SW_RES(LB_DBNUMFORMAT)),
80cdf0e10cSrcweir aFormatLB (this, SW_RES(LB_DBFORMAT)),
81cdf0e10cSrcweir aFormatFL (this, SW_RES(FL_DBFORMAT)),
82cdf0e10cSrcweir aFormatVertFL (this, SW_RES(FL_DBFORMAT_VERT))
83cdf0e10cSrcweir {
84cdf0e10cSrcweir FreeResource();
85cdf0e10cSrcweir
86cdf0e10cSrcweir aOldNumSelectHdl = aNumFormatLB.GetSelectHdl();
87cdf0e10cSrcweir
88cdf0e10cSrcweir aNumFormatLB.SetSelectHdl(LINK(this, SwFldDBPage, NumSelectHdl));
89cdf0e10cSrcweir aDatabaseTLB.SetSelectHdl(LINK(this, SwFldDBPage, TreeSelectHdl));
90cdf0e10cSrcweir aDatabaseTLB.SetDoubleClickHdl(LINK(this, SwFldDBPage, InsertHdl));
91cdf0e10cSrcweir
92cdf0e10cSrcweir aValueED.SetModifyHdl(LINK(this, SwFldDBPage, ModifyHdl));
93cdf0e10cSrcweir aAddDBPB.SetClickHdl(LINK(this, SwFldDBPage, AddDBHdl));
94cdf0e10cSrcweir }
95cdf0e10cSrcweir
96cdf0e10cSrcweir /*--------------------------------------------------------------------
97cdf0e10cSrcweir Beschreibung:
98cdf0e10cSrcweir --------------------------------------------------------------------*/
99cdf0e10cSrcweir
~SwFldDBPage()100cdf0e10cSrcweir __EXPORT SwFldDBPage::~SwFldDBPage()
101cdf0e10cSrcweir {
102cdf0e10cSrcweir }
103cdf0e10cSrcweir
104cdf0e10cSrcweir /*--------------------------------------------------------------------
105cdf0e10cSrcweir Beschreibung: TabPage initialisieren
106cdf0e10cSrcweir --------------------------------------------------------------------*/
107cdf0e10cSrcweir
Reset(const SfxItemSet &)108cdf0e10cSrcweir void __EXPORT SwFldDBPage::Reset(const SfxItemSet&)
109cdf0e10cSrcweir {
110cdf0e10cSrcweir Init(); // Allgemeine initialisierung
111cdf0e10cSrcweir
112cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_False);
113cdf0e10cSrcweir sal_uInt16 nOldPos = aTypeLB.GetSelectEntryPos();
114cdf0e10cSrcweir sOldDBName = aDatabaseTLB.GetDBName(sOldTableName, sOldColumnName);
115cdf0e10cSrcweir
116cdf0e10cSrcweir aTypeLB.Clear();
117cdf0e10cSrcweir
118cdf0e10cSrcweir sal_uInt16 nPos, nTypeId, i;
119cdf0e10cSrcweir
120cdf0e10cSrcweir if (!IsFldEdit())
121cdf0e10cSrcweir {
122cdf0e10cSrcweir // TypeListBox initialisieren
123cdf0e10cSrcweir const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
124cdf0e10cSrcweir
125cdf0e10cSrcweir for(i = rRg.nStart; i < rRg.nEnd; ++i)
126cdf0e10cSrcweir {
127cdf0e10cSrcweir nTypeId = GetFldMgr().GetTypeId(i);
128cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
129cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
130cdf0e10cSrcweir }
131cdf0e10cSrcweir }
132cdf0e10cSrcweir else
133cdf0e10cSrcweir {
134cdf0e10cSrcweir nTypeId = GetCurField()->GetTypeId();
135cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
136cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
137cdf0e10cSrcweir }
138cdf0e10cSrcweir
139cdf0e10cSrcweir // alte Pos selektieren
140cdf0e10cSrcweir if (GetTypeSel() != LISTBOX_ENTRY_NOTFOUND)
141cdf0e10cSrcweir aTypeLB.SelectEntryPos(GetTypeSel());
142cdf0e10cSrcweir
143cdf0e10cSrcweir aFormatLB.Clear();
144cdf0e10cSrcweir
145cdf0e10cSrcweir sal_uInt16 nSize = GetFldMgr().GetFormatCount(TYP_DBSETNUMBERFLD, sal_False, IsFldDlgHtmlMode());
146cdf0e10cSrcweir for( i = 0; i < nSize; ++i )
147cdf0e10cSrcweir {
148cdf0e10cSrcweir sal_uInt16 nEntryPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(TYP_DBSETNUMBERFLD, i));
149cdf0e10cSrcweir sal_uInt16 nFmtId = GetFldMgr().GetFormatId( TYP_DBSETNUMBERFLD, i );
150cdf0e10cSrcweir aFormatLB.SetEntryData( nEntryPos, reinterpret_cast<void*>(nFmtId) );
151cdf0e10cSrcweir if( SVX_NUM_ARABIC == nFmtId )
152cdf0e10cSrcweir aFormatLB.SelectEntryPos( nEntryPos );
153cdf0e10cSrcweir }
154cdf0e10cSrcweir
155cdf0e10cSrcweir if (!IsFldEdit())
156cdf0e10cSrcweir {
157cdf0e10cSrcweir if (nOldPos != LISTBOX_ENTRY_NOTFOUND)
158cdf0e10cSrcweir aTypeLB.SelectEntryPos(nOldPos);
159cdf0e10cSrcweir
160cdf0e10cSrcweir if (sOldDBName.Len())
161cdf0e10cSrcweir {
162cdf0e10cSrcweir aDatabaseTLB.Select(sOldDBName, sOldTableName, sOldColumnName);
163cdf0e10cSrcweir }
164cdf0e10cSrcweir else
165cdf0e10cSrcweir {
166cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
167cdf0e10cSrcweir if(!pSh)
168cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
169cdf0e10cSrcweir if(pSh)
170cdf0e10cSrcweir {
171cdf0e10cSrcweir SwDBData aTmp(pSh->GetDBData());
172cdf0e10cSrcweir aDatabaseTLB.Select(aTmp.sDataSource, aTmp.sCommand, aEmptyStr);
173cdf0e10cSrcweir }
174cdf0e10cSrcweir }
175cdf0e10cSrcweir }
176cdf0e10cSrcweir
177cdf0e10cSrcweir if( !IsRefresh() )
178cdf0e10cSrcweir {
179cdf0e10cSrcweir String sUserData = GetUserData();
180cdf0e10cSrcweir if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
181cdf0e10cSrcweir {
182cdf0e10cSrcweir String sVal = sUserData.GetToken(1, ';');
183cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)sVal.ToInt32();
184cdf0e10cSrcweir if(nVal != USHRT_MAX)
185cdf0e10cSrcweir {
186cdf0e10cSrcweir for(i = 0; i < aTypeLB.GetEntryCount(); i++)
187cdf0e10cSrcweir if(nVal == (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(i))
188cdf0e10cSrcweir {
189cdf0e10cSrcweir aTypeLB.SelectEntryPos(i);
190cdf0e10cSrcweir break;
191cdf0e10cSrcweir }
192cdf0e10cSrcweir }
193cdf0e10cSrcweir }
194cdf0e10cSrcweir }
195cdf0e10cSrcweir TypeHdl(0);
196cdf0e10cSrcweir
197cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_True);
198cdf0e10cSrcweir aTypeLB.SetSelectHdl(LINK(this, SwFldDBPage, TypeHdl));
199cdf0e10cSrcweir aTypeLB.SetDoubleClickHdl(LINK(this, SwFldDBPage, InsertHdl));
200cdf0e10cSrcweir
201cdf0e10cSrcweir if (IsFldEdit())
202cdf0e10cSrcweir {
203cdf0e10cSrcweir aConditionED.SaveValue();
204cdf0e10cSrcweir aValueED.SaveValue();
205cdf0e10cSrcweir sOldDBName = aDatabaseTLB.GetDBName(sOldTableName, sOldColumnName);
206cdf0e10cSrcweir nOldFormat = GetCurField()->GetFormat();
207cdf0e10cSrcweir nOldSubType = GetCurField()->GetSubType();
208cdf0e10cSrcweir }
209cdf0e10cSrcweir }
210cdf0e10cSrcweir
211cdf0e10cSrcweir /*--------------------------------------------------------------------
212cdf0e10cSrcweir Beschreibung:
213cdf0e10cSrcweir --------------------------------------------------------------------*/
214cdf0e10cSrcweir
FillItemSet(SfxItemSet &)215cdf0e10cSrcweir sal_Bool __EXPORT SwFldDBPage::FillItemSet(SfxItemSet& )
216cdf0e10cSrcweir {
217cdf0e10cSrcweir String sTableName, sColumnName;
218cdf0e10cSrcweir SwDBData aData;
219cdf0e10cSrcweir sal_Bool bIsTable;
220cdf0e10cSrcweir aData.sDataSource = aDatabaseTLB.GetDBName(sTableName, sColumnName, &bIsTable);
221cdf0e10cSrcweir aData.sCommand = sTableName;
222cdf0e10cSrcweir aData.nCommandType = bIsTable ? 0 : 1;
223cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
224cdf0e10cSrcweir if(!pSh)
225cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
226cdf0e10cSrcweir
227cdf0e10cSrcweir if (!aData.sDataSource.getLength())
228cdf0e10cSrcweir aData = pSh->GetDBData();
229cdf0e10cSrcweir
230cdf0e10cSrcweir if(aData.sDataSource.getLength()) // Ohne Datenbank kein neuer Feldbefehl
231cdf0e10cSrcweir {
232cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
233cdf0e10cSrcweir String aVal(aValueED.GetText());
234cdf0e10cSrcweir String aName(aConditionED.GetText());
235cdf0e10cSrcweir sal_uLong nFormat = 0;
236cdf0e10cSrcweir sal_uInt16 nSubType = 0;
237cdf0e10cSrcweir
238cdf0e10cSrcweir String sDBName = aData.sDataSource;
239cdf0e10cSrcweir sDBName += DB_DELIM;
240cdf0e10cSrcweir sDBName += (String)aData.sCommand;
241cdf0e10cSrcweir sDBName += DB_DELIM;
242cdf0e10cSrcweir sDBName += String::CreateFromInt32(aData.nCommandType);
243cdf0e10cSrcweir sDBName += DB_DELIM;
244cdf0e10cSrcweir if(sColumnName.Len())
245cdf0e10cSrcweir {
246cdf0e10cSrcweir sDBName += sColumnName;
247cdf0e10cSrcweir sDBName += DB_DELIM;
248cdf0e10cSrcweir }
249cdf0e10cSrcweir aName.Insert(sDBName, 0);
250cdf0e10cSrcweir
251cdf0e10cSrcweir switch (nTypeId)
252cdf0e10cSrcweir {
253cdf0e10cSrcweir case TYP_DBFLD:
254cdf0e10cSrcweir nFormat = aNumFormatLB.GetFormat();
255cdf0e10cSrcweir if (aNewFormatRB.IsEnabled() && aNewFormatRB.IsChecked())
256cdf0e10cSrcweir nSubType = nsSwExtendedSubType::SUB_OWN_FMT;
257cdf0e10cSrcweir aName = sDBName;
258cdf0e10cSrcweir break;
259cdf0e10cSrcweir
260cdf0e10cSrcweir case TYP_DBSETNUMBERFLD:
261cdf0e10cSrcweir nFormat = (sal_uInt16)(sal_uLong)aFormatLB.GetEntryData(
262cdf0e10cSrcweir aFormatLB.GetSelectEntryPos() );
263cdf0e10cSrcweir break;
264cdf0e10cSrcweir }
265cdf0e10cSrcweir
266cdf0e10cSrcweir
267cdf0e10cSrcweir String sTempDBName, sTempTableName, sTempColumnName;
268cdf0e10cSrcweir sTempDBName = aDatabaseTLB.GetDBName(sTempTableName, sTempColumnName);
269cdf0e10cSrcweir sal_Bool bDBListBoxChanged = sOldDBName != sTempDBName ||
270cdf0e10cSrcweir sOldTableName != sTempTableName || sOldColumnName != sTempColumnName;
271cdf0e10cSrcweir if (!IsFldEdit() ||
272cdf0e10cSrcweir aConditionED.GetSavedValue() != aConditionED.GetText() ||
273cdf0e10cSrcweir aValueED.GetSavedValue() != aValueED.GetText() ||
274cdf0e10cSrcweir bDBListBoxChanged ||
275cdf0e10cSrcweir nOldFormat != nFormat || nOldSubType != nSubType)
276cdf0e10cSrcweir {
277cdf0e10cSrcweir InsertFld( nTypeId, nSubType, aName, aVal, nFormat);
278cdf0e10cSrcweir }
279cdf0e10cSrcweir }
280cdf0e10cSrcweir
281cdf0e10cSrcweir return sal_False;
282cdf0e10cSrcweir }
283cdf0e10cSrcweir
284cdf0e10cSrcweir /*--------------------------------------------------------------------
285cdf0e10cSrcweir Beschreibung:
286cdf0e10cSrcweir --------------------------------------------------------------------*/
287cdf0e10cSrcweir
Create(Window * pParent,const SfxItemSet & rAttrSet)288cdf0e10cSrcweir SfxTabPage* __EXPORT SwFldDBPage::Create( Window* pParent,
289cdf0e10cSrcweir const SfxItemSet& rAttrSet )
290cdf0e10cSrcweir {
291cdf0e10cSrcweir return ( new SwFldDBPage( pParent, rAttrSet ) );
292cdf0e10cSrcweir }
293cdf0e10cSrcweir
294cdf0e10cSrcweir /*--------------------------------------------------------------------
295cdf0e10cSrcweir Beschreibung:
296cdf0e10cSrcweir --------------------------------------------------------------------*/
297cdf0e10cSrcweir
GetGroup()298cdf0e10cSrcweir sal_uInt16 SwFldDBPage::GetGroup()
299cdf0e10cSrcweir {
300cdf0e10cSrcweir return GRP_DB;
301cdf0e10cSrcweir }
302cdf0e10cSrcweir
303cdf0e10cSrcweir /*--------------------------------------------------------------------
304cdf0e10cSrcweir Beschreibung:
305cdf0e10cSrcweir --------------------------------------------------------------------*/
306cdf0e10cSrcweir
IMPL_LINK(SwFldDBPage,TypeHdl,ListBox *,pBox)307cdf0e10cSrcweir IMPL_LINK( SwFldDBPage, TypeHdl, ListBox *, pBox )
308cdf0e10cSrcweir {
309cdf0e10cSrcweir // Alte ListBoxPos sichern
310cdf0e10cSrcweir const sal_uInt16 nOld = GetTypeSel();
311cdf0e10cSrcweir
312cdf0e10cSrcweir // Aktuelle ListBoxPos
313cdf0e10cSrcweir SetTypeSel(aTypeLB.GetSelectEntryPos());
314cdf0e10cSrcweir
315cdf0e10cSrcweir if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
316cdf0e10cSrcweir {
317cdf0e10cSrcweir SetTypeSel(0);
318cdf0e10cSrcweir aTypeLB.SelectEntryPos(0);
319cdf0e10cSrcweir }
320cdf0e10cSrcweir
321cdf0e10cSrcweir if (nOld != GetTypeSel())
322cdf0e10cSrcweir {
323cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell();
324cdf0e10cSrcweir if(!pSh)
325cdf0e10cSrcweir pSh = ::GetActiveWrtShell();
326cdf0e10cSrcweir sal_Bool bCond = sal_False, bSetNo = sal_False, bFormat = sal_False, bDBFormat = sal_False;
327cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
328cdf0e10cSrcweir
329cdf0e10cSrcweir aDatabaseTLB.ShowColumns(nTypeId == TYP_DBFLD);
330cdf0e10cSrcweir
331cdf0e10cSrcweir if (IsFldEdit())
332cdf0e10cSrcweir {
333cdf0e10cSrcweir SwDBData aData;
334cdf0e10cSrcweir String sColumnName;
335cdf0e10cSrcweir if (nTypeId == TYP_DBFLD)
336cdf0e10cSrcweir {
337cdf0e10cSrcweir aData = ((SwDBField*)GetCurField())->GetDBData();
338cdf0e10cSrcweir sColumnName = ((SwDBFieldType*)GetCurField()->GetTyp())->GetColumnName();
339cdf0e10cSrcweir }
340cdf0e10cSrcweir else
341cdf0e10cSrcweir {
342cdf0e10cSrcweir aData = ((SwDBNameInfField*)GetCurField())->GetDBData(pSh->GetDoc());
343cdf0e10cSrcweir }
344cdf0e10cSrcweir aDatabaseTLB.Select(aData.sDataSource, aData.sCommand, sColumnName);
345cdf0e10cSrcweir }
346cdf0e10cSrcweir
347cdf0e10cSrcweir switch (nTypeId)
348cdf0e10cSrcweir {
349cdf0e10cSrcweir case TYP_DBFLD:
350cdf0e10cSrcweir bFormat = sal_True;
351cdf0e10cSrcweir bDBFormat = sal_True;
352cdf0e10cSrcweir aNumFormatLB.Show();
353cdf0e10cSrcweir aFormatLB.Hide();
354cdf0e10cSrcweir
355cdf0e10cSrcweir if (pBox) // Typ wurde vom User geaendert
356cdf0e10cSrcweir aDBFormatRB.Check();
357cdf0e10cSrcweir
358cdf0e10cSrcweir if (IsFldEdit())
359cdf0e10cSrcweir {
360cdf0e10cSrcweir if (GetCurField()->GetFormat() != 0 && GetCurField()->GetFormat() != SAL_MAX_UINT32)
361cdf0e10cSrcweir aNumFormatLB.SetDefFormat(GetCurField()->GetFormat());
362cdf0e10cSrcweir
363cdf0e10cSrcweir if (GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_OWN_FMT)
364cdf0e10cSrcweir aNewFormatRB.Check();
365cdf0e10cSrcweir else
366cdf0e10cSrcweir aDBFormatRB.Check();
367cdf0e10cSrcweir }
368cdf0e10cSrcweir break;
369cdf0e10cSrcweir
370cdf0e10cSrcweir case TYP_DBNUMSETFLD:
371cdf0e10cSrcweir bSetNo = sal_True;
372cdf0e10cSrcweir // kein break!
373cdf0e10cSrcweir case TYP_DBNEXTSETFLD:
374cdf0e10cSrcweir bCond = sal_True;
375cdf0e10cSrcweir if (IsFldEdit())
376cdf0e10cSrcweir {
377cdf0e10cSrcweir aConditionED.SetText(GetCurField()->GetPar1());
378cdf0e10cSrcweir aValueED.SetText(GetCurField()->GetPar2());
379cdf0e10cSrcweir }
380cdf0e10cSrcweir break;
381cdf0e10cSrcweir
382cdf0e10cSrcweir case TYP_DBNAMEFLD:
383cdf0e10cSrcweir break;
384cdf0e10cSrcweir
385cdf0e10cSrcweir case TYP_DBSETNUMBERFLD:
386cdf0e10cSrcweir bFormat = sal_True;
387cdf0e10cSrcweir aNewFormatRB.Check();
388cdf0e10cSrcweir aNumFormatLB.Hide();
389cdf0e10cSrcweir aFormatLB.Show();
390cdf0e10cSrcweir if( IsFldEdit() )
391cdf0e10cSrcweir {
392cdf0e10cSrcweir for( sal_uInt16 nI = aFormatLB.GetEntryCount(); nI; )
393cdf0e10cSrcweir if( GetCurField()->GetFormat() == (sal_uInt16)(sal_uLong)
394cdf0e10cSrcweir aFormatLB.GetEntryData( --nI ))
395cdf0e10cSrcweir {
396cdf0e10cSrcweir aFormatLB.SelectEntryPos( nI );
397cdf0e10cSrcweir break;
398cdf0e10cSrcweir }
399cdf0e10cSrcweir }
400cdf0e10cSrcweir break;
401cdf0e10cSrcweir }
402cdf0e10cSrcweir
403cdf0e10cSrcweir aConditionFT.Enable(bCond);
404cdf0e10cSrcweir aConditionED.Enable(bCond);
405cdf0e10cSrcweir aValueFT.Enable(bSetNo);
406cdf0e10cSrcweir aValueED.Enable(bSetNo);
407cdf0e10cSrcweir if (nTypeId != TYP_DBFLD)
408cdf0e10cSrcweir {
409cdf0e10cSrcweir aDBFormatRB.Enable(bDBFormat);
410cdf0e10cSrcweir aNewFormatRB.Enable(bDBFormat|bFormat);
411cdf0e10cSrcweir aNumFormatLB.Enable(bDBFormat);
412cdf0e10cSrcweir aFormatLB.Enable(bFormat);
413cdf0e10cSrcweir }
414cdf0e10cSrcweir aFormatFL.Enable(bDBFormat|bFormat);
415cdf0e10cSrcweir
416cdf0e10cSrcweir if (!IsFldEdit())
417cdf0e10cSrcweir {
418cdf0e10cSrcweir aValueED.SetText(aEmptyStr);
419cdf0e10cSrcweir if (bCond)
420cdf0e10cSrcweir aConditionED.SetText( String::CreateFromAscii(
421*768779ecSAriel Constenla-Haile RTL_CONSTASCII_STRINGPARAM( "TRUE" )));
422cdf0e10cSrcweir else
423cdf0e10cSrcweir aConditionED.SetText(aEmptyStr);
424cdf0e10cSrcweir }
425cdf0e10cSrcweir
426cdf0e10cSrcweir CheckInsert();
427cdf0e10cSrcweir }
428cdf0e10cSrcweir
429cdf0e10cSrcweir return 0;
430cdf0e10cSrcweir }
431cdf0e10cSrcweir
432cdf0e10cSrcweir /*--------------------------------------------------------------------
433cdf0e10cSrcweir Beschreibung:
434cdf0e10cSrcweir --------------------------------------------------------------------*/
435cdf0e10cSrcweir
IMPL_LINK(SwFldDBPage,NumSelectHdl,NumFormatListBox *,pLB)436cdf0e10cSrcweir IMPL_LINK( SwFldDBPage, NumSelectHdl, NumFormatListBox *, pLB )
437cdf0e10cSrcweir {
438cdf0e10cSrcweir aNewFormatRB.Check();
439cdf0e10cSrcweir aOldNumSelectHdl.Call(pLB);
440cdf0e10cSrcweir
441cdf0e10cSrcweir return 0;
442cdf0e10cSrcweir }
443cdf0e10cSrcweir
444cdf0e10cSrcweir /*---------------------------------------------------------------------
445cdf0e10cSrcweir Beschreibung:
446cdf0e10cSrcweir ---------------------------------------------------------------------*/
447cdf0e10cSrcweir
CheckInsert()448cdf0e10cSrcweir void SwFldDBPage::CheckInsert()
449cdf0e10cSrcweir {
450cdf0e10cSrcweir sal_Bool bInsert = sal_True;
451cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
452cdf0e10cSrcweir
453cdf0e10cSrcweir SvLBoxEntry* pEntry = aDatabaseTLB.GetCurEntry();
454cdf0e10cSrcweir
455cdf0e10cSrcweir if (pEntry)
456cdf0e10cSrcweir {
457cdf0e10cSrcweir pEntry = aDatabaseTLB.GetParent(pEntry);
458cdf0e10cSrcweir
459cdf0e10cSrcweir if (nTypeId == TYP_DBFLD && pEntry)
460cdf0e10cSrcweir pEntry = aDatabaseTLB.GetParent(pEntry);
461cdf0e10cSrcweir
462cdf0e10cSrcweir bInsert &= pEntry != 0;
463cdf0e10cSrcweir }
464cdf0e10cSrcweir else
465cdf0e10cSrcweir bInsert = sal_False;
466cdf0e10cSrcweir
467cdf0e10cSrcweir if (nTypeId == TYP_DBNUMSETFLD)
468cdf0e10cSrcweir {
469cdf0e10cSrcweir sal_Bool bHasValue = aValueED.GetText().Len() != 0;
470cdf0e10cSrcweir
471cdf0e10cSrcweir bInsert &= bHasValue;
472cdf0e10cSrcweir }
473cdf0e10cSrcweir
474cdf0e10cSrcweir EnableInsert(bInsert);
475cdf0e10cSrcweir }
476cdf0e10cSrcweir
477cdf0e10cSrcweir /*---------------------------------------------------------------------
478cdf0e10cSrcweir Beschreibung:
479cdf0e10cSrcweir ---------------------------------------------------------------------*/
480cdf0e10cSrcweir
IMPL_LINK(SwFldDBPage,TreeSelectHdl,SvTreeListBox *,pBox)481cdf0e10cSrcweir IMPL_LINK( SwFldDBPage, TreeSelectHdl, SvTreeListBox *, pBox )
482cdf0e10cSrcweir {
483cdf0e10cSrcweir SvLBoxEntry* pColEntry;
484cdf0e10cSrcweir SvLBoxEntry* pEntry = pColEntry = pBox->GetCurEntry();
485cdf0e10cSrcweir if (pEntry)
486cdf0e10cSrcweir {
487cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
488cdf0e10cSrcweir
489cdf0e10cSrcweir pEntry = aDatabaseTLB.GetParent(pEntry);
490cdf0e10cSrcweir
491cdf0e10cSrcweir if (nTypeId == TYP_DBFLD && pEntry)
492cdf0e10cSrcweir pEntry = aDatabaseTLB.GetParent(pEntry);
493cdf0e10cSrcweir
494cdf0e10cSrcweir CheckInsert();
495cdf0e10cSrcweir
496cdf0e10cSrcweir if (nTypeId == TYP_DBFLD)
497cdf0e10cSrcweir {
498cdf0e10cSrcweir sal_Bool bNumFormat = sal_False;
499cdf0e10cSrcweir
500cdf0e10cSrcweir if (pEntry != 0)
501cdf0e10cSrcweir {
502cdf0e10cSrcweir String sTableName;
503cdf0e10cSrcweir String sColumnName;
504cdf0e10cSrcweir sal_Bool bIsTable;
505cdf0e10cSrcweir String sDBName = aDatabaseTLB.GetDBName(sTableName, sColumnName, &bIsTable);
506cdf0e10cSrcweir bNumFormat = GetFldMgr().IsDBNumeric(sDBName,
507cdf0e10cSrcweir sTableName,
508cdf0e10cSrcweir bIsTable,
509cdf0e10cSrcweir sColumnName);
510cdf0e10cSrcweir if (!IsFldEdit())
511cdf0e10cSrcweir aDBFormatRB.Check();
512cdf0e10cSrcweir }
513cdf0e10cSrcweir
514cdf0e10cSrcweir aDBFormatRB.Enable(bNumFormat);
515cdf0e10cSrcweir aNewFormatRB.Enable(bNumFormat);
516cdf0e10cSrcweir aNumFormatLB.Enable(bNumFormat);
517cdf0e10cSrcweir aFormatFL.Enable(bNumFormat);
518cdf0e10cSrcweir }
519cdf0e10cSrcweir }
520cdf0e10cSrcweir return 0;
521cdf0e10cSrcweir }
522cdf0e10cSrcweir /*-- 27.05.2004 09:14:01---------------------------------------------------
523cdf0e10cSrcweir
524cdf0e10cSrcweir -----------------------------------------------------------------------*/
IMPL_LINK(SwFldDBPage,AddDBHdl,PushButton *,EMPTYARG)525cdf0e10cSrcweir IMPL_LINK( SwFldDBPage, AddDBHdl, PushButton *, EMPTYARG )
526cdf0e10cSrcweir {
527cdf0e10cSrcweir String sNewDB = SwNewDBMgr::LoadAndRegisterDataSource();
528cdf0e10cSrcweir if(sNewDB.Len())
529cdf0e10cSrcweir {
530cdf0e10cSrcweir aDatabaseTLB.AddDataSource(sNewDB);
531cdf0e10cSrcweir }
532cdf0e10cSrcweir return 0;
533cdf0e10cSrcweir }
534cdf0e10cSrcweir
535cdf0e10cSrcweir /*--------------------------------------------------------------------
536cdf0e10cSrcweir Beschreibung: Modify
537cdf0e10cSrcweir --------------------------------------------------------------------*/
538cdf0e10cSrcweir
IMPL_LINK(SwFldDBPage,ModifyHdl,Edit *,EMPTYARG)539cdf0e10cSrcweir IMPL_LINK( SwFldDBPage, ModifyHdl, Edit *, EMPTYARG )
540cdf0e10cSrcweir {
541cdf0e10cSrcweir CheckInsert();
542cdf0e10cSrcweir return 0;
543cdf0e10cSrcweir }
544cdf0e10cSrcweir
545cdf0e10cSrcweir /* -----------------12.01.99 11:21-------------------
546cdf0e10cSrcweir *
547cdf0e10cSrcweir * --------------------------------------------------*/
FillUserData()548cdf0e10cSrcweir void SwFldDBPage::FillUserData()
549cdf0e10cSrcweir {
550cdf0e10cSrcweir String sData( String::CreateFromAscii(
551cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
552cdf0e10cSrcweir sData += ';';
553cdf0e10cSrcweir sal_uInt16 nTypeSel = aTypeLB.GetSelectEntryPos();
554cdf0e10cSrcweir
555cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
556cdf0e10cSrcweir nTypeSel = USHRT_MAX;
557cdf0e10cSrcweir else
558cdf0e10cSrcweir nTypeSel = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData( nTypeSel );
559cdf0e10cSrcweir sData += String::CreateFromInt32( nTypeSel );
560cdf0e10cSrcweir SetUserData(sData);
561cdf0e10cSrcweir }
562cdf0e10cSrcweir /* -----------------12.12.2002 11:33-----------------
563cdf0e10cSrcweir *
564cdf0e10cSrcweir * --------------------------------------------------*/
ActivateMailMergeAddress()565cdf0e10cSrcweir void SwFldDBPage::ActivateMailMergeAddress()
566cdf0e10cSrcweir {
567cdf0e10cSrcweir sal_uLong nData = TYP_DBFLD;
568cdf0e10cSrcweir aTypeLB.SelectEntryPos(aTypeLB.GetEntryPos( (const void*) nData ));
569cdf0e10cSrcweir aTypeLB.GetSelectHdl().Call(&aTypeLB);
570cdf0e10cSrcweir const SwDBData& rData = SW_MOD()->GetDBConfig()->GetAddressSource();
571cdf0e10cSrcweir aDatabaseTLB.Select(rData.sDataSource, rData.sCommand, aEmptyStr);
572cdf0e10cSrcweir }
573cdf0e10cSrcweir /*-- 07.10.2003 13:59:04---------------------------------------------------
574cdf0e10cSrcweir
575cdf0e10cSrcweir -----------------------------------------------------------------------*/
SetWrtShell(SwWrtShell & rSh)576cdf0e10cSrcweir void SwFldDBPage::SetWrtShell(SwWrtShell& rSh)
577cdf0e10cSrcweir {
578cdf0e10cSrcweir aDatabaseTLB.SetWrtShell(rSh);
579cdf0e10cSrcweir }
580