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 <rsc/rscsfx.hxx>
32cdf0e10cSrcweir #include <vcl/msgbox.hxx>
33cdf0e10cSrcweir #include <vcl/help.hxx>
34cdf0e10cSrcweir #include <svl/stritem.hxx>
35cdf0e10cSrcweir #include <svl/urihelper.hxx>
36cdf0e10cSrcweir #include <unotools/pathoptions.hxx>
37cdf0e10cSrcweir #include <sfx2/request.hxx>
38cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
39cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
40cdf0e10cSrcweir #include <sfx2/docfile.hxx>
41cdf0e10cSrcweir #include <svx/dialogs.hrc>
42cdf0e10cSrcweir #include <svx/svxdlg.hxx>
43cdf0e10cSrcweir #include <svx/flagsdef.hxx>
44cdf0e10cSrcweir #include <svx/simptabl.hxx>
45cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
46cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePicker.hpp>
47cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilterManager.hpp>
48cdf0e10cSrcweir #include <svtools/indexentryres.hxx>
49cdf0e10cSrcweir #include <editeng/unolingu.hxx>
50cdf0e10cSrcweir #include <column.hxx>
51cdf0e10cSrcweir #include <fmtfsize.hxx>
52cdf0e10cSrcweir #include <shellio.hxx>
53cdf0e10cSrcweir #include <authfld.hxx>
54cdf0e10cSrcweir #include <swtypes.hxx>
55cdf0e10cSrcweir #include <wrtsh.hxx>
56cdf0e10cSrcweir #ifndef _VIEW_HXX
57cdf0e10cSrcweir #include <view.hxx>
58cdf0e10cSrcweir #endif
59cdf0e10cSrcweir #ifndef _BASESH_HXX
60cdf0e10cSrcweir #include <basesh.hxx>
61cdf0e10cSrcweir #endif
62cdf0e10cSrcweir #include <outline.hxx>
63cdf0e10cSrcweir #include <cnttab.hxx>
64cdf0e10cSrcweir #include <swuicnttab.hxx>
65cdf0e10cSrcweir #include <formedt.hxx>
66cdf0e10cSrcweir #include <poolfmt.hxx>
67cdf0e10cSrcweir #ifndef _POOLFMT_HRC
68cdf0e10cSrcweir #include <poolfmt.hrc>
69cdf0e10cSrcweir #endif
70cdf0e10cSrcweir #include <uitool.hxx>
71cdf0e10cSrcweir #include <fmtcol.hxx>
72cdf0e10cSrcweir #include <fldbas.hxx>
73cdf0e10cSrcweir #include <expfld.hxx>
74cdf0e10cSrcweir #include <unotools.hxx>
75cdf0e10cSrcweir #include <unotxdoc.hxx>
76cdf0e10cSrcweir #include <docsh.hxx>
77cdf0e10cSrcweir #include <swmodule.hxx>
78cdf0e10cSrcweir #include <modcfg.hxx>
79cdf0e10cSrcweir
80cdf0e10cSrcweir #ifndef _CMDID_H
81cdf0e10cSrcweir #include <cmdid.h>
82cdf0e10cSrcweir #endif
83cdf0e10cSrcweir #ifndef _HELPID_H
84cdf0e10cSrcweir #include <helpid.h>
85cdf0e10cSrcweir #endif
86cdf0e10cSrcweir #ifndef _UTLUI_HRC
87cdf0e10cSrcweir #include <utlui.hrc>
88cdf0e10cSrcweir #endif
89cdf0e10cSrcweir #ifndef _INDEX_HRC
90cdf0e10cSrcweir #include <index.hrc>
91cdf0e10cSrcweir #endif
92cdf0e10cSrcweir #ifndef _CNTTAB_HRC
93cdf0e10cSrcweir #include <cnttab.hrc>
94cdf0e10cSrcweir #endif
95cdf0e10cSrcweir #ifndef _GLOBALS_HRC
96cdf0e10cSrcweir #include <globals.hrc>
97cdf0e10cSrcweir #endif
98cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
99cdf0e10cSrcweir #include <sfx2/filedlghelper.hxx>
100cdf0e10cSrcweir #ifndef _TOXHLP_HXX
101cdf0e10cSrcweir #include <toxwrap.hxx>
102cdf0e10cSrcweir #endif
103cdf0e10cSrcweir #include <chpfld.hxx>
104cdf0e10cSrcweir
105cdf0e10cSrcweir #ifndef _UTLUI_HRC
106cdf0e10cSrcweir #include "utlui.hrc"
107cdf0e10cSrcweir #endif
108cdf0e10cSrcweir
109cdf0e10cSrcweir #include <sfx2/app.hxx>
110cdf0e10cSrcweir
111cdf0e10cSrcweir #include <unomid.h>
112cdf0e10cSrcweir using namespace ::com::sun::star;
113cdf0e10cSrcweir using namespace ::com::sun::star::lang;
114cdf0e10cSrcweir using namespace ::com::sun::star::uno;
115cdf0e10cSrcweir using namespace com::sun::star::ui::dialogs;
116cdf0e10cSrcweir using ::rtl::OUString;
117cdf0e10cSrcweir using namespace ::sfx2;
118cdf0e10cSrcweir #include <svtools/editbrowsebox.hxx>
119cdf0e10cSrcweir
120cdf0e10cSrcweir static const sal_Unicode aDeliStart = '['; //fuer die form
121cdf0e10cSrcweir static const sal_Unicode aDeliEnd = ']'; //fuer die form
122cdf0e10cSrcweir
123cdf0e10cSrcweir #define POS_GRF 0
124cdf0e10cSrcweir #define POS_OLE 1
125cdf0e10cSrcweir #define POS_TABLE 2
126cdf0e10cSrcweir #define POS_FRAME 3
127cdf0e10cSrcweir
128cdf0e10cSrcweir #define IDX_FILE_EXTENSION String::CreateFromAscii( \
129cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "*.sdi" ))
130cdf0e10cSrcweir
131cdf0e10cSrcweir
132cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
133cdf0e10cSrcweir
134cdf0e10cSrcweir --------------------------------------------------*/
lcl_CreateAutoMarkFileDlg(const String & rURL,const String & rFileString,sal_Bool bOpen)135cdf0e10cSrcweir String lcl_CreateAutoMarkFileDlg( const String& rURL,
136cdf0e10cSrcweir const String& rFileString, sal_Bool bOpen )
137cdf0e10cSrcweir {
138cdf0e10cSrcweir String sRet;
139cdf0e10cSrcweir
140cdf0e10cSrcweir FileDialogHelper aDlgHelper( bOpen ?
141cdf0e10cSrcweir TemplateDescription::FILEOPEN_SIMPLE : TemplateDescription::FILESAVE_AUTOEXTENSION, 0 );
142cdf0e10cSrcweir uno::Reference < XFilePicker > xFP = aDlgHelper.GetFilePicker();
143cdf0e10cSrcweir
144cdf0e10cSrcweir uno::Reference<XFilterManager> xFltMgr(xFP, UNO_QUERY);
145cdf0e10cSrcweir String sCurFltr( IDX_FILE_EXTENSION );
146cdf0e10cSrcweir xFltMgr->appendFilter( rFileString, sCurFltr );
147cdf0e10cSrcweir xFltMgr->setCurrentFilter( rFileString ) ;
148cdf0e10cSrcweir
149cdf0e10cSrcweir String& rLastSaveDir = (String&)SFX_APP()->GetLastSaveDirectory();
150cdf0e10cSrcweir String sSaveDir = rLastSaveDir;
151cdf0e10cSrcweir
152cdf0e10cSrcweir if( rURL.Len() )
153cdf0e10cSrcweir xFP->setDisplayDirectory( rURL );
154cdf0e10cSrcweir else
155cdf0e10cSrcweir {
156cdf0e10cSrcweir SvtPathOptions aPathOpt;
157cdf0e10cSrcweir xFP->setDisplayDirectory( aPathOpt.GetUserConfigPath() );
158cdf0e10cSrcweir }
159cdf0e10cSrcweir
160cdf0e10cSrcweir if( aDlgHelper.Execute() == ERRCODE_NONE )
161cdf0e10cSrcweir {
162cdf0e10cSrcweir sRet = xFP->getFiles().getConstArray()[0];
163cdf0e10cSrcweir }
164cdf0e10cSrcweir rLastSaveDir = sSaveDir;
165cdf0e10cSrcweir return sRet;
166cdf0e10cSrcweir }
167cdf0e10cSrcweir /* -----------------------------19.01.00 11:09--------------------------------
168cdf0e10cSrcweir
169cdf0e10cSrcweir ---------------------------------------------------------------------------*/
170cdf0e10cSrcweir struct AutoMarkEntry
171cdf0e10cSrcweir {
172cdf0e10cSrcweir String sSearch;
173cdf0e10cSrcweir String sAlternative;
174cdf0e10cSrcweir String sPrimKey;
175cdf0e10cSrcweir String sSecKey;
176cdf0e10cSrcweir String sComment;
177cdf0e10cSrcweir sal_Bool bCase;
178cdf0e10cSrcweir sal_Bool bWord;
179cdf0e10cSrcweir
AutoMarkEntryAutoMarkEntry180cdf0e10cSrcweir AutoMarkEntry() :
181cdf0e10cSrcweir bCase(sal_False),
182cdf0e10cSrcweir bWord(sal_False){}
183cdf0e10cSrcweir };
184cdf0e10cSrcweir typedef AutoMarkEntry* AutoMarkEntryPtr;
185cdf0e10cSrcweir SV_DECL_PTRARR_DEL(AutoMarkEntryArr, AutoMarkEntryPtr, 0, 4)
186cdf0e10cSrcweir SV_IMPL_PTRARR(AutoMarkEntryArr, AutoMarkEntryPtr);
187cdf0e10cSrcweir
188cdf0e10cSrcweir typedef ::svt::EditBrowseBox SwEntryBrowseBox_Base;
189cdf0e10cSrcweir class SwEntryBrowseBox : public SwEntryBrowseBox_Base
190cdf0e10cSrcweir {
191cdf0e10cSrcweir Edit aCellEdit;
192cdf0e10cSrcweir ::svt::CheckBoxControl aCellCheckBox;
193cdf0e10cSrcweir
194cdf0e10cSrcweir String sSearch;
195cdf0e10cSrcweir String sAlternative;
196cdf0e10cSrcweir String sPrimKey;
197cdf0e10cSrcweir String sSecKey;
198cdf0e10cSrcweir String sComment;
199cdf0e10cSrcweir String sCaseSensitive;
200cdf0e10cSrcweir String sWordOnly;
201cdf0e10cSrcweir String sYes;
202cdf0e10cSrcweir String sNo;
203cdf0e10cSrcweir
204cdf0e10cSrcweir AutoMarkEntryArr aEntryArr;
205cdf0e10cSrcweir
206cdf0e10cSrcweir ::svt::CellControllerRef xController;
207cdf0e10cSrcweir ::svt::CellControllerRef xCheckController;
208cdf0e10cSrcweir
209cdf0e10cSrcweir long nCurrentRow;
210cdf0e10cSrcweir sal_Bool bModified;
211cdf0e10cSrcweir
212cdf0e10cSrcweir
SetModified()213cdf0e10cSrcweir void SetModified() {bModified = sal_True;}
214cdf0e10cSrcweir
215cdf0e10cSrcweir protected:
216cdf0e10cSrcweir virtual sal_Bool SeekRow( long nRow );
217cdf0e10cSrcweir // virtual void PaintField( OutputDevice& rDev, const awt::Rectangle& rRect,
218cdf0e10cSrcweir // sal_uInt16 nColumnId ) const;
219cdf0e10cSrcweir virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId) const;
220cdf0e10cSrcweir virtual void InitController(::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol);
221cdf0e10cSrcweir virtual ::svt::CellController* GetController(long nRow, sal_uInt16 nCol);
222cdf0e10cSrcweir virtual sal_Bool SaveModified();
223cdf0e10cSrcweir
224cdf0e10cSrcweir public:
225cdf0e10cSrcweir SwEntryBrowseBox(Window* pParent, const ResId& rId,
226cdf0e10cSrcweir BrowserMode nMode = 0 );
227cdf0e10cSrcweir void ReadEntries(SvStream& rInStr);
228cdf0e10cSrcweir void WriteEntries(SvStream& rOutStr);
229cdf0e10cSrcweir
230cdf0e10cSrcweir sal_Bool IsModified()const;
231cdf0e10cSrcweir
232cdf0e10cSrcweir virtual String GetCellText( long nRow, sal_uInt16 nColumn ) const;
233cdf0e10cSrcweir };
234cdf0e10cSrcweir
235cdf0e10cSrcweir class SwAutoMarkDlg_Impl : public ModalDialog
236cdf0e10cSrcweir {
237cdf0e10cSrcweir OKButton aOKPB;
238cdf0e10cSrcweir CancelButton aCancelPB;
239cdf0e10cSrcweir HelpButton aHelpPB;
240cdf0e10cSrcweir
241cdf0e10cSrcweir SwEntryBrowseBox aEntriesBB;
242cdf0e10cSrcweir FixedLine aEntriesFL;
243cdf0e10cSrcweir
244cdf0e10cSrcweir String sAutoMarkURL;
245cdf0e10cSrcweir const String sAutoMarkType;
246cdf0e10cSrcweir
247cdf0e10cSrcweir sal_Bool bCreateMode;
248cdf0e10cSrcweir
249cdf0e10cSrcweir DECL_LINK(OkHdl, OKButton*);
250cdf0e10cSrcweir public:
251cdf0e10cSrcweir SwAutoMarkDlg_Impl(Window* pParent, const String& rAutoMarkURL,
252cdf0e10cSrcweir const String& rAutoMarkType, sal_Bool bCreate);
253cdf0e10cSrcweir ~SwAutoMarkDlg_Impl();
254cdf0e10cSrcweir
255cdf0e10cSrcweir };
256cdf0e10cSrcweir /* -----------------04.11.99 11:02-------------------
257cdf0e10cSrcweir
258cdf0e10cSrcweir --------------------------------------------------*/
GetFlatIndex() const259cdf0e10cSrcweir sal_uInt16 CurTOXType::GetFlatIndex() const
260cdf0e10cSrcweir {
261cdf0e10cSrcweir sal_uInt16 nRet = static_cast< sal_uInt16 >(eType);
262cdf0e10cSrcweir if(eType == TOX_USER && nIndex)
263cdf0e10cSrcweir {
264cdf0e10cSrcweir nRet = static_cast< sal_uInt16 >(TOX_AUTHORITIES + nIndex);
265cdf0e10cSrcweir }
266cdf0e10cSrcweir return nRet;
267cdf0e10cSrcweir }
268cdf0e10cSrcweir /*************************************************************************
269cdf0e10cSrcweir
270cdf0e10cSrcweir *************************************************************************/
271cdf0e10cSrcweir #define EDIT_MINWIDTH 15
272cdf0e10cSrcweir
273cdf0e10cSrcweir /* -----------------14.06.99 12:12-------------------
274cdf0e10cSrcweir
275cdf0e10cSrcweir --------------------------------------------------*/
SwMultiTOXTabDialog(Window * pParent,const SfxItemSet & rSet,SwWrtShell & rShell,SwTOXBase * pCurTOX,sal_uInt16 nToxType,sal_Bool bGlobal)276cdf0e10cSrcweir SwMultiTOXTabDialog::SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
277cdf0e10cSrcweir SwWrtShell &rShell,
278cdf0e10cSrcweir SwTOXBase* pCurTOX,
279cdf0e10cSrcweir sal_uInt16 nToxType, sal_Bool bGlobal) :
280cdf0e10cSrcweir SfxTabDialog( pParent, SW_RES(DLG_MULTI_TOX), &rSet),
281cdf0e10cSrcweir aExampleContainerWIN(this, SW_RES(WIN_EXAMPLE)),
282cdf0e10cSrcweir aExampleWIN( &aExampleContainerWIN, 0 ),
283cdf0e10cSrcweir aShowExampleCB( this, SW_RES(CB_SHOWEXAMPLE)),
284cdf0e10cSrcweir pMgr( new SwTOXMgr( &rShell ) ),
285cdf0e10cSrcweir rSh(rShell),
286cdf0e10cSrcweir pExampleFrame(0),
287cdf0e10cSrcweir pParamTOXBase(pCurTOX),
288cdf0e10cSrcweir sUserDefinedIndex(SW_RES(ST_USERDEFINEDINDEX)),
289cdf0e10cSrcweir nInitialTOXType(nToxType),
290cdf0e10cSrcweir
291cdf0e10cSrcweir bEditTOX(sal_False),
292cdf0e10cSrcweir bExampleCreated(sal_False),
293cdf0e10cSrcweir bGlobalFlag(bGlobal)
294cdf0e10cSrcweir {
295cdf0e10cSrcweir FreeResource();
296cdf0e10cSrcweir
297cdf0e10cSrcweir aExampleWIN.SetPosSizePixel(aExampleContainerWIN.GetPosPixel(),
298cdf0e10cSrcweir aExampleContainerWIN.GetSizePixel());
299cdf0e10cSrcweir
300cdf0e10cSrcweir eCurrentTOXType.eType = TOX_CONTENT;
301cdf0e10cSrcweir eCurrentTOXType.nIndex = 0;
302cdf0e10cSrcweir
303cdf0e10cSrcweir sal_uInt16 nUserTypeCount = rSh.GetTOXTypeCount(TOX_USER);
304cdf0e10cSrcweir nTypeCount = nUserTypeCount + 6;
305cdf0e10cSrcweir pFormArr = new SwForm*[nTypeCount];
306cdf0e10cSrcweir pDescArr = new SwTOXDescription*[nTypeCount];
307cdf0e10cSrcweir pxIndexSectionsArr = new SwIndexSections_Impl*[nTypeCount];
308cdf0e10cSrcweir //the standard user index is on position TOX_USER
309cdf0e10cSrcweir //all user user indexes follow after position TOX_AUTHORITIES
310cdf0e10cSrcweir if(pCurTOX)
311cdf0e10cSrcweir {
312cdf0e10cSrcweir bEditTOX = sal_True;
313cdf0e10cSrcweir }
314cdf0e10cSrcweir for(int i = nTypeCount - 1; i > -1; i--)
315cdf0e10cSrcweir {
316cdf0e10cSrcweir pFormArr[i] = 0;
317cdf0e10cSrcweir pDescArr[i] = 0;
318cdf0e10cSrcweir pxIndexSectionsArr[i] = new SwIndexSections_Impl;
319cdf0e10cSrcweir if(pCurTOX)
320cdf0e10cSrcweir {
321cdf0e10cSrcweir eCurrentTOXType.eType = pCurTOX->GetType();
322cdf0e10cSrcweir sal_uInt16 nArrayIndex = static_cast< sal_uInt16 >(eCurrentTOXType.eType);
323cdf0e10cSrcweir if(eCurrentTOXType.eType == TOX_USER)
324cdf0e10cSrcweir {
325cdf0e10cSrcweir //which user type is it?
326cdf0e10cSrcweir for(sal_uInt16 nUser = 0; nUser < nUserTypeCount; nUser++)
327cdf0e10cSrcweir {
328cdf0e10cSrcweir const SwTOXType* pTemp = rSh.GetTOXType(TOX_USER, nUser);
329cdf0e10cSrcweir if(pCurTOX->GetTOXType() == pTemp)
330cdf0e10cSrcweir {
331cdf0e10cSrcweir eCurrentTOXType.nIndex = nUser;
332cdf0e10cSrcweir nArrayIndex = static_cast< sal_uInt16 >(nUser > 0 ? TOX_AUTHORITIES + nUser : TOX_USER);
333cdf0e10cSrcweir break;
334cdf0e10cSrcweir }
335cdf0e10cSrcweir }
336cdf0e10cSrcweir }
337cdf0e10cSrcweir pFormArr[nArrayIndex] = new SwForm(pCurTOX->GetTOXForm());
338cdf0e10cSrcweir pDescArr[nArrayIndex] = CreateTOXDescFromTOXBase(pCurTOX);
339cdf0e10cSrcweir if(TOX_AUTHORITIES == eCurrentTOXType.eType)
340cdf0e10cSrcweir {
341cdf0e10cSrcweir const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
342cdf0e10cSrcweir rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
343cdf0e10cSrcweir if(pFType)
344cdf0e10cSrcweir {
345cdf0e10cSrcweir String sBrackets;
346cdf0e10cSrcweir if(pFType->GetPrefix())
347cdf0e10cSrcweir sBrackets += pFType->GetPrefix();
348cdf0e10cSrcweir if(pFType->GetSuffix())
349cdf0e10cSrcweir sBrackets += pFType->GetSuffix();
350cdf0e10cSrcweir pDescArr[nArrayIndex]->SetAuthBrackets(sBrackets);
351cdf0e10cSrcweir pDescArr[nArrayIndex]->SetAuthSequence(pFType->IsSequence());
352cdf0e10cSrcweir }
353cdf0e10cSrcweir else
354cdf0e10cSrcweir {
355cdf0e10cSrcweir pDescArr[nArrayIndex]->SetAuthBrackets(C2S("[]"));
356cdf0e10cSrcweir }
357cdf0e10cSrcweir }
358cdf0e10cSrcweir }
359cdf0e10cSrcweir }
360cdf0e10cSrcweir SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
361cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!");
362cdf0e10cSrcweir AddTabPage(TP_TOX_SELECT, SwTOXSelectTabPage::Create, 0);
363cdf0e10cSrcweir AddTabPage(TP_TOX_STYLES, SwTOXStylesTabPage::Create, 0);
364cdf0e10cSrcweir AddTabPage(TP_COLUMN, SwColumnPage::Create, 0);
365cdf0e10cSrcweir AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 );
366cdf0e10cSrcweir AddTabPage(TP_TOX_ENTRY, SwTOXEntryTabPage::Create, 0);
367cdf0e10cSrcweir if(!pCurTOX)
368cdf0e10cSrcweir SetCurPageId(TP_TOX_SELECT);
369cdf0e10cSrcweir
370cdf0e10cSrcweir aShowExampleCB.SetClickHdl(LINK(this, SwMultiTOXTabDialog, ShowPreviewHdl));
371cdf0e10cSrcweir
372cdf0e10cSrcweir aShowExampleCB.Check( SW_MOD()->GetModuleConfig()->IsShowIndexPreview());
373cdf0e10cSrcweir
374cdf0e10cSrcweir aExampleContainerWIN.SetAccessibleName(aShowExampleCB.GetText());
375cdf0e10cSrcweir SetViewAlign( WINDOWALIGN_LEFT );
376cdf0e10cSrcweir // SetViewWindow does not work if the dialog is visible!
377cdf0e10cSrcweir
378cdf0e10cSrcweir if(!aShowExampleCB.IsChecked())
379cdf0e10cSrcweir SetViewWindow( &aExampleContainerWIN );
380cdf0e10cSrcweir
381cdf0e10cSrcweir Point aOldPos = GetPosPixel();
382cdf0e10cSrcweir ShowPreviewHdl(0);
383cdf0e10cSrcweir Point aNewPos = GetPosPixel();
384cdf0e10cSrcweir //72040: initial position may be left of the view - that has to be corrected
385cdf0e10cSrcweir if(aNewPos.X() < 0)
386cdf0e10cSrcweir SetPosPixel(aOldPos);
387cdf0e10cSrcweir }
388cdf0e10cSrcweir /*-- 14.06.99 13:11:40---------------------------------------------------
389cdf0e10cSrcweir
390cdf0e10cSrcweir -----------------------------------------------------------------------*/
~SwMultiTOXTabDialog()391cdf0e10cSrcweir SwMultiTOXTabDialog::~SwMultiTOXTabDialog()
392cdf0e10cSrcweir {
393cdf0e10cSrcweir SW_MOD()->GetModuleConfig()->SetShowIndexPreview(aShowExampleCB.IsChecked());
394cdf0e10cSrcweir
395cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nTypeCount; i++)
396cdf0e10cSrcweir {
397cdf0e10cSrcweir delete pFormArr[i];
398cdf0e10cSrcweir delete pDescArr[i];
399cdf0e10cSrcweir delete pxIndexSectionsArr[i];
400cdf0e10cSrcweir }
401cdf0e10cSrcweir delete[] pxIndexSectionsArr;
402cdf0e10cSrcweir
403cdf0e10cSrcweir delete[] pFormArr;
404cdf0e10cSrcweir delete[] pDescArr;
405cdf0e10cSrcweir delete pMgr;
406cdf0e10cSrcweir delete pExampleFrame;
407cdf0e10cSrcweir }
408cdf0e10cSrcweir /*-- 14.06.99 13:11:40---------------------------------------------------
409cdf0e10cSrcweir
410cdf0e10cSrcweir -----------------------------------------------------------------------*/
PageCreated(sal_uInt16 nId,SfxTabPage & rPage)411cdf0e10cSrcweir void SwMultiTOXTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
412cdf0e10cSrcweir {
413cdf0e10cSrcweir if( TP_BACKGROUND == nId )
414cdf0e10cSrcweir {
415cdf0e10cSrcweir SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
416cdf0e10cSrcweir aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_SHOW_SELECTOR));
417cdf0e10cSrcweir rPage.PageCreated(aSet);
418cdf0e10cSrcweir }
419cdf0e10cSrcweir else if(TP_COLUMN == nId )
420cdf0e10cSrcweir {
421cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)GetInputSetImpl()->Get(RES_FRM_SIZE);
422cdf0e10cSrcweir
423cdf0e10cSrcweir ((SwColumnPage&)rPage).SetPageWidth(rSize.GetWidth());
424cdf0e10cSrcweir }
425cdf0e10cSrcweir else if(TP_TOX_ENTRY == nId)
426cdf0e10cSrcweir ((SwTOXEntryTabPage&)rPage).SetWrtShell(rSh);
427cdf0e10cSrcweir if(TP_TOX_SELECT == nId)
428cdf0e10cSrcweir {
429cdf0e10cSrcweir ((SwTOXSelectTabPage&)rPage).SetWrtShell(rSh);
430cdf0e10cSrcweir if(USHRT_MAX != nInitialTOXType)
431cdf0e10cSrcweir ((SwTOXSelectTabPage&)rPage).SelectType((TOXTypes)nInitialTOXType);
432cdf0e10cSrcweir }
433cdf0e10cSrcweir }
434cdf0e10cSrcweir /*-- 14.06.99 13:11:40---------------------------------------------------
435cdf0e10cSrcweir
436cdf0e10cSrcweir -----------------------------------------------------------------------*/
Ok()437cdf0e10cSrcweir short SwMultiTOXTabDialog::Ok()
438cdf0e10cSrcweir {
439cdf0e10cSrcweir short nRet = SfxTabDialog::Ok();
440cdf0e10cSrcweir SwTOXDescription& rDesc = GetTOXDescription(eCurrentTOXType);
441cdf0e10cSrcweir SwTOXBase aNewDef(*rSh.GetDefaultTOXBase( eCurrentTOXType.eType, sal_True ));
442cdf0e10cSrcweir
443cdf0e10cSrcweir sal_uInt16 nIndex = static_cast< sal_uInt16 >(eCurrentTOXType.eType);
444cdf0e10cSrcweir if(eCurrentTOXType.eType == TOX_USER && eCurrentTOXType.nIndex)
445cdf0e10cSrcweir {
446cdf0e10cSrcweir nIndex = static_cast< sal_uInt16 >(TOX_AUTHORITIES + eCurrentTOXType.nIndex);
447cdf0e10cSrcweir }
448cdf0e10cSrcweir
449cdf0e10cSrcweir if(pFormArr[nIndex])
450cdf0e10cSrcweir {
451cdf0e10cSrcweir rDesc.SetForm(*pFormArr[nIndex]);
452cdf0e10cSrcweir aNewDef.SetTOXForm(*pFormArr[nIndex]);
453cdf0e10cSrcweir }
454cdf0e10cSrcweir rDesc.ApplyTo(aNewDef);
455cdf0e10cSrcweir if(!bGlobalFlag)
456cdf0e10cSrcweir pMgr->UpdateOrInsertTOX(
457cdf0e10cSrcweir rDesc, 0, GetOutputItemSet());
458cdf0e10cSrcweir else if(bEditTOX)
459cdf0e10cSrcweir pMgr->UpdateOrInsertTOX(
460cdf0e10cSrcweir rDesc, &pParamTOXBase, GetOutputItemSet());
461cdf0e10cSrcweir
462cdf0e10cSrcweir if(!eCurrentTOXType.nIndex)
463cdf0e10cSrcweir rSh.SetDefaultTOXBase(aNewDef);
464cdf0e10cSrcweir
465cdf0e10cSrcweir return nRet;
466cdf0e10cSrcweir }
467cdf0e10cSrcweir /* -----------------16.06.99 11:59-------------------
468cdf0e10cSrcweir
469cdf0e10cSrcweir --------------------------------------------------*/
GetForm(CurTOXType eType)470cdf0e10cSrcweir SwForm* SwMultiTOXTabDialog::GetForm(CurTOXType eType)
471cdf0e10cSrcweir {
472cdf0e10cSrcweir sal_uInt16 nIndex = eType.GetFlatIndex();
473cdf0e10cSrcweir if(!pFormArr[nIndex])
474cdf0e10cSrcweir pFormArr[nIndex] = new SwForm(eType.eType);
475cdf0e10cSrcweir return pFormArr[nIndex];
476cdf0e10cSrcweir }
477cdf0e10cSrcweir /* -----------------09.09.99 11:29-------------------
478cdf0e10cSrcweir
479cdf0e10cSrcweir --------------------------------------------------*/
GetTOXDescription(CurTOXType eType)480cdf0e10cSrcweir SwTOXDescription& SwMultiTOXTabDialog::GetTOXDescription(CurTOXType eType)
481cdf0e10cSrcweir {
482cdf0e10cSrcweir sal_uInt16 nIndex = eType.GetFlatIndex();
483cdf0e10cSrcweir if(!pDescArr[nIndex])
484cdf0e10cSrcweir {
485cdf0e10cSrcweir const SwTOXBase* pDef = rSh.GetDefaultTOXBase( eType.eType );
486cdf0e10cSrcweir if(pDef)
487cdf0e10cSrcweir pDescArr[nIndex] = CreateTOXDescFromTOXBase(pDef);
488cdf0e10cSrcweir else
489cdf0e10cSrcweir {
490cdf0e10cSrcweir pDescArr[nIndex] = new SwTOXDescription(eType.eType);
491cdf0e10cSrcweir if(eType.eType == TOX_USER)
492cdf0e10cSrcweir pDescArr[nIndex]->SetTitle(sUserDefinedIndex);
493cdf0e10cSrcweir else
494cdf0e10cSrcweir pDescArr[nIndex]->SetTitle(
495cdf0e10cSrcweir rSh.GetTOXType(eType.eType, 0)->GetTypeName());
496cdf0e10cSrcweir }
497cdf0e10cSrcweir if(TOX_AUTHORITIES == eType.eType)
498cdf0e10cSrcweir {
499cdf0e10cSrcweir const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
500cdf0e10cSrcweir rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
501cdf0e10cSrcweir if(pFType)
502cdf0e10cSrcweir {
503cdf0e10cSrcweir String sBrackets(pFType->GetPrefix());
504cdf0e10cSrcweir sBrackets += pFType->GetSuffix();
505cdf0e10cSrcweir pDescArr[nIndex]->SetAuthBrackets(sBrackets);
506cdf0e10cSrcweir pDescArr[nIndex]->SetAuthSequence(pFType->IsSequence());
507cdf0e10cSrcweir }
508cdf0e10cSrcweir else
509cdf0e10cSrcweir {
510cdf0e10cSrcweir pDescArr[nIndex]->SetAuthBrackets(C2S("[]"));
511cdf0e10cSrcweir }
512cdf0e10cSrcweir }
513cdf0e10cSrcweir else if(TOX_INDEX == eType.eType)
514cdf0e10cSrcweir pDescArr[nIndex]->SetMainEntryCharStyle(SW_RESSTR(STR_POOLCHR_IDX_MAIN_ENTRY));
515cdf0e10cSrcweir
516cdf0e10cSrcweir }
517cdf0e10cSrcweir return *pDescArr[nIndex];
518cdf0e10cSrcweir }
519cdf0e10cSrcweir /* -----------------09.09.99 11:36-------------------
520cdf0e10cSrcweir
521cdf0e10cSrcweir --------------------------------------------------*/
CreateTOXDescFromTOXBase(const SwTOXBase * pCurTOX)522cdf0e10cSrcweir SwTOXDescription* SwMultiTOXTabDialog::CreateTOXDescFromTOXBase(
523cdf0e10cSrcweir const SwTOXBase*pCurTOX)
524cdf0e10cSrcweir {
525cdf0e10cSrcweir SwTOXDescription * pDesc = new SwTOXDescription(pCurTOX->GetType());
526cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
527cdf0e10cSrcweir pDesc->SetStyleNames(pCurTOX->GetStyleNames(i), i);
528cdf0e10cSrcweir pDesc->SetAutoMarkURL(rSh.GetTOIAutoMarkURL());
529cdf0e10cSrcweir pDesc->SetTitle(pCurTOX->GetTitle());
530cdf0e10cSrcweir
531cdf0e10cSrcweir
532cdf0e10cSrcweir pDesc->SetContentOptions(pCurTOX->GetCreateType());
533cdf0e10cSrcweir if(pDesc->GetTOXType() == TOX_INDEX)
534cdf0e10cSrcweir pDesc->SetIndexOptions(pCurTOX->GetOptions());
535cdf0e10cSrcweir pDesc->SetMainEntryCharStyle(pCurTOX->GetMainEntryCharStyle());
536cdf0e10cSrcweir if(pDesc->GetTOXType() != TOX_INDEX)
537cdf0e10cSrcweir pDesc->SetLevel((sal_uInt8)pCurTOX->GetLevel());
538cdf0e10cSrcweir pDesc->SetCreateFromObjectNames(pCurTOX->IsFromObjectNames());
539cdf0e10cSrcweir pDesc->SetSequenceName(pCurTOX->GetSequenceName());
540cdf0e10cSrcweir pDesc->SetCaptionDisplay(pCurTOX->GetCaptionDisplay());
541cdf0e10cSrcweir pDesc->SetFromChapter(pCurTOX->IsFromChapter());
542cdf0e10cSrcweir pDesc->SetReadonly(pCurTOX->IsProtected());
543cdf0e10cSrcweir pDesc->SetOLEOptions(pCurTOX->GetOLEOptions());
544cdf0e10cSrcweir pDesc->SetLevelFromChapter(pCurTOX->IsLevelFromChapter());
545cdf0e10cSrcweir pDesc->SetLanguage(pCurTOX->GetLanguage());
546cdf0e10cSrcweir pDesc->SetSortAlgorithm(pCurTOX->GetSortAlgorithm());
547cdf0e10cSrcweir return pDesc;
548cdf0e10cSrcweir }
549cdf0e10cSrcweir
550cdf0e10cSrcweir /* -----------------------------29.12.99 09:53--------------------------------
551cdf0e10cSrcweir
552cdf0e10cSrcweir ---------------------------------------------------------------------------*/
553cdf0e10cSrcweir
IMPL_LINK(SwMultiTOXTabDialog,ShowPreviewHdl,CheckBox *,pBox)554cdf0e10cSrcweir IMPL_LINK( SwMultiTOXTabDialog, ShowPreviewHdl, CheckBox *, pBox )
555cdf0e10cSrcweir {
556cdf0e10cSrcweir if(aShowExampleCB.IsChecked())
557cdf0e10cSrcweir {
558cdf0e10cSrcweir if(!pExampleFrame && !bExampleCreated)
559cdf0e10cSrcweir {
560cdf0e10cSrcweir bExampleCreated = sal_True;
561cdf0e10cSrcweir String sTemplate( String::CreateFromAscii(
562cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM("internal")) );
563cdf0e10cSrcweir sTemplate += INET_PATH_TOKEN;
564cdf0e10cSrcweir sTemplate.AppendAscii( RTL_CONSTASCII_STRINGPARAM("idxexample") );
565cdf0e10cSrcweir String sTemplateWithoutExt( sTemplate );
566cdf0e10cSrcweir #ifndef MAC_WITHOUT_EXT
567cdf0e10cSrcweir sTemplate.AppendAscii( RTL_CONSTASCII_STRINGPARAM(".odt") );
568cdf0e10cSrcweir #endif
569cdf0e10cSrcweir
570cdf0e10cSrcweir SvtPathOptions aOpt;
571cdf0e10cSrcweir // 6.0 (extension .sxw)
572cdf0e10cSrcweir sal_Bool bExist = aOpt.SearchFile( sTemplate, SvtPathOptions::PATH_TEMPLATE );
573cdf0e10cSrcweir
574cdf0e10cSrcweir #ifndef MAC_WITHOUT_EXT
575cdf0e10cSrcweir if( !bExist )
576cdf0e10cSrcweir {
577cdf0e10cSrcweir // 6.0 (extension .sxw)
578cdf0e10cSrcweir sTemplate = sTemplateWithoutExt;
579cdf0e10cSrcweir sTemplate.AppendAscii( RTL_CONSTASCII_STRINGPARAM(".sxw") );
580cdf0e10cSrcweir bExist = aOpt.SearchFile( sTemplate, SvtPathOptions::PATH_TEMPLATE );
581cdf0e10cSrcweir }
582cdf0e10cSrcweir if( !bExist )
583cdf0e10cSrcweir {
584cdf0e10cSrcweir // 5.0 (extension .vor)
585cdf0e10cSrcweir sTemplate = sTemplateWithoutExt;
586cdf0e10cSrcweir sTemplate.AppendAscii( RTL_CONSTASCII_STRINGPARAM(".sdw") );
587cdf0e10cSrcweir bExist = aOpt.SearchFile( sTemplate, SvtPathOptions::PATH_TEMPLATE );
588cdf0e10cSrcweir }
589cdf0e10cSrcweir #endif
590cdf0e10cSrcweir
591cdf0e10cSrcweir if(!bExist)
592cdf0e10cSrcweir {
593cdf0e10cSrcweir String sInfo(SW_RES(STR_FILE_NOT_FOUND));
594cdf0e10cSrcweir sInfo.SearchAndReplaceAscii( "%1", sTemplate );
595cdf0e10cSrcweir sInfo.SearchAndReplaceAscii( "%2", aOpt.GetTemplatePath() );
596cdf0e10cSrcweir InfoBox aInfo(GetParent(), sInfo);
597cdf0e10cSrcweir aInfo.Execute();
598cdf0e10cSrcweir }
599cdf0e10cSrcweir else
600cdf0e10cSrcweir {
601cdf0e10cSrcweir Link aLink(LINK(this, SwMultiTOXTabDialog, CreateExample_Hdl));
602cdf0e10cSrcweir pExampleFrame = new SwOneExampleFrame(
603cdf0e10cSrcweir aExampleWIN, EX_SHOW_ONLINE_LAYOUT, &aLink, &sTemplate);
604cdf0e10cSrcweir
605cdf0e10cSrcweir if(!pExampleFrame->IsServiceAvailable())
606cdf0e10cSrcweir {
607cdf0e10cSrcweir pExampleFrame->CreateErrorMessage(0);
608cdf0e10cSrcweir }
609cdf0e10cSrcweir }
610cdf0e10cSrcweir aShowExampleCB.Show(pExampleFrame && pExampleFrame->IsServiceAvailable());
611cdf0e10cSrcweir }
612cdf0e10cSrcweir }
613cdf0e10cSrcweir sal_Bool bSetViewWindow = aShowExampleCB.IsChecked()
614cdf0e10cSrcweir && pExampleFrame && pExampleFrame->IsServiceAvailable();
615cdf0e10cSrcweir
616cdf0e10cSrcweir aExampleContainerWIN.Show( bSetViewWindow );
617cdf0e10cSrcweir SetViewWindow( bSetViewWindow ? &aExampleContainerWIN : 0 );
618cdf0e10cSrcweir
619cdf0e10cSrcweir Window *pTopmostParent = this;
620cdf0e10cSrcweir while(pTopmostParent->GetParent())
621cdf0e10cSrcweir pTopmostParent = pTopmostParent->GetParent();
622cdf0e10cSrcweir ::Rectangle aRect(GetClientWindowExtentsRelative(pTopmostParent));
623cdf0e10cSrcweir ::Point aPos = aRect.TopLeft();
624cdf0e10cSrcweir Size aSize = GetSizePixel();
625cdf0e10cSrcweir if(pBox)
626cdf0e10cSrcweir AdjustLayout();
627cdf0e10cSrcweir long nDiffWidth = GetSizePixel().Width() - aSize.Width();
628cdf0e10cSrcweir aPos.X() -= nDiffWidth;
629cdf0e10cSrcweir SetPosPixel(aPos);
630cdf0e10cSrcweir
631cdf0e10cSrcweir return 0;
632cdf0e10cSrcweir }
633cdf0e10cSrcweir
634cdf0e10cSrcweir
635cdf0e10cSrcweir /* -----------------05.07.99 09:49-------------------
636cdf0e10cSrcweir
637cdf0e10cSrcweir --------------------------------------------------*/
IsNoNum(SwWrtShell & rSh,const String & rName)638cdf0e10cSrcweir sal_Bool SwMultiTOXTabDialog::IsNoNum(SwWrtShell& rSh, const String& rName)
639cdf0e10cSrcweir {
640cdf0e10cSrcweir SwTxtFmtColl* pColl = rSh.GetParaStyle(rName);
641cdf0e10cSrcweir //if(pColl && pColl->GetOutlineLevel() == NO_NUMBERING) //#outline level,zhaojianwei
642cdf0e10cSrcweir if(pColl && ! pColl->IsAssignedToListLevelOfOutlineStyle()) //<-end,zhaojianwei
643cdf0e10cSrcweir return sal_True;
644cdf0e10cSrcweir
645cdf0e10cSrcweir sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(rName, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL);
646cdf0e10cSrcweir if(nId != USHRT_MAX &&
647cdf0e10cSrcweir //rSh.GetTxtCollFromPool(nId)->GetOutlineLevel() == NO_NUMBERING) //#outline level,zhaojianwei
648cdf0e10cSrcweir ! rSh.GetTxtCollFromPool(nId)->IsAssignedToListLevelOfOutlineStyle()) //<-end,zhaojianwei
649cdf0e10cSrcweir return sal_True;
650cdf0e10cSrcweir
651cdf0e10cSrcweir return sal_False;
652cdf0e10cSrcweir }
653cdf0e10cSrcweir /* -----------------14.07.99 16:01-------------------
654cdf0e10cSrcweir
655cdf0e10cSrcweir --------------------------------------------------*/
656cdf0e10cSrcweir class SwIndexTreeLB : public SvTreeListBox
657cdf0e10cSrcweir {
658cdf0e10cSrcweir const HeaderBar* pHeaderBar;
659cdf0e10cSrcweir public:
SwIndexTreeLB(Window * pWin,const ResId & rResId)660cdf0e10cSrcweir SwIndexTreeLB(Window* pWin, const ResId& rResId) :
661cdf0e10cSrcweir SvTreeListBox(pWin, rResId), pHeaderBar(0){}
662cdf0e10cSrcweir
663cdf0e10cSrcweir virtual void KeyInput( const KeyEvent& rKEvt );
664cdf0e10cSrcweir virtual long GetTabPos( SvLBoxEntry*, SvLBoxTab* );
SetHeaderBar(const HeaderBar * pHB)665cdf0e10cSrcweir void SetHeaderBar(const HeaderBar* pHB) {pHeaderBar = pHB;}
666cdf0e10cSrcweir };
667cdf0e10cSrcweir /* -----------------14.07.99 16:03-------------------
668cdf0e10cSrcweir
669cdf0e10cSrcweir --------------------------------------------------*/
GetTabPos(SvLBoxEntry * pEntry,SvLBoxTab * pTab)670cdf0e10cSrcweir long SwIndexTreeLB::GetTabPos( SvLBoxEntry* pEntry, SvLBoxTab* pTab)
671cdf0e10cSrcweir {
672cdf0e10cSrcweir long nData = (long)pEntry->GetUserData();
673cdf0e10cSrcweir if(nData != USHRT_MAX)
674cdf0e10cSrcweir {
675cdf0e10cSrcweir long nPos = pHeaderBar->GetItemRect( static_cast< sal_uInt16 >(101 + nData) ).TopLeft().X();
676cdf0e10cSrcweir nData = nPos;
677cdf0e10cSrcweir }
678cdf0e10cSrcweir else
679cdf0e10cSrcweir nData = 0;
680cdf0e10cSrcweir nData += pTab->GetPos();
681cdf0e10cSrcweir return nData;
682cdf0e10cSrcweir }
683cdf0e10cSrcweir /* -----------------25.08.99 11:14-------------------
684cdf0e10cSrcweir
685cdf0e10cSrcweir --------------------------------------------------*/
KeyInput(const KeyEvent & rKEvt)686cdf0e10cSrcweir void SwIndexTreeLB::KeyInput( const KeyEvent& rKEvt )
687cdf0e10cSrcweir {
688cdf0e10cSrcweir SvLBoxEntry* pEntry = FirstSelected();
689cdf0e10cSrcweir KeyCode aCode = rKEvt.GetKeyCode();
690cdf0e10cSrcweir sal_Bool bChanged = sal_False;
691cdf0e10cSrcweir if(pEntry)
692cdf0e10cSrcweir {
693cdf0e10cSrcweir long nLevel = (long)pEntry->GetUserData();
694cdf0e10cSrcweir if(aCode.GetCode() == KEY_ADD )
695cdf0e10cSrcweir {
696cdf0e10cSrcweir if(nLevel < MAXLEVEL - 1)
697cdf0e10cSrcweir nLevel++;
698cdf0e10cSrcweir else if(nLevel == USHRT_MAX)
699cdf0e10cSrcweir nLevel = 0;
700cdf0e10cSrcweir bChanged = sal_True;
701cdf0e10cSrcweir }
702cdf0e10cSrcweir else if(aCode.GetCode() == KEY_SUBTRACT)
703cdf0e10cSrcweir {
704cdf0e10cSrcweir if(!nLevel)
705cdf0e10cSrcweir nLevel = USHRT_MAX;
706cdf0e10cSrcweir else if(nLevel != USHRT_MAX)
707cdf0e10cSrcweir nLevel--;
708cdf0e10cSrcweir bChanged = sal_True;
709cdf0e10cSrcweir }
710cdf0e10cSrcweir if(bChanged)
711cdf0e10cSrcweir {
712cdf0e10cSrcweir pEntry->SetUserData((void*)nLevel);
713cdf0e10cSrcweir Invalidate();
714cdf0e10cSrcweir }
715cdf0e10cSrcweir }
716cdf0e10cSrcweir if(!bChanged)
717cdf0e10cSrcweir SvTreeListBox::KeyInput(rKEvt);
718cdf0e10cSrcweir }
719cdf0e10cSrcweir
720cdf0e10cSrcweir /* -----------------16.07.99 10:01-------------------
721cdf0e10cSrcweir
722cdf0e10cSrcweir --------------------------------------------------*/
723cdf0e10cSrcweir class SwHeaderTree : public Control
724cdf0e10cSrcweir {
725cdf0e10cSrcweir HeaderBar aStylesHB;
726cdf0e10cSrcweir SwIndexTreeLB aStylesTLB;
727cdf0e10cSrcweir
728cdf0e10cSrcweir public:
729cdf0e10cSrcweir SwHeaderTree(Window* pParent, const ResId rResId);
730cdf0e10cSrcweir
GetHeaderBar()731cdf0e10cSrcweir HeaderBar& GetHeaderBar() {return aStylesHB;}
GetTreeListBox()732cdf0e10cSrcweir SwIndexTreeLB& GetTreeListBox() { return aStylesTLB;}
733cdf0e10cSrcweir
734cdf0e10cSrcweir virtual void GetFocus();
735cdf0e10cSrcweir };
736cdf0e10cSrcweir /* -----------------16.07.99 10:11-------------------
737cdf0e10cSrcweir
738cdf0e10cSrcweir --------------------------------------------------*/
SwHeaderTree(Window * pParent,const ResId rResId)739cdf0e10cSrcweir SwHeaderTree::SwHeaderTree(Window* pParent, const ResId rResId) :
740cdf0e10cSrcweir Control(pParent, rResId),
741cdf0e10cSrcweir aStylesHB( this, ResId(HB_STYLES, *rResId.GetResMgr())),
742cdf0e10cSrcweir aStylesTLB( this, ResId(TLB_STYLES, *rResId.GetResMgr()))
743cdf0e10cSrcweir {
744cdf0e10cSrcweir FreeResource();
745cdf0e10cSrcweir aStylesHB.SetStyle(aStylesHB.GetStyle()|WB_BUTTONSTYLE|WB_TABSTOP|WB_BORDER);
746cdf0e10cSrcweir Size aHBSize(aStylesHB.GetSizePixel());
747cdf0e10cSrcweir aHBSize.Height() = aStylesHB.CalcWindowSizePixel().Height();
748cdf0e10cSrcweir aStylesHB.SetSizePixel(aHBSize);
749cdf0e10cSrcweir aStylesTLB.SetPosPixel(Point(0, aHBSize.Height()));
750cdf0e10cSrcweir Size aTLBSize(aStylesHB.GetSizePixel());
751cdf0e10cSrcweir aTLBSize.Height() = GetOutputSizePixel().Height() - aHBSize.Height();
752cdf0e10cSrcweir aStylesTLB.SetSizePixel(aTLBSize);
753cdf0e10cSrcweir aStylesTLB.SetHeaderBar(&aStylesHB);
754cdf0e10cSrcweir }
755cdf0e10cSrcweir /* -----------------25.08.99 10:38-------------------
756cdf0e10cSrcweir
757cdf0e10cSrcweir --------------------------------------------------*/
GetFocus()758cdf0e10cSrcweir void SwHeaderTree::GetFocus()
759cdf0e10cSrcweir {
760cdf0e10cSrcweir Control::GetFocus();
761cdf0e10cSrcweir aStylesTLB.GrabFocus();
762cdf0e10cSrcweir }
763cdf0e10cSrcweir /* -----------------13.07.99 15:29-------------------
764cdf0e10cSrcweir
765cdf0e10cSrcweir --------------------------------------------------*/
766cdf0e10cSrcweir class SwAddStylesDlg_Impl : public SfxModalDialog
767cdf0e10cSrcweir {
768cdf0e10cSrcweir OKButton aOk;
769cdf0e10cSrcweir CancelButton aCancel;
770cdf0e10cSrcweir HelpButton aHelp;
771cdf0e10cSrcweir
772cdf0e10cSrcweir FixedLine aStylesFL;
773cdf0e10cSrcweir SwHeaderTree aHeaderTree;
774cdf0e10cSrcweir ImageButton aLeftPB;
775cdf0e10cSrcweir ImageButton aRightPB;
776cdf0e10cSrcweir
777cdf0e10cSrcweir String sHBFirst;
778cdf0e10cSrcweir String* pStyleArr;
779cdf0e10cSrcweir
780cdf0e10cSrcweir DECL_LINK(OkHdl, OKButton*);
781cdf0e10cSrcweir DECL_LINK(LeftRightHdl, PushButton*);
782cdf0e10cSrcweir DECL_LINK(HeaderDragHdl, HeaderBar*);
783cdf0e10cSrcweir
784cdf0e10cSrcweir public:
785cdf0e10cSrcweir SwAddStylesDlg_Impl(Window* pParent, SwWrtShell& rWrtSh, String rStringArr[]);
786cdf0e10cSrcweir ~SwAddStylesDlg_Impl();
787cdf0e10cSrcweir };
788cdf0e10cSrcweir /* -----------------13.07.99 15:39-------------------
789cdf0e10cSrcweir
790cdf0e10cSrcweir --------------------------------------------------*/
SwAddStylesDlg_Impl(Window * pParent,SwWrtShell & rWrtSh,String rStringArr[])791cdf0e10cSrcweir SwAddStylesDlg_Impl::SwAddStylesDlg_Impl(Window* pParent,
792cdf0e10cSrcweir SwWrtShell& rWrtSh, String rStringArr[]) :
793cdf0e10cSrcweir SfxModalDialog(pParent, SW_RES(DLG_ADD_IDX_STYLES)),
794cdf0e10cSrcweir aOk( this, SW_RES(PB_OK )),
795cdf0e10cSrcweir aCancel( this, SW_RES(PB_CANCEL )),
796cdf0e10cSrcweir aHelp( this, SW_RES(PB_HELP )),
797cdf0e10cSrcweir
798cdf0e10cSrcweir aStylesFL( this, SW_RES(FL_STYLES )),
799cdf0e10cSrcweir aHeaderTree(this, SW_RES(TR_HEADER )),
800cdf0e10cSrcweir aLeftPB( this, SW_RES(PB_LEFT )),
801cdf0e10cSrcweir aRightPB( this, SW_RES(PB_RIGHT )),
802cdf0e10cSrcweir
803cdf0e10cSrcweir sHBFirst( SW_RES(ST_HB_FIRST)),
804cdf0e10cSrcweir pStyleArr(rStringArr)
805cdf0e10cSrcweir {
806cdf0e10cSrcweir FreeResource();
807cdf0e10cSrcweir
808cdf0e10cSrcweir aHeaderTree.SetAccessibleRelationMemberOf(&aStylesFL);
809cdf0e10cSrcweir aLeftPB.SetAccessibleRelationMemberOf(&aStylesFL);
810cdf0e10cSrcweir aRightPB.SetAccessibleRelationMemberOf(&aStylesFL);
811cdf0e10cSrcweir
812cdf0e10cSrcweir aLeftPB.SetModeImage( Image( SW_RES( IMG_ALL_LEFT_HC ) ), BMP_COLOR_HIGHCONTRAST );
813cdf0e10cSrcweir aRightPB.SetModeImage( Image( SW_RES( IMG_ALL_RIGHT_HC ) ), BMP_COLOR_HIGHCONTRAST );
814cdf0e10cSrcweir
815cdf0e10cSrcweir aOk.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, OkHdl));
816cdf0e10cSrcweir aLeftPB.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
817cdf0e10cSrcweir aRightPB.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
818cdf0e10cSrcweir
819cdf0e10cSrcweir HeaderBar& rHB = aHeaderTree.GetHeaderBar();
820cdf0e10cSrcweir rHB.SetEndDragHdl(LINK(this, SwAddStylesDlg_Impl, HeaderDragHdl));
821cdf0e10cSrcweir
822cdf0e10cSrcweir long nWidth = rHB.GetSizePixel().Width();
823cdf0e10cSrcweir sal_uInt16 i;
824cdf0e10cSrcweir
825cdf0e10cSrcweir nWidth /= 14;
826cdf0e10cSrcweir nWidth--;
827cdf0e10cSrcweir rHB.InsertItem( 100, sHBFirst, 4 * nWidth );
828cdf0e10cSrcweir for( i = 1; i <= MAXLEVEL; i++)
829cdf0e10cSrcweir rHB.InsertItem( 100 + i, String::CreateFromInt32(i), nWidth );
830cdf0e10cSrcweir rHB.Show();
831cdf0e10cSrcweir
832cdf0e10cSrcweir SwIndexTreeLB& rTLB = aHeaderTree.GetTreeListBox();
833cdf0e10cSrcweir rTLB.SetStyle(rTLB.GetStyle()|WB_CLIPCHILDREN|WB_SORT);
834cdf0e10cSrcweir //aStylesTLB.SetSelectHdl(LINK(this, SwAddStylesDlg_Impl, SelectHdl));
835cdf0e10cSrcweir rTLB.GetModel()->SetSortMode(SortAscending);
836cdf0e10cSrcweir for(i = 0; i < MAXLEVEL; ++i)
837cdf0e10cSrcweir {
838cdf0e10cSrcweir String sStyles(rStringArr[i]);
839cdf0e10cSrcweir for(sal_uInt16 nToken = 0; nToken < sStyles.GetTokenCount(TOX_STYLE_DELIMITER); nToken++)
840cdf0e10cSrcweir {
841cdf0e10cSrcweir String sTmp(sStyles.GetToken(nToken, TOX_STYLE_DELIMITER));
842cdf0e10cSrcweir SvLBoxEntry* pEntry = rTLB.InsertEntry(sTmp);
843cdf0e10cSrcweir pEntry->SetUserData(reinterpret_cast<void*>(i));
844cdf0e10cSrcweir }
845cdf0e10cSrcweir }
846cdf0e10cSrcweir // now the other styles
847cdf0e10cSrcweir //
848cdf0e10cSrcweir const SwTxtFmtColl *pColl = 0;
849cdf0e10cSrcweir const sal_uInt16 nSz = rWrtSh.GetTxtFmtCollCount();
850cdf0e10cSrcweir
851cdf0e10cSrcweir for ( sal_uInt16 j = 0;j < nSz; ++j )
852cdf0e10cSrcweir {
853cdf0e10cSrcweir pColl = &rWrtSh.GetTxtFmtColl(j);
854cdf0e10cSrcweir if(pColl->IsDefault())
855cdf0e10cSrcweir continue;
856cdf0e10cSrcweir
857cdf0e10cSrcweir const String& rName = pColl->GetName();
858cdf0e10cSrcweir
859cdf0e10cSrcweir if(rName.Len() > 0)
860cdf0e10cSrcweir {
861cdf0e10cSrcweir SvLBoxEntry* pEntry = rTLB.First();
862cdf0e10cSrcweir sal_Bool bFound = sal_False;
863cdf0e10cSrcweir while(pEntry && !bFound)
864cdf0e10cSrcweir {
865cdf0e10cSrcweir if(rTLB.GetEntryText(pEntry) == rName)
866cdf0e10cSrcweir bFound = sal_True;
867cdf0e10cSrcweir pEntry = rTLB.Next(pEntry);
868cdf0e10cSrcweir }
869cdf0e10cSrcweir if(!bFound)
870cdf0e10cSrcweir {
871cdf0e10cSrcweir rTLB.InsertEntry(rName)->SetUserData((void*)USHRT_MAX);
872cdf0e10cSrcweir }
873cdf0e10cSrcweir }
874cdf0e10cSrcweir }
875cdf0e10cSrcweir rTLB.GetModel()->Resort();
876cdf0e10cSrcweir }
877cdf0e10cSrcweir
878cdf0e10cSrcweir /* -----------------13.07.99 15:39-------------------
879cdf0e10cSrcweir
880cdf0e10cSrcweir --------------------------------------------------*/
~SwAddStylesDlg_Impl()881cdf0e10cSrcweir SwAddStylesDlg_Impl::~SwAddStylesDlg_Impl()
882cdf0e10cSrcweir {
883cdf0e10cSrcweir }
884cdf0e10cSrcweir /* -----------------13.07.99 15:39-------------------
885cdf0e10cSrcweir
886cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwAddStylesDlg_Impl,OkHdl,OKButton *,EMPTYARG)887cdf0e10cSrcweir IMPL_LINK(SwAddStylesDlg_Impl, OkHdl, OKButton*, EMPTYARG)
888cdf0e10cSrcweir {
889cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
890cdf0e10cSrcweir pStyleArr[i].Erase();
891cdf0e10cSrcweir
892cdf0e10cSrcweir SwIndexTreeLB& rTLB = aHeaderTree.GetTreeListBox();
893cdf0e10cSrcweir SvLBoxEntry* pEntry = rTLB.First();
894cdf0e10cSrcweir while(pEntry)
895cdf0e10cSrcweir {
896cdf0e10cSrcweir long nLevel = (long)pEntry->GetUserData();
897cdf0e10cSrcweir if(nLevel != USHRT_MAX)
898cdf0e10cSrcweir {
899cdf0e10cSrcweir String sName(rTLB.GetEntryText(pEntry));
900cdf0e10cSrcweir if(pStyleArr[nLevel].Len())
901cdf0e10cSrcweir pStyleArr[nLevel] += TOX_STYLE_DELIMITER;
902cdf0e10cSrcweir pStyleArr[nLevel] += sName;
903cdf0e10cSrcweir }
904cdf0e10cSrcweir pEntry = rTLB.Next(pEntry);
905cdf0e10cSrcweir }
906cdf0e10cSrcweir
907cdf0e10cSrcweir //TODO write back style names
908cdf0e10cSrcweir EndDialog(RET_OK);
909cdf0e10cSrcweir return 0;
910cdf0e10cSrcweir }
911cdf0e10cSrcweir /* -----------------16.07.99 09:27-------------------
912cdf0e10cSrcweir
913cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwAddStylesDlg_Impl,HeaderDragHdl,HeaderBar *,EMPTYARG)914cdf0e10cSrcweir IMPL_LINK(SwAddStylesDlg_Impl, HeaderDragHdl, HeaderBar*, EMPTYARG)
915cdf0e10cSrcweir {
916cdf0e10cSrcweir aHeaderTree.GetTreeListBox().Invalidate();
917cdf0e10cSrcweir return 0;
918cdf0e10cSrcweir }
919cdf0e10cSrcweir /* -----------------13.07.99 15:39-------------------
920cdf0e10cSrcweir
921cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwAddStylesDlg_Impl,LeftRightHdl,PushButton *,pBtn)922cdf0e10cSrcweir IMPL_LINK(SwAddStylesDlg_Impl, LeftRightHdl, PushButton*, pBtn)
923cdf0e10cSrcweir {
924cdf0e10cSrcweir sal_Bool bLeft = pBtn == &aLeftPB;
925cdf0e10cSrcweir SvLBoxEntry* pEntry = aHeaderTree.GetTreeListBox().FirstSelected();
926cdf0e10cSrcweir if(pEntry)
927cdf0e10cSrcweir {
928cdf0e10cSrcweir long nLevel = (long)pEntry->GetUserData();
929cdf0e10cSrcweir if(bLeft)
930cdf0e10cSrcweir {
931cdf0e10cSrcweir if(!nLevel)
932cdf0e10cSrcweir nLevel = USHRT_MAX;
933cdf0e10cSrcweir else if(nLevel != USHRT_MAX)
934cdf0e10cSrcweir nLevel--;
935cdf0e10cSrcweir }
936cdf0e10cSrcweir else
937cdf0e10cSrcweir {
938cdf0e10cSrcweir if(nLevel < MAXLEVEL - 1)
939cdf0e10cSrcweir nLevel++;
940cdf0e10cSrcweir else if(nLevel == USHRT_MAX)
941cdf0e10cSrcweir nLevel = 0;
942cdf0e10cSrcweir }
943cdf0e10cSrcweir pEntry->SetUserData((void*)nLevel);
944cdf0e10cSrcweir aHeaderTree.GetTreeListBox().Invalidate();
945cdf0e10cSrcweir }
946cdf0e10cSrcweir return 0;
947cdf0e10cSrcweir }
948cdf0e10cSrcweir
949cdf0e10cSrcweir /*-- 14.06.99 13:11:40---------------------------------------------------
950cdf0e10cSrcweir
951cdf0e10cSrcweir -----------------------------------------------------------------------*/
SwTOXSelectTabPage(Window * pParent,const SfxItemSet & rAttrSet)952cdf0e10cSrcweir SwTOXSelectTabPage::SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet) :
953cdf0e10cSrcweir SfxTabPage(pParent, SW_RES(TP_TOX_SELECT), rAttrSet),
954cdf0e10cSrcweir
955cdf0e10cSrcweir aTypeTitleFL( this, SW_RES(FL_TYPETITLE )),
956cdf0e10cSrcweir aTitleFT( this, SW_RES(FT_TITLE )),
957cdf0e10cSrcweir aTitleED( this, SW_RES(ED_TITLE )),
958cdf0e10cSrcweir aTypeFT( this, SW_RES(FT_TYPE )),
959cdf0e10cSrcweir aTypeLB( this, SW_RES(LB_TYPE )),
960cdf0e10cSrcweir aReadOnlyCB( this, SW_RES(CB_READONLY )),
961cdf0e10cSrcweir
962cdf0e10cSrcweir aAreaFL( this, SW_RES(FL_AREA )),
963cdf0e10cSrcweir aAreaFT( this, SW_RES(FT_AREA )),
964cdf0e10cSrcweir aAreaLB( this, SW_RES(LB_AREA )),
965cdf0e10cSrcweir aLevelFT( this, SW_RES(FT_LEVEL )),
966cdf0e10cSrcweir aLevelNF( this, SW_RES(NF_LEVEL )),
967cdf0e10cSrcweir
968cdf0e10cSrcweir aCreateFromFL( this, SW_RES(FL_CREATEFROM )),
969cdf0e10cSrcweir aFromHeadingsCB( this, SW_RES(CB_FROMHEADINGS )),
970cdf0e10cSrcweir // aChapterDlgPB( this, SW_RES(PB_CHAPTERDLG )),//#outline level,removed by zhaojianwei
971cdf0e10cSrcweir aAddStylesCB( this, SW_RES(CB_ADDSTYLES )),
972cdf0e10cSrcweir aAddStylesPB( this, SW_RES(PB_ADDSTYLES )),
973cdf0e10cSrcweir
974cdf0e10cSrcweir aFromTablesCB( this, SW_RES(CB_FROMTABLES )),
975cdf0e10cSrcweir aFromFramesCB( this, SW_RES(CB_FROMFRAMES )),
976cdf0e10cSrcweir aFromGraphicsCB( this, SW_RES(CB_FROMGRAPHICS )),
977cdf0e10cSrcweir aFromOLECB( this, SW_RES(CB_FROMOLE )),
978cdf0e10cSrcweir aLevelFromChapterCB(this, SW_RES(CB_LEVELFROMCHAPTER )),
979cdf0e10cSrcweir
980cdf0e10cSrcweir aFromCaptionsRB( this, SW_RES(RB_FROMCAPTIONS )),
981cdf0e10cSrcweir aFromObjectNamesRB( this, SW_RES(RB_FROMOBJECTNAMES )),
982cdf0e10cSrcweir
983cdf0e10cSrcweir aCaptionSequenceFT( this, SW_RES(FT_CAPTIONSEQUENCE )),
984cdf0e10cSrcweir aCaptionSequenceLB( this, SW_RES(LB_CAPTIONSEQUENCE )),
985cdf0e10cSrcweir aDisplayTypeFT( this, SW_RES(FT_DISPLAYTYPE )),
986cdf0e10cSrcweir aDisplayTypeLB( this, SW_RES(LB_DISPLAYTYPE )),
987cdf0e10cSrcweir
988cdf0e10cSrcweir aTOXMarksCB( this, SW_RES(CB_TOXMARKS )),
989cdf0e10cSrcweir
990cdf0e10cSrcweir aIdxOptionsFL( this, SW_RES(FL_IDXOPTIONS )),
991cdf0e10cSrcweir aCollectSameCB( this, SW_RES(CB_COLLECTSAME )),
992cdf0e10cSrcweir aUseFFCB( this, SW_RES(CB_USEFF )),
993cdf0e10cSrcweir aUseDashCB( this, SW_RES(CB_USE_DASH )),
994cdf0e10cSrcweir aCaseSensitiveCB( this, SW_RES(CB_CASESENSITIVE )),
995cdf0e10cSrcweir aInitialCapsCB( this, SW_RES(CB_INITIALCAPS )),
996cdf0e10cSrcweir aKeyAsEntryCB( this, SW_RES(CB_KEYASENTRY )),
997cdf0e10cSrcweir aFromFileCB( this, SW_RES(CB_FROMFILE )),
998cdf0e10cSrcweir aAutoMarkPB( this, SW_RES(MB_AUTOMARK )),
999cdf0e10cSrcweir
1000cdf0e10cSrcweir aFromNames( SW_RES(RES_SRCTYPES )),
1001cdf0e10cSrcweir aFromObjCLB( this, SW_RES(CLB_FROMOBJ )),
1002cdf0e10cSrcweir aFromObjFL( this, SW_RES(FL_FROMOBJ )),
1003cdf0e10cSrcweir
1004cdf0e10cSrcweir aSequenceCB( this, SW_RES(CB_SEQUENCE )),
1005cdf0e10cSrcweir aBracketFT( this, SW_RES(FT_BRACKET )),
1006cdf0e10cSrcweir aBracketLB( this, SW_RES(LB_BRACKET )),
1007cdf0e10cSrcweir aAuthorityFormatFL( this, SW_RES(FL_AUTHORITY )),
1008cdf0e10cSrcweir
1009cdf0e10cSrcweir aSortOptionsFL( this, SW_RES(FL_SORTOPTIONS )),
1010cdf0e10cSrcweir aLanguageFT( this, SW_RES(FT_LANGUAGE )),
1011cdf0e10cSrcweir aLanguageLB( this, SW_RES(LB_LANGUAGE )),
1012cdf0e10cSrcweir aSortAlgorithmFT( this, SW_RES(FT_SORTALG )),
1013cdf0e10cSrcweir aSortAlgorithmLB( this, SW_RES(LB_SORTALG )),
1014cdf0e10cSrcweir
1015cdf0e10cSrcweir pIndexRes(0),
1016cdf0e10cSrcweir
1017cdf0e10cSrcweir sAutoMarkType(SW_RES(ST_AUTOMARK_TYPE)),
1018cdf0e10cSrcweir sAddStyleUser(SW_RES(ST_USER_ADDSTYLE)),
1019cdf0e10cSrcweir bFirstCall(sal_True)
1020cdf0e10cSrcweir {
1021cdf0e10cSrcweir aBracketLB.InsertEntry(String(SW_RES(ST_NO_BRACKET)), 0);
1022cdf0e10cSrcweir
1023cdf0e10cSrcweir aAddStylesPB.SetAccessibleRelationMemberOf(&aCreateFromFL);
1024cdf0e10cSrcweir aAddStylesPB.SetAccessibleRelationLabeledBy(&aAddStylesCB);
1025cdf0e10cSrcweir aAddStylesPB.SetAccessibleName(aAddStylesCB.GetText());
1026cdf0e10cSrcweir
1027cdf0e10cSrcweir FreeResource();
1028cdf0e10cSrcweir
1029cdf0e10cSrcweir pIndexEntryWrapper = new IndexEntrySupplierWrapper();
1030cdf0e10cSrcweir
1031cdf0e10cSrcweir aLanguageLB.SetLanguageList( LANG_LIST_ALL | LANG_LIST_ONLY_KNOWN,
1032cdf0e10cSrcweir sal_False, sal_False, sal_False );
1033cdf0e10cSrcweir
1034cdf0e10cSrcweir sAddStyleContent = aAddStylesCB.GetText();
1035cdf0e10cSrcweir
1036cdf0e10cSrcweir aCBLeftPos1 = aFromHeadingsCB.GetPosPixel();
1037cdf0e10cSrcweir aCBLeftPos2 = aAddStylesCB.GetPosPixel();
1038cdf0e10cSrcweir aCBLeftPos3 = aTOXMarksCB.GetPosPixel();
1039cdf0e10cSrcweir
1040cdf0e10cSrcweir ResStringArray& rNames = aFromNames.GetNames();
1041cdf0e10cSrcweir for(sal_uInt16 i = 0; i < rNames.Count(); i++)
1042cdf0e10cSrcweir {
1043cdf0e10cSrcweir aFromObjCLB.InsertEntry(rNames.GetString(i));
1044cdf0e10cSrcweir aFromObjCLB.SetEntryData( i, (void*)rNames.GetValue(i) );
1045cdf0e10cSrcweir }
1046cdf0e10cSrcweir aFromObjCLB.SetHelpId(HID_OLE_CHECKLB);
1047cdf0e10cSrcweir
1048cdf0e10cSrcweir SetExchangeSupport();
1049cdf0e10cSrcweir aTypeLB.SetSelectHdl(LINK(this, SwTOXSelectTabPage, TOXTypeHdl));
1050cdf0e10cSrcweir
1051cdf0e10cSrcweir aAddStylesPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, AddStylesHdl));
1052cdf0e10cSrcweir //aChapterDlgPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, ChapterHdl));//#outline level,removed by zhaojianwei
1053cdf0e10cSrcweir
1054cdf0e10cSrcweir PopupMenu* pMenu = aAutoMarkPB.GetPopupMenu();
1055cdf0e10cSrcweir pMenu->SetActivateHdl(LINK(this, SwTOXSelectTabPage, MenuEnableHdl));
1056cdf0e10cSrcweir pMenu->SetSelectHdl(LINK(this, SwTOXSelectTabPage, MenuExecuteHdl));
1057cdf0e10cSrcweir
1058cdf0e10cSrcweir Link aLk = LINK(this, SwTOXSelectTabPage, CheckBoxHdl);
1059cdf0e10cSrcweir aAddStylesCB .SetClickHdl(aLk);
1060cdf0e10cSrcweir aFromHeadingsCB .SetClickHdl(aLk);
1061cdf0e10cSrcweir aTOXMarksCB .SetClickHdl(aLk);
1062cdf0e10cSrcweir aFromFileCB .SetClickHdl(aLk);
1063cdf0e10cSrcweir aCollectSameCB .SetClickHdl(aLk);
1064cdf0e10cSrcweir aUseFFCB .SetClickHdl(aLk);
1065cdf0e10cSrcweir aUseDashCB .SetClickHdl(aLk);
1066cdf0e10cSrcweir aInitialCapsCB .SetClickHdl(aLk);
1067cdf0e10cSrcweir aKeyAsEntryCB .SetClickHdl(aLk);
1068cdf0e10cSrcweir
1069cdf0e10cSrcweir Link aModifyLk = LINK(this, SwTOXSelectTabPage, ModifyHdl);
1070cdf0e10cSrcweir aTitleED.SetModifyHdl(aModifyLk);
1071cdf0e10cSrcweir aLevelNF.SetModifyHdl(aModifyLk);
1072cdf0e10cSrcweir aSortAlgorithmLB.SetSelectHdl(aModifyLk);
1073cdf0e10cSrcweir
1074cdf0e10cSrcweir aLk = LINK(this, SwTOXSelectTabPage, RadioButtonHdl);
1075cdf0e10cSrcweir aFromCaptionsRB.SetClickHdl(aLk);
1076cdf0e10cSrcweir aFromObjectNamesRB.SetClickHdl(aLk);
1077cdf0e10cSrcweir RadioButtonHdl(&aFromCaptionsRB);
1078cdf0e10cSrcweir
1079cdf0e10cSrcweir aLanguageLB.SetSelectHdl(LINK(this, SwTOXSelectTabPage, LanguageHdl));
1080cdf0e10cSrcweir aTypeLB.SelectEntryPos(0);
1081cdf0e10cSrcweir aTitleED.SaveValue();
1082cdf0e10cSrcweir }
1083cdf0e10cSrcweir /*-- 14.06.99 13:11:41---------------------------------------------------
1084cdf0e10cSrcweir
1085cdf0e10cSrcweir -----------------------------------------------------------------------*/
~SwTOXSelectTabPage()1086cdf0e10cSrcweir SwTOXSelectTabPage::~SwTOXSelectTabPage()
1087cdf0e10cSrcweir {
1088cdf0e10cSrcweir delete pIndexRes;
1089cdf0e10cSrcweir delete pIndexEntryWrapper;
1090cdf0e10cSrcweir }
1091cdf0e10cSrcweir /* -----------------21.10.99 17:03-------------------
1092cdf0e10cSrcweir
1093cdf0e10cSrcweir --------------------------------------------------*/
SetWrtShell(SwWrtShell & rSh)1094cdf0e10cSrcweir void SwTOXSelectTabPage::SetWrtShell(SwWrtShell& rSh)
1095cdf0e10cSrcweir {
1096cdf0e10cSrcweir sal_uInt16 nUserTypeCount = rSh.GetTOXTypeCount(TOX_USER);
1097cdf0e10cSrcweir if(nUserTypeCount > 1)
1098cdf0e10cSrcweir {
1099cdf0e10cSrcweir //insert all new user indexes names after the standard user index
1100cdf0e10cSrcweir sal_uInt16 nPos = aTypeLB.GetEntryPos((void*)(sal_uInt32)TO_USER);
1101cdf0e10cSrcweir nPos++;
1102cdf0e10cSrcweir for(sal_uInt16 nUser = 1; nUser < nUserTypeCount; nUser++)
1103cdf0e10cSrcweir {
1104cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(rSh.GetTOXType(TOX_USER, nUser)->GetTypeName(), nPos);
1105cdf0e10cSrcweir sal_uInt32 nEntryData = nUser << 8;
1106cdf0e10cSrcweir nEntryData |= TO_USER;
1107cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, (void*)nEntryData);
1108cdf0e10cSrcweir }
1109cdf0e10cSrcweir }
1110cdf0e10cSrcweir }
1111cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
1112cdf0e10cSrcweir
1113cdf0e10cSrcweir --------------------------------------------------*/
FillItemSet(SfxItemSet &)1114cdf0e10cSrcweir sal_Bool SwTOXSelectTabPage::FillItemSet( SfxItemSet& )
1115cdf0e10cSrcweir {
1116cdf0e10cSrcweir return sal_True;
1117cdf0e10cSrcweir }
1118cdf0e10cSrcweir /* -----------------25.08.99 14:31-------------------
1119cdf0e10cSrcweir
1120cdf0e10cSrcweir --------------------------------------------------*/
lcl_TOXTypesToUserData(CurTOXType eType)1121cdf0e10cSrcweir long lcl_TOXTypesToUserData(CurTOXType eType)
1122cdf0e10cSrcweir {
1123cdf0e10cSrcweir sal_uInt16 nRet = TOX_INDEX;
1124cdf0e10cSrcweir switch(eType.eType)
1125cdf0e10cSrcweir {
1126cdf0e10cSrcweir case TOX_INDEX : nRet = TO_INDEX; break;
1127cdf0e10cSrcweir case TOX_USER :
1128cdf0e10cSrcweir {
1129cdf0e10cSrcweir nRet = eType.nIndex << 8;
1130cdf0e10cSrcweir nRet |= TO_USER;
1131cdf0e10cSrcweir }
1132cdf0e10cSrcweir break;
1133cdf0e10cSrcweir case TOX_CONTENT : nRet = TO_CONTENT; break;
1134cdf0e10cSrcweir case TOX_ILLUSTRATIONS:nRet = TO_ILLUSTRATION; break;
1135cdf0e10cSrcweir case TOX_OBJECTS : nRet = TO_OBJECT; break;
1136cdf0e10cSrcweir case TOX_TABLES : nRet = TO_TABLE; break;
1137cdf0e10cSrcweir case TOX_AUTHORITIES : nRet = TO_AUTHORITIES; break;
1138cdf0e10cSrcweir }
1139cdf0e10cSrcweir return nRet;
1140cdf0e10cSrcweir }
1141cdf0e10cSrcweir //-----------------------------------------------------------------
SelectType(TOXTypes eSet)1142cdf0e10cSrcweir void SwTOXSelectTabPage::SelectType(TOXTypes eSet)
1143cdf0e10cSrcweir {
1144cdf0e10cSrcweir CurTOXType eCurType (eSet, 0);
1145cdf0e10cSrcweir
1146cdf0e10cSrcweir long nData = lcl_TOXTypesToUserData(eCurType);
1147cdf0e10cSrcweir aTypeLB.SelectEntryPos(aTypeLB.GetEntryPos((void*)nData));
1148cdf0e10cSrcweir aTypeFT.Enable(sal_False);
1149cdf0e10cSrcweir aTypeLB.Enable(sal_False);
1150cdf0e10cSrcweir TOXTypeHdl(&aTypeLB);
1151cdf0e10cSrcweir }
1152cdf0e10cSrcweir
1153cdf0e10cSrcweir /*-- 14.06.99 13:10:45---------------------------------------------------
1154cdf0e10cSrcweir
1155cdf0e10cSrcweir -----------------------------------------------------------------------*/
1156cdf0e10cSrcweir //-----------------------------------------------------------------
lcl_UserData2TOXTypes(sal_uInt16 nData)1157cdf0e10cSrcweir CurTOXType lcl_UserData2TOXTypes(sal_uInt16 nData)
1158cdf0e10cSrcweir {
1159cdf0e10cSrcweir CurTOXType eRet;
1160cdf0e10cSrcweir
1161cdf0e10cSrcweir switch(nData&0xff)
1162cdf0e10cSrcweir {
1163cdf0e10cSrcweir case TO_INDEX : eRet.eType = TOX_INDEX; break;
1164cdf0e10cSrcweir case TO_USER :
1165cdf0e10cSrcweir {
1166cdf0e10cSrcweir eRet.eType = TOX_USER;
1167cdf0e10cSrcweir eRet.nIndex = (nData&0xff00) >> 8;
1168cdf0e10cSrcweir }
1169cdf0e10cSrcweir break;
1170cdf0e10cSrcweir case TO_CONTENT : eRet.eType = TOX_CONTENT; break;
1171cdf0e10cSrcweir case TO_ILLUSTRATION: eRet.eType = TOX_ILLUSTRATIONS; break;
1172cdf0e10cSrcweir case TO_OBJECT : eRet.eType = TOX_OBJECTS; break;
1173cdf0e10cSrcweir case TO_TABLE : eRet.eType = TOX_TABLES; break;
1174cdf0e10cSrcweir case TO_AUTHORITIES : eRet.eType = TOX_AUTHORITIES; break;
1175cdf0e10cSrcweir default: DBG_ERROR("what a type?");
1176cdf0e10cSrcweir }
1177cdf0e10cSrcweir return eRet;
1178cdf0e10cSrcweir }
1179cdf0e10cSrcweir /* -----------------02.09.99 08:16-------------------
1180cdf0e10cSrcweir
1181cdf0e10cSrcweir --------------------------------------------------*/
ApplyTOXDescription()1182cdf0e10cSrcweir void SwTOXSelectTabPage::ApplyTOXDescription()
1183cdf0e10cSrcweir {
1184cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1185cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
1186cdf0e10cSrcweir SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
1187cdf0e10cSrcweir aReadOnlyCB.Check(rDesc.IsReadonly());
1188cdf0e10cSrcweir if(aTitleED.GetText() == aTitleED.GetSavedValue())
1189cdf0e10cSrcweir {
1190cdf0e10cSrcweir if(rDesc.GetTitle())
1191cdf0e10cSrcweir aTitleED.SetText(*rDesc.GetTitle());
1192cdf0e10cSrcweir else
1193cdf0e10cSrcweir aTitleED.SetText(aEmptyStr);
1194cdf0e10cSrcweir aTitleED.SaveValue();
1195cdf0e10cSrcweir }
1196cdf0e10cSrcweir
1197cdf0e10cSrcweir aAreaLB.SelectEntryPos(rDesc.IsFromChapter() ? 1 : 0);
1198cdf0e10cSrcweir
1199cdf0e10cSrcweir if(aCurType.eType != TOX_INDEX)
1200cdf0e10cSrcweir aLevelNF.SetValue(rDesc.GetLevel()); //content, user
1201cdf0e10cSrcweir
1202cdf0e10cSrcweir sal_uInt16 nCreateType = rDesc.GetContentOptions();
1203cdf0e10cSrcweir
1204cdf0e10cSrcweir //user + content
1205cdf0e10cSrcweir sal_Bool bHasStyleNames = sal_False;
1206cdf0e10cSrcweir sal_uInt16 i;
1207cdf0e10cSrcweir
1208cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; i++)
1209cdf0e10cSrcweir if(rDesc.GetStyleNames(i).Len())
1210cdf0e10cSrcweir {
1211cdf0e10cSrcweir bHasStyleNames = sal_True;
1212cdf0e10cSrcweir break;
1213cdf0e10cSrcweir }
1214cdf0e10cSrcweir aAddStylesCB.Check(bHasStyleNames && (nCreateType & nsSwTOXElement::TOX_TEMPLATE));
1215cdf0e10cSrcweir
1216cdf0e10cSrcweir aFromOLECB. Check( 0 != (nCreateType & nsSwTOXElement::TOX_OLE) );
1217cdf0e10cSrcweir aFromTablesCB. Check( 0 != (nCreateType & nsSwTOXElement::TOX_TABLE) );
1218cdf0e10cSrcweir aFromGraphicsCB.Check( 0 != (nCreateType & nsSwTOXElement::TOX_GRAPHIC) );
1219cdf0e10cSrcweir aFromFramesCB. Check( 0 != (nCreateType & nsSwTOXElement::TOX_FRAME) );
1220cdf0e10cSrcweir
1221cdf0e10cSrcweir aLevelFromChapterCB.Check(rDesc.IsLevelFromChapter());
1222cdf0e10cSrcweir
1223cdf0e10cSrcweir //all but illustration and table
1224cdf0e10cSrcweir aTOXMarksCB.Check( 0 != (nCreateType & nsSwTOXElement::TOX_MARK) );
1225cdf0e10cSrcweir
1226cdf0e10cSrcweir //content
1227cdf0e10cSrcweir if(TOX_CONTENT == aCurType.eType)
1228cdf0e10cSrcweir {
1229cdf0e10cSrcweir aFromHeadingsCB.Check( 0 != (nCreateType & nsSwTOXElement::TOX_OUTLINELEVEL) );
1230cdf0e10cSrcweir //aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());//#outline level,removed by zhaojianwei
1231cdf0e10cSrcweir aAddStylesCB.SetText(sAddStyleContent);
1232cdf0e10cSrcweir aAddStylesPB.Enable(aAddStylesCB.IsChecked());
1233cdf0e10cSrcweir }
1234cdf0e10cSrcweir //index only
1235cdf0e10cSrcweir else if(TOX_INDEX == aCurType.eType)
1236cdf0e10cSrcweir {
1237cdf0e10cSrcweir sal_uInt16 nIndexOptions = rDesc.GetIndexOptions();
1238cdf0e10cSrcweir aCollectSameCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_SAME_ENTRY) );
1239cdf0e10cSrcweir aUseFFCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_FF) );
1240cdf0e10cSrcweir aUseDashCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_DASH) );
1241cdf0e10cSrcweir if(aUseFFCB.IsChecked())
1242cdf0e10cSrcweir aUseDashCB.Enable(sal_False);
1243cdf0e10cSrcweir else if(aUseDashCB.IsChecked())
1244cdf0e10cSrcweir aUseFFCB.Enable(sal_False);
1245cdf0e10cSrcweir
1246cdf0e10cSrcweir aCaseSensitiveCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_CASE_SENSITIVE) );
1247cdf0e10cSrcweir aInitialCapsCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_INITIAL_CAPS) );
1248cdf0e10cSrcweir aKeyAsEntryCB. Check( 0 != (nIndexOptions & nsSwTOIOptions::TOI_KEY_AS_ENTRY) );
1249cdf0e10cSrcweir }
1250cdf0e10cSrcweir else if(TOX_ILLUSTRATIONS == aCurType.eType ||
1251cdf0e10cSrcweir TOX_TABLES == aCurType.eType)
1252cdf0e10cSrcweir {
1253cdf0e10cSrcweir aFromObjectNamesRB.Check(rDesc.IsCreateFromObjectNames());
1254cdf0e10cSrcweir aFromCaptionsRB.Check(!rDesc.IsCreateFromObjectNames());
1255cdf0e10cSrcweir aCaptionSequenceLB.SelectEntry(rDesc.GetSequenceName());
1256cdf0e10cSrcweir aDisplayTypeLB.SelectEntryPos( static_cast< sal_uInt16 >(rDesc.GetCaptionDisplay()) );
1257cdf0e10cSrcweir RadioButtonHdl(&aFromCaptionsRB);
1258cdf0e10cSrcweir
1259cdf0e10cSrcweir }
1260cdf0e10cSrcweir else if(TOX_OBJECTS == aCurType.eType)
1261cdf0e10cSrcweir {
1262cdf0e10cSrcweir long nOLEData = rDesc.GetOLEOptions();
1263cdf0e10cSrcweir for(sal_uInt16 nFromObj = 0; nFromObj < aFromObjCLB.GetEntryCount(); nFromObj++)
1264cdf0e10cSrcweir {
1265cdf0e10cSrcweir long nData = (long)aFromObjCLB.GetEntryData(nFromObj);
1266cdf0e10cSrcweir aFromObjCLB.CheckEntryPos(nFromObj, 0 != (nData & nOLEData));
1267cdf0e10cSrcweir }
1268cdf0e10cSrcweir }
1269cdf0e10cSrcweir else if(TOX_AUTHORITIES == aCurType.eType)
1270cdf0e10cSrcweir {
1271cdf0e10cSrcweir String sBrackets(rDesc.GetAuthBrackets());
1272cdf0e10cSrcweir if(!sBrackets.Len() || sBrackets.EqualsAscii(" "))
1273cdf0e10cSrcweir aBracketLB.SelectEntryPos(0);
1274cdf0e10cSrcweir else
1275cdf0e10cSrcweir aBracketLB.SelectEntry(sBrackets);
1276cdf0e10cSrcweir aSequenceCB.Check(rDesc.IsAuthSequence());
1277cdf0e10cSrcweir }
1278cdf0e10cSrcweir aAutoMarkPB.Enable(aFromFileCB.IsChecked());
1279cdf0e10cSrcweir
1280cdf0e10cSrcweir for(i = 0; i < MAXLEVEL; i++)
1281cdf0e10cSrcweir aStyleArr[i] = rDesc.GetStyleNames(i);
1282cdf0e10cSrcweir
1283cdf0e10cSrcweir aLanguageLB.SelectLanguage(rDesc.GetLanguage());
1284cdf0e10cSrcweir LanguageHdl(0);
1285cdf0e10cSrcweir for( long nCnt = 0; nCnt < aSortAlgorithmLB.GetEntryCount(); ++nCnt )
1286cdf0e10cSrcweir {
1287cdf0e10cSrcweir const String* pEntryData = (const String*)aSortAlgorithmLB.GetEntryData( (sal_uInt16)nCnt );
1288cdf0e10cSrcweir DBG_ASSERT(pEntryData, "no entry data available");
1289cdf0e10cSrcweir if( pEntryData && *pEntryData == rDesc.GetSortAlgorithm())
1290cdf0e10cSrcweir {
1291cdf0e10cSrcweir aSortAlgorithmLB.SelectEntryPos( (sal_uInt16)nCnt );
1292cdf0e10cSrcweir break;
1293cdf0e10cSrcweir }
1294cdf0e10cSrcweir }
1295cdf0e10cSrcweir }
1296cdf0e10cSrcweir /* -----------------09.09.99 11:57-------------------
1297cdf0e10cSrcweir
1298cdf0e10cSrcweir --------------------------------------------------*/
FillTOXDescription()1299cdf0e10cSrcweir void SwTOXSelectTabPage::FillTOXDescription()
1300cdf0e10cSrcweir {
1301cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1302cdf0e10cSrcweir CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
1303cdf0e10cSrcweir SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
1304cdf0e10cSrcweir rDesc.SetTitle(aTitleED.GetText());
1305cdf0e10cSrcweir rDesc.SetFromChapter(1 == aAreaLB.GetSelectEntryPos());
1306cdf0e10cSrcweir sal_uInt16 nContentOptions = 0;
1307cdf0e10cSrcweir if(aTOXMarksCB.IsVisible() && aTOXMarksCB.IsChecked())
1308cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_MARK;
1309cdf0e10cSrcweir
1310cdf0e10cSrcweir sal_uInt16 nIndexOptions = rDesc.GetIndexOptions()&nsSwTOIOptions::TOI_ALPHA_DELIMITTER;
1311cdf0e10cSrcweir switch(rDesc.GetTOXType())
1312cdf0e10cSrcweir {
1313cdf0e10cSrcweir case TOX_CONTENT:
1314cdf0e10cSrcweir if(aFromHeadingsCB.IsChecked())
1315cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_OUTLINELEVEL;
1316cdf0e10cSrcweir break;
1317cdf0e10cSrcweir case TOX_USER:
1318cdf0e10cSrcweir {
1319cdf0e10cSrcweir rDesc.SetTOUName(aTypeLB.GetSelectEntry());
1320cdf0e10cSrcweir
1321cdf0e10cSrcweir if(aFromOLECB.IsChecked())
1322cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_OLE;
1323cdf0e10cSrcweir if(aFromTablesCB.IsChecked())
1324cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_TABLE;
1325cdf0e10cSrcweir if(aFromFramesCB.IsChecked())
1326cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_FRAME;
1327cdf0e10cSrcweir if(aFromGraphicsCB.IsChecked())
1328cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_GRAPHIC;
1329cdf0e10cSrcweir }
1330cdf0e10cSrcweir break;
1331cdf0e10cSrcweir case TOX_INDEX:
1332cdf0e10cSrcweir {
1333cdf0e10cSrcweir nContentOptions = nsSwTOXElement::TOX_MARK;
1334cdf0e10cSrcweir
1335cdf0e10cSrcweir if(aCollectSameCB.IsChecked())
1336cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_SAME_ENTRY;
1337cdf0e10cSrcweir if(aUseFFCB.IsChecked())
1338cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_FF;
1339cdf0e10cSrcweir if(aUseDashCB.IsChecked())
1340cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_DASH;
1341cdf0e10cSrcweir if(aCaseSensitiveCB.IsChecked())
1342cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_CASE_SENSITIVE;
1343cdf0e10cSrcweir if(aInitialCapsCB.IsChecked())
1344cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_INITIAL_CAPS;
1345cdf0e10cSrcweir if(aKeyAsEntryCB.IsChecked())
1346cdf0e10cSrcweir nIndexOptions |= nsSwTOIOptions::TOI_KEY_AS_ENTRY;
1347cdf0e10cSrcweir if(aFromFileCB.IsChecked())
1348cdf0e10cSrcweir rDesc.SetAutoMarkURL(sAutoMarkURL);
1349cdf0e10cSrcweir else
1350cdf0e10cSrcweir rDesc.SetAutoMarkURL(aEmptyStr);
1351cdf0e10cSrcweir }
1352cdf0e10cSrcweir break;
1353cdf0e10cSrcweir case TOX_ILLUSTRATIONS:
1354cdf0e10cSrcweir case TOX_TABLES :
1355cdf0e10cSrcweir rDesc.SetCreateFromObjectNames(aFromObjectNamesRB.IsChecked());
1356cdf0e10cSrcweir rDesc.SetSequenceName(aCaptionSequenceLB.GetSelectEntry());
1357cdf0e10cSrcweir rDesc.SetCaptionDisplay((SwCaptionDisplay)aDisplayTypeLB.GetSelectEntryPos());
1358cdf0e10cSrcweir break;
1359cdf0e10cSrcweir case TOX_OBJECTS:
1360cdf0e10cSrcweir {
1361cdf0e10cSrcweir long nOLEData = 0;
1362cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aFromObjCLB.GetEntryCount(); i++)
1363cdf0e10cSrcweir {
1364cdf0e10cSrcweir if(aFromObjCLB.IsChecked(i))
1365cdf0e10cSrcweir {
1366cdf0e10cSrcweir long nData = (long)aFromObjCLB.GetEntryData(i);
1367cdf0e10cSrcweir nOLEData |= nData;
1368cdf0e10cSrcweir }
1369cdf0e10cSrcweir }
1370cdf0e10cSrcweir rDesc.SetOLEOptions((sal_uInt16)nOLEData);
1371cdf0e10cSrcweir }
1372cdf0e10cSrcweir break;
1373cdf0e10cSrcweir case TOX_AUTHORITIES:
1374cdf0e10cSrcweir {
1375cdf0e10cSrcweir if(aBracketLB.GetSelectEntryPos())
1376cdf0e10cSrcweir rDesc.SetAuthBrackets(aBracketLB.GetSelectEntry());
1377cdf0e10cSrcweir else
1378cdf0e10cSrcweir rDesc.SetAuthBrackets(aEmptyStr);
1379cdf0e10cSrcweir rDesc.SetAuthSequence(aSequenceCB.IsChecked());
1380cdf0e10cSrcweir }
1381cdf0e10cSrcweir break;
1382cdf0e10cSrcweir }
1383cdf0e10cSrcweir
1384cdf0e10cSrcweir rDesc.SetLevelFromChapter( aLevelFromChapterCB.IsVisible() &&
1385cdf0e10cSrcweir aLevelFromChapterCB.IsChecked());
1386cdf0e10cSrcweir if(aTOXMarksCB.IsChecked() && aTOXMarksCB.IsVisible())
1387cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_MARK;
1388cdf0e10cSrcweir if(aFromHeadingsCB.IsChecked() && aFromHeadingsCB.IsVisible())
1389cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_OUTLINELEVEL;
1390cdf0e10cSrcweir if(aAddStylesCB.IsChecked() && aAddStylesCB.IsVisible())
1391cdf0e10cSrcweir nContentOptions |= nsSwTOXElement::TOX_TEMPLATE;
1392cdf0e10cSrcweir
1393cdf0e10cSrcweir rDesc.SetContentOptions(nContentOptions);
1394cdf0e10cSrcweir rDesc.SetIndexOptions(nIndexOptions);
1395cdf0e10cSrcweir rDesc.SetLevel( static_cast< sal_uInt8 >(aLevelNF.GetValue()) );
1396cdf0e10cSrcweir
1397cdf0e10cSrcweir rDesc.SetReadonly(aReadOnlyCB.IsChecked());
1398cdf0e10cSrcweir
1399cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
1400cdf0e10cSrcweir rDesc.SetStyleNames(aStyleArr[i], i);
1401cdf0e10cSrcweir
1402cdf0e10cSrcweir rDesc.SetLanguage(aLanguageLB.GetSelectLanguage());
1403cdf0e10cSrcweir const String* pEntryData = (const String*)aSortAlgorithmLB.GetEntryData(
1404cdf0e10cSrcweir aSortAlgorithmLB.GetSelectEntryPos() );
1405cdf0e10cSrcweir DBG_ASSERT(pEntryData, "no entry data available");
1406cdf0e10cSrcweir if(pEntryData)
1407cdf0e10cSrcweir rDesc.SetSortAlgorithm(*pEntryData);
1408cdf0e10cSrcweir }
1409cdf0e10cSrcweir /* -----------------05.07.99 15:09-------------------
1410cdf0e10cSrcweir
1411cdf0e10cSrcweir --------------------------------------------------*/
Reset(const SfxItemSet &)1412cdf0e10cSrcweir void SwTOXSelectTabPage::Reset( const SfxItemSet& )
1413cdf0e10cSrcweir {
1414cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1415cdf0e10cSrcweir SwWrtShell& rSh = pTOXDlg->GetWrtShell();
1416cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
1417cdf0e10cSrcweir long nData = lcl_TOXTypesToUserData(aCurType);
1418cdf0e10cSrcweir aTypeLB.SelectEntryPos(aTypeLB.GetEntryPos((void*)nData));
1419cdf0e10cSrcweir
1420cdf0e10cSrcweir sAutoMarkURL = INetURLObject::decode( rSh.GetTOIAutoMarkURL(),
1421cdf0e10cSrcweir INET_HEX_ESCAPE,
1422cdf0e10cSrcweir INetURLObject::DECODE_UNAMBIGUOUS,
1423cdf0e10cSrcweir RTL_TEXTENCODING_UTF8 );
1424cdf0e10cSrcweir aFromFileCB.Check( 0 != sAutoMarkURL.Len() );
1425cdf0e10cSrcweir
1426cdf0e10cSrcweir aCaptionSequenceLB.Clear();
1427cdf0e10cSrcweir sal_uInt16 i, nCount = rSh.GetFldTypeCount(RES_SETEXPFLD);
1428cdf0e10cSrcweir for (i = 0; i < nCount; i++)
1429cdf0e10cSrcweir {
1430cdf0e10cSrcweir SwFieldType *pType = rSh.GetFldType( i, RES_SETEXPFLD );
1431cdf0e10cSrcweir if( pType->Which() == RES_SETEXPFLD &&
1432cdf0e10cSrcweir ((SwSetExpFieldType *) pType)->GetType() & nsSwGetSetExpType::GSE_SEQ )
1433cdf0e10cSrcweir aCaptionSequenceLB.InsertEntry(pType->GetName());
1434cdf0e10cSrcweir }
1435cdf0e10cSrcweir
1436cdf0e10cSrcweir if(pTOXDlg->IsTOXEditMode())
1437cdf0e10cSrcweir {
1438cdf0e10cSrcweir aTypeFT.Enable(sal_False);
1439cdf0e10cSrcweir aTypeLB.Enable(sal_False);
1440cdf0e10cSrcweir }
1441cdf0e10cSrcweir TOXTypeHdl(&aTypeLB);
1442cdf0e10cSrcweir CheckBoxHdl(&aAddStylesCB);
1443cdf0e10cSrcweir }
1444cdf0e10cSrcweir /*-- 14.06.99 13:10:52---------------------------------------------------
1445cdf0e10cSrcweir
1446cdf0e10cSrcweir -----------------------------------------------------------------------*/
ActivatePage(const SfxItemSet &)1447cdf0e10cSrcweir void SwTOXSelectTabPage::ActivatePage( const SfxItemSet& )
1448cdf0e10cSrcweir {
1449cdf0e10cSrcweir //nothing to do
1450cdf0e10cSrcweir }
1451cdf0e10cSrcweir /*-- 14.06.99 13:11:00---------------------------------------------------
1452cdf0e10cSrcweir
1453cdf0e10cSrcweir -----------------------------------------------------------------------*/
DeactivatePage(SfxItemSet * _pSet)1454cdf0e10cSrcweir int SwTOXSelectTabPage::DeactivatePage( SfxItemSet* _pSet )
1455cdf0e10cSrcweir {
1456cdf0e10cSrcweir if(_pSet)
1457cdf0e10cSrcweir _pSet->Put(SfxUInt16Item(FN_PARAM_TOX_TYPE,
1458cdf0e10cSrcweir (sal_uInt16)(long)aTypeLB.GetEntryData( aTypeLB.GetSelectEntryPos() )));
1459cdf0e10cSrcweir FillTOXDescription();
1460cdf0e10cSrcweir return LEAVE_PAGE;
1461cdf0e10cSrcweir }
1462cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
1463cdf0e10cSrcweir
1464cdf0e10cSrcweir --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)1465cdf0e10cSrcweir SfxTabPage* SwTOXSelectTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet)
1466cdf0e10cSrcweir {
1467cdf0e10cSrcweir return new SwTOXSelectTabPage(pParent, rAttrSet);
1468cdf0e10cSrcweir }
1469cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
1470cdf0e10cSrcweir
1471cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,TOXTypeHdl,ListBox *,pBox)1472cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, TOXTypeHdl, ListBox*, pBox)
1473cdf0e10cSrcweir {
1474cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1475cdf0e10cSrcweir if(!bFirstCall)
1476cdf0e10cSrcweir {
1477cdf0e10cSrcweir // save current values into the proper TOXDescription
1478cdf0e10cSrcweir FillTOXDescription();
1479cdf0e10cSrcweir }
1480cdf0e10cSrcweir bFirstCall = sal_False;
1481cdf0e10cSrcweir const sal_uInt16 nType = sal::static_int_cast< sal_uInt16 >(reinterpret_cast< sal_uIntPtr >(
1482cdf0e10cSrcweir pBox->GetEntryData( pBox->GetSelectEntryPos() )));
1483cdf0e10cSrcweir CurTOXType eCurType = lcl_UserData2TOXTypes(nType);
1484cdf0e10cSrcweir pTOXDlg->SetCurrentTOXType(eCurType);
1485cdf0e10cSrcweir
1486cdf0e10cSrcweir aAreaLB.Show( 0 != (nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT)) );
1487cdf0e10cSrcweir aLevelFT.Show( 0 != (nType & (TO_CONTENT)) );
1488cdf0e10cSrcweir aLevelNF.Show( 0 != (nType & (TO_CONTENT)) );
1489cdf0e10cSrcweir aLevelFromChapterCB.Show( 0 != (nType & (TO_USER)) );
1490cdf0e10cSrcweir aAreaFT.Show( 0 != (nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT)) );
1491cdf0e10cSrcweir aAreaFL.Show( 0 != (nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT)) );
1492cdf0e10cSrcweir
1493cdf0e10cSrcweir aFromHeadingsCB.Show( 0 != (nType & (TO_CONTENT)) );
1494cdf0e10cSrcweir // aChapterDlgPB.Show( 0 != (nType & (TO_CONTENT)) );//#outline level,removed by zhaojianwei
1495cdf0e10cSrcweir aAddStylesCB.Show( 0 != (nType & (TO_CONTENT|TO_USER)) );
1496cdf0e10cSrcweir aAddStylesPB.Show( 0 != (nType & (TO_CONTENT|TO_USER)) );
1497cdf0e10cSrcweir
1498cdf0e10cSrcweir aFromTablesCB.Show( 0 != (nType & (TO_USER)) );
1499cdf0e10cSrcweir aFromFramesCB.Show( 0 != (nType & (TO_USER)) );
1500cdf0e10cSrcweir aFromGraphicsCB.Show( 0 != (nType & (TO_USER)) );
1501cdf0e10cSrcweir aFromOLECB.Show( 0 != (nType & (TO_USER)) );
1502cdf0e10cSrcweir
1503cdf0e10cSrcweir aFromCaptionsRB.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1504cdf0e10cSrcweir aFromObjectNamesRB.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1505cdf0e10cSrcweir
1506cdf0e10cSrcweir aTOXMarksCB.Show( 0 != (nType & (TO_CONTENT|TO_USER)) );
1507cdf0e10cSrcweir
1508cdf0e10cSrcweir aCreateFromFL.Show( 0 != (nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_TABLE)) );
1509cdf0e10cSrcweir aCaptionSequenceFT.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1510cdf0e10cSrcweir aCaptionSequenceLB.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1511cdf0e10cSrcweir aDisplayTypeFT.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1512cdf0e10cSrcweir aDisplayTypeLB.Show( 0 != (nType & (TO_ILLUSTRATION|TO_TABLE)) );
1513cdf0e10cSrcweir
1514cdf0e10cSrcweir aSequenceCB.Show( 0 != (nType & TO_AUTHORITIES) );
1515cdf0e10cSrcweir aBracketFT.Show( 0 != (nType & TO_AUTHORITIES) );
1516cdf0e10cSrcweir aBracketLB.Show( 0 != (nType & TO_AUTHORITIES) );
1517cdf0e10cSrcweir aAuthorityFormatFL.Show( 0 != (nType & TO_AUTHORITIES) );
1518cdf0e10cSrcweir
1519cdf0e10cSrcweir sal_Bool bEnableSortLanguage = 0 != (nType & (TO_INDEX|TO_AUTHORITIES));
1520cdf0e10cSrcweir aSortOptionsFL.Show(bEnableSortLanguage);
1521cdf0e10cSrcweir aLanguageFT.Show(bEnableSortLanguage);
1522cdf0e10cSrcweir aLanguageLB.Show(bEnableSortLanguage);
1523cdf0e10cSrcweir aSortAlgorithmFT.Show(bEnableSortLanguage);
1524cdf0e10cSrcweir aSortAlgorithmLB.Show(bEnableSortLanguage);
1525cdf0e10cSrcweir
1526cdf0e10cSrcweir //if(nType & TO_CONTENT) //#outline level,removed by zhaojianwei
1527cdf0e10cSrcweir //{
1528cdf0e10cSrcweir //Point aPos(aAddStylesPB.GetPosPixel());
1529cdf0e10cSrcweir //aPos.X() = aChapterDlgPB.GetPosPixel().X();
1530cdf0e10cSrcweir //aAddStylesPB.SetPosPixel(aPos);
1531cdf0e10cSrcweir //}
1532cdf0e10cSrcweir //else if( nType & TO_ILLUSTRATION )//<-removed end.
1533cdf0e10cSrcweir // initialize button positions
1534cdf0e10cSrcweir
1535cdf0e10cSrcweir //#i111993# add styles button has two different positions
1536cdf0e10cSrcweir if( !aAddStylesPosDef.X() )
1537cdf0e10cSrcweir {
1538cdf0e10cSrcweir aAddStylesPosDef = ( aAddStylesPB.GetPosPixel() );
1539cdf0e10cSrcweir // move left!
1540cdf0e10cSrcweir Point aPos(aAddStylesPosDef);
1541cdf0e10cSrcweir aPos.X() -= 2 * aAddStylesPB.GetSizePixel().Width();
1542cdf0e10cSrcweir aAddStylesPosUser = aPos;
1543cdf0e10cSrcweir }
1544cdf0e10cSrcweir
1545cdf0e10cSrcweir if( nType & TO_ILLUSTRATION ) //add by zhaojianwei
1546cdf0e10cSrcweir aCaptionSequenceLB.SelectEntry( SwStyleNameMapper::GetUIName(
1547cdf0e10cSrcweir RES_POOLCOLL_LABEL_ABB, aEmptyStr ));
1548cdf0e10cSrcweir else if( nType & TO_TABLE )
1549cdf0e10cSrcweir aCaptionSequenceLB.SelectEntry( SwStyleNameMapper::GetUIName(
1550cdf0e10cSrcweir RES_POOLCOLL_LABEL_TABLE, aEmptyStr ));
1551cdf0e10cSrcweir else if( nType & TO_USER )
1552cdf0e10cSrcweir {
1553cdf0e10cSrcweir aAddStylesCB.SetText(sAddStyleUser);
1554cdf0e10cSrcweir aAddStylesPB.SetPosPixel(aAddStylesPosUser);
1555cdf0e10cSrcweir }
1556cdf0e10cSrcweir else if( nType & TO_CONTENT )
1557cdf0e10cSrcweir {
1558cdf0e10cSrcweir aAddStylesPB.SetPosPixel(aAddStylesPosDef);
1559cdf0e10cSrcweir }
1560cdf0e10cSrcweir
1561cdf0e10cSrcweir aCollectSameCB.Show( 0 != (nType & TO_INDEX) );
1562cdf0e10cSrcweir aUseFFCB.Show( 0 != (nType & TO_INDEX) );
1563cdf0e10cSrcweir aUseDashCB.Show( 0 != (nType & TO_INDEX) );
1564cdf0e10cSrcweir aCaseSensitiveCB.Show( 0 != (nType & TO_INDEX) );
1565cdf0e10cSrcweir aInitialCapsCB.Show( 0 != (nType & TO_INDEX) );
1566cdf0e10cSrcweir aKeyAsEntryCB.Show( 0 != (nType & TO_INDEX) );
1567cdf0e10cSrcweir aFromFileCB.Show( 0 != (nType & TO_INDEX) );
1568cdf0e10cSrcweir aAutoMarkPB.Show( 0 != (nType & TO_INDEX) );
1569cdf0e10cSrcweir // aCreateAutoMarkPB.Show(nType &TO_INDEX);
1570cdf0e10cSrcweir // aEditAutoMarkPB.Show(nType & TO_INDEX);
1571cdf0e10cSrcweir
1572cdf0e10cSrcweir aIdxOptionsFL.Show( 0 != (nType & TO_INDEX) );
1573cdf0e10cSrcweir
1574cdf0e10cSrcweir //object index
1575cdf0e10cSrcweir aFromObjCLB.Show( 0 != (nType & TO_OBJECT) );
1576cdf0e10cSrcweir aFromObjFL.Show( 0 != (nType & TO_OBJECT) );
1577cdf0e10cSrcweir
1578cdf0e10cSrcweir //move controls
1579cdf0e10cSrcweir aAddStylesCB.SetPosPixel(nType & TO_USER ? aCBLeftPos1 : aCBLeftPos2);
1580cdf0e10cSrcweir Point aPBPos(aAddStylesPB.GetPosPixel());
1581cdf0e10cSrcweir aPBPos.Y() = nType & TO_USER ? aCBLeftPos1.Y() : aCBLeftPos2.Y();
1582cdf0e10cSrcweir aAddStylesPB.SetPosPixel(aPBPos);
1583cdf0e10cSrcweir aTOXMarksCB.SetPosPixel(nType & TO_USER ? aCBLeftPos2 : aCBLeftPos3);
1584cdf0e10cSrcweir //set control values from the proper TOXDescription
1585cdf0e10cSrcweir {
1586cdf0e10cSrcweir ApplyTOXDescription();
1587cdf0e10cSrcweir }
1588cdf0e10cSrcweir ModifyHdl(0);
1589cdf0e10cSrcweir return 0;
1590cdf0e10cSrcweir }
1591cdf0e10cSrcweir /* -----------------30.11.99 12:48-------------------
1592cdf0e10cSrcweir
1593cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,ModifyHdl,void *,EMPTYARG)1594cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, ModifyHdl, void*, EMPTYARG)
1595cdf0e10cSrcweir {
1596cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1597cdf0e10cSrcweir if(pTOXDlg)
1598cdf0e10cSrcweir {
1599cdf0e10cSrcweir FillTOXDescription();
1600cdf0e10cSrcweir pTOXDlg->CreateOrUpdateExample(pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_SELECT);
1601cdf0e10cSrcweir }
1602cdf0e10cSrcweir return 0;
1603cdf0e10cSrcweir }
1604cdf0e10cSrcweir /* -----------------05.07.99 10:13-------------------
1605cdf0e10cSrcweir
1606cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,CheckBoxHdl,CheckBox *,pBox)1607cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, CheckBoxHdl, CheckBox*, pBox )
1608cdf0e10cSrcweir {
1609cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1610cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
1611cdf0e10cSrcweir if(TOX_CONTENT == aCurType.eType)
1612cdf0e10cSrcweir {
1613cdf0e10cSrcweir //at least one of the three CheckBoxes must be checked
1614cdf0e10cSrcweir if(!aAddStylesCB.IsChecked() && !aFromHeadingsCB.IsChecked() && !aTOXMarksCB.IsChecked())
1615cdf0e10cSrcweir {
1616cdf0e10cSrcweir //TODO: InfoBox?
1617cdf0e10cSrcweir pBox->Check(sal_True);
1618cdf0e10cSrcweir }
1619cdf0e10cSrcweir aAddStylesPB.Enable(aAddStylesCB.IsChecked());
1620cdf0e10cSrcweir //aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());//#outline level,removed by zhaojianwei
1621cdf0e10cSrcweir }
1622cdf0e10cSrcweir if(TOX_USER == aCurType.eType)
1623cdf0e10cSrcweir {
1624cdf0e10cSrcweir aAddStylesPB.Enable(aAddStylesCB.IsChecked());
1625cdf0e10cSrcweir }
1626cdf0e10cSrcweir else if(TOX_INDEX == aCurType.eType)
1627cdf0e10cSrcweir {
1628cdf0e10cSrcweir aAutoMarkPB.Enable(aFromFileCB.IsChecked());
1629cdf0e10cSrcweir aUseFFCB.Enable(aCollectSameCB.IsChecked() && !aUseDashCB.IsChecked());
1630cdf0e10cSrcweir aUseDashCB.Enable(aCollectSameCB.IsChecked() && !aUseFFCB.IsChecked());
1631cdf0e10cSrcweir aCaseSensitiveCB.Enable(aCollectSameCB.IsChecked());
1632cdf0e10cSrcweir }
1633cdf0e10cSrcweir ModifyHdl(0);
1634cdf0e10cSrcweir return 0;
1635cdf0e10cSrcweir };
1636cdf0e10cSrcweir /* -----------------14.07.99 14:21-------------------
1637cdf0e10cSrcweir
1638cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,RadioButtonHdl,RadioButton *,EMPTYARG)1639cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, RadioButtonHdl, RadioButton*, EMPTYARG )
1640cdf0e10cSrcweir {
1641cdf0e10cSrcweir sal_Bool bEnable = aFromCaptionsRB.IsChecked();
1642cdf0e10cSrcweir aCaptionSequenceFT.Enable(bEnable);
1643cdf0e10cSrcweir aCaptionSequenceLB.Enable(bEnable);
1644cdf0e10cSrcweir aDisplayTypeFT.Enable(bEnable);
1645cdf0e10cSrcweir aDisplayTypeLB.Enable(bEnable);
1646cdf0e10cSrcweir ModifyHdl(0);
1647cdf0e10cSrcweir return 0;
1648cdf0e10cSrcweir }
1649cdf0e10cSrcweir /* -----------------------------06.06.01 09:33--------------------------------
1650cdf0e10cSrcweir
1651cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,LanguageHdl,ListBox *,pBox)1652cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, LanguageHdl, ListBox*, pBox)
1653cdf0e10cSrcweir {
1654cdf0e10cSrcweir Locale aLcl( SvxCreateLocale( aLanguageLB.GetSelectLanguage() ) );
1655cdf0e10cSrcweir Sequence< OUString > aSeq = pIndexEntryWrapper->GetAlgorithmList( aLcl );
1656cdf0e10cSrcweir
1657cdf0e10cSrcweir if( !pIndexRes )
1658cdf0e10cSrcweir pIndexRes = new IndexEntryRessource();
1659cdf0e10cSrcweir
1660cdf0e10cSrcweir String sOldString;
1661cdf0e10cSrcweir void* pUserData;
1662cdf0e10cSrcweir if( 0 != (pUserData = aSortAlgorithmLB.GetEntryData( aSortAlgorithmLB.GetSelectEntryPos())) )
1663cdf0e10cSrcweir sOldString = *(String*)pUserData;
1664cdf0e10cSrcweir void* pDel;
1665cdf0e10cSrcweir sal_uInt16 nEnd = aSortAlgorithmLB.GetEntryCount();
1666cdf0e10cSrcweir for( sal_uInt16 n = 0; n < nEnd; ++n )
1667cdf0e10cSrcweir if( 0 != ( pDel = aSortAlgorithmLB.GetEntryData( n )) )
1668cdf0e10cSrcweir delete (String*)pDel;
1669cdf0e10cSrcweir aSortAlgorithmLB.Clear();
1670cdf0e10cSrcweir
1671cdf0e10cSrcweir sal_uInt16 nInsPos;
1672cdf0e10cSrcweir String sAlg, sUINm;
1673cdf0e10cSrcweir nEnd = static_cast< sal_uInt16 >(aSeq.getLength());
1674cdf0e10cSrcweir for( sal_uInt16 nCnt = 0; nCnt < nEnd; ++nCnt )
1675cdf0e10cSrcweir {
1676cdf0e10cSrcweir sUINm = pIndexRes->GetTranslation( sAlg = aSeq[ nCnt ] );
1677cdf0e10cSrcweir nInsPos = aSortAlgorithmLB.InsertEntry( sUINm );
1678cdf0e10cSrcweir aSortAlgorithmLB.SetEntryData( nInsPos, new String( sAlg ));
1679cdf0e10cSrcweir if( sAlg == sOldString )
1680cdf0e10cSrcweir aSortAlgorithmLB.SelectEntryPos( nInsPos );
1681cdf0e10cSrcweir }
1682cdf0e10cSrcweir
1683cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND == aSortAlgorithmLB.GetSelectEntryPos() )
1684cdf0e10cSrcweir aSortAlgorithmLB.SelectEntryPos( 0 );
1685cdf0e10cSrcweir
1686cdf0e10cSrcweir if(pBox)
1687cdf0e10cSrcweir ModifyHdl(0);
1688cdf0e10cSrcweir return 0;
1689cdf0e10cSrcweir };
1690cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
1691cdf0e10cSrcweir
1692cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,TOXAreaHdl,ListBox *,pBox)1693cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, TOXAreaHdl, ListBox*, pBox)
1694cdf0e10cSrcweir {
1695cdf0e10cSrcweir DBG_WARNING("not implemented");
1696cdf0e10cSrcweir switch((long)pBox->GetEntryData( pBox->GetSelectEntryPos() ))
1697cdf0e10cSrcweir {
1698cdf0e10cSrcweir case AREA_DOCUMENT : break;
1699cdf0e10cSrcweir case AREA_CHAPTER : break;
1700cdf0e10cSrcweir }
1701cdf0e10cSrcweir return 0;
1702cdf0e10cSrcweir }
1703cdf0e10cSrcweir
1704cdf0e10cSrcweir //#outline level, removed by zhaojianwei
1705cdf0e10cSrcweir //It is no longer used!
1706cdf0e10cSrcweir ///* -----------------14.06.99 13:10-------------------
1707cdf0e10cSrcweir //
1708cdf0e10cSrcweir // --------------------------------------------------*/
1709cdf0e10cSrcweir //IMPL_LINK(SwTOXSelectTabPage, ChapterHdl, PushButton*, pButton)
1710cdf0e10cSrcweir //{
1711cdf0e10cSrcweir // SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
1712cdf0e10cSrcweir // SwWrtShell& rSh = pTOXDlg->GetWrtShell();
1713cdf0e10cSrcweir //
1714cdf0e10cSrcweir // SfxItemSet aTmp(rSh.GetView().GetPool(), FN_PARAM_1, FN_PARAM_1);
1715cdf0e10cSrcweir // SwOutlineTabDialog* pDlg = new SwOutlineTabDialog(pButton, &aTmp, rSh);
1716cdf0e10cSrcweir //
1717cdf0e10cSrcweir // if(RET_OK == pDlg->Execute())
1718cdf0e10cSrcweir // {
1719cdf0e10cSrcweir // CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
1720cdf0e10cSrcweir // SwForm* pForm = ((SwMultiTOXTabDialog*)GetTabDialog())->GetForm(aCurType);
1721cdf0e10cSrcweir // // jetzt muss ueberprueft werden, ob dem sdbcx::Index Ueberschriftenvorlagen
1722cdf0e10cSrcweir // // zugewiesen wurden
1723cdf0e10cSrcweir // String sStr;
1724cdf0e10cSrcweir // for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
1725cdf0e10cSrcweir // {
1726cdf0e10cSrcweir // sal_Bool bNum = !SwMultiTOXTabDialog::IsNoNum(rSh, pForm->GetTemplate( i + 1 ));
1727cdf0e10cSrcweir // if(bNum)
1728cdf0e10cSrcweir // {
1729cdf0e10cSrcweir // //es gibt getrennte Resourcebereiche fuer die Inhaltsverzeichnisse
1730cdf0e10cSrcweir // if(i < 5)
1731cdf0e10cSrcweir // SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT1 + i), sStr );
1732cdf0e10cSrcweir // else
1733cdf0e10cSrcweir // SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT6 + i - 5), sStr );
1734cdf0e10cSrcweir // pForm->SetTemplate( i + 1, sStr );
1735cdf0e10cSrcweir // }
1736cdf0e10cSrcweir // }
1737cdf0e10cSrcweir //
1738cdf0e10cSrcweir // }
1739cdf0e10cSrcweir // delete pDlg;
1740cdf0e10cSrcweir // return 0;
1741cdf0e10cSrcweir //}
1742cdf0e10cSrcweir /* -----------------14.06.99 13:10-------------------
1743cdf0e10cSrcweir
1744cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXSelectTabPage,AddStylesHdl,PushButton *,pButton)1745cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, AddStylesHdl, PushButton*, pButton)
1746cdf0e10cSrcweir {
1747cdf0e10cSrcweir SwAddStylesDlg_Impl* pDlg = new SwAddStylesDlg_Impl(pButton,
1748cdf0e10cSrcweir ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell(),
1749cdf0e10cSrcweir aStyleArr);
1750cdf0e10cSrcweir pDlg->Execute();
1751cdf0e10cSrcweir delete pDlg;
1752cdf0e10cSrcweir ModifyHdl(0);
1753cdf0e10cSrcweir return 0;
1754cdf0e10cSrcweir }
1755cdf0e10cSrcweir /* -----------------------------19.01.00 10:59--------------------------------
1756cdf0e10cSrcweir
1757cdf0e10cSrcweir ---------------------------------------------------------------------------*/
1758cdf0e10cSrcweir
IMPL_LINK(SwTOXSelectTabPage,MenuEnableHdl,Menu *,pMenu)1759cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, MenuEnableHdl, Menu*, pMenu)
1760cdf0e10cSrcweir {
1761cdf0e10cSrcweir pMenu->EnableItem(MN_AUTOMARK_EDIT, sAutoMarkURL.Len() > 0);
1762cdf0e10cSrcweir return 0;
1763cdf0e10cSrcweir }
1764cdf0e10cSrcweir
IMPL_LINK(SwTOXSelectTabPage,MenuExecuteHdl,Menu *,pMenu)1765cdf0e10cSrcweir IMPL_LINK(SwTOXSelectTabPage, MenuExecuteHdl, Menu*, pMenu)
1766cdf0e10cSrcweir {
1767cdf0e10cSrcweir const String sSaveAutoMarkURL = sAutoMarkURL;
1768cdf0e10cSrcweir switch(pMenu->GetCurItemId())
1769cdf0e10cSrcweir {
1770cdf0e10cSrcweir case MN_AUTOMARK_OPEN:
1771cdf0e10cSrcweir sAutoMarkURL = lcl_CreateAutoMarkFileDlg(
1772cdf0e10cSrcweir sAutoMarkURL, sAutoMarkType, sal_True);
1773cdf0e10cSrcweir break;
1774cdf0e10cSrcweir case MN_AUTOMARK_NEW :
1775cdf0e10cSrcweir sAutoMarkURL = lcl_CreateAutoMarkFileDlg(
1776cdf0e10cSrcweir sAutoMarkURL, sAutoMarkType, sal_False);
1777cdf0e10cSrcweir if( !sAutoMarkURL.Len() )
1778cdf0e10cSrcweir break;
1779cdf0e10cSrcweir //no break
1780cdf0e10cSrcweir case MN_AUTOMARK_EDIT:
1781cdf0e10cSrcweir {
1782cdf0e10cSrcweir sal_Bool bNew = pMenu->GetCurItemId()== MN_AUTOMARK_NEW;
1783cdf0e10cSrcweir SwAutoMarkDlg_Impl* pAutoMarkDlg = new SwAutoMarkDlg_Impl(
1784cdf0e10cSrcweir &aAutoMarkPB, sAutoMarkURL, sAutoMarkType, bNew );
1785cdf0e10cSrcweir
1786cdf0e10cSrcweir if( RET_OK != pAutoMarkDlg->Execute() && bNew )
1787cdf0e10cSrcweir sAutoMarkURL = sSaveAutoMarkURL;
1788cdf0e10cSrcweir delete pAutoMarkDlg;
1789cdf0e10cSrcweir
1790cdf0e10cSrcweir }
1791cdf0e10cSrcweir break;
1792cdf0e10cSrcweir }
1793cdf0e10cSrcweir return 0;
1794cdf0e10cSrcweir }
1795cdf0e10cSrcweir
1796cdf0e10cSrcweir /* -----------------16.06.99 10:46-------------------
1797cdf0e10cSrcweir
1798cdf0e10cSrcweir --------------------------------------------------*/
1799cdf0e10cSrcweir class SwTOXEdit : public Edit
1800cdf0e10cSrcweir {
1801cdf0e10cSrcweir SwFormToken aFormToken;
1802cdf0e10cSrcweir Link aPrevNextControlLink;
1803cdf0e10cSrcweir sal_Bool bNextControl;
1804cdf0e10cSrcweir SwTokenWindow* m_pParent;
1805cdf0e10cSrcweir public:
SwTOXEdit(Window * pParent,SwTokenWindow * pTokenWin,const SwFormToken & aToken)1806cdf0e10cSrcweir SwTOXEdit( Window* pParent, SwTokenWindow* pTokenWin,
1807cdf0e10cSrcweir const SwFormToken& aToken)
1808cdf0e10cSrcweir : Edit( pParent, WB_BORDER|WB_TABSTOP|WB_CENTER),
1809cdf0e10cSrcweir aFormToken(aToken),
1810cdf0e10cSrcweir bNextControl(sal_False),
1811cdf0e10cSrcweir m_pParent( pTokenWin )
1812cdf0e10cSrcweir {
1813cdf0e10cSrcweir SetHelpId( HID_TOX_ENTRY_EDIT );
1814cdf0e10cSrcweir }
1815cdf0e10cSrcweir
1816cdf0e10cSrcweir virtual void KeyInput( const KeyEvent& rKEvt );
1817cdf0e10cSrcweir virtual void RequestHelp( const HelpEvent& rHEvt );
1818cdf0e10cSrcweir
IsNextControl() const1819cdf0e10cSrcweir sal_Bool IsNextControl() const {return bNextControl;}
SetPrevNextLink(const Link & rLink)1820cdf0e10cSrcweir void SetPrevNextLink( const Link& rLink ) {aPrevNextControlLink = rLink;}
1821cdf0e10cSrcweir
GetFormToken()1822cdf0e10cSrcweir const SwFormToken& GetFormToken()
1823cdf0e10cSrcweir {
1824cdf0e10cSrcweir aFormToken.sText = GetText();
1825cdf0e10cSrcweir return aFormToken;
1826cdf0e10cSrcweir }
1827cdf0e10cSrcweir
SetCharStyleName(const String & rSet,sal_uInt16 nPoolId)1828cdf0e10cSrcweir void SetCharStyleName(const String& rSet, sal_uInt16 nPoolId)
1829cdf0e10cSrcweir {
1830cdf0e10cSrcweir aFormToken.sCharStyleName = rSet;
1831cdf0e10cSrcweir aFormToken.nPoolId = nPoolId;
1832cdf0e10cSrcweir }
1833cdf0e10cSrcweir
1834cdf0e10cSrcweir void AdjustSize();
1835cdf0e10cSrcweir };
1836cdf0e10cSrcweir
1837cdf0e10cSrcweir //---------------------------------------------------
RequestHelp(const HelpEvent & rHEvt)1838cdf0e10cSrcweir void SwTOXEdit::RequestHelp( const HelpEvent& rHEvt )
1839cdf0e10cSrcweir {
1840cdf0e10cSrcweir if(!m_pParent->CreateQuickHelp(this, aFormToken, rHEvt))
1841cdf0e10cSrcweir Edit::RequestHelp(rHEvt);
1842cdf0e10cSrcweir }
1843cdf0e10cSrcweir //---------------------------------------------------
KeyInput(const KeyEvent & rKEvt)1844cdf0e10cSrcweir void SwTOXEdit::KeyInput( const KeyEvent& rKEvt )
1845cdf0e10cSrcweir {
1846cdf0e10cSrcweir const Selection& rSel = GetSelection();
1847cdf0e10cSrcweir sal_uInt16 nTextLen = GetText().Len();
1848cdf0e10cSrcweir if( (rSel.A() == rSel.B() &&
1849cdf0e10cSrcweir !rSel.A() ) || rSel.A() == nTextLen )
1850cdf0e10cSrcweir {
1851cdf0e10cSrcweir sal_Bool bCall = sal_False;
1852cdf0e10cSrcweir KeyCode aCode = rKEvt.GetKeyCode();
1853cdf0e10cSrcweir if(aCode.GetCode() == KEY_RIGHT && rSel.A() == nTextLen)
1854cdf0e10cSrcweir {
1855cdf0e10cSrcweir bNextControl = sal_True;
1856cdf0e10cSrcweir bCall = sal_True;
1857cdf0e10cSrcweir }
1858cdf0e10cSrcweir else if(aCode.GetCode() == KEY_LEFT && !rSel.A() )
1859cdf0e10cSrcweir {
1860cdf0e10cSrcweir bNextControl = sal_False;
1861cdf0e10cSrcweir bCall = sal_True;
1862cdf0e10cSrcweir }
1863ca62e2c2SSteve Yin else if ( (aCode.GetCode() == KEY_F3) && aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() )
1864ca62e2c2SSteve Yin {
1865ca62e2c2SSteve Yin if ( m_pParent )
1866ca62e2c2SSteve Yin {
1867ca62e2c2SSteve Yin m_pParent->SetFocus2theAllBtn();
1868ca62e2c2SSteve Yin }
1869ca62e2c2SSteve Yin }
1870cdf0e10cSrcweir if(bCall && aPrevNextControlLink.IsSet())
1871cdf0e10cSrcweir aPrevNextControlLink.Call(this);
1872cdf0e10cSrcweir
1873cdf0e10cSrcweir }
1874cdf0e10cSrcweir Edit::KeyInput(rKEvt);
1875cdf0e10cSrcweir }
1876cdf0e10cSrcweir /* -----------------16.07.99 12:41-------------------
1877cdf0e10cSrcweir
1878cdf0e10cSrcweir --------------------------------------------------*/
AdjustSize()1879cdf0e10cSrcweir void SwTOXEdit::AdjustSize()
1880cdf0e10cSrcweir {
1881cdf0e10cSrcweir Size aSize(GetSizePixel());
1882cdf0e10cSrcweir Size aTextSize(GetTextWidth(GetText()), GetTextHeight());
1883cdf0e10cSrcweir aTextSize = LogicToPixel(aTextSize);
1884cdf0e10cSrcweir aSize.Width() = aTextSize.Width() + EDIT_MINWIDTH;
1885cdf0e10cSrcweir SetSizePixel(aSize);
1886cdf0e10cSrcweir }
1887cdf0e10cSrcweir
1888cdf0e10cSrcweir //---------------------------------------------------
1889cdf0e10cSrcweir //---------------------------------------------------
1890cdf0e10cSrcweir class SwTOXButton : public PushButton
1891cdf0e10cSrcweir {
1892cdf0e10cSrcweir SwFormToken aFormToken;
1893cdf0e10cSrcweir Link aPrevNextControlLink;
1894cdf0e10cSrcweir sal_Bool bNextControl;
1895cdf0e10cSrcweir SwTokenWindow* m_pParent;
1896cdf0e10cSrcweir public:
SwTOXButton(Window * pParent,SwTokenWindow * pTokenWin,const SwFormToken & rToken)1897cdf0e10cSrcweir SwTOXButton( Window* pParent, SwTokenWindow* pTokenWin,
1898cdf0e10cSrcweir const SwFormToken& rToken)
1899cdf0e10cSrcweir : PushButton(pParent, WB_BORDER|WB_TABSTOP),
1900cdf0e10cSrcweir aFormToken(rToken),
1901cdf0e10cSrcweir bNextControl(sal_False),
1902cdf0e10cSrcweir m_pParent(pTokenWin)
1903cdf0e10cSrcweir {
1904cdf0e10cSrcweir SetHelpId(HID_TOX_ENTRY_BUTTON);
1905cdf0e10cSrcweir }
1906cdf0e10cSrcweir
1907cdf0e10cSrcweir virtual void KeyInput( const KeyEvent& rKEvt );
1908cdf0e10cSrcweir virtual void RequestHelp( const HelpEvent& rHEvt );
1909cdf0e10cSrcweir
IsNextControl() const1910cdf0e10cSrcweir sal_Bool IsNextControl() const {return bNextControl;}
SetPrevNextLink(const Link & rLink)1911cdf0e10cSrcweir void SetPrevNextLink(const Link& rLink) {aPrevNextControlLink = rLink;}
GetFormToken() const1912cdf0e10cSrcweir const SwFormToken& GetFormToken() const {return aFormToken;}
1913cdf0e10cSrcweir
SetCharStyleName(const String & rSet,sal_uInt16 nPoolId)1914cdf0e10cSrcweir void SetCharStyleName(const String& rSet, sal_uInt16 nPoolId)
1915cdf0e10cSrcweir {
1916cdf0e10cSrcweir aFormToken.sCharStyleName = rSet;
1917cdf0e10cSrcweir aFormToken.nPoolId = nPoolId;
1918cdf0e10cSrcweir }
1919cdf0e10cSrcweir
SetTabPosition(SwTwips nSet)1920cdf0e10cSrcweir void SetTabPosition(SwTwips nSet)
1921cdf0e10cSrcweir { aFormToken.nTabStopPosition = nSet; }
1922cdf0e10cSrcweir
SetFillChar(sal_Unicode cSet)1923cdf0e10cSrcweir void SetFillChar( sal_Unicode cSet )
1924cdf0e10cSrcweir { aFormToken.cTabFillChar = cSet; }
1925cdf0e10cSrcweir
SetTabAlign(SvxTabAdjust eAlign)1926cdf0e10cSrcweir void SetTabAlign(SvxTabAdjust eAlign)
1927cdf0e10cSrcweir { aFormToken.eTabAlign = eAlign;}
1928cdf0e10cSrcweir
1929cdf0e10cSrcweir //---> i89791
1930cdf0e10cSrcweir //used for entry number format, in TOC only
1931cdf0e10cSrcweir //needed for different UI dialog position
SetEntryNumberFormat(sal_uInt16 nSet)1932cdf0e10cSrcweir void SetEntryNumberFormat(sal_uInt16 nSet) {
1933cdf0e10cSrcweir switch(nSet)
1934cdf0e10cSrcweir {
1935cdf0e10cSrcweir default:
1936cdf0e10cSrcweir case 0:
1937cdf0e10cSrcweir aFormToken.nChapterFormat = CF_NUMBER;
1938cdf0e10cSrcweir break;
1939cdf0e10cSrcweir case 1:
1940cdf0e10cSrcweir aFormToken.nChapterFormat = CF_NUM_NOPREPST_TITLE;
1941cdf0e10cSrcweir break;
1942cdf0e10cSrcweir }
1943cdf0e10cSrcweir }
1944cdf0e10cSrcweir
SetChapterInfo(sal_uInt16 nSet)1945cdf0e10cSrcweir void SetChapterInfo(sal_uInt16 nSet) {
1946cdf0e10cSrcweir switch(nSet)
1947cdf0e10cSrcweir {
1948cdf0e10cSrcweir default:
1949cdf0e10cSrcweir case 0:
1950cdf0e10cSrcweir aFormToken.nChapterFormat = CF_NUM_NOPREPST_TITLE;
1951cdf0e10cSrcweir break;
1952cdf0e10cSrcweir case 1:
1953cdf0e10cSrcweir aFormToken.nChapterFormat = CF_TITLE;
1954cdf0e10cSrcweir break;
1955cdf0e10cSrcweir case 2:
1956cdf0e10cSrcweir aFormToken.nChapterFormat = CF_NUMBER_NOPREPST;
1957cdf0e10cSrcweir break;
1958cdf0e10cSrcweir }
1959cdf0e10cSrcweir }
1960cdf0e10cSrcweir //<---
GetChapterInfo() const1961cdf0e10cSrcweir sal_uInt16 GetChapterInfo() const{ return aFormToken.nChapterFormat;}
1962cdf0e10cSrcweir
SetOutlineLevel(sal_uInt16 nSet)1963cdf0e10cSrcweir void SetOutlineLevel( sal_uInt16 nSet ) { aFormToken.nOutlineLevel = nSet;}//i53420
GetOutlineLevel() const1964cdf0e10cSrcweir sal_uInt16 GetOutlineLevel() const{ return aFormToken.nOutlineLevel;}
1965cdf0e10cSrcweir
SetLinkEnd()1966cdf0e10cSrcweir void SetLinkEnd()
1967cdf0e10cSrcweir {
1968cdf0e10cSrcweir DBG_ASSERT(TOKEN_LINK_START == aFormToken.eTokenType,
1969cdf0e10cSrcweir "call SetLinkEnd for link start only!");
1970cdf0e10cSrcweir aFormToken.eTokenType = TOKEN_LINK_END;
1971cdf0e10cSrcweir aFormToken.sText.AssignAscii(SwForm::aFormLinkEnd);
1972cdf0e10cSrcweir SetText(aFormToken.sText);
1973cdf0e10cSrcweir }
SetLinkStart()1974cdf0e10cSrcweir void SetLinkStart()
1975cdf0e10cSrcweir {
1976cdf0e10cSrcweir DBG_ASSERT(TOKEN_LINK_END == aFormToken.eTokenType,
1977cdf0e10cSrcweir "call SetLinkStart for link start only!");
1978cdf0e10cSrcweir aFormToken.eTokenType = TOKEN_LINK_START;
1979cdf0e10cSrcweir aFormToken.sText.AssignAscii(SwForm::aFormLinkStt);
1980cdf0e10cSrcweir SetText(aFormToken.sText);
1981cdf0e10cSrcweir }
1982cdf0e10cSrcweir };
1983cdf0e10cSrcweir
1984cdf0e10cSrcweir //---------------------------------------------------
KeyInput(const KeyEvent & rKEvt)1985cdf0e10cSrcweir void SwTOXButton::KeyInput( const KeyEvent& rKEvt )
1986cdf0e10cSrcweir {
1987cdf0e10cSrcweir sal_Bool bCall = sal_False;
1988cdf0e10cSrcweir KeyCode aCode = rKEvt.GetKeyCode();
1989cdf0e10cSrcweir if(aCode.GetCode() == KEY_RIGHT)
1990cdf0e10cSrcweir {
1991cdf0e10cSrcweir bNextControl = sal_True;
1992cdf0e10cSrcweir bCall = sal_True;
1993cdf0e10cSrcweir }
1994cdf0e10cSrcweir else if(aCode.GetCode() == KEY_LEFT )
1995cdf0e10cSrcweir {
1996cdf0e10cSrcweir bNextControl = sal_False;
1997cdf0e10cSrcweir bCall = sal_True;
1998cdf0e10cSrcweir }
1999cdf0e10cSrcweir else if(aCode.GetCode() == KEY_DELETE)
2000cdf0e10cSrcweir {
2001cdf0e10cSrcweir m_pParent->RemoveControl(this, sal_True);
2002cdf0e10cSrcweir //this is invalid here
2003cdf0e10cSrcweir return;
2004cdf0e10cSrcweir }
2005ca62e2c2SSteve Yin else if ( (aCode.GetCode() == KEY_F3) && aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() )
2006ca62e2c2SSteve Yin {
2007ca62e2c2SSteve Yin if ( m_pParent )
2008ca62e2c2SSteve Yin {
2009ca62e2c2SSteve Yin m_pParent->SetFocus2theAllBtn();
2010ca62e2c2SSteve Yin }
2011ca62e2c2SSteve Yin }
2012cdf0e10cSrcweir if(bCall && aPrevNextControlLink.IsSet())
2013cdf0e10cSrcweir aPrevNextControlLink.Call(this);
2014cdf0e10cSrcweir else
2015cdf0e10cSrcweir PushButton::KeyInput(rKEvt);
2016cdf0e10cSrcweir }
2017cdf0e10cSrcweir //---------------------------------------------------
RequestHelp(const HelpEvent & rHEvt)2018cdf0e10cSrcweir void SwTOXButton::RequestHelp( const HelpEvent& rHEvt )
2019cdf0e10cSrcweir {
2020cdf0e10cSrcweir if(!m_pParent->CreateQuickHelp(this, aFormToken, rHEvt))
2021cdf0e10cSrcweir Button::RequestHelp(rHEvt);
2022cdf0e10cSrcweir }
2023cdf0e10cSrcweir /* -----------------------------23.12.99 14:28--------------------------------
2024cdf0e10cSrcweir
2025cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SwIdxTreeListBox(SwTOXEntryTabPage * pPar,const ResId & rResId)2026cdf0e10cSrcweir SwIdxTreeListBox::SwIdxTreeListBox(SwTOXEntryTabPage* pPar, const ResId& rResId) :
2027cdf0e10cSrcweir SvTreeListBox(pPar, rResId),
2028cdf0e10cSrcweir pParent(pPar)
2029cdf0e10cSrcweir {
2030cdf0e10cSrcweir }
2031cdf0e10cSrcweir /* -----------------------------23.12.99 14:19--------------------------------
2032cdf0e10cSrcweir
2033cdf0e10cSrcweir ---------------------------------------------------------------------------*/
RequestHelp(const HelpEvent & rHEvt)2034cdf0e10cSrcweir void SwIdxTreeListBox::RequestHelp( const HelpEvent& rHEvt )
2035cdf0e10cSrcweir {
2036cdf0e10cSrcweir if( rHEvt.GetMode() & HELPMODE_QUICK )
2037cdf0e10cSrcweir {
2038cdf0e10cSrcweir Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
2039cdf0e10cSrcweir SvLBoxEntry* pEntry = GetEntry( aPos );
2040cdf0e10cSrcweir if( pEntry )
2041cdf0e10cSrcweir {
2042cdf0e10cSrcweir sal_uInt16 nLevel = static_cast< sal_uInt16 >(GetModel()->GetAbsPos(pEntry));
2043cdf0e10cSrcweir String sEntry = pParent->GetLevelHelp(++nLevel);
2044cdf0e10cSrcweir if('*' == sEntry)
2045cdf0e10cSrcweir sEntry = GetEntryText(pEntry);
2046cdf0e10cSrcweir if(sEntry.Len())
2047cdf0e10cSrcweir {
2048cdf0e10cSrcweir SvLBoxTab* pTab;
2049cdf0e10cSrcweir SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
2050cdf0e10cSrcweir if( pItem && SV_ITEM_ID_LBOXSTRING == pItem->IsA())
2051cdf0e10cSrcweir {
2052cdf0e10cSrcweir aPos = GetEntryPosition( pEntry );
2053cdf0e10cSrcweir
2054cdf0e10cSrcweir aPos.X() = GetTabPos( pEntry, pTab );
2055cdf0e10cSrcweir Size aSize( pItem->GetSize( this, pEntry ) );
2056cdf0e10cSrcweir
2057cdf0e10cSrcweir if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
2058cdf0e10cSrcweir aSize.Width() = GetSizePixel().Width() - aPos.X();
2059cdf0e10cSrcweir
2060cdf0e10cSrcweir aPos = OutputToScreenPixel(aPos);
2061cdf0e10cSrcweir Rectangle aItemRect( aPos, aSize );
2062cdf0e10cSrcweir Help::ShowQuickHelp( this, aItemRect, sEntry,
2063cdf0e10cSrcweir QUICKHELP_LEFT|QUICKHELP_VCENTER );
2064cdf0e10cSrcweir }
2065cdf0e10cSrcweir }
2066cdf0e10cSrcweir }
2067cdf0e10cSrcweir }
2068cdf0e10cSrcweir else
2069cdf0e10cSrcweir SvTreeListBox::RequestHelp(rHEvt);
2070cdf0e10cSrcweir }
2071cdf0e10cSrcweir //---------------------------------------------------
SwTOXEntryTabPage(Window * pParent,const SfxItemSet & rAttrSet)2072cdf0e10cSrcweir SwTOXEntryTabPage::SwTOXEntryTabPage(Window* pParent, const SfxItemSet& rAttrSet) :
2073cdf0e10cSrcweir SfxTabPage(pParent, SW_RES(TP_TOX_ENTRY), rAttrSet),
2074cdf0e10cSrcweir aLevelFT(this, SW_RES(FT_LEVEL )),
2075cdf0e10cSrcweir aLevelLB(this, SW_RES(LB_LEVEL )),
2076cdf0e10cSrcweir aEntryFL(this, SW_RES(FL_ENTRY )),
2077cdf0e10cSrcweir
2078cdf0e10cSrcweir aTokenFT(this, SW_RES(FT_TOKEN )),
2079cdf0e10cSrcweir aTokenWIN(this, SW_RES(WIN_TOKEN )),
2080cdf0e10cSrcweir aAllLevelsPB(this, SW_RES(PB_ALL_LEVELS )),
2081cdf0e10cSrcweir
2082cdf0e10cSrcweir aEntryNoPB(this, SW_RES(PB_ENTRYNO )),
2083cdf0e10cSrcweir aEntryPB(this, SW_RES(PB_ENTRY )),
2084cdf0e10cSrcweir aTabPB(this, SW_RES(PB_TAB )),
2085cdf0e10cSrcweir aChapterInfoPB(this, SW_RES(PB_CHAPTERINFO )),
2086cdf0e10cSrcweir aPageNoPB(this, SW_RES(PB_PAGENO )),
2087cdf0e10cSrcweir aHyperLinkPB(this, SW_RES(PB_HYPERLINK )),
2088cdf0e10cSrcweir
2089cdf0e10cSrcweir aAuthFieldsLB(this, SW_RES(LB_AUTHFIELD )),
2090cdf0e10cSrcweir aAuthInsertPB(this, SW_RES(PB_AUTHINSERT )),
2091cdf0e10cSrcweir aAuthRemovePB(this, SW_RES(PB_AUTHREMOVE )),
2092cdf0e10cSrcweir
2093cdf0e10cSrcweir aCharStyleFT(this, SW_RES(FT_CHARSTYLE )),
2094cdf0e10cSrcweir aCharStyleLB(this, SW_RES(LB_CHARSTYLE )),
2095cdf0e10cSrcweir aEditStylePB(this, SW_RES(PB_EDITSTYLE )),
2096cdf0e10cSrcweir
2097cdf0e10cSrcweir aChapterEntryFT(this, SW_RES(FT_CHAPTERENTRY )),
2098cdf0e10cSrcweir aChapterEntryLB(this, SW_RES(LB_CHAPTERENTRY )),
2099cdf0e10cSrcweir
2100cdf0e10cSrcweir aNumberFormatFT(this, SW_RES(FT_ENTRY_NO )),//i53420
2101cdf0e10cSrcweir aNumberFormatLB(this, SW_RES(LB_ENTRY_NO )),
2102cdf0e10cSrcweir aEntryOutlineLevelFT(this, SW_RES(FT_LEVEL_OL )),//i53420
2103cdf0e10cSrcweir aEntryOutlineLevelNF(this, SW_RES(NF_LEVEL_OL )),
2104cdf0e10cSrcweir
2105cdf0e10cSrcweir aFillCharFT(this, SW_RES(FT_FILLCHAR )),
2106cdf0e10cSrcweir aFillCharCB(this, SW_RES(CB_FILLCHAR )),
2107cdf0e10cSrcweir aTabPosFT(this, SW_RES(FT_TABPOS )),
2108cdf0e10cSrcweir aTabPosMF(this, SW_RES(MF_TABPOS )),
2109cdf0e10cSrcweir aAutoRightCB(this, SW_RES(CB_AUTORIGHT )),
2110cdf0e10cSrcweir aFormatFL(this, SW_RES(FL_FORMAT )),
2111cdf0e10cSrcweir
2112cdf0e10cSrcweir
2113cdf0e10cSrcweir aRelToStyleCB(this, SW_RES(CB_RELTOSTYLE )),
2114cdf0e10cSrcweir aMainEntryStyleFT(this, SW_RES(FT_MAIN_ENTRY_STYLE)),
2115cdf0e10cSrcweir aMainEntryStyleLB(this, SW_RES(LB_MAIN_ENTRY_STYLE)),
2116cdf0e10cSrcweir aAlphaDelimCB(this, SW_RES(CB_ALPHADELIM )),
2117cdf0e10cSrcweir aCommaSeparatedCB(this, SW_RES(CB_COMMASEPARATED )),
2118cdf0e10cSrcweir
2119cdf0e10cSrcweir aSortDocPosRB(this, SW_RES(RB_DOCPOS )),
2120cdf0e10cSrcweir aSortContentRB(this, SW_RES(RB_SORTCONTENT )),
2121cdf0e10cSrcweir aSortingFL(this, SW_RES(FL_SORTING )),
2122cdf0e10cSrcweir
2123cdf0e10cSrcweir aFirstKeyFT(this, SW_RES(FT_FIRSTKEY )),
2124cdf0e10cSrcweir aFirstKeyLB(this, SW_RES(LB_FIRSTKEY )),
2125cdf0e10cSrcweir aFirstSortUpRB(this, SW_RES(RB_SORTUP1 )),
2126cdf0e10cSrcweir aFirstSortDownRB(this, SW_RES(RB_SORTDOWN1 )),
2127cdf0e10cSrcweir
2128cdf0e10cSrcweir aSecondKeyFT(this, SW_RES(FT_SECONDKEY )),
2129cdf0e10cSrcweir aSecondKeyLB(this, SW_RES(LB_SECONDKEY )),
2130cdf0e10cSrcweir aSecondSortUpRB(this, SW_RES(RB_SORTUP2 )),
2131cdf0e10cSrcweir aSecondSortDownRB(this, SW_RES(RB_SORTDOWN2 )),
2132cdf0e10cSrcweir
2133cdf0e10cSrcweir aThirdKeyFT(this, SW_RES(FT_THIRDDKEY )),
2134cdf0e10cSrcweir aThirdKeyLB(this, SW_RES(LB_THIRDKEY )),
2135cdf0e10cSrcweir aThirdSortUpRB(this, SW_RES(RB_SORTUP3 )),
2136cdf0e10cSrcweir aThirdSortDownRB(this, SW_RES(RB_SORTDOWN3 )),
2137cdf0e10cSrcweir
2138cdf0e10cSrcweir aSortKeyFL(this, SW_RES(FL_SORTKEY )),
2139cdf0e10cSrcweir
2140cdf0e10cSrcweir sDelimStr( SW_RES(STR_DELIM)),
2141cdf0e10cSrcweir sAuthTypeStr( SW_RES(ST_AUTHTYPE)),
2142cdf0e10cSrcweir
2143cdf0e10cSrcweir sNoCharStyle( SW_RES(STR_NO_CHAR_STYLE)),
2144cdf0e10cSrcweir sNoCharSortKey( SW_RES(STR_NOSORTKEY )),
2145cdf0e10cSrcweir m_pCurrentForm(0),
2146cdf0e10cSrcweir bInLevelHdl(sal_False)
2147cdf0e10cSrcweir {
2148cdf0e10cSrcweir aEditStylePB.SetAccessibleRelationMemberOf(&aEntryFL);
2149cdf0e10cSrcweir aHyperLinkPB.SetAccessibleRelationMemberOf(&aEntryFL);
2150cdf0e10cSrcweir aPageNoPB.SetAccessibleRelationMemberOf(&aEntryFL);
2151cdf0e10cSrcweir aTabPB.SetAccessibleRelationMemberOf(&aEntryFL);
2152cdf0e10cSrcweir aEntryPB.SetAccessibleRelationMemberOf(&aEntryFL);
2153cdf0e10cSrcweir aEntryNoPB.SetAccessibleRelationMemberOf(&aEntryFL);
2154cdf0e10cSrcweir aAllLevelsPB.SetAccessibleRelationMemberOf(&aEntryFL);
2155cdf0e10cSrcweir aTokenWIN.SetAccessibleRelationMemberOf(&aEntryFL);
2156cdf0e10cSrcweir aTokenWIN.SetAccessibleRelationLabeledBy(&aTokenFT);
2157cdf0e10cSrcweir
2158cdf0e10cSrcweir Image aSortUpHC(SW_RES(IMG_SORTUP_HC ));
2159cdf0e10cSrcweir aFirstSortUpRB.SetModeRadioImage(aSortUpHC,BMP_COLOR_HIGHCONTRAST);
2160cdf0e10cSrcweir aSecondSortUpRB.SetModeRadioImage(aSortUpHC,BMP_COLOR_HIGHCONTRAST);
2161cdf0e10cSrcweir aThirdSortUpRB.SetModeRadioImage(aSortUpHC,BMP_COLOR_HIGHCONTRAST);
2162cdf0e10cSrcweir
2163cdf0e10cSrcweir Image aSortDownHC(SW_RES(IMG_SORTDOWN_HC ));
2164cdf0e10cSrcweir aFirstSortDownRB.SetModeRadioImage(aSortDownHC,BMP_COLOR_HIGHCONTRAST);
2165cdf0e10cSrcweir aSecondSortDownRB.SetModeRadioImage(aSortDownHC,BMP_COLOR_HIGHCONTRAST);
2166cdf0e10cSrcweir aThirdSortDownRB.SetModeRadioImage(aSortDownHC,BMP_COLOR_HIGHCONTRAST);
2167cdf0e10cSrcweir FreeResource();
2168cdf0e10cSrcweir
2169cdf0e10cSrcweir sLevelStr = aLevelFT.GetText();
2170cdf0e10cSrcweir aLevelLB.SetStyle( aLevelLB.GetStyle() | WB_HSCROLL );
2171cdf0e10cSrcweir aLevelLB.SetSpaceBetweenEntries(0);
2172cdf0e10cSrcweir aLevelLB.SetSelectionMode( SINGLE_SELECTION );
2173cdf0e10cSrcweir aLevelLB.SetHighlightRange(); // select full width
2174cdf0e10cSrcweir aLevelLB.SetHelpId(HID_INSERT_INDEX_ENTRY_LEVEL_LB);
2175cdf0e10cSrcweir aLevelLB.Show();
2176cdf0e10cSrcweir
2177cdf0e10cSrcweir aLastTOXType.eType = (TOXTypes)USHRT_MAX;
2178cdf0e10cSrcweir aLastTOXType.nIndex = 0;
2179cdf0e10cSrcweir //aLevelGBSize = aLevelGB.GetSizePixel();
2180cdf0e10cSrcweir aLevelFLSize = aLevelFT.GetSizePixel();
2181cdf0e10cSrcweir
2182cdf0e10cSrcweir SetExchangeSupport();
2183cdf0e10cSrcweir aEntryNoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2184cdf0e10cSrcweir aEntryPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2185cdf0e10cSrcweir aChapterInfoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2186cdf0e10cSrcweir aPageNoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2187cdf0e10cSrcweir aTabPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2188cdf0e10cSrcweir aHyperLinkPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
2189cdf0e10cSrcweir aEditStylePB.SetClickHdl(LINK(this, SwTOXEntryTabPage, EditStyleHdl));
2190cdf0e10cSrcweir aLevelLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, LevelHdl));
2191cdf0e10cSrcweir aTokenWIN.SetButtonSelectedHdl(LINK(this, SwTOXEntryTabPage, TokenSelectedHdl));
2192cdf0e10cSrcweir aTokenWIN.SetModifyHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
2193cdf0e10cSrcweir aCharStyleLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, StyleSelectHdl));
2194cdf0e10cSrcweir aCharStyleLB.InsertEntry(sNoCharStyle);
2195cdf0e10cSrcweir aChapterEntryLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, ChapterInfoHdl));
2196cdf0e10cSrcweir aEntryOutlineLevelNF.SetModifyHdl(LINK(this, SwTOXEntryTabPage, ChapterInfoOutlineHdl));
2197cdf0e10cSrcweir aNumberFormatLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, NumberFormatHdl));
2198cdf0e10cSrcweir
2199cdf0e10cSrcweir aTabPosMF.SetModifyHdl(LINK(this, SwTOXEntryTabPage, TabPosHdl));
2200cdf0e10cSrcweir aFillCharCB.SetModifyHdl(LINK(this, SwTOXEntryTabPage, FillCharHdl));
2201cdf0e10cSrcweir aAutoRightCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, AutoRightHdl));
2202cdf0e10cSrcweir aAuthInsertPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, RemoveInsertAuthHdl));
2203cdf0e10cSrcweir aAuthRemovePB.SetClickHdl(LINK(this, SwTOXEntryTabPage, RemoveInsertAuthHdl));
2204cdf0e10cSrcweir aSortDocPosRB.SetClickHdl(LINK(this, SwTOXEntryTabPage, SortKeyHdl));
2205cdf0e10cSrcweir aSortContentRB.SetClickHdl(LINK(this, SwTOXEntryTabPage, SortKeyHdl));
2206cdf0e10cSrcweir aAllLevelsPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, AllLevelsHdl));
2207cdf0e10cSrcweir
2208cdf0e10cSrcweir aAlphaDelimCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
2209cdf0e10cSrcweir aCommaSeparatedCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
2210cdf0e10cSrcweir aRelToStyleCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
2211cdf0e10cSrcweir
2212cdf0e10cSrcweir FieldUnit aMetric = ::GetDfltMetric(sal_False);
2213cdf0e10cSrcweir SetMetric(aTabPosMF, aMetric);
2214cdf0e10cSrcweir
2215cdf0e10cSrcweir aSortDocPosRB.Check();
2216cdf0e10cSrcweir
2217cdf0e10cSrcweir aFillCharCB.SetMaxTextLen(1);
2218cdf0e10cSrcweir aFillCharCB.InsertEntry(' ');
2219cdf0e10cSrcweir aFillCharCB.InsertEntry('.');
2220cdf0e10cSrcweir aFillCharCB.InsertEntry('-');
2221cdf0e10cSrcweir aFillCharCB.InsertEntry('_');
2222cdf0e10cSrcweir
2223cdf0e10cSrcweir aButtonPositions[0] = aEntryNoPB.GetPosPixel();
2224cdf0e10cSrcweir aButtonPositions[1] = aEntryPB.GetPosPixel();
2225cdf0e10cSrcweir aButtonPositions[2] = aChapterInfoPB.GetPosPixel();
2226cdf0e10cSrcweir aButtonPositions[3] = aPageNoPB.GetPosPixel();
2227cdf0e10cSrcweir aButtonPositions[4] = aTabPB.GetPosPixel();
2228cdf0e10cSrcweir
2229cdf0e10cSrcweir aRelToStylePos = aRelToStyleCB.GetPosPixel();
2230cdf0e10cSrcweir aRelToStyleIdxPos = aCommaSeparatedCB.GetPosPixel();
2231cdf0e10cSrcweir aRelToStyleIdxPos.Y() +=
2232cdf0e10cSrcweir (aRelToStyleIdxPos.Y() - aAlphaDelimCB.GetPosPixel().Y());
2233cdf0e10cSrcweir aEditStylePB.Enable(sal_False);
2234cdf0e10cSrcweir
2235cdf0e10cSrcweir //get position for Numbering and other stuff
2236cdf0e10cSrcweir aChapterEntryFTPosition = aChapterEntryFT.GetPosPixel();
2237cdf0e10cSrcweir aEntryOutlineLevelFTPosition = aEntryOutlineLevelFT.GetPosPixel();
2238cdf0e10cSrcweir nBiasToEntryPoint = aEntryOutlineLevelNF.GetPosPixel().X() -
2239cdf0e10cSrcweir aEntryOutlineLevelFT.GetPosPixel().X();
2240cdf0e10cSrcweir
2241cdf0e10cSrcweir //fill the types in
2242cdf0e10cSrcweir sal_uInt16 i;
2243cdf0e10cSrcweir for( i = 0; i < AUTH_FIELD_END; i++)
2244cdf0e10cSrcweir {
2245cdf0e10cSrcweir String sTmp(SW_RES(STR_AUTH_FIELD_START + i));
2246cdf0e10cSrcweir sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTmp);
2247cdf0e10cSrcweir aAuthFieldsLB.SetEntryData(nPos, reinterpret_cast< void * >(sal::static_int_cast< sal_uIntPtr >(i)));
2248cdf0e10cSrcweir }
2249cdf0e10cSrcweir sal_uInt16 nPos = aFirstKeyLB.InsertEntry(sNoCharSortKey);
2250cdf0e10cSrcweir aFirstKeyLB.SetEntryData(nPos, reinterpret_cast< void * >(sal::static_int_cast< sal_uIntPtr >(USHRT_MAX)));
2251cdf0e10cSrcweir nPos = aSecondKeyLB.InsertEntry(sNoCharSortKey);
2252cdf0e10cSrcweir aSecondKeyLB.SetEntryData(nPos, reinterpret_cast< void * >(sal::static_int_cast< sal_uIntPtr >(USHRT_MAX)));
2253cdf0e10cSrcweir nPos = aThirdKeyLB.InsertEntry(sNoCharSortKey);
2254cdf0e10cSrcweir aThirdKeyLB.SetEntryData(nPos, reinterpret_cast< void * >(sal::static_int_cast< sal_uIntPtr >(USHRT_MAX)));
2255cdf0e10cSrcweir
2256cdf0e10cSrcweir for( i = 0; i < AUTH_FIELD_END; i++)
2257cdf0e10cSrcweir {
2258cdf0e10cSrcweir String sTmp(aAuthFieldsLB.GetEntry(i));
2259cdf0e10cSrcweir void* pEntryData = aAuthFieldsLB.GetEntryData(i);
2260cdf0e10cSrcweir nPos = aFirstKeyLB.InsertEntry(sTmp);
2261cdf0e10cSrcweir aFirstKeyLB.SetEntryData(nPos, pEntryData);
2262cdf0e10cSrcweir nPos = aSecondKeyLB.InsertEntry(sTmp);
2263cdf0e10cSrcweir aSecondKeyLB.SetEntryData(nPos, pEntryData);
2264cdf0e10cSrcweir nPos = aThirdKeyLB.InsertEntry(sTmp);
2265cdf0e10cSrcweir aThirdKeyLB.SetEntryData(nPos, pEntryData);
2266cdf0e10cSrcweir }
2267cdf0e10cSrcweir aFirstKeyLB.SelectEntryPos(0);
2268cdf0e10cSrcweir aSecondKeyLB.SelectEntryPos(0);
2269cdf0e10cSrcweir aThirdKeyLB.SelectEntryPos(0);
2270cdf0e10cSrcweir }
2271cdf0e10cSrcweir /* -----------------30.11.99 13:37-------------------
2272cdf0e10cSrcweir pVoid is used as signal to change all levels of the example
2273cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,ModifyHdl,void *,pVoid)2274cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, ModifyHdl, void*, pVoid)
2275cdf0e10cSrcweir {
2276cdf0e10cSrcweir UpdateDescriptor();
2277cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
2278cdf0e10cSrcweir
2279cdf0e10cSrcweir if(pTOXDlg)
2280cdf0e10cSrcweir {
2281cdf0e10cSrcweir sal_uInt16 nCurLevel = static_cast< sal_uInt16 >(aLevelLB.GetModel()->GetAbsPos(aLevelLB.FirstSelected()) + 1);
2282cdf0e10cSrcweir if(aLastTOXType.eType == TOX_CONTENT && pVoid)
2283cdf0e10cSrcweir nCurLevel = USHRT_MAX;
2284cdf0e10cSrcweir pTOXDlg->CreateOrUpdateExample(
2285cdf0e10cSrcweir pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_ENTRY, nCurLevel);
2286cdf0e10cSrcweir }
2287cdf0e10cSrcweir return 0;
2288cdf0e10cSrcweir }
2289cdf0e10cSrcweir
2290cdf0e10cSrcweir /*-- 16.06.99 10:47:33---------------------------------------------------
2291cdf0e10cSrcweir
2292cdf0e10cSrcweir -----------------------------------------------------------------------*/
~SwTOXEntryTabPage()2293cdf0e10cSrcweir SwTOXEntryTabPage::~SwTOXEntryTabPage()
2294cdf0e10cSrcweir {
2295cdf0e10cSrcweir }
2296cdf0e10cSrcweir /*-- 16.06.99 10:47:33---------------------------------------------------
2297cdf0e10cSrcweir
2298cdf0e10cSrcweir -----------------------------------------------------------------------*/
FillItemSet(SfxItemSet &)2299cdf0e10cSrcweir sal_Bool SwTOXEntryTabPage::FillItemSet( SfxItemSet& )
2300cdf0e10cSrcweir {
2301cdf0e10cSrcweir // nothing to do
2302cdf0e10cSrcweir return sal_True;
2303cdf0e10cSrcweir }
2304cdf0e10cSrcweir /*-- 16.06.99 10:47:34---------------------------------------------------
2305cdf0e10cSrcweir
2306cdf0e10cSrcweir -----------------------------------------------------------------------*/
Reset(const SfxItemSet &)2307cdf0e10cSrcweir void SwTOXEntryTabPage::Reset( const SfxItemSet& )
2308cdf0e10cSrcweir {
2309cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
2310cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
2311cdf0e10cSrcweir m_pCurrentForm = pTOXDlg->GetForm(aCurType);
2312cdf0e10cSrcweir if(TOX_INDEX == aCurType.eType)
2313cdf0e10cSrcweir {
2314cdf0e10cSrcweir SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
2315cdf0e10cSrcweir String sMainEntryCharStyle = rDesc.GetMainEntryCharStyle();
2316cdf0e10cSrcweir if(sMainEntryCharStyle.Len())
2317cdf0e10cSrcweir {
2318cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND ==
2319cdf0e10cSrcweir aMainEntryStyleLB.GetEntryPos(sMainEntryCharStyle))
2320cdf0e10cSrcweir aMainEntryStyleLB.InsertEntry(
2321cdf0e10cSrcweir sMainEntryCharStyle);
2322cdf0e10cSrcweir aMainEntryStyleLB.SelectEntry(sMainEntryCharStyle);
2323cdf0e10cSrcweir }
2324cdf0e10cSrcweir else
2325cdf0e10cSrcweir aMainEntryStyleLB.SelectEntry(sNoCharStyle);
2326cdf0e10cSrcweir aAlphaDelimCB.Check( 0 != (rDesc.GetIndexOptions() & nsSwTOIOptions::TOI_ALPHA_DELIMITTER) );
2327cdf0e10cSrcweir }
2328cdf0e10cSrcweir aRelToStyleCB.Check(m_pCurrentForm->IsRelTabPos());
2329cdf0e10cSrcweir aCommaSeparatedCB.Check(m_pCurrentForm->IsCommaSeparated());
2330cdf0e10cSrcweir }
2331cdf0e10cSrcweir /*-- 16.06.99 10:47:34---------------------------------------------------
2332cdf0e10cSrcweir
2333cdf0e10cSrcweir -----------------------------------------------------------------------*/
lcl_ChgWidth(Window & rWin,long nDiff)2334cdf0e10cSrcweir void lcl_ChgWidth(Window& rWin, long nDiff)
2335cdf0e10cSrcweir {
2336cdf0e10cSrcweir Size aTempSz(rWin.GetSizePixel());
2337cdf0e10cSrcweir aTempSz.Width() += nDiff;
2338cdf0e10cSrcweir rWin.SetSizePixel(aTempSz);
2339cdf0e10cSrcweir }
2340cdf0e10cSrcweir /* ----------------------------------------------------------------------
2341cdf0e10cSrcweir
2342cdf0e10cSrcweir -----------------------------------------------------------------------*/
lcl_ChgXPos(Window & rWin,long nDiff)2343cdf0e10cSrcweir void lcl_ChgXPos(Window& rWin, long nDiff)
2344cdf0e10cSrcweir {
2345cdf0e10cSrcweir Point aTempPos(rWin.GetPosPixel());
2346cdf0e10cSrcweir aTempPos.X() += nDiff;
2347cdf0e10cSrcweir rWin.SetPosPixel(aTempPos);
2348cdf0e10cSrcweir }
2349cdf0e10cSrcweir /* ----------------------------------------------------------------------
2350cdf0e10cSrcweir
2351cdf0e10cSrcweir -----------------------------------------------------------------------*/
ActivatePage(const SfxItemSet &)2352cdf0e10cSrcweir void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& /*rSet*/)
2353cdf0e10cSrcweir {
2354cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
2355cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
2356cdf0e10cSrcweir
2357cdf0e10cSrcweir m_pCurrentForm = pTOXDlg->GetForm(aCurType);
2358cdf0e10cSrcweir if( !( aLastTOXType == aCurType ))
2359cdf0e10cSrcweir {
2360cdf0e10cSrcweir sal_Bool bToxIsAuthorities = TOX_AUTHORITIES == aCurType.eType;
2361cdf0e10cSrcweir sal_Bool bToxIsIndex = TOX_INDEX == aCurType.eType;
2362cdf0e10cSrcweir sal_Bool bToxIsContent = TOX_CONTENT == aCurType.eType;
2363cdf0e10cSrcweir
2364cdf0e10cSrcweir aLevelLB.Clear();
2365cdf0e10cSrcweir for(sal_uInt16 i = 1; i < m_pCurrentForm->GetFormMax(); i++)
2366cdf0e10cSrcweir {
2367cdf0e10cSrcweir if(bToxIsAuthorities)
2368cdf0e10cSrcweir aLevelLB.InsertEntry( SwAuthorityFieldType::GetAuthTypeName(
2369cdf0e10cSrcweir (ToxAuthorityType) (i - 1)) );
2370cdf0e10cSrcweir else if( bToxIsIndex )
2371cdf0e10cSrcweir {
2372cdf0e10cSrcweir if(i == 1)
2373cdf0e10cSrcweir aLevelLB.InsertEntry( sDelimStr );
2374cdf0e10cSrcweir else
2375cdf0e10cSrcweir aLevelLB.InsertEntry( String::CreateFromInt32(i - 1) );
2376cdf0e10cSrcweir }
2377cdf0e10cSrcweir else
2378cdf0e10cSrcweir aLevelLB.InsertEntry(String::CreateFromInt32(i));
2379cdf0e10cSrcweir }
2380cdf0e10cSrcweir if(bToxIsAuthorities)
2381cdf0e10cSrcweir {
2382cdf0e10cSrcweir //
2383cdf0e10cSrcweir SwWrtShell& rSh = pTOXDlg->GetWrtShell();
2384cdf0e10cSrcweir const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
2385cdf0e10cSrcweir rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
2386cdf0e10cSrcweir if(pFType)
2387cdf0e10cSrcweir {
2388cdf0e10cSrcweir if(pFType->IsSortByDocument())
2389cdf0e10cSrcweir aSortDocPosRB.Check();
2390cdf0e10cSrcweir else
2391cdf0e10cSrcweir {
2392cdf0e10cSrcweir aSortContentRB.Check();
2393cdf0e10cSrcweir sal_uInt16 nKeyCount = pFType->GetSortKeyCount();
2394cdf0e10cSrcweir if(0 < nKeyCount)
2395cdf0e10cSrcweir {
2396cdf0e10cSrcweir const SwTOXSortKey* pKey = pFType->GetSortKey(0);
2397cdf0e10cSrcweir aFirstKeyLB.SelectEntryPos(
2398cdf0e10cSrcweir aFirstKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
2399cdf0e10cSrcweir aFirstSortUpRB.Check(pKey->bSortAscending);
2400cdf0e10cSrcweir aFirstSortDownRB.Check(!pKey->bSortAscending);
2401cdf0e10cSrcweir }
2402cdf0e10cSrcweir if(1 < nKeyCount)
2403cdf0e10cSrcweir {
2404cdf0e10cSrcweir const SwTOXSortKey* pKey = pFType->GetSortKey(1);
2405cdf0e10cSrcweir aSecondKeyLB.SelectEntryPos(
2406cdf0e10cSrcweir aSecondKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
2407cdf0e10cSrcweir aSecondSortUpRB.Check(pKey->bSortAscending);
2408cdf0e10cSrcweir aSecondSortDownRB.Check(!pKey->bSortAscending);
2409cdf0e10cSrcweir }
2410cdf0e10cSrcweir if(2 < nKeyCount)
2411cdf0e10cSrcweir {
2412cdf0e10cSrcweir const SwTOXSortKey* pKey = pFType->GetSortKey(2);
2413cdf0e10cSrcweir aThirdKeyLB.SelectEntryPos(
2414cdf0e10cSrcweir aThirdKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
2415cdf0e10cSrcweir aThirdSortUpRB.Check(pKey->bSortAscending);
2416cdf0e10cSrcweir aThirdSortDownRB.Check(!pKey->bSortAscending);
2417cdf0e10cSrcweir }
2418cdf0e10cSrcweir }
2419cdf0e10cSrcweir }
2420cdf0e10cSrcweir SortKeyHdl(aSortDocPosRB.IsChecked() ? &aSortDocPosRB : &aSortContentRB);
2421cdf0e10cSrcweir aLevelFT.SetText(sAuthTypeStr);
2422cdf0e10cSrcweir }
2423cdf0e10cSrcweir else
2424cdf0e10cSrcweir aLevelFT.SetText(sLevelStr);
2425cdf0e10cSrcweir
2426cdf0e10cSrcweir long nDiff = 0;
2427cdf0e10cSrcweir if( bToxIsAuthorities ? aLevelFT.GetSizePixel() == aLevelFLSize
2428cdf0e10cSrcweir : aLevelFT.GetSizePixel() != aLevelFLSize )
2429cdf0e10cSrcweir {
2430cdf0e10cSrcweir nDiff = aLevelFLSize.Width();
2431cdf0e10cSrcweir if( !bToxIsAuthorities )
2432cdf0e10cSrcweir nDiff *= -1;
2433cdf0e10cSrcweir }
2434cdf0e10cSrcweir
2435cdf0e10cSrcweir if(nDiff)
2436cdf0e10cSrcweir {
2437cdf0e10cSrcweir // lcl_ChgWidth(aLevelFL, nDiff);
2438cdf0e10cSrcweir lcl_ChgWidth(aLevelFT, nDiff);
2439cdf0e10cSrcweir lcl_ChgWidth(aLevelLB, nDiff);
2440cdf0e10cSrcweir lcl_ChgXPos(aCharStyleFT, nDiff);
2441cdf0e10cSrcweir lcl_ChgXPos(aCharStyleLB, nDiff);
2442cdf0e10cSrcweir lcl_ChgWidth(aCharStyleLB, -nDiff);
2443cdf0e10cSrcweir // lcl_ChgXPos(aEditStylePB, -nDiff);
2444cdf0e10cSrcweir lcl_ChgXPos(aFillCharFT, nDiff);
2445cdf0e10cSrcweir lcl_ChgXPos(aFillCharCB, nDiff);
2446cdf0e10cSrcweir lcl_ChgXPos(aTabPosFT, nDiff);
2447cdf0e10cSrcweir lcl_ChgXPos(aTabPosMF, nDiff);
2448cdf0e10cSrcweir lcl_ChgXPos(aAutoRightCB, nDiff);
2449cdf0e10cSrcweir lcl_ChgXPos(aAuthFieldsLB, nDiff);
2450cdf0e10cSrcweir lcl_ChgXPos(aAuthInsertPB, nDiff);
2451cdf0e10cSrcweir lcl_ChgXPos(aAuthRemovePB, nDiff);
2452cdf0e10cSrcweir lcl_ChgXPos(aTokenFT, nDiff);
2453cdf0e10cSrcweir lcl_ChgXPos(aTokenWIN, nDiff);
2454cdf0e10cSrcweir lcl_ChgWidth(aTokenWIN, -nDiff);
2455cdf0e10cSrcweir lcl_ChgXPos(aSortDocPosRB, nDiff);
2456cdf0e10cSrcweir lcl_ChgXPos(aSortContentRB, nDiff);
2457cdf0e10cSrcweir lcl_ChgXPos(aFormatFL, nDiff);
2458cdf0e10cSrcweir lcl_ChgWidth(aFormatFL, -nDiff);
2459cdf0e10cSrcweir lcl_ChgXPos(aSortingFL, nDiff);
2460cdf0e10cSrcweir lcl_ChgWidth(aSortingFL, -nDiff);
2461cdf0e10cSrcweir lcl_ChgXPos(aEntryFL, nDiff);
2462cdf0e10cSrcweir lcl_ChgWidth(aEntryFL, -nDiff);
2463cdf0e10cSrcweir
2464cdf0e10cSrcweir lcl_ChgXPos(aFirstKeyFT, nDiff);
2465cdf0e10cSrcweir lcl_ChgXPos(aFirstKeyLB, nDiff);
2466cdf0e10cSrcweir lcl_ChgXPos(aSecondKeyFT, nDiff);
2467cdf0e10cSrcweir lcl_ChgXPos(aSecondKeyLB, nDiff);
2468cdf0e10cSrcweir lcl_ChgXPos(aThirdKeyFT, nDiff);
2469cdf0e10cSrcweir lcl_ChgXPos(aThirdKeyLB, nDiff);
2470cdf0e10cSrcweir lcl_ChgXPos(aSortKeyFL, nDiff);
2471cdf0e10cSrcweir
2472cdf0e10cSrcweir lcl_ChgWidth(aFirstKeyLB, -nDiff);
2473cdf0e10cSrcweir lcl_ChgWidth(aSecondKeyLB, -nDiff);
2474cdf0e10cSrcweir lcl_ChgWidth(aThirdKeyLB, -nDiff);
2475cdf0e10cSrcweir lcl_ChgWidth(aSortKeyFL, -nDiff);
2476cdf0e10cSrcweir }
2477cdf0e10cSrcweir Link aLink = aLevelLB.GetSelectHdl();
2478cdf0e10cSrcweir aLevelLB.SetSelectHdl(Link());
2479cdf0e10cSrcweir aLevelLB.Select( aLevelLB.GetEntry( bToxIsIndex ? 1 : 0 ) );
2480cdf0e10cSrcweir aLevelLB.SetSelectHdl(aLink);
2481cdf0e10cSrcweir
2482cdf0e10cSrcweir // sort token buttons
2483cdf0e10cSrcweir aEntryNoPB.SetPosPixel(aButtonPositions[0]);
2484cdf0e10cSrcweir aEntryPB.SetPosPixel(aButtonPositions[ bToxIsContent ? 1 : 0]);
2485cdf0e10cSrcweir aChapterInfoPB.SetPosPixel(aButtonPositions[2]);
2486cdf0e10cSrcweir aPageNoPB.SetPosPixel(aButtonPositions[3]);
2487cdf0e10cSrcweir sal_uInt16 nBtPos = 1;
2488cdf0e10cSrcweir if( bToxIsContent )
2489cdf0e10cSrcweir nBtPos = 2;
2490cdf0e10cSrcweir else if( bToxIsAuthorities )
2491cdf0e10cSrcweir nBtPos = 4;
2492cdf0e10cSrcweir aTabPB.SetPosPixel(aButtonPositions[nBtPos]);
2493cdf0e10cSrcweir aHyperLinkPB.SetPosPixel(aButtonPositions[4]);
2494cdf0e10cSrcweir
2495cdf0e10cSrcweir //show or hide controls
2496cdf0e10cSrcweir aEntryNoPB.Show( bToxIsContent );
2497cdf0e10cSrcweir aHyperLinkPB.Show( bToxIsContent );
2498cdf0e10cSrcweir aRelToStyleCB.Show( !bToxIsAuthorities );
2499cdf0e10cSrcweir aChapterInfoPB.Show( !bToxIsContent && !bToxIsAuthorities);
2500cdf0e10cSrcweir aEntryPB.Show( !bToxIsAuthorities );
2501cdf0e10cSrcweir aPageNoPB.Show( !bToxIsAuthorities );
2502cdf0e10cSrcweir aAuthFieldsLB.Show( bToxIsAuthorities );
2503cdf0e10cSrcweir aAuthInsertPB.Show( bToxIsAuthorities );
2504cdf0e10cSrcweir aAuthRemovePB.Show( bToxIsAuthorities );
2505cdf0e10cSrcweir aFormatFL.Show( !bToxIsAuthorities );
2506cdf0e10cSrcweir aSortDocPosRB.Show( bToxIsAuthorities );
2507cdf0e10cSrcweir aSortContentRB.Show( bToxIsAuthorities );
2508cdf0e10cSrcweir aSortingFL.Show( bToxIsAuthorities );
2509cdf0e10cSrcweir aFirstKeyFT.Show( bToxIsAuthorities );
2510cdf0e10cSrcweir aFirstKeyLB.Show( bToxIsAuthorities );
2511cdf0e10cSrcweir aSecondKeyFT.Show( bToxIsAuthorities );
2512cdf0e10cSrcweir aSecondKeyLB.Show( bToxIsAuthorities );
2513cdf0e10cSrcweir aThirdKeyFT.Show( bToxIsAuthorities );
2514cdf0e10cSrcweir aThirdKeyLB.Show( bToxIsAuthorities );
2515cdf0e10cSrcweir aSortKeyFL.Show( bToxIsAuthorities );
2516cdf0e10cSrcweir aFirstSortUpRB.Show( bToxIsAuthorities );
2517cdf0e10cSrcweir aFirstSortDownRB.Show( bToxIsAuthorities );
2518cdf0e10cSrcweir aSecondSortUpRB.Show( bToxIsAuthorities );
2519cdf0e10cSrcweir aSecondSortDownRB.Show( bToxIsAuthorities );
2520cdf0e10cSrcweir aThirdSortUpRB.Show( bToxIsAuthorities );
2521cdf0e10cSrcweir aThirdSortDownRB.Show( bToxIsAuthorities );
2522cdf0e10cSrcweir
2523cdf0e10cSrcweir aRelToStyleCB.SetPosPixel( bToxIsIndex ? aRelToStyleIdxPos
2524cdf0e10cSrcweir : aRelToStylePos );
2525cdf0e10cSrcweir
2526cdf0e10cSrcweir // aRecalcTabCB.Show( aCurType.eType == TOX_CONTENT);
2527cdf0e10cSrcweir
2528cdf0e10cSrcweir aMainEntryStyleFT.Show( bToxIsIndex );
2529cdf0e10cSrcweir aMainEntryStyleLB.Show( bToxIsIndex );
2530cdf0e10cSrcweir aAlphaDelimCB.Show( bToxIsIndex );
2531cdf0e10cSrcweir aCommaSeparatedCB.Show( bToxIsIndex );
2532cdf0e10cSrcweir }
2533cdf0e10cSrcweir aLastTOXType = aCurType;
2534cdf0e10cSrcweir
2535cdf0e10cSrcweir //invalidate PatternWindow
2536cdf0e10cSrcweir aTokenWIN.SetInvalid();
2537cdf0e10cSrcweir LevelHdl(&aLevelLB);
2538cdf0e10cSrcweir }
2539cdf0e10cSrcweir /* -----------------30.11.99 15:04-------------------
2540cdf0e10cSrcweir
2541cdf0e10cSrcweir --------------------------------------------------*/
UpdateDescriptor()2542cdf0e10cSrcweir void SwTOXEntryTabPage::UpdateDescriptor()
2543cdf0e10cSrcweir {
2544cdf0e10cSrcweir WriteBackLevel();
2545cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
2546cdf0e10cSrcweir SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aLastTOXType);
2547cdf0e10cSrcweir if(TOX_INDEX == aLastTOXType.eType)
2548cdf0e10cSrcweir {
2549cdf0e10cSrcweir String sTemp(aMainEntryStyleLB.GetSelectEntry());
2550cdf0e10cSrcweir rDesc.SetMainEntryCharStyle(sNoCharStyle == sTemp ? aEmptyStr : sTemp);
2551cdf0e10cSrcweir sal_uInt16 nIdxOptions = rDesc.GetIndexOptions() & ~nsSwTOIOptions::TOI_ALPHA_DELIMITTER;
2552cdf0e10cSrcweir if(aAlphaDelimCB.IsChecked())
2553cdf0e10cSrcweir nIdxOptions |= nsSwTOIOptions::TOI_ALPHA_DELIMITTER;
2554cdf0e10cSrcweir rDesc.SetIndexOptions(nIdxOptions);
2555cdf0e10cSrcweir }
2556cdf0e10cSrcweir else if(TOX_AUTHORITIES == aLastTOXType.eType)
2557cdf0e10cSrcweir {
2558cdf0e10cSrcweir rDesc.SetSortByDocument(aSortDocPosRB.IsChecked());
2559cdf0e10cSrcweir SwTOXSortKey aKey1, aKey2, aKey3;
2560cdf0e10cSrcweir aKey1.eField = (ToxAuthorityField)(sal_uIntPtr)aFirstKeyLB.GetEntryData(
2561cdf0e10cSrcweir aFirstKeyLB.GetSelectEntryPos());
2562cdf0e10cSrcweir aKey1.bSortAscending = aFirstSortUpRB.IsChecked();
2563cdf0e10cSrcweir aKey2.eField = (ToxAuthorityField)(sal_uIntPtr)aSecondKeyLB.GetEntryData(
2564cdf0e10cSrcweir aSecondKeyLB.GetSelectEntryPos());
2565cdf0e10cSrcweir aKey2.bSortAscending = aSecondSortUpRB.IsChecked();
2566cdf0e10cSrcweir aKey3.eField = (ToxAuthorityField)(sal_uIntPtr)aThirdKeyLB.GetEntryData(
2567cdf0e10cSrcweir aThirdKeyLB.GetSelectEntryPos());
2568cdf0e10cSrcweir aKey3.bSortAscending = aThirdSortUpRB.IsChecked();
2569cdf0e10cSrcweir
2570cdf0e10cSrcweir
2571cdf0e10cSrcweir rDesc.SetSortKeys(aKey1, aKey2, aKey3);
2572cdf0e10cSrcweir }
2573cdf0e10cSrcweir SwForm* pCurrentForm = pTOXDlg->GetForm(aLastTOXType);
2574cdf0e10cSrcweir if(aRelToStyleCB.IsVisible())
2575cdf0e10cSrcweir {
2576cdf0e10cSrcweir pCurrentForm->SetRelTabPos(aRelToStyleCB.IsChecked());
2577cdf0e10cSrcweir }
2578cdf0e10cSrcweir if(aCommaSeparatedCB.IsVisible())
2579cdf0e10cSrcweir pCurrentForm->SetCommaSeparated(aCommaSeparatedCB.IsChecked());
2580cdf0e10cSrcweir }
2581cdf0e10cSrcweir /*-- 16.06.99 10:47:34---------------------------------------------------
2582cdf0e10cSrcweir
2583cdf0e10cSrcweir -----------------------------------------------------------------------*/
DeactivatePage(SfxItemSet *)2584cdf0e10cSrcweir int SwTOXEntryTabPage::DeactivatePage( SfxItemSet* /*pSet*/)
2585cdf0e10cSrcweir {
2586cdf0e10cSrcweir UpdateDescriptor();
2587cdf0e10cSrcweir return LEAVE_PAGE;
2588cdf0e10cSrcweir }
2589cdf0e10cSrcweir /*-- 16.06.99 10:47:34---------------------------------------------------
2590cdf0e10cSrcweir
2591cdf0e10cSrcweir -----------------------------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)2592cdf0e10cSrcweir SfxTabPage* SwTOXEntryTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet)
2593cdf0e10cSrcweir {
2594cdf0e10cSrcweir return new SwTOXEntryTabPage(pParent, rAttrSet);
2595cdf0e10cSrcweir }
2596cdf0e10cSrcweir /*-- 16.06.99 10:47:35---------------------------------------------------
2597cdf0e10cSrcweir
2598cdf0e10cSrcweir -----------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,EditStyleHdl,PushButton *,pBtn)2599cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, EditStyleHdl, PushButton*, pBtn)
2600cdf0e10cSrcweir {
2601cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND != aCharStyleLB.GetSelectEntryPos())
2602cdf0e10cSrcweir {
2603cdf0e10cSrcweir SfxStringItem aStyle(SID_STYLE_EDIT, aCharStyleLB.GetSelectEntry());
2604cdf0e10cSrcweir SfxUInt16Item aFamily(SID_STYLE_FAMILY, SFX_STYLE_FAMILY_CHAR);
2605cdf0e10cSrcweir // TODO: WrtShell?
2606cdf0e10cSrcweir // SwPtrItem aShell(FN_PARAM_WRTSHELL, pWrtShell);
2607cdf0e10cSrcweir Window* pDefDlgParent = Application::GetDefDialogParent();
2608cdf0e10cSrcweir Application::SetDefDialogParent( pBtn );
2609cdf0e10cSrcweir ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell().
2610cdf0e10cSrcweir GetView().GetViewFrame()->GetDispatcher()->Execute(
2611cdf0e10cSrcweir SID_STYLE_EDIT, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_MODAL,
2612cdf0e10cSrcweir &aStyle, &aFamily/*, &aShell*/, 0L);
2613cdf0e10cSrcweir Application::SetDefDialogParent( pDefDlgParent );
2614cdf0e10cSrcweir }
2615cdf0e10cSrcweir return 0;
2616cdf0e10cSrcweir }
2617cdf0e10cSrcweir /* -----------------04.10.99 11:34-------------------
2618cdf0e10cSrcweir
2619cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,RemoveInsertAuthHdl,PushButton *,pButton)2620cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, RemoveInsertAuthHdl, PushButton*, pButton)
2621cdf0e10cSrcweir {
2622cdf0e10cSrcweir sal_Bool bInsert = pButton == &aAuthInsertPB;
2623cdf0e10cSrcweir if(bInsert)
2624cdf0e10cSrcweir {
2625cdf0e10cSrcweir sal_uInt16 nSelPos = aAuthFieldsLB.GetSelectEntryPos();
2626cdf0e10cSrcweir String sToInsert(aAuthFieldsLB.GetSelectEntry());
2627cdf0e10cSrcweir SwFormToken aInsert(TOKEN_AUTHORITY);
2628cdf0e10cSrcweir aInsert.nAuthorityField = (sal_uInt16)(sal_uIntPtr)aAuthFieldsLB.GetEntryData(nSelPos);
2629cdf0e10cSrcweir aTokenWIN.InsertAtSelection(String::CreateFromAscii(
2630cdf0e10cSrcweir SwForm::aFormAuth), aInsert);
2631cdf0e10cSrcweir aAuthFieldsLB.RemoveEntry(sToInsert);
2632cdf0e10cSrcweir aAuthFieldsLB.SelectEntryPos( nSelPos ? nSelPos - 1 : 0);
2633cdf0e10cSrcweir }
2634cdf0e10cSrcweir else
2635cdf0e10cSrcweir {
2636cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
2637cdf0e10cSrcweir DBG_ASSERT(WINDOW_EDIT != pCtrl->GetType(), "Remove should be disabled");
2638cdf0e10cSrcweir if( WINDOW_EDIT != pCtrl->GetType() )
2639cdf0e10cSrcweir {
2640cdf0e10cSrcweir //fill it into the ListBox
2641cdf0e10cSrcweir const SwFormToken& rToken = ((SwTOXButton*)pCtrl)->GetFormToken();
2642cdf0e10cSrcweir PreTokenButtonRemoved(rToken);
2643cdf0e10cSrcweir aTokenWIN.RemoveControl((SwTOXButton*)pCtrl);
2644cdf0e10cSrcweir }
2645cdf0e10cSrcweir }
2646cdf0e10cSrcweir ModifyHdl(0);
2647cdf0e10cSrcweir return 0;
2648cdf0e10cSrcweir }
2649cdf0e10cSrcweir /* -----------------------------17.01.00 13:44--------------------------------
2650cdf0e10cSrcweir
2651cdf0e10cSrcweir ---------------------------------------------------------------------------*/
PreTokenButtonRemoved(const SwFormToken & rToken)2652cdf0e10cSrcweir void SwTOXEntryTabPage::PreTokenButtonRemoved(const SwFormToken& rToken)
2653cdf0e10cSrcweir {
2654cdf0e10cSrcweir //fill it into the ListBox
2655cdf0e10cSrcweir sal_uInt32 nData = rToken.nAuthorityField;
2656cdf0e10cSrcweir String sTemp(SW_RES(STR_AUTH_FIELD_START + nData));
2657cdf0e10cSrcweir sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTemp);
2658cdf0e10cSrcweir aAuthFieldsLB.SetEntryData(nPos, (void*)(nData));
2659cdf0e10cSrcweir }
SetFocus2theAllBtn()2660ca62e2c2SSteve Yin void SwTOXEntryTabPage::SetFocus2theAllBtn()
2661ca62e2c2SSteve Yin {
2662ca62e2c2SSteve Yin aAllLevelsPB.GrabFocus();
2663ca62e2c2SSteve Yin }
Notify(NotifyEvent & rNEvt)2664ca62e2c2SSteve Yin long SwTOXEntryTabPage::Notify( NotifyEvent& rNEvt )
2665ca62e2c2SSteve Yin {
2666ca62e2c2SSteve Yin if ( rNEvt.GetType() == EVENT_KEYINPUT )
2667ca62e2c2SSteve Yin {
2668ca62e2c2SSteve Yin const KeyEvent& rKEvt = *rNEvt.GetKeyEvent();
2669ca62e2c2SSteve Yin KeyCode aCode = rKEvt.GetKeyCode();
2670ca62e2c2SSteve Yin if ( (aCode.GetCode() == KEY_F4) && aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() )
2671ca62e2c2SSteve Yin {
2672ca62e2c2SSteve Yin if ( aTokenWIN.GetActiveControl() )
2673ca62e2c2SSteve Yin {
2674ca62e2c2SSteve Yin aTokenWIN.GetActiveControl()->GrabFocus();
2675ca62e2c2SSteve Yin }
2676ca62e2c2SSteve Yin }
2677ca62e2c2SSteve Yin
2678ca62e2c2SSteve Yin }
2679ca62e2c2SSteve Yin
2680ca62e2c2SSteve Yin return SfxTabPage::Notify( rNEvt );
2681ca62e2c2SSteve Yin }
2682cdf0e10cSrcweir /*-- 16.06.99 10:47:35---------------------------------------------------
2683cdf0e10cSrcweir
2684cdf0e10cSrcweir This function inizializes the default value in the Token
2685cdf0e10cSrcweir put here the UI dependent initializations
2686cdf0e10cSrcweir -----------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,InsertTokenHdl,PushButton *,pBtn)2687cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, InsertTokenHdl, PushButton*, pBtn)
2688cdf0e10cSrcweir {
2689cdf0e10cSrcweir String sText;
2690cdf0e10cSrcweir FormTokenType eTokenType = TOKEN_ENTRY_NO;
2691cdf0e10cSrcweir String sCharStyle;
2692cdf0e10cSrcweir sal_uInt16 nChapterFormat = CF_NUMBER; // i89791
2693cdf0e10cSrcweir if(pBtn == &aEntryNoPB)
2694cdf0e10cSrcweir {
2695cdf0e10cSrcweir sText.AssignAscii(SwForm::aFormEntryNum);
2696cdf0e10cSrcweir eTokenType = TOKEN_ENTRY_NO;
2697cdf0e10cSrcweir }
2698cdf0e10cSrcweir else if(pBtn == &aEntryPB)
2699cdf0e10cSrcweir {
2700cdf0e10cSrcweir if( TOX_CONTENT == m_pCurrentForm->GetTOXType() )
2701cdf0e10cSrcweir {
2702cdf0e10cSrcweir sText.AssignAscii( SwForm::aFormEntryTxt );
2703cdf0e10cSrcweir eTokenType = TOKEN_ENTRY_TEXT;
2704cdf0e10cSrcweir }
2705cdf0e10cSrcweir else
2706cdf0e10cSrcweir {
2707cdf0e10cSrcweir sText.AssignAscii( SwForm::aFormEntry);
2708cdf0e10cSrcweir eTokenType = TOKEN_ENTRY;
2709cdf0e10cSrcweir }
2710cdf0e10cSrcweir }
2711cdf0e10cSrcweir else if(pBtn == &aChapterInfoPB)
2712cdf0e10cSrcweir {
2713cdf0e10cSrcweir sText.AssignAscii( SwForm::aFormChapterMark);
2714cdf0e10cSrcweir eTokenType = TOKEN_CHAPTER_INFO;
2715cdf0e10cSrcweir nChapterFormat = CF_NUM_NOPREPST_TITLE; // i89791
2716cdf0e10cSrcweir }
2717cdf0e10cSrcweir else if(pBtn == &aPageNoPB)
2718cdf0e10cSrcweir {
2719cdf0e10cSrcweir sText.AssignAscii(SwForm::aFormPageNums);
2720cdf0e10cSrcweir eTokenType = TOKEN_PAGE_NUMS;
2721cdf0e10cSrcweir }
2722cdf0e10cSrcweir else if(pBtn == &aHyperLinkPB)
2723cdf0e10cSrcweir {
2724cdf0e10cSrcweir sText.AssignAscii(SwForm::aFormLinkStt);
2725cdf0e10cSrcweir eTokenType = TOKEN_LINK_START;
2726cdf0e10cSrcweir sCharStyle = String(SW_RES(STR_POOLCHR_INET_NORMAL));
2727cdf0e10cSrcweir }
2728cdf0e10cSrcweir else if(pBtn == &aTabPB)
2729cdf0e10cSrcweir {
2730cdf0e10cSrcweir sText.AssignAscii(SwForm::aFormTab);
2731cdf0e10cSrcweir eTokenType = TOKEN_TAB_STOP;
2732cdf0e10cSrcweir }
2733cdf0e10cSrcweir SwFormToken aInsert(eTokenType);
2734cdf0e10cSrcweir aInsert.sCharStyleName = sCharStyle;
2735cdf0e10cSrcweir aInsert.nTabStopPosition = 0;
2736cdf0e10cSrcweir aInsert.nChapterFormat = nChapterFormat; // i89791
2737cdf0e10cSrcweir aTokenWIN.InsertAtSelection(sText, aInsert);
2738cdf0e10cSrcweir ModifyHdl(0);
2739cdf0e10cSrcweir return 0;
2740cdf0e10cSrcweir }
2741cdf0e10cSrcweir /* -----------------------------14.01.00 11:53--------------------------------
2742cdf0e10cSrcweir
2743cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,AllLevelsHdl,PushButton *,EMPTYARG)2744cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, AllLevelsHdl, PushButton*, EMPTYARG)
2745cdf0e10cSrcweir {
2746cdf0e10cSrcweir //get current level
2747cdf0e10cSrcweir //write it into all levels
2748cdf0e10cSrcweir if(aTokenWIN.IsValid())
2749cdf0e10cSrcweir {
2750cdf0e10cSrcweir String sNewToken = aTokenWIN.GetPattern();
2751cdf0e10cSrcweir for(sal_uInt16 i = 1; i < m_pCurrentForm->GetFormMax(); i++)
2752cdf0e10cSrcweir m_pCurrentForm->SetPattern(i, sNewToken);
2753cdf0e10cSrcweir //
2754cdf0e10cSrcweir ModifyHdl(this);
2755cdf0e10cSrcweir }
2756cdf0e10cSrcweir return 0;
2757cdf0e10cSrcweir }
2758cdf0e10cSrcweir
2759cdf0e10cSrcweir /* -----------------02.12.99 12:40-------------------
2760cdf0e10cSrcweir
2761cdf0e10cSrcweir --------------------------------------------------*/
WriteBackLevel()2762cdf0e10cSrcweir void SwTOXEntryTabPage::WriteBackLevel()
2763cdf0e10cSrcweir {
2764cdf0e10cSrcweir if(aTokenWIN.IsValid())
2765cdf0e10cSrcweir {
2766cdf0e10cSrcweir String sNewToken = aTokenWIN.GetPattern();
2767cdf0e10cSrcweir sal_uInt16 nLastLevel = aTokenWIN.GetLastLevel();
2768cdf0e10cSrcweir if(nLastLevel != USHRT_MAX)
2769cdf0e10cSrcweir m_pCurrentForm->SetPattern(nLastLevel + 1, sNewToken );
2770cdf0e10cSrcweir }
2771cdf0e10cSrcweir }
2772cdf0e10cSrcweir /*-- 16.06.99 10:47:35---------------------------------------------------
2773cdf0e10cSrcweir
2774cdf0e10cSrcweir -----------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,LevelHdl,SvTreeListBox *,pBox)2775cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, LevelHdl, SvTreeListBox*, pBox)
2776cdf0e10cSrcweir {
2777cdf0e10cSrcweir if(bInLevelHdl)
2778cdf0e10cSrcweir return 0;
2779cdf0e10cSrcweir bInLevelHdl = sal_True;
2780cdf0e10cSrcweir WriteBackLevel();
2781cdf0e10cSrcweir
2782cdf0e10cSrcweir sal_uInt16 nLevel = static_cast< sal_uInt16 >(pBox->GetModel()->GetAbsPos(pBox->FirstSelected()));
2783cdf0e10cSrcweir aTokenWIN.SetForm(*m_pCurrentForm, nLevel);
2784cdf0e10cSrcweir if(TOX_AUTHORITIES == m_pCurrentForm->GetTOXType())
2785cdf0e10cSrcweir {
2786cdf0e10cSrcweir //fill the types in
2787cdf0e10cSrcweir aAuthFieldsLB.Clear();
2788cdf0e10cSrcweir for( sal_uInt32 i = 0; i < AUTH_FIELD_END; i++)
2789cdf0e10cSrcweir {
2790cdf0e10cSrcweir String sTmp(SW_RES(STR_AUTH_FIELD_START + i));
2791cdf0e10cSrcweir sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTmp);
2792cdf0e10cSrcweir aAuthFieldsLB.SetEntryData(nPos, (void*)(i));
2793cdf0e10cSrcweir }
2794cdf0e10cSrcweir
2795cdf0e10cSrcweir // #i21237#
2796cdf0e10cSrcweir SwFormTokens aPattern = m_pCurrentForm->GetPattern(nLevel + 1);
2797cdf0e10cSrcweir SwFormTokens::iterator aIt = aPattern.begin();;
2798cdf0e10cSrcweir
2799cdf0e10cSrcweir while(aIt != aPattern.end())
2800cdf0e10cSrcweir {
2801cdf0e10cSrcweir SwFormToken aToken = *aIt; // #i21237#
2802cdf0e10cSrcweir if(TOKEN_AUTHORITY == aToken.eTokenType)
2803cdf0e10cSrcweir {
2804cdf0e10cSrcweir sal_uInt32 nSearch = aToken.nAuthorityField;
2805cdf0e10cSrcweir sal_uInt16 nLstBoxPos = aAuthFieldsLB.GetEntryPos( (void*) nSearch );
2806cdf0e10cSrcweir DBG_ASSERT(LISTBOX_ENTRY_NOTFOUND != nLstBoxPos, "Entry not found?");
2807cdf0e10cSrcweir aAuthFieldsLB.RemoveEntry(nLstBoxPos);
2808cdf0e10cSrcweir }
2809cdf0e10cSrcweir
2810cdf0e10cSrcweir aIt++; // #i21237#
2811cdf0e10cSrcweir }
2812cdf0e10cSrcweir aAuthFieldsLB.SelectEntryPos(0);
2813cdf0e10cSrcweir }
2814cdf0e10cSrcweir bInLevelHdl = sal_False;
2815cdf0e10cSrcweir pBox->GrabFocus();
2816cdf0e10cSrcweir return 0;
2817cdf0e10cSrcweir }
2818cdf0e10cSrcweir /* -----------------20.10.99 13:16-------------------
2819cdf0e10cSrcweir
2820cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,SortKeyHdl,RadioButton *,pButton)2821cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, SortKeyHdl, RadioButton*, pButton)
2822cdf0e10cSrcweir {
2823cdf0e10cSrcweir sal_Bool bEnable = &aSortContentRB == pButton;
2824cdf0e10cSrcweir aFirstKeyFT.Enable(bEnable);
2825cdf0e10cSrcweir aFirstKeyLB.Enable(bEnable);
2826cdf0e10cSrcweir aSecondKeyFT.Enable(bEnable);
2827cdf0e10cSrcweir aSecondKeyLB.Enable(bEnable);
2828cdf0e10cSrcweir aThirdKeyFT.Enable(bEnable);
2829cdf0e10cSrcweir aThirdKeyLB.Enable(bEnable);
2830cdf0e10cSrcweir aSortKeyFL.Enable(bEnable);
2831cdf0e10cSrcweir aFirstSortUpRB.Enable(bEnable);
2832cdf0e10cSrcweir aFirstSortDownRB.Enable(bEnable);
2833cdf0e10cSrcweir aSecondSortUpRB.Enable(bEnable);
2834cdf0e10cSrcweir aSecondSortDownRB.Enable(bEnable);
2835cdf0e10cSrcweir aThirdSortUpRB.Enable(bEnable);
2836cdf0e10cSrcweir aThirdSortDownRB.Enable(bEnable);
2837cdf0e10cSrcweir return 0;
2838cdf0e10cSrcweir }
2839cdf0e10cSrcweir /* -----------------01.07.99 12:21-------------------
2840cdf0e10cSrcweir
2841cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,TokenSelectedHdl,SwFormToken *,pToken)2842cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, TokenSelectedHdl, SwFormToken*, pToken)
2843cdf0e10cSrcweir {
2844cdf0e10cSrcweir if(pToken->sCharStyleName.Len())
2845cdf0e10cSrcweir aCharStyleLB.SelectEntry(pToken->sCharStyleName);
2846cdf0e10cSrcweir else
2847cdf0e10cSrcweir aCharStyleLB.SelectEntry(sNoCharStyle);
2848cdf0e10cSrcweir //StyleSelectHdl(&aCharStyleLB);
2849cdf0e10cSrcweir
2850cdf0e10cSrcweir String sEntry = aCharStyleLB.GetSelectEntry();
2851cdf0e10cSrcweir aEditStylePB.Enable(sEntry != sNoCharStyle);
2852cdf0e10cSrcweir
2853cdf0e10cSrcweir if(pToken->eTokenType == TOKEN_CHAPTER_INFO)
2854cdf0e10cSrcweir {
2855cdf0e10cSrcweir //---> i89791
2856cdf0e10cSrcweir switch(pToken->nChapterFormat)
2857cdf0e10cSrcweir {
2858cdf0e10cSrcweir default:
2859cdf0e10cSrcweir aChapterEntryLB.SetNoSelection();//to alert the user
2860cdf0e10cSrcweir break;
2861cdf0e10cSrcweir case CF_NUM_NOPREPST_TITLE:
2862cdf0e10cSrcweir aChapterEntryLB.SelectEntryPos(0);
2863cdf0e10cSrcweir break;
2864cdf0e10cSrcweir case CF_TITLE:
2865cdf0e10cSrcweir aChapterEntryLB.SelectEntryPos(1);
2866cdf0e10cSrcweir break;
2867cdf0e10cSrcweir case CF_NUMBER_NOPREPST:
2868cdf0e10cSrcweir aChapterEntryLB.SelectEntryPos(2);
2869cdf0e10cSrcweir break;
2870cdf0e10cSrcweir }
2871cdf0e10cSrcweir //<---
2872cdf0e10cSrcweir //i53420
2873cdf0e10cSrcweir //move into position the fixed text
2874cdf0e10cSrcweir // aEntryOutlineLevelFT.SetPosPixel( aEntryOutlineLevelFTPosition );
2875cdf0e10cSrcweir // // then the entry
2876cdf0e10cSrcweir // Point aPoint;
2877cdf0e10cSrcweir // aPoint.Y() = aEntryOutlineLevelFTPosition.Y();
2878cdf0e10cSrcweir // aPoint.X() = aEntryOutlineLevelFTPosition.X() + nBiasToEntryPoint;
2879cdf0e10cSrcweir // aEntryOutlineLevelNF.SetPosPixel( aPoint );
2880cdf0e10cSrcweir
2881cdf0e10cSrcweir aEntryOutlineLevelNF.SetValue(pToken->nOutlineLevel);
2882cdf0e10cSrcweir }
2883cdf0e10cSrcweir
2884cdf0e10cSrcweir //i53420
2885cdf0e10cSrcweir if(pToken->eTokenType == TOKEN_ENTRY_NO)
2886cdf0e10cSrcweir {
2887cdf0e10cSrcweir //move into position the fixed text
2888cdf0e10cSrcweir // aEntryOutlineLevelFT.SetPosPixel( aChapterEntryFTPosition );
2889cdf0e10cSrcweir // // then the entry
2890cdf0e10cSrcweir // Point aPoint;
2891cdf0e10cSrcweir // aPoint.Y() = aChapterEntryFTPosition.Y();
2892cdf0e10cSrcweir // aPoint.X() = aChapterEntryFTPosition.X() + nBiasToEntryPoint;
2893cdf0e10cSrcweir // aEntryOutlineLevelNF.SetPosPixel( aPoint );
2894cdf0e10cSrcweir
2895cdf0e10cSrcweir aEntryOutlineLevelNF.SetValue(pToken->nOutlineLevel);
2896cdf0e10cSrcweir sal_uInt16 nFormat = 0;
2897cdf0e10cSrcweir if( pToken->nChapterFormat == CF_NUM_NOPREPST_TITLE )
2898cdf0e10cSrcweir nFormat = 1;
2899cdf0e10cSrcweir aNumberFormatLB.SelectEntryPos(nFormat);
2900cdf0e10cSrcweir }
2901cdf0e10cSrcweir
2902cdf0e10cSrcweir sal_Bool bTabStop = TOKEN_TAB_STOP == pToken->eTokenType;
2903cdf0e10cSrcweir aFillCharFT.Show(bTabStop);
2904cdf0e10cSrcweir aFillCharCB.Show(bTabStop);
2905cdf0e10cSrcweir aTabPosFT.Show(bTabStop);
2906cdf0e10cSrcweir aTabPosMF.Show(bTabStop);
2907cdf0e10cSrcweir aAutoRightCB.Show(bTabStop);
2908cdf0e10cSrcweir aAutoRightCB.Enable(bTabStop);
2909cdf0e10cSrcweir if(bTabStop)
2910cdf0e10cSrcweir {
2911cdf0e10cSrcweir aTabPosMF.SetValue(aTabPosMF.Normalize(pToken->nTabStopPosition), FUNIT_TWIP);
2912cdf0e10cSrcweir aAutoRightCB.Check(SVX_TAB_ADJUST_END == pToken->eTabAlign);
2913cdf0e10cSrcweir aFillCharCB.SetText(pToken->cTabFillChar);
2914cdf0e10cSrcweir aTabPosFT.Enable(!aAutoRightCB.IsChecked());
2915cdf0e10cSrcweir aTabPosMF.Enable(!aAutoRightCB.IsChecked());
2916cdf0e10cSrcweir }
2917cdf0e10cSrcweir else
2918cdf0e10cSrcweir {
2919cdf0e10cSrcweir aTabPosMF.Enable(sal_False);
2920cdf0e10cSrcweir }
2921cdf0e10cSrcweir
2922cdf0e10cSrcweir sal_Bool bIsChapterInfo = pToken->eTokenType == TOKEN_CHAPTER_INFO;
2923cdf0e10cSrcweir sal_Bool bIsEntryNumber = pToken->eTokenType == TOKEN_ENTRY_NO;
2924cdf0e10cSrcweir aChapterEntryFT.Show( bIsChapterInfo );
2925cdf0e10cSrcweir aChapterEntryLB.Show( bIsChapterInfo );
2926cdf0e10cSrcweir aEntryOutlineLevelFT.Show( bIsChapterInfo || bIsEntryNumber );
2927cdf0e10cSrcweir aEntryOutlineLevelNF.Show( bIsChapterInfo || bIsEntryNumber );
2928cdf0e10cSrcweir aNumberFormatFT.Show( bIsEntryNumber );
2929cdf0e10cSrcweir aNumberFormatLB.Show( bIsEntryNumber );
2930cdf0e10cSrcweir
2931cdf0e10cSrcweir
2932cdf0e10cSrcweir //now enable the visible buttons
2933cdf0e10cSrcweir //- inserting the same type of control is not allowed
2934cdf0e10cSrcweir //- some types of controls can only appear once (EntryText EntryNumber)
2935cdf0e10cSrcweir
2936cdf0e10cSrcweir if(aEntryNoPB.IsVisible())
2937cdf0e10cSrcweir {
2938cdf0e10cSrcweir aEntryNoPB.Enable(TOKEN_ENTRY_NO != pToken->eTokenType );
2939cdf0e10cSrcweir }
2940cdf0e10cSrcweir if(aEntryPB.IsVisible())
2941cdf0e10cSrcweir {
2942cdf0e10cSrcweir aEntryPB.Enable(TOKEN_ENTRY_TEXT != pToken->eTokenType &&
2943cdf0e10cSrcweir !aTokenWIN.Contains(TOKEN_ENTRY_TEXT)
2944cdf0e10cSrcweir && !aTokenWIN.Contains(TOKEN_ENTRY));
2945cdf0e10cSrcweir }
2946cdf0e10cSrcweir
2947cdf0e10cSrcweir if(aChapterInfoPB.IsVisible())
2948cdf0e10cSrcweir {
2949cdf0e10cSrcweir aChapterInfoPB.Enable(TOKEN_CHAPTER_INFO != pToken->eTokenType);
2950cdf0e10cSrcweir }
2951cdf0e10cSrcweir if(aPageNoPB.IsVisible())
2952cdf0e10cSrcweir {
2953cdf0e10cSrcweir aPageNoPB.Enable(TOKEN_PAGE_NUMS != pToken->eTokenType &&
2954cdf0e10cSrcweir !aTokenWIN.Contains(TOKEN_PAGE_NUMS));
2955cdf0e10cSrcweir }
2956cdf0e10cSrcweir if(aTabPB.IsVisible())
2957cdf0e10cSrcweir {
2958cdf0e10cSrcweir aTabPB.Enable(!bTabStop);
2959cdf0e10cSrcweir }
2960cdf0e10cSrcweir if(aHyperLinkPB.IsVisible())
2961cdf0e10cSrcweir {
2962cdf0e10cSrcweir aHyperLinkPB.Enable(TOKEN_LINK_START != pToken->eTokenType &&
2963cdf0e10cSrcweir TOKEN_LINK_END != pToken->eTokenType);
2964cdf0e10cSrcweir }
2965cdf0e10cSrcweir //table of authorities
2966cdf0e10cSrcweir if(aAuthInsertPB.IsVisible())
2967cdf0e10cSrcweir {
2968cdf0e10cSrcweir sal_Bool bText = TOKEN_TEXT == pToken->eTokenType;
2969cdf0e10cSrcweir aAuthInsertPB.Enable(bText && aAuthFieldsLB.GetSelectEntry().Len());
2970cdf0e10cSrcweir aAuthRemovePB.Enable(!bText);
2971cdf0e10cSrcweir }
2972cdf0e10cSrcweir
2973cdf0e10cSrcweir return 0;
2974cdf0e10cSrcweir }
2975cdf0e10cSrcweir /* -----------------01.07.99 12:36-------------------
2976cdf0e10cSrcweir
2977cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,StyleSelectHdl,ListBox *,pBox)2978cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, StyleSelectHdl, ListBox*, pBox)
2979cdf0e10cSrcweir {
2980cdf0e10cSrcweir String sEntry = pBox->GetSelectEntry();
2981cdf0e10cSrcweir sal_uInt16 nId = (sal_uInt16)(long)pBox->GetEntryData(pBox->GetSelectEntryPos());
2982cdf0e10cSrcweir aEditStylePB.Enable(sEntry != sNoCharStyle);
2983cdf0e10cSrcweir if(sEntry == sNoCharStyle)
2984cdf0e10cSrcweir sEntry.Erase();
2985cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
2986cdf0e10cSrcweir DBG_ASSERT(pCtrl, "no active control?");
2987cdf0e10cSrcweir if(pCtrl)
2988cdf0e10cSrcweir {
2989cdf0e10cSrcweir if(WINDOW_EDIT == pCtrl->GetType())
2990cdf0e10cSrcweir ((SwTOXEdit*)pCtrl)->SetCharStyleName(sEntry, nId);
2991cdf0e10cSrcweir else
2992cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetCharStyleName(sEntry, nId);
2993cdf0e10cSrcweir
2994cdf0e10cSrcweir }
2995cdf0e10cSrcweir ModifyHdl(0);
2996cdf0e10cSrcweir return 0;
2997cdf0e10cSrcweir }
2998cdf0e10cSrcweir /* -----------------------------11.01.00 12:54--------------------------------
2999cdf0e10cSrcweir
3000cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,ChapterInfoHdl,ListBox *,pBox)3001cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, ChapterInfoHdl, ListBox*, pBox)
3002cdf0e10cSrcweir {
3003cdf0e10cSrcweir sal_uInt16 nPos = pBox->GetSelectEntryPos();
3004cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nPos)
3005cdf0e10cSrcweir {
3006cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
3007cdf0e10cSrcweir DBG_ASSERT(pCtrl, "no active control?");
3008cdf0e10cSrcweir if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
3009cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetChapterInfo(nPos);
3010cdf0e10cSrcweir
3011cdf0e10cSrcweir ModifyHdl(0);
3012cdf0e10cSrcweir }
3013cdf0e10cSrcweir return 0;
3014cdf0e10cSrcweir }
3015cdf0e10cSrcweir
IMPL_LINK(SwTOXEntryTabPage,ChapterInfoOutlineHdl,NumericField *,pField)3016cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, ChapterInfoOutlineHdl, NumericField*, pField)
3017cdf0e10cSrcweir {
3018cdf0e10cSrcweir const sal_uInt16 nLevel = static_cast<sal_uInt8>(pField->GetValue());
3019cdf0e10cSrcweir
3020cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
3021cdf0e10cSrcweir DBG_ASSERT(pCtrl, "no active control?");
3022cdf0e10cSrcweir if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
3023cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetOutlineLevel(nLevel);
3024cdf0e10cSrcweir
3025cdf0e10cSrcweir ModifyHdl(0);
3026cdf0e10cSrcweir return 0;
3027cdf0e10cSrcweir }
3028cdf0e10cSrcweir
IMPL_LINK(SwTOXEntryTabPage,NumberFormatHdl,ListBox *,pBox)3029cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, NumberFormatHdl, ListBox*, pBox)
3030cdf0e10cSrcweir {
3031cdf0e10cSrcweir const sal_uInt16 nPos = pBox->GetSelectEntryPos();
3032cdf0e10cSrcweir
3033cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nPos)
3034cdf0e10cSrcweir {
3035cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
3036cdf0e10cSrcweir DBG_ASSERT(pCtrl, "no active control?");
3037cdf0e10cSrcweir if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
3038cdf0e10cSrcweir {
3039cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetEntryNumberFormat(nPos);//i89791
3040cdf0e10cSrcweir }
3041cdf0e10cSrcweir ModifyHdl(0);
3042cdf0e10cSrcweir }
3043cdf0e10cSrcweir return 0;
3044cdf0e10cSrcweir }
3045cdf0e10cSrcweir
3046cdf0e10cSrcweir /* -----------------19.08.99 15:37-------------------
3047cdf0e10cSrcweir
3048cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,TabPosHdl,MetricField *,pField)3049cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, TabPosHdl, MetricField*, pField)
3050cdf0e10cSrcweir {
3051cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
3052cdf0e10cSrcweir DBG_ASSERT(pCtrl && WINDOW_EDIT != pCtrl->GetType() &&
3053cdf0e10cSrcweir TOKEN_TAB_STOP == ((SwTOXButton*)pCtrl)->GetFormToken().eTokenType,
3054cdf0e10cSrcweir "no active style::TabStop control?");
3055cdf0e10cSrcweir if( pCtrl && WINDOW_EDIT != pCtrl->GetType() )
3056cdf0e10cSrcweir {
3057cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetTabPosition( static_cast< SwTwips >(
3058cdf0e10cSrcweir pField->Denormalize( pField->GetValue( FUNIT_TWIP ))));
3059cdf0e10cSrcweir }
3060cdf0e10cSrcweir ModifyHdl(0);
3061cdf0e10cSrcweir return 0;
3062cdf0e10cSrcweir }
3063cdf0e10cSrcweir /* -----------------09.09.99 15:37-------------------
3064cdf0e10cSrcweir
3065cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,FillCharHdl,ComboBox *,pBox)3066cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, FillCharHdl, ComboBox*, pBox)
3067cdf0e10cSrcweir {
3068cdf0e10cSrcweir Control* pCtrl = aTokenWIN.GetActiveControl();
3069cdf0e10cSrcweir DBG_ASSERT(pCtrl && WINDOW_EDIT != pCtrl->GetType() &&
3070cdf0e10cSrcweir TOKEN_TAB_STOP == ((SwTOXButton*)pCtrl)->GetFormToken().eTokenType,
3071cdf0e10cSrcweir "no active style::TabStop control?");
3072cdf0e10cSrcweir if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
3073cdf0e10cSrcweir {
3074cdf0e10cSrcweir sal_Unicode cSet;
3075cdf0e10cSrcweir if( pBox->GetText().Len() )
3076cdf0e10cSrcweir cSet = pBox->GetText().GetChar(0);
3077cdf0e10cSrcweir else
3078cdf0e10cSrcweir cSet = ' ';
3079cdf0e10cSrcweir ((SwTOXButton*)pCtrl)->SetFillChar( cSet );
3080cdf0e10cSrcweir }
3081cdf0e10cSrcweir ModifyHdl(0);
3082cdf0e10cSrcweir return 0;
3083cdf0e10cSrcweir }
3084cdf0e10cSrcweir
3085cdf0e10cSrcweir /*-- 16.06.99 10:47:36---------------------------------------------------
3086cdf0e10cSrcweir
3087cdf0e10cSrcweir -----------------------------------------------------------------------*/
IMPL_LINK(SwTOXEntryTabPage,AutoRightHdl,CheckBox *,pBox)3088cdf0e10cSrcweir IMPL_LINK(SwTOXEntryTabPage, AutoRightHdl, CheckBox*, pBox)
3089cdf0e10cSrcweir {
3090cdf0e10cSrcweir //the most right style::TabStop is usually right aligned
3091cdf0e10cSrcweir Control* pCurCtrl = aTokenWIN.GetActiveControl();
3092cdf0e10cSrcweir DBG_ASSERT(WINDOW_EDIT != pCurCtrl->GetType() &&
3093cdf0e10cSrcweir ((SwTOXButton*)pCurCtrl)->GetFormToken().eTokenType == TOKEN_TAB_STOP,
3094cdf0e10cSrcweir "no style::TabStop selected!");
3095cdf0e10cSrcweir
3096cdf0e10cSrcweir const SwFormToken& rToken = ((SwTOXButton*)pCurCtrl)->GetFormToken();
3097cdf0e10cSrcweir sal_Bool bChecked = pBox->IsChecked();
3098cdf0e10cSrcweir if(rToken.eTokenType == TOKEN_TAB_STOP)
3099cdf0e10cSrcweir ((SwTOXButton*)pCurCtrl)->SetTabAlign(
3100cdf0e10cSrcweir bChecked ? SVX_TAB_ADJUST_END : SVX_TAB_ADJUST_LEFT);
3101cdf0e10cSrcweir aTabPosFT.Enable(!bChecked);
3102cdf0e10cSrcweir aTabPosMF.Enable(!bChecked);
3103cdf0e10cSrcweir ModifyHdl(0);
3104cdf0e10cSrcweir return 0;
3105cdf0e10cSrcweir }
3106cdf0e10cSrcweir /* -----------------16.06.99 11:00-------------------
3107cdf0e10cSrcweir
3108cdf0e10cSrcweir --------------------------------------------------*/
SetWrtShell(SwWrtShell & rSh)3109cdf0e10cSrcweir void SwTOXEntryTabPage::SetWrtShell(SwWrtShell& rSh)
3110cdf0e10cSrcweir {
3111cdf0e10cSrcweir SwDocShell* pDocSh = rSh.GetView().GetDocShell();
3112cdf0e10cSrcweir ::FillCharStyleListBox(aCharStyleLB, pDocSh, sal_True, sal_True);
3113cdf0e10cSrcweir const String sDefault(SW_RES(STR_POOLCOLL_STANDARD));
3114cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aCharStyleLB.GetEntryCount(); i++)
3115cdf0e10cSrcweir {
3116cdf0e10cSrcweir String sEntry = aCharStyleLB.GetEntry(i);
3117cdf0e10cSrcweir if(sDefault != sEntry)
3118cdf0e10cSrcweir {
3119cdf0e10cSrcweir aMainEntryStyleLB.InsertEntry( sEntry );
3120cdf0e10cSrcweir aMainEntryStyleLB.SetEntryData(i, aCharStyleLB.GetEntryData(i));
3121cdf0e10cSrcweir }
3122cdf0e10cSrcweir }
3123cdf0e10cSrcweir aMainEntryStyleLB.SelectEntry( SwStyleNameMapper::GetUIName(
3124cdf0e10cSrcweir RES_POOLCHR_IDX_MAIN_ENTRY, aEmptyStr ));
3125cdf0e10cSrcweir }
3126cdf0e10cSrcweir /* -----------------------------23.12.99 14:23--------------------------------
3127cdf0e10cSrcweir
3128cdf0e10cSrcweir ---------------------------------------------------------------------------*/
GetLevelHelp(sal_uInt16 nLevel) const3129cdf0e10cSrcweir String SwTOXEntryTabPage::GetLevelHelp(sal_uInt16 nLevel) const
3130cdf0e10cSrcweir {
3131cdf0e10cSrcweir String sRet;
3132cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
3133cdf0e10cSrcweir const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
3134cdf0e10cSrcweir if( TOX_INDEX == aCurType.eType )
3135cdf0e10cSrcweir SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(1 == nLevel ? RES_POOLCOLL_TOX_IDXBREAK
3136cdf0e10cSrcweir : RES_POOLCOLL_TOX_IDX1 + nLevel-2), sRet );
3137cdf0e10cSrcweir
3138cdf0e10cSrcweir else if( TOX_AUTHORITIES == aCurType.eType )
3139cdf0e10cSrcweir {
3140cdf0e10cSrcweir //wildcard -> show entry text
3141cdf0e10cSrcweir sRet = '*';
3142cdf0e10cSrcweir }
3143cdf0e10cSrcweir return sRet;
3144cdf0e10cSrcweir }
3145cdf0e10cSrcweir /* -----------------16.06.99 15:18-------------------
3146cdf0e10cSrcweir
3147cdf0e10cSrcweir --------------------------------------------------*/
3148cdf0e10cSrcweir
SwTokenWindow(SwTOXEntryTabPage * pParent,const ResId & rResId)3149cdf0e10cSrcweir SwTokenWindow::SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId) :
3150cdf0e10cSrcweir Window( pParent, rResId ),
3151cdf0e10cSrcweir aLeftScrollWin(this, ResId(WIN_LEFT_SCROLL, *rResId.GetResMgr() )),
3152cdf0e10cSrcweir aCtrlParentWin(this, ResId(WIN_CTRL_PARENT, *rResId.GetResMgr() )),
3153cdf0e10cSrcweir aRightScrollWin(this, ResId(WIN_RIGHT_SCROLL, *rResId.GetResMgr() )),
3154cdf0e10cSrcweir pForm(0),
3155cdf0e10cSrcweir nLevel(0),
3156cdf0e10cSrcweir bValid(sal_False),
3157cdf0e10cSrcweir sCharStyle(ResId(STR_CHARSTYLE, *rResId.GetResMgr())),
3158cdf0e10cSrcweir pActiveCtrl(0),
3159cdf0e10cSrcweir m_pParent(pParent)
3160cdf0e10cSrcweir {
3161cdf0e10cSrcweir SetStyle(GetStyle()|WB_TABSTOP|WB_DIALOGCONTROL);
3162cdf0e10cSrcweir SetHelpId(HID_TOKEN_WINDOW);
3163cdf0e10cSrcweir for(sal_uInt16 i = 0; i < TOKEN_END; i++)
3164cdf0e10cSrcweir {
3165cdf0e10cSrcweir sal_uInt16 nTextId = STR_BUTTON_TEXT_START + i;
3166cdf0e10cSrcweir if( STR_TOKEN_ENTRY_TEXT == nTextId )
3167cdf0e10cSrcweir nTextId = STR_TOKEN_ENTRY;
3168cdf0e10cSrcweir aButtonTexts[i] = String(ResId(nTextId, *rResId.GetResMgr()));
3169cdf0e10cSrcweir
3170cdf0e10cSrcweir sal_uInt16 nHelpId = STR_BUTTON_HELP_TEXT_START + i;
3171cdf0e10cSrcweir if(STR_TOKEN_HELP_ENTRY_TEXT == nHelpId)
3172cdf0e10cSrcweir nHelpId = STR_TOKEN_HELP_ENTRY;
3173cdf0e10cSrcweir aButtonHelpTexts[i] = String(ResId(nHelpId, *rResId.GetResMgr()));
3174cdf0e10cSrcweir }
3175ca62e2c2SSteve Yin accessibleName = String(SW_RES(STR_STRUCTURE));
3176ca62e2c2SSteve Yin sAdditionalAccnameString1 = String(SW_RES(STR_ADDITIONAL_ACCNAME_STRING1));
3177ca62e2c2SSteve Yin sAdditionalAccnameString2 = String(SW_RES(STR_ADDITIONAL_ACCNAME_STRING2));
3178ca62e2c2SSteve Yin sAdditionalAccnameString3 = String(SW_RES(STR_ADDITIONAL_ACCNAME_STRING3));
3179cdf0e10cSrcweir FreeResource();
3180cdf0e10cSrcweir
3181cdf0e10cSrcweir Link aLink(LINK(this, SwTokenWindow, ScrollHdl));
3182cdf0e10cSrcweir aLeftScrollWin.SetClickHdl(aLink);
3183cdf0e10cSrcweir aRightScrollWin.SetClickHdl(aLink);
3184cdf0e10cSrcweir }
3185cdf0e10cSrcweir /* -----------------01.07.99 12:17-------------------
3186cdf0e10cSrcweir
3187cdf0e10cSrcweir --------------------------------------------------*/
~SwTokenWindow()3188cdf0e10cSrcweir SwTokenWindow::~SwTokenWindow()
3189cdf0e10cSrcweir {
3190cdf0e10cSrcweir // for(sal_uInt16 i = GetItemCount(); i ; i--)
3191cdf0e10cSrcweir // RemoveItem(i - 1);
3192cdf0e10cSrcweir
3193cdf0e10cSrcweir for( sal_uInt32 n = 0; n < aControlList.Count(); ++n )
3194cdf0e10cSrcweir {
3195cdf0e10cSrcweir Control* pControl = aControlList.GetObject( n );
3196cdf0e10cSrcweir pControl->SetGetFocusHdl( Link() );
3197cdf0e10cSrcweir pControl->SetLoseFocusHdl( Link() );
3198cdf0e10cSrcweir }
3199cdf0e10cSrcweir
3200cdf0e10cSrcweir for( sal_uLong i = aControlList.Count(); i; )
3201cdf0e10cSrcweir {
3202cdf0e10cSrcweir Control* pControl = aControlList.Remove( --i );
3203cdf0e10cSrcweir delete pControl;
3204cdf0e10cSrcweir }
3205cdf0e10cSrcweir }
3206cdf0e10cSrcweir /* -----------------16.06.99 13:56-------------------
3207cdf0e10cSrcweir
3208cdf0e10cSrcweir --------------------------------------------------*/
SetForm(SwForm & rForm,sal_uInt16 nL)3209cdf0e10cSrcweir void SwTokenWindow::SetForm(SwForm& rForm, sal_uInt16 nL)
3210cdf0e10cSrcweir {
3211cdf0e10cSrcweir SetActiveControl(0);
3212cdf0e10cSrcweir bValid = sal_True;
3213cdf0e10cSrcweir if(pForm)
3214cdf0e10cSrcweir {
3215cdf0e10cSrcweir //apply current level settings to the form
3216cdf0e10cSrcweir for( sal_uLong i = aControlList.Count(); i; )
3217cdf0e10cSrcweir {
3218cdf0e10cSrcweir Control* pControl = aControlList.Remove( --i );
3219cdf0e10cSrcweir delete pControl;
3220cdf0e10cSrcweir }
3221cdf0e10cSrcweir }
3222cdf0e10cSrcweir nLevel = nL;
3223cdf0e10cSrcweir pForm = &rForm;
3224cdf0e10cSrcweir //now the display
3225cdf0e10cSrcweir if(nLevel < MAXLEVEL || rForm.GetTOXType() == TOX_AUTHORITIES)
3226cdf0e10cSrcweir {
3227cdf0e10cSrcweir Size aToolBoxSize = GetSizePixel();
3228cdf0e10cSrcweir
3229cdf0e10cSrcweir // #i21237#
3230cdf0e10cSrcweir SwFormTokens aPattern = pForm->GetPattern(nLevel + 1);
3231cdf0e10cSrcweir SwFormTokens::iterator aIt = aPattern.begin();
3232cdf0e10cSrcweir sal_Bool bLastWasText = sal_False; //assure alternating text - code - text
3233cdf0e10cSrcweir
3234cdf0e10cSrcweir Control* pSetActiveControl = 0;
3235cdf0e10cSrcweir while(aIt != aPattern.end()) // #i21237#
3236cdf0e10cSrcweir {
3237cdf0e10cSrcweir SwFormToken aToken(*aIt); // #i21237#
3238cdf0e10cSrcweir
3239cdf0e10cSrcweir if(TOKEN_TEXT == aToken.eTokenType)
3240cdf0e10cSrcweir {
3241cdf0e10cSrcweir DBG_ASSERT(!bLastWasText, "text following text is invalid");
3242cdf0e10cSrcweir Control* pCtrl = InsertItem(aToken.sText, aToken);
3243cdf0e10cSrcweir bLastWasText = sal_True;
3244cdf0e10cSrcweir if(!GetActiveControl())
3245cdf0e10cSrcweir SetActiveControl(pCtrl);
3246cdf0e10cSrcweir }
3247cdf0e10cSrcweir else
3248cdf0e10cSrcweir {
3249cdf0e10cSrcweir if( !bLastWasText )
3250cdf0e10cSrcweir {
3251cdf0e10cSrcweir bLastWasText = sal_True;
3252cdf0e10cSrcweir SwFormToken aTemp(TOKEN_TEXT);
3253cdf0e10cSrcweir Control* pCtrl = InsertItem(aEmptyStr, aTemp);
3254cdf0e10cSrcweir if(!pSetActiveControl)
3255cdf0e10cSrcweir pSetActiveControl = pCtrl;
3256cdf0e10cSrcweir }
3257cdf0e10cSrcweir const sal_Char* pTmp = 0;
3258cdf0e10cSrcweir switch( aToken.eTokenType )
3259cdf0e10cSrcweir {
3260cdf0e10cSrcweir case TOKEN_ENTRY_NO: pTmp = SwForm::aFormEntryNum; break;
3261cdf0e10cSrcweir case TOKEN_ENTRY_TEXT: pTmp = SwForm::aFormEntryTxt; break;
3262cdf0e10cSrcweir case TOKEN_ENTRY: pTmp = SwForm::aFormEntry; break;
3263cdf0e10cSrcweir case TOKEN_TAB_STOP: pTmp = SwForm::aFormTab; break;
3264cdf0e10cSrcweir case TOKEN_PAGE_NUMS: pTmp = SwForm::aFormPageNums; break;
3265cdf0e10cSrcweir case TOKEN_CHAPTER_INFO:pTmp = SwForm::aFormChapterMark; break;
3266cdf0e10cSrcweir case TOKEN_LINK_START: pTmp = SwForm::aFormLinkStt; break;
3267cdf0e10cSrcweir case TOKEN_LINK_END: pTmp = SwForm::aFormLinkEnd; break;
3268cdf0e10cSrcweir case TOKEN_AUTHORITY: pTmp = SwForm::aFormAuth; break;
3269cdf0e10cSrcweir default:; //prevent warning
3270cdf0e10cSrcweir }
3271cdf0e10cSrcweir
3272cdf0e10cSrcweir InsertItem( pTmp ? String::CreateFromAscii(pTmp)
3273cdf0e10cSrcweir : aEmptyStr, aToken );
3274cdf0e10cSrcweir bLastWasText = sal_False;
3275cdf0e10cSrcweir }
3276cdf0e10cSrcweir
3277cdf0e10cSrcweir aIt++; // #i21237#
3278cdf0e10cSrcweir }
3279cdf0e10cSrcweir if(!bLastWasText)
3280cdf0e10cSrcweir {
3281cdf0e10cSrcweir bLastWasText = sal_True;
3282cdf0e10cSrcweir SwFormToken aTemp(TOKEN_TEXT);
3283cdf0e10cSrcweir Control* pCtrl = InsertItem(aEmptyStr, aTemp);
3284cdf0e10cSrcweir if(!pSetActiveControl)
3285cdf0e10cSrcweir pSetActiveControl = pCtrl;
3286cdf0e10cSrcweir }
3287cdf0e10cSrcweir SetActiveControl(pSetActiveControl);
3288cdf0e10cSrcweir }
3289cdf0e10cSrcweir AdjustScrolling();
3290cdf0e10cSrcweir }
3291cdf0e10cSrcweir /* -----------------19.08.99 13:00-------------------
3292cdf0e10cSrcweir
3293cdf0e10cSrcweir --------------------------------------------------*/
SetActiveControl(Control * pSet)3294cdf0e10cSrcweir void SwTokenWindow::SetActiveControl(Control* pSet)
3295cdf0e10cSrcweir {
3296cdf0e10cSrcweir if( pSet != pActiveCtrl )
3297cdf0e10cSrcweir {
3298cdf0e10cSrcweir pActiveCtrl = pSet;
3299cdf0e10cSrcweir if( pActiveCtrl )
3300cdf0e10cSrcweir {
3301cdf0e10cSrcweir pActiveCtrl->GrabFocus();
3302cdf0e10cSrcweir //it must be a SwTOXEdit
3303cdf0e10cSrcweir const SwFormToken* pFToken;
3304cdf0e10cSrcweir if( WINDOW_EDIT == pActiveCtrl->GetType() )
3305cdf0e10cSrcweir pFToken = &((SwTOXEdit*)pActiveCtrl)->GetFormToken();
3306cdf0e10cSrcweir else
3307cdf0e10cSrcweir pFToken = &((SwTOXButton*)pActiveCtrl)->GetFormToken();
3308cdf0e10cSrcweir
3309cdf0e10cSrcweir SwFormToken aTemp( *pFToken );
3310cdf0e10cSrcweir aButtonSelectedHdl.Call( &aTemp );
3311cdf0e10cSrcweir }
3312cdf0e10cSrcweir }
3313cdf0e10cSrcweir }
3314cdf0e10cSrcweir
3315cdf0e10cSrcweir /* -----------------17.06.99 09:53-------------------
3316cdf0e10cSrcweir
3317cdf0e10cSrcweir --------------------------------------------------*/
InsertItem(const String & rText,const SwFormToken & rToken)3318cdf0e10cSrcweir Control* SwTokenWindow::InsertItem(const String& rText, const SwFormToken& rToken)
3319cdf0e10cSrcweir {
3320cdf0e10cSrcweir Control* pRet = 0;
3321cdf0e10cSrcweir Control* pLast = aControlList.Last();
3322cdf0e10cSrcweir Size aControlSize(GetOutputSizePixel());
3323cdf0e10cSrcweir Point aControlPos;
3324cdf0e10cSrcweir if( pLast )
3325cdf0e10cSrcweir {
3326cdf0e10cSrcweir aControlSize = pLast->GetSizePixel();
3327cdf0e10cSrcweir aControlPos = pLast->GetPosPixel();
3328cdf0e10cSrcweir aControlPos.X() += aControlSize.Width();
3329cdf0e10cSrcweir }
3330cdf0e10cSrcweir if(TOKEN_TEXT == rToken.eTokenType)
3331cdf0e10cSrcweir {
3332cdf0e10cSrcweir SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, rToken);
3333cdf0e10cSrcweir pEdit->SetPosPixel(aControlPos);
3334cdf0e10cSrcweir aControlList.Insert(pEdit, aControlList.Count());
3335cdf0e10cSrcweir pEdit->SetText(rText);
3336ca62e2c2SSteve Yin sal_uInt32 nIndex = GetControlIndex( TOKEN_TEXT, pEdit );
3337ca62e2c2SSteve Yin String s1 = String::CreateFromAscii(" (");
3338ca62e2c2SSteve Yin String s2 = String::CreateFromAscii(")");
3339ca62e2c2SSteve Yin String s3 = String::CreateFromAscii(", ");
3340ca62e2c2SSteve Yin String strName(accessibleName);
3341ca62e2c2SSteve Yin strName += String::CreateFromInt32(nIndex);
3342ca62e2c2SSteve Yin if ( nIndex == 1 )
3343ca62e2c2SSteve Yin {
3344ca62e2c2SSteve Yin /*Press left or right arrow to choose the structure controls*/
3345ca62e2c2SSteve Yin strName += s1;
3346ca62e2c2SSteve Yin strName += sAdditionalAccnameString2;
3347ca62e2c2SSteve Yin strName += s3;
3348ca62e2c2SSteve Yin /*Press Ctrl+Alt+A to move focus for more operations*/
3349ca62e2c2SSteve Yin strName += sAdditionalAccnameString1;
3350ca62e2c2SSteve Yin strName += s3;
3351ca62e2c2SSteve Yin /*Press Ctrl+Alt+B to move focus back to the current structure control*/
3352ca62e2c2SSteve Yin strName += sAdditionalAccnameString3;
3353ca62e2c2SSteve Yin strName += s2;
3354ca62e2c2SSteve Yin pEdit->SetAccessibleName(strName);
3355ca62e2c2SSteve Yin }
3356ca62e2c2SSteve Yin else
3357ca62e2c2SSteve Yin {
3358ca62e2c2SSteve Yin pEdit->SetAccessibleName(strName);
3359ca62e2c2SSteve Yin }
3360cdf0e10cSrcweir Size aEditSize(aControlSize);
3361cdf0e10cSrcweir aEditSize.Width() = pEdit->GetTextWidth(rText) + EDIT_MINWIDTH;
3362cdf0e10cSrcweir pEdit->SetSizePixel(aEditSize);
3363cdf0e10cSrcweir pEdit->SetModifyHdl(LINK(this, SwTokenWindow, EditResize ));
3364cdf0e10cSrcweir pEdit->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemHdl));
3365cdf0e10cSrcweir pEdit->SetGetFocusHdl(LINK(this, SwTokenWindow, TbxFocusHdl));
3366cdf0e10cSrcweir pEdit->Show();
3367cdf0e10cSrcweir pRet = pEdit;
3368cdf0e10cSrcweir }
3369cdf0e10cSrcweir else
3370cdf0e10cSrcweir {
3371cdf0e10cSrcweir SwTOXButton* pButton = new SwTOXButton(&aCtrlParentWin, this, rToken);
3372cdf0e10cSrcweir pButton->SetPosPixel(aControlPos);
3373cdf0e10cSrcweir aControlList.Insert(pButton, aControlList.Count());
3374cdf0e10cSrcweir Size aEditSize(aControlSize);
3375cdf0e10cSrcweir aEditSize.Width() = pButton->GetTextWidth(rText) + 5;
3376cdf0e10cSrcweir // pButton->SetControlBackground(aCtrlColor);
3377cdf0e10cSrcweir // pButton->SetControlForeground(aTextColor);
3378cdf0e10cSrcweir pButton->SetSizePixel(aEditSize);
3379cdf0e10cSrcweir pButton->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemBtnHdl));
3380cdf0e10cSrcweir pButton->SetGetFocusHdl(LINK(this, SwTokenWindow, TbxFocusBtnHdl));
3381cdf0e10cSrcweir if(TOKEN_AUTHORITY != rToken.eTokenType)
3382cdf0e10cSrcweir pButton->SetText(aButtonTexts[rToken.eTokenType]);
3383cdf0e10cSrcweir else
3384cdf0e10cSrcweir {
3385cdf0e10cSrcweir //use the first two chars as symbol
3386cdf0e10cSrcweir String sTmp(SwAuthorityFieldType::GetAuthFieldName(
3387cdf0e10cSrcweir (ToxAuthorityField)rToken.nAuthorityField));
3388cdf0e10cSrcweir pButton->SetText(sTmp.Copy(0, 2));
3389cdf0e10cSrcweir }
3390ca62e2c2SSteve Yin String sSpace = String::CreateFromAscii(" ");
3391ca62e2c2SSteve Yin sal_uInt32 nIndex = GetControlIndex( rToken.eTokenType, pButton );
3392ca62e2c2SSteve Yin String sAccName = aButtonHelpTexts[rToken.eTokenType];
3393ca62e2c2SSteve Yin if ( nIndex )
3394ca62e2c2SSteve Yin {
3395ca62e2c2SSteve Yin sAccName += sSpace;
3396ca62e2c2SSteve Yin sAccName += String::CreateFromInt32(nIndex);
3397ca62e2c2SSteve Yin }
3398ca62e2c2SSteve Yin pButton->SetAccessibleName( sAccName );
3399cdf0e10cSrcweir pButton->Show();
3400cdf0e10cSrcweir pRet = pButton;
3401cdf0e10cSrcweir }
3402cdf0e10cSrcweir return pRet;
3403cdf0e10cSrcweir }
3404cdf0e10cSrcweir /* -----------------16.07.99 11:50-------------------
3405cdf0e10cSrcweir
3406cdf0e10cSrcweir --------------------------------------------------*/
InsertAtSelection(const String & rText,const SwFormToken & rToken)3407cdf0e10cSrcweir void SwTokenWindow::InsertAtSelection(
3408cdf0e10cSrcweir const String& rText,
3409cdf0e10cSrcweir const SwFormToken& rToken)
3410cdf0e10cSrcweir {
3411cdf0e10cSrcweir DBG_ASSERT(pActiveCtrl, "no active control!");
3412cdf0e10cSrcweir if(!pActiveCtrl)
3413cdf0e10cSrcweir return;
3414cdf0e10cSrcweir SwFormToken aToInsertToken(rToken);
3415cdf0e10cSrcweir if(TOKEN_LINK_START == aToInsertToken.eTokenType)
3416cdf0e10cSrcweir {
3417cdf0e10cSrcweir //determine if start or end of hyperlink is appropriate
3418cdf0e10cSrcweir //eventually change a following link start into a link end
3419cdf0e10cSrcweir // groups of LS LE should be ignored
3420cdf0e10cSrcweir // <insert>
3421cdf0e10cSrcweir //LS <insert>
3422cdf0e10cSrcweir //LE <insert>
3423cdf0e10cSrcweir //<insert> LS
3424cdf0e10cSrcweir //<insert> LE
3425cdf0e10cSrcweir //<insert>
3426cdf0e10cSrcweir sal_Bool bPreStartLinkFound = sal_False; //
3427cdf0e10cSrcweir sal_Bool bPreEndLinkFound = sal_False;
3428cdf0e10cSrcweir
3429cdf0e10cSrcweir const Control* pControl = aControlList.First();
3430cdf0e10cSrcweir const Control* pExchange = 0;
3431cdf0e10cSrcweir while( pControl && pActiveCtrl != pControl )
3432cdf0e10cSrcweir {
3433cdf0e10cSrcweir if( WINDOW_EDIT != pControl->GetType())
3434cdf0e10cSrcweir {
3435cdf0e10cSrcweir const SwFormToken& rNewToken =
3436cdf0e10cSrcweir ((SwTOXButton*)pControl)->GetFormToken();
3437cdf0e10cSrcweir if( TOKEN_LINK_START == rNewToken.eTokenType )
3438cdf0e10cSrcweir {
3439cdf0e10cSrcweir bPreStartLinkFound = sal_True;
3440cdf0e10cSrcweir pExchange = 0;
3441cdf0e10cSrcweir }
3442cdf0e10cSrcweir else if(TOKEN_LINK_END == rNewToken.eTokenType)
3443cdf0e10cSrcweir {
3444cdf0e10cSrcweir if( bPreStartLinkFound )
3445cdf0e10cSrcweir bPreStartLinkFound = sal_False;
3446cdf0e10cSrcweir else
3447cdf0e10cSrcweir {
3448cdf0e10cSrcweir bPreEndLinkFound = sal_False;
3449cdf0e10cSrcweir pExchange = pControl;
3450cdf0e10cSrcweir }
3451cdf0e10cSrcweir }
3452cdf0e10cSrcweir }
3453cdf0e10cSrcweir pControl = aControlList.Next();
3454cdf0e10cSrcweir }
3455cdf0e10cSrcweir
3456cdf0e10cSrcweir sal_Bool bPostLinkEndFound = sal_False;
3457cdf0e10cSrcweir sal_Bool bPostLinkStartFound = sal_False;
3458cdf0e10cSrcweir if(!bPreStartLinkFound && !bPreEndLinkFound)
3459cdf0e10cSrcweir while(pControl)
3460cdf0e10cSrcweir {
3461cdf0e10cSrcweir if( pControl != pActiveCtrl &&
3462cdf0e10cSrcweir WINDOW_EDIT != pControl->GetType())
3463cdf0e10cSrcweir {
3464cdf0e10cSrcweir const SwFormToken& rNewToken =
3465cdf0e10cSrcweir ((SwTOXButton*)pControl)->GetFormToken();
3466cdf0e10cSrcweir if( TOKEN_LINK_START == rNewToken.eTokenType )
3467cdf0e10cSrcweir {
3468cdf0e10cSrcweir if(bPostLinkStartFound)
3469cdf0e10cSrcweir break;
3470cdf0e10cSrcweir bPostLinkStartFound = sal_True;
3471cdf0e10cSrcweir pExchange = pControl;
3472cdf0e10cSrcweir }
3473cdf0e10cSrcweir else if(TOKEN_LINK_END == rNewToken.eTokenType )
3474cdf0e10cSrcweir {
3475cdf0e10cSrcweir if(bPostLinkStartFound)
3476cdf0e10cSrcweir {
3477cdf0e10cSrcweir bPostLinkStartFound = sal_False;
3478cdf0e10cSrcweir pExchange = 0;
3479cdf0e10cSrcweir }
3480cdf0e10cSrcweir else
3481cdf0e10cSrcweir {
3482cdf0e10cSrcweir bPostLinkEndFound = sal_True;
3483cdf0e10cSrcweir }
3484cdf0e10cSrcweir break;
3485cdf0e10cSrcweir }
3486cdf0e10cSrcweir }
3487cdf0e10cSrcweir pControl = aControlList.Next();
3488cdf0e10cSrcweir }
3489cdf0e10cSrcweir
3490cdf0e10cSrcweir if(bPreStartLinkFound)
3491cdf0e10cSrcweir {
3492cdf0e10cSrcweir aToInsertToken.eTokenType = TOKEN_LINK_END;
3493cdf0e10cSrcweir aToInsertToken.sText = aButtonTexts[TOKEN_LINK_END];
3494cdf0e10cSrcweir }
3495cdf0e10cSrcweir
3496cdf0e10cSrcweir if(bPostLinkStartFound)
3497cdf0e10cSrcweir {
3498cdf0e10cSrcweir DBG_ASSERT(pExchange, "no control to exchange?");
3499cdf0e10cSrcweir if(pExchange)
3500cdf0e10cSrcweir {
3501cdf0e10cSrcweir ((SwTOXButton*)pExchange)->SetLinkEnd();
3502cdf0e10cSrcweir ((SwTOXButton*)pExchange)->SetText(aButtonTexts[TOKEN_LINK_END]);
3503cdf0e10cSrcweir }
3504cdf0e10cSrcweir }
3505cdf0e10cSrcweir
3506cdf0e10cSrcweir if(bPreEndLinkFound)
3507cdf0e10cSrcweir {
3508cdf0e10cSrcweir DBG_ASSERT(pExchange, "no control to exchange?");
3509cdf0e10cSrcweir if(pExchange)
3510cdf0e10cSrcweir {
3511cdf0e10cSrcweir ((SwTOXButton*)pExchange)->SetLinkStart();
3512cdf0e10cSrcweir ((SwTOXButton*)pExchange)->SetText(aButtonTexts[TOKEN_LINK_START]);
3513cdf0e10cSrcweir }
3514cdf0e10cSrcweir }
3515cdf0e10cSrcweir }
3516cdf0e10cSrcweir
3517cdf0e10cSrcweir //if the active control is text then insert a new button at the selection
3518cdf0e10cSrcweir //else replace the button
3519cdf0e10cSrcweir sal_uInt32 nActivePos = aControlList.GetPos(pActiveCtrl);
3520cdf0e10cSrcweir sal_uInt32 nInsertPos = nActivePos;
3521cdf0e10cSrcweir
3522cdf0e10cSrcweir Size aControlSize(GetOutputSizePixel());
3523cdf0e10cSrcweir if( WINDOW_EDIT == pActiveCtrl->GetType())
3524cdf0e10cSrcweir {
3525cdf0e10cSrcweir nInsertPos++;
3526cdf0e10cSrcweir Selection aSel = ((SwTOXEdit*)pActiveCtrl)->GetSelection();
3527cdf0e10cSrcweir aSel.Justify();
3528cdf0e10cSrcweir String sEditText = ((SwTOXEdit*)pActiveCtrl)->GetText();
3529cdf0e10cSrcweir String sLeft = sEditText.Copy( 0, static_cast< sal_uInt16 >(aSel.A()) );
3530cdf0e10cSrcweir String sRight = sEditText.Copy( static_cast< sal_uInt16 >(aSel.B()),
3531cdf0e10cSrcweir static_cast< sal_uInt16 >(sEditText.Len() - aSel.B()));
3532cdf0e10cSrcweir
3533cdf0e10cSrcweir ((SwTOXEdit*)pActiveCtrl)->SetText(sLeft);
3534cdf0e10cSrcweir ((SwTOXEdit*)pActiveCtrl)->AdjustSize();
3535cdf0e10cSrcweir
3536cdf0e10cSrcweir SwFormToken aTmpToken(TOKEN_TEXT);
3537cdf0e10cSrcweir SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, aTmpToken);
3538cdf0e10cSrcweir aControlList.Insert(pEdit, nActivePos + 1);
3539cdf0e10cSrcweir pEdit->SetText(sRight);
3540ca62e2c2SSteve Yin sal_uInt32 nIndex = GetControlIndex( TOKEN_TEXT, pEdit );
3541ca62e2c2SSteve Yin String s1 = String::CreateFromAscii(" (");
3542ca62e2c2SSteve Yin String s2 = String::CreateFromAscii(")");
3543ca62e2c2SSteve Yin String s3 = String::CreateFromAscii(", ");
3544ca62e2c2SSteve Yin String strName(accessibleName);
3545ca62e2c2SSteve Yin strName += String::CreateFromInt32(nIndex);
3546ca62e2c2SSteve Yin if ( nIndex == 1)
3547ca62e2c2SSteve Yin {
3548ca62e2c2SSteve Yin /*Press left or right arrow to choose the structure controls*/
3549ca62e2c2SSteve Yin strName += s1;
3550ca62e2c2SSteve Yin strName += sAdditionalAccnameString2;
3551ca62e2c2SSteve Yin strName += s3;
3552ca62e2c2SSteve Yin /*Press Ctrl+Alt+A to move focus for more operations*/
3553ca62e2c2SSteve Yin strName += sAdditionalAccnameString1;
3554ca62e2c2SSteve Yin strName += s3;
3555ca62e2c2SSteve Yin /*Press Ctrl+Alt+B to move focus back to the current structure control*/
3556ca62e2c2SSteve Yin strName += sAdditionalAccnameString3;
3557ca62e2c2SSteve Yin strName += s2;
3558ca62e2c2SSteve Yin pEdit->SetAccessibleName(strName);
3559ca62e2c2SSteve Yin }
3560ca62e2c2SSteve Yin else
3561ca62e2c2SSteve Yin {
3562ca62e2c2SSteve Yin pEdit->SetAccessibleName(strName);
3563ca62e2c2SSteve Yin }
3564cdf0e10cSrcweir pEdit->SetSizePixel(aControlSize);
3565cdf0e10cSrcweir pEdit->AdjustSize();
3566cdf0e10cSrcweir pEdit->SetModifyHdl(LINK(this, SwTokenWindow, EditResize ));
3567cdf0e10cSrcweir pEdit->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemHdl));
3568cdf0e10cSrcweir pEdit->SetGetFocusHdl(LINK(this, SwTokenWindow, TbxFocusHdl));
3569cdf0e10cSrcweir pEdit->Show();
3570cdf0e10cSrcweir }
3571cdf0e10cSrcweir else
3572cdf0e10cSrcweir {
3573cdf0e10cSrcweir aControlList.Remove(pActiveCtrl);
3574cdf0e10cSrcweir pActiveCtrl->Hide();
3575cdf0e10cSrcweir delete pActiveCtrl;
3576cdf0e10cSrcweir }
3577cdf0e10cSrcweir
3578cdf0e10cSrcweir //now the new button
3579cdf0e10cSrcweir SwTOXButton* pButton = new SwTOXButton(&aCtrlParentWin, this, aToInsertToken);
3580cdf0e10cSrcweir aControlList.Insert(pButton, nInsertPos);
3581cdf0e10cSrcweir pButton->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemBtnHdl));
3582cdf0e10cSrcweir pButton->SetGetFocusHdl(LINK(this, SwTokenWindow, TbxFocusBtnHdl));
3583cdf0e10cSrcweir if(TOKEN_AUTHORITY != aToInsertToken.eTokenType)
3584cdf0e10cSrcweir pButton->SetText(aButtonTexts[aToInsertToken.eTokenType]);
3585cdf0e10cSrcweir else
3586cdf0e10cSrcweir {
3587cdf0e10cSrcweir //use the first two chars as symbol
3588cdf0e10cSrcweir String sTmp(SwAuthorityFieldType::GetAuthFieldName(
3589cdf0e10cSrcweir (ToxAuthorityField)aToInsertToken.nAuthorityField));
3590cdf0e10cSrcweir pButton->SetText(sTmp.Copy(0, 2));
3591cdf0e10cSrcweir }
3592cdf0e10cSrcweir
3593ca62e2c2SSteve Yin String sSpace = String::CreateFromAscii(" ");
3594ca62e2c2SSteve Yin sal_uInt32 nIndex = GetControlIndex( rToken.eTokenType, pButton );
3595ca62e2c2SSteve Yin String sAccName = aButtonHelpTexts[rToken.eTokenType];
3596ca62e2c2SSteve Yin if ( nIndex )
3597ca62e2c2SSteve Yin {
3598ca62e2c2SSteve Yin sAccName += sSpace;
3599ca62e2c2SSteve Yin sAccName += String::CreateFromInt32(nIndex);
3600ca62e2c2SSteve Yin }
3601ca62e2c2SSteve Yin pButton->SetAccessibleName( sAccName );
3602cdf0e10cSrcweir Size aEditSize(GetOutputSizePixel());
3603cdf0e10cSrcweir aEditSize.Width() = pButton->GetTextWidth(rText) + 5;
3604cdf0e10cSrcweir pButton->SetSizePixel(aEditSize);
3605cdf0e10cSrcweir pButton->Check(sal_True);
3606cdf0e10cSrcweir pButton->Show();
3607cdf0e10cSrcweir SetActiveControl(pButton);
3608cdf0e10cSrcweir
3609cdf0e10cSrcweir AdjustPositions();
3610cdf0e10cSrcweir }
3611cdf0e10cSrcweir /* -----------------19.08.99 12:42-------------------
3612cdf0e10cSrcweir
3613cdf0e10cSrcweir --------------------------------------------------*/
RemoveControl(SwTOXButton * pDel,sal_Bool bInternalCall)3614cdf0e10cSrcweir void SwTokenWindow::RemoveControl(SwTOXButton* pDel, sal_Bool bInternalCall )
3615cdf0e10cSrcweir {
3616cdf0e10cSrcweir if(bInternalCall && TOX_AUTHORITIES == pForm->GetTOXType())
3617cdf0e10cSrcweir m_pParent->PreTokenButtonRemoved(pDel->GetFormToken());
3618cdf0e10cSrcweir
3619cdf0e10cSrcweir sal_uInt32 nActivePos = aControlList.GetPos(pDel);
3620cdf0e10cSrcweir DBG_ASSERT(nActivePos != 0xffffffff, "Control does not exist!");
3621cdf0e10cSrcweir // the two neighbours of the box must be merged
3622cdf0e10cSrcweir // the properties of the right one will be lost
3623cdf0e10cSrcweir DBG_ASSERT(nActivePos && nActivePos < aControlList.Count() - 1,
3624cdf0e10cSrcweir "Button at first or last position?");
3625cdf0e10cSrcweir aControlList.Seek(nActivePos - 1);
3626cdf0e10cSrcweir Control* pLeftEdit = aControlList.GetCurObject();
3627cdf0e10cSrcweir aControlList.Seek(nActivePos + 1);
3628cdf0e10cSrcweir Control* pRightEdit = aControlList.GetCurObject();
3629cdf0e10cSrcweir String sTemp(((SwTOXEdit*)pLeftEdit)->GetText());
3630cdf0e10cSrcweir sTemp += ((SwTOXEdit*)pRightEdit)->GetText();
3631cdf0e10cSrcweir ((SwTOXEdit*)pLeftEdit)->SetText(sTemp);
3632cdf0e10cSrcweir ((SwTOXEdit*)pLeftEdit)->AdjustSize();
3633cdf0e10cSrcweir
3634cdf0e10cSrcweir aControlList.Remove(pRightEdit);
3635cdf0e10cSrcweir delete pRightEdit;
3636cdf0e10cSrcweir
3637cdf0e10cSrcweir aControlList.Remove(pDel);
3638cdf0e10cSrcweir pActiveCtrl->Hide();
3639cdf0e10cSrcweir delete pActiveCtrl;
3640cdf0e10cSrcweir SetActiveControl(pLeftEdit);
3641cdf0e10cSrcweir AdjustPositions();
3642cdf0e10cSrcweir if(aModifyHdl.IsSet())
3643cdf0e10cSrcweir aModifyHdl.Call(0);
3644cdf0e10cSrcweir }
3645cdf0e10cSrcweir
3646cdf0e10cSrcweir /* -----------------16.07.99 12:39-------------------
3647cdf0e10cSrcweir
3648cdf0e10cSrcweir --------------------------------------------------*/
AdjustPositions()3649cdf0e10cSrcweir void SwTokenWindow::AdjustPositions()
3650cdf0e10cSrcweir {
3651cdf0e10cSrcweir if(aControlList.Count() > 1)
3652cdf0e10cSrcweir {
3653cdf0e10cSrcweir Control* pCtrl = aControlList.First();
3654cdf0e10cSrcweir Point aNextPos = pCtrl->GetPosPixel();
3655cdf0e10cSrcweir aNextPos.X() += pCtrl->GetSizePixel().Width();
3656cdf0e10cSrcweir while(0 != (pCtrl = aControlList.Next()))
3657cdf0e10cSrcweir {
3658cdf0e10cSrcweir pCtrl->SetPosPixel(aNextPos);
3659cdf0e10cSrcweir aNextPos.X() += pCtrl->GetSizePixel().Width();
3660cdf0e10cSrcweir }
3661cdf0e10cSrcweir AdjustScrolling();
3662cdf0e10cSrcweir }
3663cdf0e10cSrcweir };
3664cdf0e10cSrcweir /* -----------------------------16.08.00 13:22--------------------------------
3665cdf0e10cSrcweir
3666cdf0e10cSrcweir ---------------------------------------------------------------------------*/
MoveControls(long nOffset)3667cdf0e10cSrcweir void SwTokenWindow::MoveControls(long nOffset)
3668cdf0e10cSrcweir {
3669cdf0e10cSrcweir // move the complete list
3670cdf0e10cSrcweir Control* pCtrl = aControlList.First();
3671cdf0e10cSrcweir do
3672cdf0e10cSrcweir {
3673cdf0e10cSrcweir Point aPos = pCtrl->GetPosPixel();
3674cdf0e10cSrcweir aPos.X() += nOffset;
3675cdf0e10cSrcweir pCtrl->SetPosPixel(aPos);
3676cdf0e10cSrcweir }while(0 != (pCtrl = aControlList.Next()));
3677cdf0e10cSrcweir }
3678cdf0e10cSrcweir /* -----------------------------14.01.00 13:03--------------------------------
3679cdf0e10cSrcweir
3680cdf0e10cSrcweir ---------------------------------------------------------------------------*/
AdjustScrolling()3681cdf0e10cSrcweir void SwTokenWindow::AdjustScrolling()
3682cdf0e10cSrcweir {
3683cdf0e10cSrcweir if(aControlList.Count() > 1)
3684cdf0e10cSrcweir {
3685cdf0e10cSrcweir //validate scroll buttons
3686cdf0e10cSrcweir Control* pLastCtrl = aControlList.Last();
3687cdf0e10cSrcweir Control* pFirstCtrl = aControlList.First();
3688cdf0e10cSrcweir long nSpace = aCtrlParentWin.GetSizePixel().Width();
3689cdf0e10cSrcweir long nWidth = pLastCtrl->GetPosPixel().X() - pFirstCtrl->GetPosPixel().X()
3690cdf0e10cSrcweir + pLastCtrl->GetSizePixel().Width();
3691cdf0e10cSrcweir sal_Bool bEnable = nWidth > nSpace;
3692cdf0e10cSrcweir //the active control must be visible
3693cdf0e10cSrcweir if(bEnable && pActiveCtrl)
3694cdf0e10cSrcweir {
3695cdf0e10cSrcweir Point aActivePos(pActiveCtrl->GetPosPixel());
3696cdf0e10cSrcweir long nMove = 0;
3697cdf0e10cSrcweir if(aActivePos.X() < 0)
3698cdf0e10cSrcweir nMove = -aActivePos.X();
3699cdf0e10cSrcweir else if((aActivePos.X() + pActiveCtrl->GetSizePixel().Width()) > nSpace)
3700cdf0e10cSrcweir nMove = -(aActivePos.X() + pActiveCtrl->GetSizePixel().Width() - nSpace);
3701cdf0e10cSrcweir if(nMove)
3702cdf0e10cSrcweir MoveControls(nMove);
3703cdf0e10cSrcweir aLeftScrollWin.Enable(aControlList.First()->GetPosPixel().X() < 0);
3704cdf0e10cSrcweir Control* pCtrl = aControlList.Last();
3705cdf0e10cSrcweir aRightScrollWin.Enable((pCtrl->GetPosPixel().X() + pCtrl->GetSizePixel().Width()) > nSpace);
3706cdf0e10cSrcweir }
3707cdf0e10cSrcweir else
3708cdf0e10cSrcweir {
3709cdf0e10cSrcweir if(pFirstCtrl)
3710cdf0e10cSrcweir {
3711cdf0e10cSrcweir //if the control fits into the space then the first control must be at postion 0
3712cdf0e10cSrcweir long nFirstPos = pFirstCtrl->GetPosPixel().X();
3713cdf0e10cSrcweir if(nFirstPos != 0)
3714cdf0e10cSrcweir MoveControls(-nFirstPos);
3715cdf0e10cSrcweir }
3716cdf0e10cSrcweir aRightScrollWin.Enable(sal_False);
3717cdf0e10cSrcweir aLeftScrollWin.Enable(sal_False);
3718cdf0e10cSrcweir }
3719cdf0e10cSrcweir }
3720cdf0e10cSrcweir }
3721cdf0e10cSrcweir /* -----------------------------14.01.00 13:57--------------------------------
3722cdf0e10cSrcweir
3723cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwTokenWindow,ScrollHdl,ImageButton *,pBtn)3724cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
3725cdf0e10cSrcweir {
3726cdf0e10cSrcweir if(aControlList.Count())
3727cdf0e10cSrcweir {
3728cdf0e10cSrcweir const long nSpace = aCtrlParentWin.GetSizePixel().Width();
3729cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
3730cdf0e10cSrcweir //find all start/end positions and print it
3731cdf0e10cSrcweir String sMessage(String::CreateFromAscii("Space: "));
3732cdf0e10cSrcweir sMessage += String::CreateFromInt32(nSpace);
3733cdf0e10cSrcweir sMessage += String::CreateFromAscii(" | ");
3734cdf0e10cSrcweir Control* pDebugCtrl = aControlList.First();
3735cdf0e10cSrcweir do
3736cdf0e10cSrcweir {
3737cdf0e10cSrcweir long nDebugXPos = pDebugCtrl->GetPosPixel().X();
3738cdf0e10cSrcweir long nDebugWidth = pDebugCtrl->GetSizePixel().Width();
3739cdf0e10cSrcweir sMessage += String::CreateFromInt32( nDebugXPos );
3740cdf0e10cSrcweir sMessage += String::CreateFromAscii(" ");
3741cdf0e10cSrcweir sMessage += String::CreateFromInt32(nDebugXPos + nDebugWidth);
3742cdf0e10cSrcweir sMessage += String::CreateFromAscii(" | ");
3743cdf0e10cSrcweir
3744cdf0e10cSrcweir }while(0 != (pDebugCtrl = aControlList.Next()));
3745cdf0e10cSrcweir
3746cdf0e10cSrcweir #endif
3747cdf0e10cSrcweir
3748cdf0e10cSrcweir long nMove = 0;
3749cdf0e10cSrcweir if(pBtn == &aLeftScrollWin)
3750cdf0e10cSrcweir {
3751cdf0e10cSrcweir //find the first completely visible control (left edge visible)
3752cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aControlList.Count(); i++ )
3753cdf0e10cSrcweir {
3754cdf0e10cSrcweir Control* pCtrl = aControlList.GetObject(i);
3755cdf0e10cSrcweir long nXPos = pCtrl->GetPosPixel().X();
3756cdf0e10cSrcweir if(nXPos >= 0)
3757cdf0e10cSrcweir {
3758cdf0e10cSrcweir if(!i)
3759cdf0e10cSrcweir //move the current control to the left edge
3760cdf0e10cSrcweir nMove = -nXPos;
3761cdf0e10cSrcweir else
3762cdf0e10cSrcweir //move the left neighbor to the start position
3763cdf0e10cSrcweir nMove = -aControlList.GetObject(i - 1)->GetPosPixel().X();
3764cdf0e10cSrcweir break;
3765cdf0e10cSrcweir }
3766cdf0e10cSrcweir }
3767cdf0e10cSrcweir }
3768cdf0e10cSrcweir else
3769cdf0e10cSrcweir {
3770cdf0e10cSrcweir //find the first completely visible control (left edge visible)
3771cdf0e10cSrcweir for(sal_uLong i = aControlList.Count(); i; i-- )
3772cdf0e10cSrcweir {
3773cdf0e10cSrcweir Control* pCtrl = aControlList.GetObject(i - 1);
3774cdf0e10cSrcweir long nCtrlWidth = pCtrl->GetSizePixel().Width();
3775cdf0e10cSrcweir long nXPos = pCtrl->GetPosPixel().X() + nCtrlWidth;
3776cdf0e10cSrcweir if(nXPos <= nSpace)
3777cdf0e10cSrcweir {
3778cdf0e10cSrcweir if( i < aControlList.Count())
3779cdf0e10cSrcweir {
3780cdf0e10cSrcweir //move the right neighbor to the right edge right aligned
3781cdf0e10cSrcweir Control* pRight = aControlList.GetObject(i);
3782cdf0e10cSrcweir nMove = nSpace - pRight->GetPosPixel().X() - pRight->GetSizePixel().Width();
3783cdf0e10cSrcweir }
3784cdf0e10cSrcweir break;
3785cdf0e10cSrcweir }
3786cdf0e10cSrcweir }
3787cdf0e10cSrcweir
3788cdf0e10cSrcweir //move it left until it's completely visible
3789cdf0e10cSrcweir }
3790cdf0e10cSrcweir if(nMove)
3791cdf0e10cSrcweir {
3792cdf0e10cSrcweir // move the complete list
3793cdf0e10cSrcweir Control* pCtrl = aControlList.First();
3794cdf0e10cSrcweir do
3795cdf0e10cSrcweir {
3796cdf0e10cSrcweir Point aPos = pCtrl->GetPosPixel();
3797cdf0e10cSrcweir aPos.X() += nMove;
3798cdf0e10cSrcweir pCtrl->SetPosPixel(aPos);
3799cdf0e10cSrcweir }while(0 != (pCtrl = aControlList.Next()));
3800cdf0e10cSrcweir aLeftScrollWin.Enable(aControlList.First()->GetPosPixel().X() < 0);
3801cdf0e10cSrcweir pCtrl = aControlList.Last();
3802cdf0e10cSrcweir aRightScrollWin.Enable((pCtrl->GetPosPixel().X() + pCtrl->GetSizePixel().Width()) > nSpace);
3803cdf0e10cSrcweir
3804cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
3805cdf0e10cSrcweir sMessage.AppendAscii("Move: ");
3806cdf0e10cSrcweir sMessage += String::CreateFromInt32(nMove);
3807cdf0e10cSrcweir GetParent()->GetParent()->GetParent()->SetText(sMessage);
3808cdf0e10cSrcweir #endif
3809cdf0e10cSrcweir }
3810cdf0e10cSrcweir }
3811cdf0e10cSrcweir return 0;
3812cdf0e10cSrcweir }
3813cdf0e10cSrcweir /* -----------------17.06.99 11:59-------------------
3814cdf0e10cSrcweir
3815cdf0e10cSrcweir --------------------------------------------------*/
GetPattern() const3816cdf0e10cSrcweir String SwTokenWindow::GetPattern() const
3817cdf0e10cSrcweir {
3818cdf0e10cSrcweir String sRet;
3819cdf0e10cSrcweir const Control* pControl = ((SwTokenWindow*)this)->aControlList.First();
3820cdf0e10cSrcweir while(pControl)
3821cdf0e10cSrcweir {
3822cdf0e10cSrcweir const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
3823cdf0e10cSrcweir ? ((SwTOXEdit*)pControl)->GetFormToken()
3824cdf0e10cSrcweir : ((SwTOXButton*)pControl)->GetFormToken();
3825cdf0e10cSrcweir
3826cdf0e10cSrcweir //TODO: prevent input of TOX_STYLE_DELIMITER in KeyInput
3827cdf0e10cSrcweir sRet += rNewToken.GetString();
3828cdf0e10cSrcweir
3829cdf0e10cSrcweir pControl = ((SwTokenWindow*)this)->aControlList.Next();
3830cdf0e10cSrcweir }
3831cdf0e10cSrcweir return sRet;
3832cdf0e10cSrcweir }
3833cdf0e10cSrcweir /* -----------------19.08.99 11:27-------------------
3834cdf0e10cSrcweir Description: Check if a control of the specified
3835cdf0e10cSrcweir TokenType is already contained in the list
3836cdf0e10cSrcweir --------------------------------------------------*/
Contains(FormTokenType eSearchFor) const3837cdf0e10cSrcweir sal_Bool SwTokenWindow::Contains(FormTokenType eSearchFor) const
3838cdf0e10cSrcweir {
3839cdf0e10cSrcweir sal_Bool bRet = sal_False;
3840cdf0e10cSrcweir const Control* pControl = ((SwTokenWindow*)this)->aControlList.First();
3841cdf0e10cSrcweir while(pControl)
3842cdf0e10cSrcweir {
3843cdf0e10cSrcweir const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
3844cdf0e10cSrcweir ? ((SwTOXEdit*)pControl)->GetFormToken()
3845cdf0e10cSrcweir : ((SwTOXButton*)pControl)->GetFormToken();
3846cdf0e10cSrcweir
3847cdf0e10cSrcweir if(eSearchFor == rNewToken.eTokenType)
3848cdf0e10cSrcweir {
3849cdf0e10cSrcweir bRet = sal_True;
3850cdf0e10cSrcweir break;
3851cdf0e10cSrcweir }
3852cdf0e10cSrcweir pControl = ((SwTokenWindow*)this)->aControlList.Next();
3853cdf0e10cSrcweir }
3854cdf0e10cSrcweir return bRet;
3855cdf0e10cSrcweir }
3856cdf0e10cSrcweir //---------------------------------------------------
CreateQuickHelp(Control * pCtrl,const SwFormToken & rToken,const HelpEvent & rHEvt)3857cdf0e10cSrcweir sal_Bool SwTokenWindow::CreateQuickHelp(Control* pCtrl,
3858cdf0e10cSrcweir const SwFormToken& rToken,
3859cdf0e10cSrcweir const HelpEvent& rHEvt)
3860cdf0e10cSrcweir {
3861cdf0e10cSrcweir sal_Bool bRet = sal_False;
3862cdf0e10cSrcweir if( rHEvt.GetMode() & HELPMODE_QUICK )
3863cdf0e10cSrcweir {
3864cdf0e10cSrcweir sal_Bool bBalloon = Help::IsBalloonHelpEnabled();
3865cdf0e10cSrcweir String sEntry;
3866cdf0e10cSrcweir if(bBalloon || rToken.eTokenType != TOKEN_AUTHORITY)
3867cdf0e10cSrcweir sEntry = (aButtonHelpTexts[rToken.eTokenType]);
3868cdf0e10cSrcweir if(rToken.eTokenType == TOKEN_AUTHORITY )
3869cdf0e10cSrcweir {
3870cdf0e10cSrcweir sEntry += SwAuthorityFieldType::GetAuthFieldName(
3871cdf0e10cSrcweir (ToxAuthorityField) rToken.nAuthorityField);
3872cdf0e10cSrcweir }
3873cdf0e10cSrcweir
3874cdf0e10cSrcweir Point aPos = OutputToScreenPixel(pCtrl->GetPosPixel());
3875cdf0e10cSrcweir Rectangle aItemRect( aPos, pCtrl->GetSizePixel() );
3876cdf0e10cSrcweir if(rToken.eTokenType == TOKEN_TAB_STOP )
3877cdf0e10cSrcweir {
3878cdf0e10cSrcweir // sEntry += '\n';
3879cdf0e10cSrcweir // sEntry += rToken.nTabStopPosition;
3880cdf0e10cSrcweir }
3881cdf0e10cSrcweir else
3882cdf0e10cSrcweir {
3883cdf0e10cSrcweir if(rToken.sCharStyleName.Len())
3884cdf0e10cSrcweir {
3885cdf0e10cSrcweir if(bBalloon)
3886cdf0e10cSrcweir sEntry += '\n';
3887cdf0e10cSrcweir else
3888cdf0e10cSrcweir sEntry += ' ';
3889cdf0e10cSrcweir sEntry += sCharStyle;
3890cdf0e10cSrcweir sEntry += rToken.sCharStyleName;
3891cdf0e10cSrcweir }
3892cdf0e10cSrcweir }
3893cdf0e10cSrcweir if(bBalloon)
3894cdf0e10cSrcweir {
3895cdf0e10cSrcweir Help::ShowBalloon( this, aPos, aItemRect, sEntry );
3896cdf0e10cSrcweir }
3897cdf0e10cSrcweir else
3898cdf0e10cSrcweir Help::ShowQuickHelp( this, aItemRect, sEntry,
3899cdf0e10cSrcweir QUICKHELP_LEFT|QUICKHELP_VCENTER );
3900cdf0e10cSrcweir bRet = sal_True;
3901cdf0e10cSrcweir }
3902cdf0e10cSrcweir return bRet;
3903cdf0e10cSrcweir }
3904cdf0e10cSrcweir /* -----------------------------14.01.00 12:22--------------------------------
3905cdf0e10cSrcweir
3906cdf0e10cSrcweir ---------------------------------------------------------------------------*/
Resize()3907cdf0e10cSrcweir void SwTokenWindow::Resize()
3908cdf0e10cSrcweir {
3909cdf0e10cSrcweir Size aCompleteSize(GetOutputSizePixel());
3910cdf0e10cSrcweir
3911cdf0e10cSrcweir Point aRightPos(aRightScrollWin.GetPosPixel());
3912cdf0e10cSrcweir Size aRightSize(aRightScrollWin.GetSizePixel());
3913cdf0e10cSrcweir
3914cdf0e10cSrcweir Size aMiddleSize(aCtrlParentWin.GetSizePixel());
3915cdf0e10cSrcweir
3916cdf0e10cSrcweir long nMove = aCompleteSize.Width() - aRightSize.Width() - aRightPos.X();
3917cdf0e10cSrcweir
3918cdf0e10cSrcweir aRightPos.X() += nMove;
3919cdf0e10cSrcweir aRightScrollWin.SetPosPixel(aRightPos);
3920cdf0e10cSrcweir aMiddleSize.Width() += nMove;
3921cdf0e10cSrcweir aCtrlParentWin.SetSizePixel(aMiddleSize);
3922cdf0e10cSrcweir }
3923cdf0e10cSrcweir
3924cdf0e10cSrcweir /* -----------------16.06.99 15:23-------------------
3925cdf0e10cSrcweir
3926cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTokenWindow,EditResize,Edit *,pEdit)3927cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, EditResize, Edit*, pEdit)
3928cdf0e10cSrcweir {
3929cdf0e10cSrcweir ((SwTOXEdit*)pEdit)->AdjustSize();
3930cdf0e10cSrcweir AdjustPositions();
3931cdf0e10cSrcweir if(aModifyHdl.IsSet())
3932cdf0e10cSrcweir aModifyHdl.Call(0);
3933cdf0e10cSrcweir return 0;
3934cdf0e10cSrcweir }
3935cdf0e10cSrcweir /* -----------------16.06.99 15:56-------------------
3936cdf0e10cSrcweir
3937cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTokenWindow,NextItemHdl,SwTOXEdit *,pEdit)3938cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, NextItemHdl, SwTOXEdit*, pEdit)
3939cdf0e10cSrcweir {
3940cdf0e10cSrcweir sal_uInt16 nPos = (sal_uInt16)aControlList.GetPos(pEdit);
3941cdf0e10cSrcweir if( (nPos && !pEdit->IsNextControl()) ||
3942cdf0e10cSrcweir (nPos < aControlList.Count() - 1 && pEdit->IsNextControl()))
3943cdf0e10cSrcweir {
3944cdf0e10cSrcweir aControlList.Seek(nPos);
3945cdf0e10cSrcweir Control* pNextPrev = pEdit->IsNextControl() ? aControlList.Next() : aControlList.Prev();
3946cdf0e10cSrcweir nPos += pEdit->IsNextControl() ? 1 : -1;
3947cdf0e10cSrcweir pNextPrev->GrabFocus();
3948cdf0e10cSrcweir ((SwTOXButton*)pNextPrev)->Check();
3949cdf0e10cSrcweir AdjustScrolling();
3950cdf0e10cSrcweir }
3951cdf0e10cSrcweir return 0;
3952cdf0e10cSrcweir }
3953cdf0e10cSrcweir /* -----------------17.06.99 08:58-------------------
3954cdf0e10cSrcweir
3955cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTokenWindow,TbxFocusHdl,SwTOXEdit *,pEdit)3956cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, TbxFocusHdl, SwTOXEdit*, pEdit)
3957cdf0e10cSrcweir {
3958cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aControlList.Count(); i++)
3959cdf0e10cSrcweir {
3960cdf0e10cSrcweir Control* pControl = aControlList.First();
3961cdf0e10cSrcweir while(pControl)
3962cdf0e10cSrcweir {
3963cdf0e10cSrcweir if(WINDOW_EDIT != pControl->GetType() )
3964cdf0e10cSrcweir ((SwTOXButton*)pControl)->Check(sal_False);
3965cdf0e10cSrcweir pControl = aControlList.Next();
3966cdf0e10cSrcweir }
3967cdf0e10cSrcweir }
3968cdf0e10cSrcweir SetActiveControl(pEdit);
3969cdf0e10cSrcweir return 0;
3970cdf0e10cSrcweir }
3971cdf0e10cSrcweir /* -----------------17.06.99 10:05-------------------
3972cdf0e10cSrcweir
3973cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTokenWindow,NextItemBtnHdl,SwTOXButton *,pBtn)3974cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, NextItemBtnHdl, SwTOXButton*, pBtn )
3975cdf0e10cSrcweir {
3976cdf0e10cSrcweir sal_uInt16 nPos = (sal_uInt16)aControlList.GetPos(pBtn);
3977cdf0e10cSrcweir if( (nPos && !pBtn->IsNextControl()) ||
3978cdf0e10cSrcweir (nPos < aControlList.Count() - 1 && pBtn->IsNextControl()))
3979cdf0e10cSrcweir {
3980cdf0e10cSrcweir aControlList.Seek(nPos);
3981cdf0e10cSrcweir sal_Bool bNext = pBtn->IsNextControl();
3982cdf0e10cSrcweir Control* pNextPrev = bNext ? aControlList.Next() : aControlList.Prev();
3983cdf0e10cSrcweir pNextPrev->GrabFocus();
3984cdf0e10cSrcweir Selection aSel(0, 0);
3985cdf0e10cSrcweir if(!bNext)
3986cdf0e10cSrcweir {
3987cdf0e10cSrcweir sal_uInt16 nLen = ((SwTOXEdit*)pNextPrev)->GetText().Len();
3988cdf0e10cSrcweir aSel.A() = nLen;
3989cdf0e10cSrcweir aSel.B() = nLen;
3990cdf0e10cSrcweir }
3991cdf0e10cSrcweir ((SwTOXEdit*)pNextPrev)->SetSelection(aSel);
3992cdf0e10cSrcweir pBtn->Check(sal_False);
3993cdf0e10cSrcweir AdjustScrolling();
3994cdf0e10cSrcweir }
3995cdf0e10cSrcweir return 0;
3996cdf0e10cSrcweir }
3997cdf0e10cSrcweir
3998cdf0e10cSrcweir /* -----------------17.06.99 10:04-------------------
3999cdf0e10cSrcweir
4000cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwTokenWindow,TbxFocusBtnHdl,SwTOXButton *,pBtn)4001cdf0e10cSrcweir IMPL_LINK(SwTokenWindow, TbxFocusBtnHdl, SwTOXButton*, pBtn )
4002cdf0e10cSrcweir {
4003cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aControlList.Count(); i++)
4004cdf0e10cSrcweir {
4005cdf0e10cSrcweir Control* pControl = aControlList.First();
4006cdf0e10cSrcweir while(pControl)
4007cdf0e10cSrcweir {
4008cdf0e10cSrcweir if(WINDOW_EDIT != pControl->GetType() )
4009cdf0e10cSrcweir ((SwTOXButton*)pControl)->Check(pBtn == pControl);
4010cdf0e10cSrcweir pControl = aControlList.Next();
4011cdf0e10cSrcweir }
4012cdf0e10cSrcweir }
4013cdf0e10cSrcweir SetActiveControl(pBtn);
4014cdf0e10cSrcweir return 0;
4015cdf0e10cSrcweir }
4016cdf0e10cSrcweir /* -----------------------------28.01.2002 12:22------------------------------
4017cdf0e10cSrcweir
4018cdf0e10cSrcweir ---------------------------------------------------------------------------*/
GetFocus()4019cdf0e10cSrcweir void SwTokenWindow::GetFocus()
4020cdf0e10cSrcweir {
4021cdf0e10cSrcweir if(GETFOCUS_TAB & GetGetFocusFlags())
4022cdf0e10cSrcweir {
4023cdf0e10cSrcweir Control* pFirst = aControlList.First();
4024cdf0e10cSrcweir if(pFirst)
4025cdf0e10cSrcweir {
4026cdf0e10cSrcweir pFirst->GrabFocus();
4027cdf0e10cSrcweir SetActiveControl(pFirst);
4028cdf0e10cSrcweir AdjustScrolling();
4029cdf0e10cSrcweir }
4030cdf0e10cSrcweir }
4031cdf0e10cSrcweir }
SetFocus2theAllBtn()4032ca62e2c2SSteve Yin void SwTokenWindow::SetFocus2theAllBtn()
4033ca62e2c2SSteve Yin {
4034ca62e2c2SSteve Yin if (m_pParent)
4035ca62e2c2SSteve Yin {
4036ca62e2c2SSteve Yin m_pParent->SetFocus2theAllBtn();
4037ca62e2c2SSteve Yin }
4038ca62e2c2SSteve Yin }
GetControlIndex(FormTokenType eType,const Control *) const4039*4aeddfd8SPavel Janík sal_uInt32 SwTokenWindow::GetControlIndex(FormTokenType eType, const Control* /* pCurControl */) const
4040ca62e2c2SSteve Yin {
4041ca62e2c2SSteve Yin //there are only one entry-text button and only one page-number button,
4042ca62e2c2SSteve Yin //so we need not add index for these two buttons.
4043ca62e2c2SSteve Yin if ( eType == TOKEN_ENTRY_TEXT || eType == TOKEN_PAGE_NUMS )
4044ca62e2c2SSteve Yin {
4045ca62e2c2SSteve Yin return 0;
4046ca62e2c2SSteve Yin }
4047ca62e2c2SSteve Yin
4048ca62e2c2SSteve Yin sal_uInt32 nIndex = 0;
4049ca62e2c2SSteve Yin const Control* pControl = ((SwTokenWindow*)this)->aControlList.First();
4050ca62e2c2SSteve Yin while(pControl)
4051ca62e2c2SSteve Yin {
4052ca62e2c2SSteve Yin const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
4053ca62e2c2SSteve Yin ? ((SwTOXEdit*)pControl)->GetFormToken()
4054ca62e2c2SSteve Yin : ((SwTOXButton*)pControl)->GetFormToken();
4055ca62e2c2SSteve Yin
4056ca62e2c2SSteve Yin if(eType == rNewToken.eTokenType)
4057ca62e2c2SSteve Yin {
4058ca62e2c2SSteve Yin nIndex++;
4059ca62e2c2SSteve Yin }
4060ca62e2c2SSteve Yin pControl = ((SwTokenWindow*)this)->aControlList.Next();
4061ca62e2c2SSteve Yin }
4062ca62e2c2SSteve Yin
4063ca62e2c2SSteve Yin return nIndex;
4064ca62e2c2SSteve Yin }
4065cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4066cdf0e10cSrcweir *
4067cdf0e10cSrcweir * --------------------------------------------------*/
SwTOXStylesTabPage(Window * pParent,const SfxItemSet & rAttrSet)4068cdf0e10cSrcweir SwTOXStylesTabPage::SwTOXStylesTabPage(Window* pParent, const SfxItemSet& rAttrSet ) :
4069cdf0e10cSrcweir SfxTabPage(pParent, SW_RES(TP_TOX_STYLES), rAttrSet),
4070cdf0e10cSrcweir aFormatFL(this, SW_RES(FL_FORMAT )),
4071cdf0e10cSrcweir aLevelFT2(this, SW_RES(FT_LEVEL )),
4072cdf0e10cSrcweir aLevelLB(this, SW_RES(LB_LEVEL )),
4073cdf0e10cSrcweir aAssignBT(this, SW_RES(BT_ASSIGN )),
4074cdf0e10cSrcweir aTemplateFT(this, SW_RES(FT_TEMPLATE)),
4075cdf0e10cSrcweir aParaLayLB(this, SW_RES(LB_PARALAY )),
4076cdf0e10cSrcweir aStdBT(this, SW_RES(BT_STD )),
4077cdf0e10cSrcweir aEditStyleBT(this, SW_RES(BT_EDIT_STYLE )),
4078cdf0e10cSrcweir m_pCurrentForm(0)
4079cdf0e10cSrcweir {
4080cdf0e10cSrcweir FreeResource();
4081cdf0e10cSrcweir
4082cdf0e10cSrcweir SetExchangeSupport( sal_True );
4083cdf0e10cSrcweir
4084cdf0e10cSrcweir aAssignBT.SetModeImage( Image( SW_RES( IMG_ONE_LEFT_HC ) ), BMP_COLOR_HIGHCONTRAST );
4085cdf0e10cSrcweir
4086cdf0e10cSrcweir aEditStyleBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, EditStyleHdl));
4087cdf0e10cSrcweir aAssignBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, AssignHdl));
4088cdf0e10cSrcweir aStdBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, StdHdl));
4089cdf0e10cSrcweir aParaLayLB.SetSelectHdl (LINK( this, SwTOXStylesTabPage, EnableSelectHdl));
4090cdf0e10cSrcweir aLevelLB.SetSelectHdl (LINK( this, SwTOXStylesTabPage, EnableSelectHdl));
4091cdf0e10cSrcweir aParaLayLB.SetDoubleClickHdl(LINK( this, SwTOXStylesTabPage, DoubleClickHdl));
4092cdf0e10cSrcweir
4093cdf0e10cSrcweir aStdBT.SetAccessibleRelationMemberOf(&aFormatFL);
4094cdf0e10cSrcweir aAssignBT.SetAccessibleRelationMemberOf(&aFormatFL);
4095cdf0e10cSrcweir aEditStyleBT.SetAccessibleRelationMemberOf(&aFormatFL);
4096cdf0e10cSrcweir
4097cdf0e10cSrcweir }
4098cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4099cdf0e10cSrcweir *
4100cdf0e10cSrcweir * --------------------------------------------------*/
~SwTOXStylesTabPage()4101cdf0e10cSrcweir SwTOXStylesTabPage::~SwTOXStylesTabPage()
4102cdf0e10cSrcweir {
4103cdf0e10cSrcweir delete m_pCurrentForm;
4104cdf0e10cSrcweir }
4105cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4106cdf0e10cSrcweir *
4107cdf0e10cSrcweir * --------------------------------------------------*/
FillItemSet(SfxItemSet &)4108cdf0e10cSrcweir sal_Bool SwTOXStylesTabPage::FillItemSet( SfxItemSet& )
4109cdf0e10cSrcweir {
4110cdf0e10cSrcweir return sal_True;
4111cdf0e10cSrcweir }
4112cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4113cdf0e10cSrcweir *
4114cdf0e10cSrcweir * --------------------------------------------------*/
Reset(const SfxItemSet & rSet)4115cdf0e10cSrcweir void SwTOXStylesTabPage::Reset( const SfxItemSet& rSet )
4116cdf0e10cSrcweir {
4117cdf0e10cSrcweir ActivatePage(rSet);
4118cdf0e10cSrcweir }
4119cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4120cdf0e10cSrcweir *
4121cdf0e10cSrcweir * --------------------------------------------------*/
ActivatePage(const SfxItemSet &)4122cdf0e10cSrcweir void SwTOXStylesTabPage::ActivatePage( const SfxItemSet& )
4123cdf0e10cSrcweir {
4124cdf0e10cSrcweir m_pCurrentForm = new SwForm(GetForm());
4125cdf0e10cSrcweir aParaLayLB.Clear();
4126cdf0e10cSrcweir aLevelLB.Clear();
4127cdf0e10cSrcweir
4128cdf0e10cSrcweir // kein Hyperlink fuer Benutzerverzeichnisse
4129cdf0e10cSrcweir
4130cdf0e10cSrcweir sal_uInt16 i, nSize = m_pCurrentForm->GetFormMax();
4131cdf0e10cSrcweir
4132cdf0e10cSrcweir // form-Pattern anzeigen ohne Titel
4133cdf0e10cSrcweir
4134cdf0e10cSrcweir //1. TemplateEntry anzeigen
4135cdf0e10cSrcweir String aStr( SW_RES( STR_TITLE ));
4136cdf0e10cSrcweir if( m_pCurrentForm->GetTemplate( 0 ).Len() )
4137cdf0e10cSrcweir {
4138cdf0e10cSrcweir aStr += ' ';
4139cdf0e10cSrcweir aStr += aDeliStart;
4140cdf0e10cSrcweir aStr += m_pCurrentForm->GetTemplate( 0 );
4141cdf0e10cSrcweir aStr += aDeliEnd;
4142cdf0e10cSrcweir }
4143cdf0e10cSrcweir aLevelLB.InsertEntry(aStr);
4144cdf0e10cSrcweir
4145cdf0e10cSrcweir for( i=1; i < nSize; ++i )
4146cdf0e10cSrcweir {
4147cdf0e10cSrcweir if( TOX_INDEX == m_pCurrentForm->GetTOXType() &&
4148cdf0e10cSrcweir FORM_ALPHA_DELIMITTER == i )
4149cdf0e10cSrcweir aStr = SW_RESSTR(STR_ALPHA);
4150cdf0e10cSrcweir else
4151cdf0e10cSrcweir {
4152cdf0e10cSrcweir aStr = SW_RESSTR(STR_LEVEL);
4153cdf0e10cSrcweir aStr += String::CreateFromInt32(
4154cdf0e10cSrcweir TOX_INDEX == m_pCurrentForm->GetTOXType() ? i - 1 : i );
4155cdf0e10cSrcweir }
4156cdf0e10cSrcweir String aCpy( aStr );
4157cdf0e10cSrcweir
4158cdf0e10cSrcweir if( m_pCurrentForm->GetTemplate( i ).Len() )
4159cdf0e10cSrcweir {
4160cdf0e10cSrcweir aCpy += ' ';
4161cdf0e10cSrcweir aCpy += aDeliStart;
4162cdf0e10cSrcweir aCpy += m_pCurrentForm->GetTemplate( i );
4163cdf0e10cSrcweir aCpy += aDeliEnd;
4164cdf0e10cSrcweir }
4165cdf0e10cSrcweir aLevelLB.InsertEntry( aCpy );
4166cdf0e10cSrcweir }
4167cdf0e10cSrcweir
4168cdf0e10cSrcweir // Templates initialisieren
4169cdf0e10cSrcweir const SwTxtFmtColl *pColl;
4170cdf0e10cSrcweir SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
4171cdf0e10cSrcweir const sal_uInt16 nSz = rSh.GetTxtFmtCollCount();
4172cdf0e10cSrcweir
4173cdf0e10cSrcweir for( i = 0; i < nSz; ++i )
4174cdf0e10cSrcweir if( !(pColl = &rSh.GetTxtFmtColl( i ))->IsDefault() )
4175cdf0e10cSrcweir aParaLayLB.InsertEntry( pColl->GetName() );
4176cdf0e10cSrcweir
4177cdf0e10cSrcweir // Pool-Collections abfragen und fuer das Verzeichnis setzen
4178cdf0e10cSrcweir for( i = 0; i < m_pCurrentForm->GetFormMax(); ++i )
4179cdf0e10cSrcweir {
4180cdf0e10cSrcweir aStr = m_pCurrentForm->GetTemplate( i );
4181cdf0e10cSrcweir if( aStr.Len() &&
4182cdf0e10cSrcweir LISTBOX_ENTRY_NOTFOUND == aParaLayLB.GetEntryPos( aStr ))
4183cdf0e10cSrcweir aParaLayLB.InsertEntry( aStr );
4184cdf0e10cSrcweir }
4185cdf0e10cSrcweir
4186cdf0e10cSrcweir EnableSelectHdl(&aParaLayLB);
4187cdf0e10cSrcweir }
4188cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4189cdf0e10cSrcweir *
4190cdf0e10cSrcweir * --------------------------------------------------*/
DeactivatePage(SfxItemSet *)4191cdf0e10cSrcweir int SwTOXStylesTabPage::DeactivatePage( SfxItemSet* /*pSet*/ )
4192cdf0e10cSrcweir {
4193cdf0e10cSrcweir GetForm() = *m_pCurrentForm;
4194cdf0e10cSrcweir return LEAVE_PAGE;
4195cdf0e10cSrcweir }
4196cdf0e10cSrcweir
4197cdf0e10cSrcweir /* -----------------25.03.99 15:17-------------------
4198cdf0e10cSrcweir *
4199cdf0e10cSrcweir * --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)4200cdf0e10cSrcweir SfxTabPage* SwTOXStylesTabPage::Create( Window* pParent,
4201cdf0e10cSrcweir const SfxItemSet& rAttrSet)
4202cdf0e10cSrcweir {
4203cdf0e10cSrcweir return new SwTOXStylesTabPage(pParent, rAttrSet);
4204cdf0e10cSrcweir }
4205cdf0e10cSrcweir /* -----------------26.03.99 12:47-------------------
4206cdf0e10cSrcweir *
4207cdf0e10cSrcweir * --------------------------------------------------*/
IMPL_LINK(SwTOXStylesTabPage,EditStyleHdl,Button *,pBtn)4208cdf0e10cSrcweir IMPL_LINK( SwTOXStylesTabPage, EditStyleHdl, Button *, pBtn )
4209cdf0e10cSrcweir {
4210cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND != aParaLayLB.GetSelectEntryPos())
4211cdf0e10cSrcweir {
4212cdf0e10cSrcweir SfxStringItem aStyle(SID_STYLE_EDIT, aParaLayLB.GetSelectEntry());
4213cdf0e10cSrcweir SfxUInt16Item aFamily(SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA);
4214cdf0e10cSrcweir // SwPtrItem aShell(FN_PARAM_WRTSHELL, pWrtShell);
4215cdf0e10cSrcweir Window* pDefDlgParent = Application::GetDefDialogParent();
4216cdf0e10cSrcweir Application::SetDefDialogParent( pBtn );
4217cdf0e10cSrcweir SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
4218cdf0e10cSrcweir rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(
4219cdf0e10cSrcweir SID_STYLE_EDIT, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_MODAL,
4220cdf0e10cSrcweir &aStyle, &aFamily/*, &aShell*/, 0L);
4221cdf0e10cSrcweir Application::SetDefDialogParent( pDefDlgParent );
4222cdf0e10cSrcweir }
4223cdf0e10cSrcweir return 0;
4224cdf0e10cSrcweir }
4225cdf0e10cSrcweir /*--------------------------------------------------------------------
4226cdf0e10cSrcweir Beschreibung: Vorlagen zuweisen
4227cdf0e10cSrcweir --------------------------------------------------------------------*/
IMPL_LINK(SwTOXStylesTabPage,AssignHdl,Button *,EMPTYARG)4228cdf0e10cSrcweir IMPL_LINK( SwTOXStylesTabPage, AssignHdl, Button *, EMPTYARG )
4229cdf0e10cSrcweir {
4230cdf0e10cSrcweir sal_uInt16 nLevPos = aLevelLB.GetSelectEntryPos();
4231cdf0e10cSrcweir sal_uInt16 nTemplPos = aParaLayLB.GetSelectEntryPos();
4232cdf0e10cSrcweir if(nLevPos != LISTBOX_ENTRY_NOTFOUND &&
4233cdf0e10cSrcweir nTemplPos != LISTBOX_ENTRY_NOTFOUND)
4234cdf0e10cSrcweir {
4235cdf0e10cSrcweir String aStr(aLevelLB.GetEntry(nLevPos));
4236cdf0e10cSrcweir sal_uInt16 nDelPos = aStr.Search(aDeliStart);
4237cdf0e10cSrcweir if(nDelPos != STRING_NOTFOUND)
4238cdf0e10cSrcweir aStr.Erase(nDelPos-1);
4239cdf0e10cSrcweir aStr += ' ';
4240cdf0e10cSrcweir aStr += aDeliStart;
4241cdf0e10cSrcweir aStr += aParaLayLB.GetSelectEntry();
4242cdf0e10cSrcweir
4243cdf0e10cSrcweir m_pCurrentForm->SetTemplate(nLevPos, aParaLayLB.GetSelectEntry());
4244cdf0e10cSrcweir
4245cdf0e10cSrcweir aStr += aDeliEnd;
4246cdf0e10cSrcweir
4247cdf0e10cSrcweir aLevelLB.RemoveEntry(nLevPos);
4248cdf0e10cSrcweir aLevelLB.InsertEntry(aStr, nLevPos);
4249cdf0e10cSrcweir aLevelLB.SelectEntry(aStr);
4250cdf0e10cSrcweir ModifyHdl(0);
4251cdf0e10cSrcweir }
4252cdf0e10cSrcweir return 0;
4253cdf0e10cSrcweir }
4254cdf0e10cSrcweir /* -----------------26.03.99 09:10-------------------
4255cdf0e10cSrcweir *
4256cdf0e10cSrcweir * --------------------------------------------------*/
IMPL_LINK(SwTOXStylesTabPage,StdHdl,Button *,EMPTYARG)4257cdf0e10cSrcweir IMPL_LINK( SwTOXStylesTabPage, StdHdl, Button *, EMPTYARG )
4258cdf0e10cSrcweir {
4259cdf0e10cSrcweir sal_uInt16 nPos = aLevelLB.GetSelectEntryPos();
4260cdf0e10cSrcweir if(nPos != LISTBOX_ENTRY_NOTFOUND)
4261cdf0e10cSrcweir { String aStr(aLevelLB.GetEntry(nPos));
4262cdf0e10cSrcweir sal_uInt16 nDelPos = aStr.Search(aDeliStart);
4263cdf0e10cSrcweir if(nDelPos != STRING_NOTFOUND)
4264cdf0e10cSrcweir aStr.Erase(nDelPos-1);
4265cdf0e10cSrcweir aLevelLB.RemoveEntry(nPos);
4266cdf0e10cSrcweir aLevelLB.InsertEntry(aStr, nPos);
4267cdf0e10cSrcweir aLevelLB.SelectEntry(aStr);
4268cdf0e10cSrcweir m_pCurrentForm->SetTemplate(nPos, aEmptyStr);
4269cdf0e10cSrcweir ModifyHdl(0);
4270cdf0e10cSrcweir }
4271cdf0e10cSrcweir return 0;
4272cdf0e10cSrcweir }
4273cdf0e10cSrcweir /* -----------------26.03.99 09:11-------------------
4274cdf0e10cSrcweir *
4275cdf0e10cSrcweir * --------------------------------------------------*/
IMPL_LINK_INLINE_START(SwTOXStylesTabPage,DoubleClickHdl,Button *,EMPTYARG)4276cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwTOXStylesTabPage, DoubleClickHdl, Button *, EMPTYARG )
4277cdf0e10cSrcweir {
4278cdf0e10cSrcweir String aTmpName( aParaLayLB.GetSelectEntry() );
4279cdf0e10cSrcweir SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
4280cdf0e10cSrcweir
4281cdf0e10cSrcweir if(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND &&
4282cdf0e10cSrcweir (aLevelLB.GetSelectEntryPos() == 0 || SwMultiTOXTabDialog::IsNoNum(rSh, aTmpName)))
4283cdf0e10cSrcweir AssignHdl(&aAssignBT);
4284cdf0e10cSrcweir return 0;
4285cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SwTOXStylesTabPage,DoubleClickHdl,Button *,EMPTYARG)4286cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwTOXStylesTabPage, DoubleClickHdl, Button *, EMPTYARG )
4287cdf0e10cSrcweir /*--------------------------------------------------------------------
4288cdf0e10cSrcweir Beschreibung: nur wenn selektiert enable
4289cdf0e10cSrcweir --------------------------------------------------------------------*/
4290cdf0e10cSrcweir IMPL_LINK( SwTOXStylesTabPage, EnableSelectHdl, ListBox *, EMPTYARG )
4291cdf0e10cSrcweir {
4292cdf0e10cSrcweir //UpdatePattern();
4293cdf0e10cSrcweir aStdBT.Enable(aLevelLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND);
4294cdf0e10cSrcweir
4295cdf0e10cSrcweir SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
4296cdf0e10cSrcweir String aTmpName(aParaLayLB.GetSelectEntry());
4297cdf0e10cSrcweir aAssignBT.Enable(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND &&
4298cdf0e10cSrcweir LISTBOX_ENTRY_NOTFOUND != aLevelLB.GetSelectEntryPos() &&
4299cdf0e10cSrcweir (aLevelLB.GetSelectEntryPos() == 0 || SwMultiTOXTabDialog::IsNoNum(rSh, aTmpName)));
4300cdf0e10cSrcweir aEditStyleBT.Enable(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND );
4301cdf0e10cSrcweir return 0;
4302cdf0e10cSrcweir }
4303cdf0e10cSrcweir /* -----------------------------18.01.00 16:54--------------------------------
4304cdf0e10cSrcweir
4305cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwTOXStylesTabPage,ModifyHdl,void *,EMPTYARG)4306cdf0e10cSrcweir IMPL_LINK(SwTOXStylesTabPage, ModifyHdl, void*, EMPTYARG)
4307cdf0e10cSrcweir {
4308cdf0e10cSrcweir SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
4309cdf0e10cSrcweir if(pTOXDlg)
4310cdf0e10cSrcweir {
4311cdf0e10cSrcweir GetForm() = *m_pCurrentForm;
4312cdf0e10cSrcweir pTOXDlg->CreateOrUpdateExample(pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_STYLES);
4313cdf0e10cSrcweir }
4314cdf0e10cSrcweir return 0;
4315cdf0e10cSrcweir }
4316cdf0e10cSrcweir /******************************************************************************
4317cdf0e10cSrcweir
4318cdf0e10cSrcweir ******************************************************************************/
4319cdf0e10cSrcweir #define ITEM_SEARCH 1
4320cdf0e10cSrcweir #define ITEM_ALTERNATIVE 2
4321cdf0e10cSrcweir #define ITEM_PRIM_KEY 3
4322cdf0e10cSrcweir #define ITEM_SEC_KEY 4
4323cdf0e10cSrcweir #define ITEM_COMMENT 5
4324cdf0e10cSrcweir #define ITEM_CASE 6
4325cdf0e10cSrcweir #define ITEM_WORDONLY 7
4326cdf0e10cSrcweir
4327cdf0e10cSrcweir
SwEntryBrowseBox(Window * pParent,const ResId & rId,BrowserMode nMode)4328cdf0e10cSrcweir SwEntryBrowseBox::SwEntryBrowseBox(Window* pParent, const ResId& rId,
4329cdf0e10cSrcweir BrowserMode nMode ) :
4330cdf0e10cSrcweir SwEntryBrowseBox_Base( pParent, rId, nMode,
4331cdf0e10cSrcweir BROWSER_KEEPSELECTION |
4332cdf0e10cSrcweir BROWSER_COLUMNSELECTION |
4333cdf0e10cSrcweir BROWSER_MULTISELECTION |
4334cdf0e10cSrcweir BROWSER_TRACKING_TIPS |
4335cdf0e10cSrcweir BROWSER_HLINESFULL |
4336cdf0e10cSrcweir BROWSER_VLINESFULL |
4337cdf0e10cSrcweir BROWSER_AUTO_VSCROLL|
4338cdf0e10cSrcweir BROWSER_HIDECURSOR ),
4339cdf0e10cSrcweir aCellEdit(&GetDataWindow(), 0),
4340cdf0e10cSrcweir aCellCheckBox(&GetDataWindow()),
4341cdf0e10cSrcweir
4342cdf0e10cSrcweir sSearch( ResId(ST_SEARCH, *rId.GetResMgr() )),
4343cdf0e10cSrcweir sAlternative( ResId(ST_ALTERNATIVE, *rId.GetResMgr() )),
4344cdf0e10cSrcweir sPrimKey( ResId(ST_PRIMKEY, *rId.GetResMgr() )),
4345cdf0e10cSrcweir sSecKey( ResId(ST_SECKEY, *rId.GetResMgr() )),
4346cdf0e10cSrcweir sComment( ResId(ST_COMMENT, *rId.GetResMgr() )),
4347cdf0e10cSrcweir sCaseSensitive( ResId(ST_CASESENSITIVE, *rId.GetResMgr() )),
4348cdf0e10cSrcweir sWordOnly( ResId(ST_WORDONLY, *rId.GetResMgr() )),
4349cdf0e10cSrcweir sYes( ResId(ST_TRUE, *rId.GetResMgr() )),
4350cdf0e10cSrcweir sNo( ResId(ST_FALSE, *rId.GetResMgr() )),
4351cdf0e10cSrcweir bModified(sal_False)
4352cdf0e10cSrcweir {
4353cdf0e10cSrcweir FreeResource();
4354cdf0e10cSrcweir aCellCheckBox.GetBox().EnableTriState(sal_False);
4355cdf0e10cSrcweir xController = new ::svt::EditCellController(&aCellEdit);
4356cdf0e10cSrcweir xCheckController = new ::svt::CheckBoxCellController(&aCellCheckBox);
4357cdf0e10cSrcweir
4358cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////
4359cdf0e10cSrcweir // HACK: BrowseBox invalidiert nicht ihre Childs, wie es eigentlich sein sollte.
4360cdf0e10cSrcweir // Deshalb wird WB_CLIPCHILDREN zurueckgesetzt, wodurch das Invalidieren
4361cdf0e10cSrcweir // der Childs erzwungen wird.
4362cdf0e10cSrcweir WinBits aStyle = GetStyle();
4363cdf0e10cSrcweir if( aStyle & WB_CLIPCHILDREN )
4364cdf0e10cSrcweir {
4365cdf0e10cSrcweir aStyle &= ~WB_CLIPCHILDREN;
4366cdf0e10cSrcweir SetStyle( aStyle );
4367cdf0e10cSrcweir }
4368cdf0e10cSrcweir const String* aTitles[7] =
4369cdf0e10cSrcweir {
4370cdf0e10cSrcweir &sSearch,
4371cdf0e10cSrcweir &sAlternative,
4372cdf0e10cSrcweir &sPrimKey,
4373cdf0e10cSrcweir &sSecKey,
4374cdf0e10cSrcweir &sComment,
4375cdf0e10cSrcweir &sCaseSensitive,
4376cdf0e10cSrcweir &sWordOnly
4377cdf0e10cSrcweir };
4378cdf0e10cSrcweir
4379cdf0e10cSrcweir long nWidth = GetSizePixel().Width();
4380cdf0e10cSrcweir nWidth /=7;
4381cdf0e10cSrcweir --nWidth;
4382cdf0e10cSrcweir for(sal_uInt16 i = 1; i < 8; i++)
4383cdf0e10cSrcweir InsertDataColumn( i, *aTitles[i - 1], nWidth,
4384cdf0e10cSrcweir HIB_STDSTYLE, HEADERBAR_APPEND );
4385cdf0e10cSrcweir
4386cdf0e10cSrcweir }
4387cdf0e10cSrcweir /* -----------------------------19.01.00 11:29--------------------------------
4388cdf0e10cSrcweir
4389cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SeekRow(long nRow)4390cdf0e10cSrcweir sal_Bool SwEntryBrowseBox::SeekRow( long nRow )
4391cdf0e10cSrcweir {
4392cdf0e10cSrcweir nCurrentRow = nRow;
4393cdf0e10cSrcweir return sal_True;
4394cdf0e10cSrcweir }
4395cdf0e10cSrcweir /* -----------------------------19.01.00 15:32--------------------------------
4396cdf0e10cSrcweir
4397cdf0e10cSrcweir ---------------------------------------------------------------------------*/
GetCellText(long nRow,sal_uInt16 nColumn) const4398cdf0e10cSrcweir String SwEntryBrowseBox::GetCellText(long nRow, sal_uInt16 nColumn) const
4399cdf0e10cSrcweir {
4400cdf0e10cSrcweir const String* pRet = &aEmptyStr;
4401cdf0e10cSrcweir if(aEntryArr.Count() > nRow)
4402cdf0e10cSrcweir {
4403cdf0e10cSrcweir AutoMarkEntry* pEntry = aEntryArr[ static_cast< sal_uInt16 >(nRow) ];
4404cdf0e10cSrcweir switch(nColumn)
4405cdf0e10cSrcweir {
4406cdf0e10cSrcweir case ITEM_SEARCH :pRet = &pEntry->sSearch; break;
4407cdf0e10cSrcweir case ITEM_ALTERNATIVE :pRet = &pEntry->sAlternative; break;
4408cdf0e10cSrcweir case ITEM_PRIM_KEY :pRet = &pEntry->sPrimKey ; break;
4409cdf0e10cSrcweir case ITEM_SEC_KEY :pRet = &pEntry->sSecKey ; break;
4410cdf0e10cSrcweir case ITEM_COMMENT :pRet = &pEntry->sComment ; break;
4411cdf0e10cSrcweir case ITEM_CASE :pRet = pEntry->bCase ? &sYes : &sNo; break;
4412cdf0e10cSrcweir case ITEM_WORDONLY :pRet = pEntry->bWord ? &sYes : &sNo; break;
4413cdf0e10cSrcweir }
4414cdf0e10cSrcweir }
4415cdf0e10cSrcweir return *pRet;
4416cdf0e10cSrcweir }
4417cdf0e10cSrcweir
4418cdf0e10cSrcweir /* -----------------------------19.01.00 11:29--------------------------------
4419cdf0e10cSrcweir
4420cdf0e10cSrcweir ---------------------------------------------------------------------------*/
PaintCell(OutputDevice & rDev,const Rectangle & rRect,sal_uInt16 nColumnId) const4421cdf0e10cSrcweir void SwEntryBrowseBox::PaintCell(OutputDevice& rDev,
4422cdf0e10cSrcweir const Rectangle& rRect, sal_uInt16 nColumnId) const
4423cdf0e10cSrcweir {
4424cdf0e10cSrcweir String sPaint = GetCellText( nCurrentRow, nColumnId );
4425cdf0e10cSrcweir sal_uInt16 nStyle = TEXT_DRAW_CLIP | TEXT_DRAW_CENTER;
4426cdf0e10cSrcweir rDev.DrawText( rRect, sPaint, nStyle );
4427cdf0e10cSrcweir }
4428cdf0e10cSrcweir /* -----------------------------19.01.00 14:51--------------------------------
4429cdf0e10cSrcweir
4430cdf0e10cSrcweir ---------------------------------------------------------------------------*/
GetController(long,sal_uInt16 nCol)4431cdf0e10cSrcweir ::svt::CellController* SwEntryBrowseBox::GetController(long /*nRow*/, sal_uInt16 nCol)
4432cdf0e10cSrcweir {
4433cdf0e10cSrcweir return nCol < ITEM_CASE ? xController : xCheckController;
4434cdf0e10cSrcweir }
4435cdf0e10cSrcweir /* -----------------------------19.01.00 15:36--------------------------------
4436cdf0e10cSrcweir
4437cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SaveModified()4438cdf0e10cSrcweir sal_Bool SwEntryBrowseBox::SaveModified()
4439cdf0e10cSrcweir {
4440cdf0e10cSrcweir SetModified();
4441cdf0e10cSrcweir sal_uInt16 nRow = static_cast< sal_uInt16 >(GetCurRow());
4442cdf0e10cSrcweir sal_uInt16 nCol = GetCurColumnId();
4443cdf0e10cSrcweir
4444cdf0e10cSrcweir String sNew;
4445cdf0e10cSrcweir sal_Bool bVal = sal_False;
4446cdf0e10cSrcweir ::svt::CellController* pController = 0;
4447cdf0e10cSrcweir if(nCol < ITEM_CASE)
4448cdf0e10cSrcweir {
4449cdf0e10cSrcweir pController = xController;
4450cdf0e10cSrcweir sNew = ((::svt::EditCellController*)pController)->GetEditImplementation()->GetText( LINEEND_LF );
4451cdf0e10cSrcweir }
4452cdf0e10cSrcweir else
4453cdf0e10cSrcweir {
4454cdf0e10cSrcweir pController = xCheckController;
4455cdf0e10cSrcweir bVal = ((::svt::CheckBoxCellController*)pController)->GetCheckBox().IsChecked();
4456cdf0e10cSrcweir }
4457cdf0e10cSrcweir AutoMarkEntry* pEntry = nRow >= aEntryArr.Count() ? new AutoMarkEntry
4458cdf0e10cSrcweir : aEntryArr[nRow];
4459cdf0e10cSrcweir switch(nCol)
4460cdf0e10cSrcweir {
4461cdf0e10cSrcweir case ITEM_SEARCH : pEntry->sSearch = sNew; break;
4462cdf0e10cSrcweir case ITEM_ALTERNATIVE : pEntry->sAlternative = sNew; break;
4463cdf0e10cSrcweir case ITEM_PRIM_KEY : pEntry->sPrimKey = sNew; break;
4464cdf0e10cSrcweir case ITEM_SEC_KEY : pEntry->sSecKey = sNew; break;
4465cdf0e10cSrcweir case ITEM_COMMENT : pEntry->sComment = sNew; break;
4466cdf0e10cSrcweir case ITEM_CASE : pEntry->bCase = bVal; break;
4467cdf0e10cSrcweir case ITEM_WORDONLY : pEntry->bWord = bVal; break;
4468cdf0e10cSrcweir }
4469cdf0e10cSrcweir if(nRow >= aEntryArr.Count())
4470cdf0e10cSrcweir {
4471cdf0e10cSrcweir aEntryArr.Insert( pEntry, aEntryArr.Count() );
4472cdf0e10cSrcweir RowInserted(nRow, 1, sal_True, sal_True);
4473cdf0e10cSrcweir if(nCol < ITEM_WORDONLY)
4474cdf0e10cSrcweir {
4475cdf0e10cSrcweir pController->ClearModified();
4476cdf0e10cSrcweir GoToRow( nRow );
4477cdf0e10cSrcweir }
4478cdf0e10cSrcweir }
4479cdf0e10cSrcweir return sal_True;
4480cdf0e10cSrcweir }
4481cdf0e10cSrcweir /* -----------------------------19.01.00 14:32--------------------------------
4482cdf0e10cSrcweir
4483cdf0e10cSrcweir ---------------------------------------------------------------------------*/
InitController(::svt::CellControllerRef & rController,long nRow,sal_uInt16 nCol)4484cdf0e10cSrcweir void SwEntryBrowseBox::InitController(
4485cdf0e10cSrcweir ::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol)
4486cdf0e10cSrcweir {
4487cdf0e10cSrcweir String rTxt = GetCellText( nRow, nCol );
4488cdf0e10cSrcweir if(nCol < ITEM_CASE)
4489cdf0e10cSrcweir {
4490cdf0e10cSrcweir rController = xController;
4491cdf0e10cSrcweir ::svt::CellController* pController = xController;
4492cdf0e10cSrcweir ((::svt::EditCellController*)pController)->GetEditImplementation()->SetText( rTxt );
4493cdf0e10cSrcweir }
4494cdf0e10cSrcweir else
4495cdf0e10cSrcweir {
4496cdf0e10cSrcweir rController = xCheckController;
4497cdf0e10cSrcweir ::svt::CellController* pController = xCheckController;
4498cdf0e10cSrcweir ((::svt::CheckBoxCellController*)pController)->GetCheckBox().Check(
4499cdf0e10cSrcweir rTxt == sYes );
4500cdf0e10cSrcweir }
4501cdf0e10cSrcweir }
4502cdf0e10cSrcweir /* -----------------------------19.01.00 12:19--------------------------------
4503cdf0e10cSrcweir
4504cdf0e10cSrcweir ---------------------------------------------------------------------------*/
ReadEntries(SvStream & rInStr)4505cdf0e10cSrcweir void SwEntryBrowseBox::ReadEntries(SvStream& rInStr)
4506cdf0e10cSrcweir {
4507cdf0e10cSrcweir AutoMarkEntry* pToInsert = 0;
4508cdf0e10cSrcweir const String sZero('0');
4509cdf0e10cSrcweir rtl_TextEncoding eTEnc = gsl_getSystemTextEncoding();
4510cdf0e10cSrcweir while( !rInStr.GetError() && !rInStr.IsEof() )
4511cdf0e10cSrcweir {
4512cdf0e10cSrcweir String sLine;
4513cdf0e10cSrcweir rInStr.ReadByteStringLine( sLine, eTEnc );
4514cdf0e10cSrcweir
4515cdf0e10cSrcweir // # -> comment
4516cdf0e10cSrcweir // ; -> delimiter between entries ->
4517cdf0e10cSrcweir // Format: TextToSearchFor;AlternativeString;PrimaryKey;SecondaryKey
4518cdf0e10cSrcweir // Leading and trailing blanks are ignored
4519cdf0e10cSrcweir if( sLine.Len() )
4520cdf0e10cSrcweir {
4521cdf0e10cSrcweir //comments are contained in separate lines but are put into the struct of the following data
4522cdf0e10cSrcweir //line (if available)
4523cdf0e10cSrcweir if( '#' != sLine.GetChar(0) )
4524cdf0e10cSrcweir {
4525cdf0e10cSrcweir if( !pToInsert )
4526cdf0e10cSrcweir pToInsert = new AutoMarkEntry;
4527cdf0e10cSrcweir
4528cdf0e10cSrcweir sal_uInt16 nSttPos = 0;
4529cdf0e10cSrcweir pToInsert->sSearch = sLine.GetToken(0, ';', nSttPos );
4530cdf0e10cSrcweir pToInsert->sAlternative = sLine.GetToken(0, ';', nSttPos );
4531cdf0e10cSrcweir pToInsert->sPrimKey = sLine.GetToken(0, ';', nSttPos );
4532cdf0e10cSrcweir pToInsert->sSecKey = sLine.GetToken(0, ';', nSttPos );
4533cdf0e10cSrcweir
4534cdf0e10cSrcweir String sStr = sLine.GetToken(0, ';', nSttPos );
4535cdf0e10cSrcweir pToInsert->bCase = sStr.Len() && sStr != sZero;
4536cdf0e10cSrcweir
4537cdf0e10cSrcweir sStr = sLine.GetToken(0, ';', nSttPos );
4538cdf0e10cSrcweir pToInsert->bWord = sStr.Len() && sStr != sZero;
4539cdf0e10cSrcweir
4540cdf0e10cSrcweir aEntryArr.Insert( pToInsert, aEntryArr.Count() );
4541cdf0e10cSrcweir pToInsert = 0;
4542cdf0e10cSrcweir }
4543cdf0e10cSrcweir else
4544cdf0e10cSrcweir {
4545cdf0e10cSrcweir if(pToInsert)
4546cdf0e10cSrcweir aEntryArr.Insert(pToInsert, aEntryArr.Count());
4547cdf0e10cSrcweir pToInsert = new AutoMarkEntry;
4548cdf0e10cSrcweir pToInsert->sComment = sLine;
4549cdf0e10cSrcweir pToInsert->sComment.Erase(0, 1);
4550cdf0e10cSrcweir }
4551cdf0e10cSrcweir }
4552cdf0e10cSrcweir }
4553cdf0e10cSrcweir if( pToInsert )
4554cdf0e10cSrcweir aEntryArr.Insert(pToInsert, aEntryArr.Count());
4555cdf0e10cSrcweir RowInserted(0, aEntryArr.Count() + 1, sal_True);
4556cdf0e10cSrcweir }
4557cdf0e10cSrcweir /* -----------------------------19.01.00 12:19--------------------------------
4558cdf0e10cSrcweir
4559cdf0e10cSrcweir ---------------------------------------------------------------------------*/
WriteEntries(SvStream & rOutStr)4560cdf0e10cSrcweir void SwEntryBrowseBox::WriteEntries(SvStream& rOutStr)
4561cdf0e10cSrcweir {
4562cdf0e10cSrcweir //check if the current controller is modified
4563cdf0e10cSrcweir sal_uInt16 nCol = GetCurColumnId();
4564cdf0e10cSrcweir ::svt::CellController* pController;
4565cdf0e10cSrcweir if(nCol < ITEM_CASE)
4566cdf0e10cSrcweir pController = xController;
4567cdf0e10cSrcweir else
4568cdf0e10cSrcweir pController = xCheckController;
4569cdf0e10cSrcweir if(pController ->IsModified())
4570cdf0e10cSrcweir GoToColumnId(nCol < ITEM_CASE ? ++nCol : --nCol );
4571cdf0e10cSrcweir
4572cdf0e10cSrcweir rtl_TextEncoding eTEnc = gsl_getSystemTextEncoding();
4573cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aEntryArr.Count();i++)
4574cdf0e10cSrcweir {
4575cdf0e10cSrcweir AutoMarkEntry* pEntry = aEntryArr[i];
4576cdf0e10cSrcweir if(pEntry->sComment.Len())
4577cdf0e10cSrcweir {
4578cdf0e10cSrcweir String sWrite('#');
4579cdf0e10cSrcweir sWrite += pEntry->sComment;
4580cdf0e10cSrcweir rOutStr.WriteByteStringLine( sWrite, eTEnc );
4581cdf0e10cSrcweir }
4582cdf0e10cSrcweir
4583cdf0e10cSrcweir String sWrite( pEntry->sSearch );
4584cdf0e10cSrcweir sWrite += ';';
4585cdf0e10cSrcweir sWrite += pEntry->sAlternative;
4586cdf0e10cSrcweir sWrite += ';';
4587cdf0e10cSrcweir sWrite += pEntry->sPrimKey;
4588cdf0e10cSrcweir sWrite += ';';
4589cdf0e10cSrcweir sWrite += pEntry->sSecKey;
4590cdf0e10cSrcweir sWrite += ';';
4591cdf0e10cSrcweir sWrite += pEntry->bCase ? '1' : '0';
4592cdf0e10cSrcweir sWrite += ';';
4593cdf0e10cSrcweir sWrite += pEntry->bWord ? '1' : '0';
4594cdf0e10cSrcweir
4595cdf0e10cSrcweir if( sWrite.Len() > 5 )
4596cdf0e10cSrcweir rOutStr.WriteByteStringLine( sWrite, eTEnc );
4597cdf0e10cSrcweir }
4598cdf0e10cSrcweir }
4599cdf0e10cSrcweir /* -----------------------------21.01.00 11:49--------------------------------
4600cdf0e10cSrcweir
4601cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IsModified() const4602cdf0e10cSrcweir sal_Bool SwEntryBrowseBox::IsModified()const
4603cdf0e10cSrcweir {
4604cdf0e10cSrcweir if(bModified)
4605cdf0e10cSrcweir return sal_True;
4606cdf0e10cSrcweir
4607cdf0e10cSrcweir
4608cdf0e10cSrcweir //check if the current controller is modified
4609cdf0e10cSrcweir sal_uInt16 nCol = GetCurColumnId();
4610cdf0e10cSrcweir ::svt::CellController* pController;
4611cdf0e10cSrcweir if(nCol < ITEM_CASE)
4612cdf0e10cSrcweir pController = xController;
4613cdf0e10cSrcweir else
4614cdf0e10cSrcweir pController = xCheckController;
4615cdf0e10cSrcweir return pController ->IsModified();
4616cdf0e10cSrcweir }
4617cdf0e10cSrcweir /* -----------------------------19.01.00 11:29--------------------------------
4618cdf0e10cSrcweir
4619cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SwAutoMarkDlg_Impl(Window * pParent,const String & rAutoMarkURL,const String & rAutoMarkType,sal_Bool bCreate)4620cdf0e10cSrcweir SwAutoMarkDlg_Impl::SwAutoMarkDlg_Impl(Window* pParent, const String& rAutoMarkURL,
4621cdf0e10cSrcweir const String& rAutoMarkType, sal_Bool bCreate) :
4622cdf0e10cSrcweir ModalDialog(pParent, SW_RES(DLG_CREATE_AUTOMARK)),
4623cdf0e10cSrcweir aOKPB( this, SW_RES(PB_OK )),
4624cdf0e10cSrcweir aCancelPB( this, SW_RES(PB_CANCEL )),
4625cdf0e10cSrcweir aHelpPB( this, SW_RES(PB_HELP )),
4626cdf0e10cSrcweir aEntriesBB( this, SW_RES(BB_ENTRIES )),
4627cdf0e10cSrcweir aEntriesFL( this, SW_RES(FL_ENTRIES )),
4628cdf0e10cSrcweir sAutoMarkURL(rAutoMarkURL),
4629cdf0e10cSrcweir sAutoMarkType(rAutoMarkType),
4630cdf0e10cSrcweir bCreateMode(bCreate)
4631cdf0e10cSrcweir {
4632cdf0e10cSrcweir FreeResource();
4633cdf0e10cSrcweir aOKPB.SetClickHdl(LINK(this, SwAutoMarkDlg_Impl, OkHdl));
4634cdf0e10cSrcweir
4635cdf0e10cSrcweir String sTitle = GetText();
4636cdf0e10cSrcweir sTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": "));
4637cdf0e10cSrcweir sTitle += sAutoMarkURL;
4638cdf0e10cSrcweir SetText(sTitle);
4639cdf0e10cSrcweir sal_Bool bError = sal_False;
4640cdf0e10cSrcweir if( bCreateMode )
4641cdf0e10cSrcweir aEntriesBB.RowInserted(0, 1, sal_True);
4642cdf0e10cSrcweir else
4643cdf0e10cSrcweir {
4644cdf0e10cSrcweir SfxMedium aMed( sAutoMarkURL, STREAM_STD_READ, sal_False );
4645cdf0e10cSrcweir if( aMed.GetInStream() && !aMed.GetInStream()->GetError() )
4646cdf0e10cSrcweir aEntriesBB.ReadEntries( *aMed.GetInStream() );
4647cdf0e10cSrcweir else
4648cdf0e10cSrcweir bError = sal_True;
4649cdf0e10cSrcweir }
4650cdf0e10cSrcweir
4651cdf0e10cSrcweir if(bError)
4652cdf0e10cSrcweir EndDialog(RET_CANCEL);
4653cdf0e10cSrcweir }
4654cdf0e10cSrcweir /* -----------------------------19.01.00 11:12--------------------------------
4655cdf0e10cSrcweir
4656cdf0e10cSrcweir ---------------------------------------------------------------------------*/
~SwAutoMarkDlg_Impl()4657cdf0e10cSrcweir SwAutoMarkDlg_Impl::~SwAutoMarkDlg_Impl()
4658cdf0e10cSrcweir {
4659cdf0e10cSrcweir }
4660cdf0e10cSrcweir /* -----------------------------19.01.00 16:43--------------------------------
4661cdf0e10cSrcweir
4662cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SwAutoMarkDlg_Impl,OkHdl,OKButton *,EMPTYARG)4663cdf0e10cSrcweir IMPL_LINK(SwAutoMarkDlg_Impl, OkHdl, OKButton*, EMPTYARG)
4664cdf0e10cSrcweir {
4665cdf0e10cSrcweir sal_Bool bError = sal_False;
4666cdf0e10cSrcweir if(aEntriesBB.IsModified() || bCreateMode)
4667cdf0e10cSrcweir {
4668cdf0e10cSrcweir SfxMedium aMed( sAutoMarkURL,
4669cdf0e10cSrcweir bCreateMode ? STREAM_WRITE
4670cdf0e10cSrcweir : STREAM_WRITE| STREAM_TRUNC,
4671cdf0e10cSrcweir sal_False );
4672cdf0e10cSrcweir SvStream* pStrm = aMed.GetOutStream();
4673cdf0e10cSrcweir pStrm->SetStreamCharSet( RTL_TEXTENCODING_MS_1253 );
4674cdf0e10cSrcweir if( !pStrm->GetError() )
4675cdf0e10cSrcweir {
4676cdf0e10cSrcweir aEntriesBB.WriteEntries( *pStrm );
4677cdf0e10cSrcweir aMed.Commit();
4678cdf0e10cSrcweir }
4679cdf0e10cSrcweir else
4680cdf0e10cSrcweir bError = sal_True;
4681cdf0e10cSrcweir }
4682cdf0e10cSrcweir if( !bError )
4683cdf0e10cSrcweir EndDialog(RET_OK);
4684cdf0e10cSrcweir return 0;
4685cdf0e10cSrcweir }
4686cdf0e10cSrcweir
4687