xref: /trunk/main/sw/source/ui/fldui/flddb.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5efeef26fSAndrew Rist  * distributed with this work for additional information
6efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17efeef26fSAndrew Rist  * specific language governing permissions and limitations
18efeef26fSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20efeef26fSAndrew Rist  *************************************************************/
21efeef26fSAndrew Rist 
22efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir 
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <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