xref: /aoo41x/main/sw/source/ui/misc/outline.cxx (revision efeef26f)
1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*efeef26fSAndrew Rist  * distributed with this work for additional information
6*efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*efeef26fSAndrew Rist  *
11*efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist  *
13*efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*efeef26fSAndrew Rist  * specific language governing permissions and limitations
18*efeef26fSAndrew Rist  * under the License.
19*efeef26fSAndrew Rist  *
20*efeef26fSAndrew Rist  *************************************************************/
21*efeef26fSAndrew Rist 
22*efeef26fSAndrew 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 #include <hintids.hxx>
30cdf0e10cSrcweir #include <tools/shl.hxx>
31cdf0e10cSrcweir #ifndef _MENU_HXX //autogen
32cdf0e10cSrcweir #include <vcl/menu.hxx>
33cdf0e10cSrcweir #endif
34cdf0e10cSrcweir #ifndef _MSGBOX_HXX //autogen
35cdf0e10cSrcweir #include <vcl/msgbox.hxx>
36cdf0e10cSrcweir #endif
37cdf0e10cSrcweir #include <sfx2/tabdlg.hxx>
38cdf0e10cSrcweir #include <editeng/brshitem.hxx>
39cdf0e10cSrcweir #include <unotools/configmgr.hxx>
40cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
41cdf0e10cSrcweir 
42cdf0e10cSrcweir #ifndef _NUM_HXX //autogen
43cdf0e10cSrcweir #define USE_NUMTABPAGES
44cdf0e10cSrcweir #include <num.hxx>
45cdf0e10cSrcweir #endif
46cdf0e10cSrcweir #ifndef _VIEW_HXX
47cdf0e10cSrcweir #include <view.hxx>
48cdf0e10cSrcweir #endif
49cdf0e10cSrcweir #ifndef _DOCSH_HXX
50cdf0e10cSrcweir #include <docsh.hxx>
51cdf0e10cSrcweir #endif
52cdf0e10cSrcweir #include <uitool.hxx>
53cdf0e10cSrcweir #include <errhdl.hxx>
54cdf0e10cSrcweir #include <wrtsh.hxx>
55cdf0e10cSrcweir #include <swmodule.hxx>
56cdf0e10cSrcweir #include <fmtcol.hxx>
57cdf0e10cSrcweir #include <outline.hxx>
58cdf0e10cSrcweir #include <uinums.hxx>
59cdf0e10cSrcweir #include <poolfmt.hxx>
60cdf0e10cSrcweir #include <shellres.hxx>
61cdf0e10cSrcweir #include <svl/style.hxx>
62cdf0e10cSrcweir #include <charfmt.hxx>
63cdf0e10cSrcweir #include <docstyle.hxx>
64cdf0e10cSrcweir #include <viewopt.hxx>
65cdf0e10cSrcweir #include <svtools/ctrlbox.hxx>
66cdf0e10cSrcweir #ifndef _HELPID_H
67cdf0e10cSrcweir #include <helpid.h>
68cdf0e10cSrcweir #endif
69cdf0e10cSrcweir #ifndef _GLOBALS_HRC
70cdf0e10cSrcweir #include <globals.hrc>		// fuer Vorlagenname 'keins'
71cdf0e10cSrcweir #endif
72cdf0e10cSrcweir #ifndef _MISC_HRC
73cdf0e10cSrcweir #include <misc.hrc>
74cdf0e10cSrcweir #endif
75cdf0e10cSrcweir #ifndef _OUTLINE_HRC
76cdf0e10cSrcweir #include <outline.hrc>
77cdf0e10cSrcweir #endif
78cdf0e10cSrcweir #include <paratr.hxx>
79cdf0e10cSrcweir 
80cdf0e10cSrcweir #include <unomid.h>
81cdf0e10cSrcweir 
82cdf0e10cSrcweir #include <IDocumentOutlineNodes.hxx>
83cdf0e10cSrcweir // --> OD 2008-04-14 #outlinelevel#
84cdf0e10cSrcweir #include <app.hrc>
85cdf0e10cSrcweir // <--
86cdf0e10cSrcweir 
87cdf0e10cSrcweir #ifndef _COM_SUN_STAR_ACCESSIBILITY_ACCESSIBLEROLE_HPP_
88cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleRole.hpp>
89cdf0e10cSrcweir #endif
90cdf0e10cSrcweir 
91cdf0e10cSrcweir using namespace ::com::sun::star;
92cdf0e10cSrcweir 
93cdf0e10cSrcweir /* -----------------------------31.01.01 10:23--------------------------------
94cdf0e10cSrcweir 
95cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
96cdf0e10cSrcweir 
97cdf0e10cSrcweir DBG_NAME(outlinehdl)
98cdf0e10cSrcweir 
99cdf0e10cSrcweir /*---------------------------------------------------------------------
100cdf0e10cSrcweir 
101cdf0e10cSrcweir ---------------------------------------------------------------------*/
102cdf0e10cSrcweir 
103cdf0e10cSrcweir class SwNumNamesDlg: public ModalDialog
104cdf0e10cSrcweir {
105cdf0e10cSrcweir     FixedLine    aFormFL;
106cdf0e10cSrcweir 	Edit         aFormEdit;
107cdf0e10cSrcweir 	ListBox      aFormBox;
108cdf0e10cSrcweir 	OKButton     aOKBtn;
109cdf0e10cSrcweir 	CancelButton aCancelBtn;
110cdf0e10cSrcweir 	HelpButton   aHelpBtn;
111cdf0e10cSrcweir 
112cdf0e10cSrcweir 	DECL_LINK( ModifyHdl, Edit * );
113cdf0e10cSrcweir 	DECL_LINK( SelectHdl, ListBox * );
114cdf0e10cSrcweir 	DECL_LINK( DoubleClickHdl, ListBox * );
115cdf0e10cSrcweir 
116cdf0e10cSrcweir public:
117cdf0e10cSrcweir 	SwNumNamesDlg(Window *pParent);
118cdf0e10cSrcweir 	~SwNumNamesDlg();
119cdf0e10cSrcweir 	void SetUserNames(const String *pList[]);
GetName() const120cdf0e10cSrcweir 	String GetName() const { return aFormEdit.GetText(); }
GetCurEntryPos() const121cdf0e10cSrcweir 	sal_uInt16 GetCurEntryPos() const { return aFormBox.GetSelectEntryPos(); }
122cdf0e10cSrcweir };
123cdf0e10cSrcweir 
124cdf0e10cSrcweir /*------------------------------------------------------------------------
125cdf0e10cSrcweir  Beschreibung:  selektierten Eintrag merken
126cdf0e10cSrcweir ------------------------------------------------------------------------*/
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 
IMPL_LINK_INLINE_START(SwNumNamesDlg,SelectHdl,ListBox *,pBox)129cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, SelectHdl, ListBox *, pBox )
130cdf0e10cSrcweir {
131cdf0e10cSrcweir 	aFormEdit.SetText(pBox->GetSelectEntry());
132cdf0e10cSrcweir 	aFormEdit.SetSelection(Selection(0, SELECTION_MAX));
133cdf0e10cSrcweir 	return 0;
134cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SwNumNamesDlg,SelectHdl,ListBox *,pBox)135cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, SelectHdl, ListBox *, pBox )
136cdf0e10cSrcweir 
137cdf0e10cSrcweir /*------------------------------------------------------------------------
138cdf0e10cSrcweir  Beschreibung:  Setzen der vom Benutzer vergebenen Namen
139cdf0e10cSrcweir  Parameter:     Liste der vom Benutzer vergebenen Namen;
140cdf0e10cSrcweir 				nicht vom Benutzer benannte Positionen sind 0.
141cdf0e10cSrcweir ------------------------------------------------------------------------*/
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 
144cdf0e10cSrcweir void SwNumNamesDlg::SetUserNames(const String *pList[])
145cdf0e10cSrcweir {
146cdf0e10cSrcweir 	sal_uInt16 nSelect = 0;
147cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < SwBaseNumRules::nMaxRules; ++i)
148cdf0e10cSrcweir 	{
149cdf0e10cSrcweir 		if(pList[i])
150cdf0e10cSrcweir 		{
151cdf0e10cSrcweir 			aFormBox.RemoveEntry(i);
152cdf0e10cSrcweir 			aFormBox.InsertEntry(*pList[i], i);
153cdf0e10cSrcweir 			if(i == nSelect && nSelect < SwBaseNumRules::nMaxRules)
154cdf0e10cSrcweir 				nSelect++;
155cdf0e10cSrcweir 		}
156cdf0e10cSrcweir 	}
157cdf0e10cSrcweir 	aFormBox.SelectEntryPos(nSelect);
158cdf0e10cSrcweir 	SelectHdl(&aFormBox);
159cdf0e10cSrcweir }
160cdf0e10cSrcweir /*------------------------------------------------------------------------
161cdf0e10cSrcweir  Beschreibung:  OK-Button freischalten, wenn Text im Edit steht.
162cdf0e10cSrcweir ------------------------------------------------------------------------*/
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 
IMPL_LINK_INLINE_START(SwNumNamesDlg,ModifyHdl,Edit *,pBox)165cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, ModifyHdl, Edit *, pBox )
166cdf0e10cSrcweir {
167cdf0e10cSrcweir 	aOKBtn.Enable(0 != pBox->GetText().Len());
168cdf0e10cSrcweir 	return 0;
169cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SwNumNamesDlg,ModifyHdl,Edit *,pBox)170cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, ModifyHdl, Edit *, pBox )
171cdf0e10cSrcweir /*------------------------------------------------------------------------
172cdf0e10cSrcweir  Beschreibung:  DoubleClickHdl
173cdf0e10cSrcweir ------------------------------------------------------------------------*/
174cdf0e10cSrcweir 
175cdf0e10cSrcweir 
176cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG )
177cdf0e10cSrcweir {
178cdf0e10cSrcweir 	EndDialog(RET_OK);
179cdf0e10cSrcweir 	return 0;
180cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SwNumNamesDlg,DoubleClickHdl,ListBox *,EMPTYARG)181cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG )
182cdf0e10cSrcweir 
183cdf0e10cSrcweir /*--------------------------------------------------
184cdf0e10cSrcweir 
185cdf0e10cSrcweir --------------------------------------------------*/
186cdf0e10cSrcweir 
187cdf0e10cSrcweir SwNumNamesDlg::SwNumNamesDlg(Window *pParent)
188cdf0e10cSrcweir 	: ModalDialog(pParent, SW_RES(DLG_NUM_NAMES)),
189cdf0e10cSrcweir 	aFormFL(this, SW_RES(FL_FORM)),
190cdf0e10cSrcweir     aFormEdit(this, SW_RES(ED_FORM)),
191cdf0e10cSrcweir 	aFormBox(this, SW_RES(LB_FORM)),
192cdf0e10cSrcweir 	aOKBtn(this, SW_RES(BT_OK)),
193cdf0e10cSrcweir 	aCancelBtn(this, SW_RES(BT_CANCEL)),
194cdf0e10cSrcweir 	aHelpBtn(this, SW_RES(BT_HELP))
195cdf0e10cSrcweir {
196cdf0e10cSrcweir 	FreeResource();
197cdf0e10cSrcweir 	aFormEdit.SetModifyHdl(LINK(this, SwNumNamesDlg, ModifyHdl));
198cdf0e10cSrcweir 	aFormBox.SetSelectHdl(LINK(this, SwNumNamesDlg, SelectHdl));
199cdf0e10cSrcweir 	aFormBox.SetDoubleClickHdl(LINK(this, SwNumNamesDlg, DoubleClickHdl));
200cdf0e10cSrcweir 	SelectHdl(&aFormBox);
201cdf0e10cSrcweir }
202cdf0e10cSrcweir 
203cdf0e10cSrcweir /*--------------------------------------------------
204cdf0e10cSrcweir 
205cdf0e10cSrcweir --------------------------------------------------*/
206cdf0e10cSrcweir 
~SwNumNamesDlg()207cdf0e10cSrcweir __EXPORT SwNumNamesDlg::~SwNumNamesDlg() {}
208cdf0e10cSrcweir 
209cdf0e10cSrcweir 
210cdf0e10cSrcweir /* -----------------08.07.98 08:46-------------------
211cdf0e10cSrcweir  *
212cdf0e10cSrcweir  * --------------------------------------------------*/
lcl_BitToLevel(sal_uInt16 nActLevel)213cdf0e10cSrcweir sal_uInt16 lcl_BitToLevel(sal_uInt16 nActLevel)
214cdf0e10cSrcweir {
215cdf0e10cSrcweir 	sal_uInt16 nTmp = nActLevel;
216cdf0e10cSrcweir 	sal_uInt16 nTmpLevel = 0;
217cdf0e10cSrcweir 	while( 0 != (nTmp >>= 1) )
218cdf0e10cSrcweir 		nTmpLevel++;
219cdf0e10cSrcweir 	return nTmpLevel;
220cdf0e10cSrcweir }
221cdf0e10cSrcweir 
222cdf0e10cSrcweir /* -----------------07.07.98 14:13-------------------
223cdf0e10cSrcweir  *
224cdf0e10cSrcweir  * --------------------------------------------------*/
225cdf0e10cSrcweir sal_uInt16 SwOutlineTabDialog::nNumLevel = 1;
SwOutlineTabDialog(Window * pParent,const SfxItemSet * pSwItemSet,SwWrtShell & rSh)226cdf0e10cSrcweir SwOutlineTabDialog::SwOutlineTabDialog(Window* pParent,
227cdf0e10cSrcweir 					const SfxItemSet* pSwItemSet,
228cdf0e10cSrcweir 					SwWrtShell &rSh) :
229cdf0e10cSrcweir 									//der UserString wird danach richtig gesetzt
230cdf0e10cSrcweir 		SfxTabDialog(pParent, SW_RES(DLG_TAB_OUTLINE), pSwItemSet, sal_False, &aEmptyStr),
231cdf0e10cSrcweir         aNullStr(C2S("____")),
232cdf0e10cSrcweir 		aFormMenu(SW_RES(MN_FORM)),
233cdf0e10cSrcweir         rWrtSh(rSh),
234cdf0e10cSrcweir 		pChapterNumRules(SW_MOD()->GetChapterNumRules()),
235cdf0e10cSrcweir         bModified(rWrtSh.IsModified())
236cdf0e10cSrcweir {
237cdf0e10cSrcweir     // --> OD 2008-04-14 #outlinelevel#
238cdf0e10cSrcweir     SetText( SW_RES( STR_OUTLINE_NUMBERING ) );
239cdf0e10cSrcweir     // <--
240cdf0e10cSrcweir     PushButton* pUserButton = GetUserButton();
241cdf0e10cSrcweir     pUserButton->SetText(SW_RES(ST_FORM));
242cdf0e10cSrcweir     pUserButton->SetHelpId(HID_OUTLINE_FORM);
243cdf0e10cSrcweir     pUserButton->SetClickHdl(LINK(this, SwOutlineTabDialog, FormHdl));
244cdf0e10cSrcweir 	pUserButton->SetAccessibleRole( com::sun::star::accessibility::AccessibleRole::BUTTON_MENU );
245cdf0e10cSrcweir 
246cdf0e10cSrcweir 	FreeResource();
247cdf0e10cSrcweir 	pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() );
248cdf0e10cSrcweir 	GetCancelButton().SetClickHdl(LINK(this, SwOutlineTabDialog, CancelHdl));
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 	AddTabPage(TP_NUM_POSITION	 , &SwNumPositionTabPage::Create, 0);
251cdf0e10cSrcweir 	AddTabPage(TP_OUTLINE_NUM	 , &SwOutlineSettingsTabPage::Create, 0);
252cdf0e10cSrcweir 
253cdf0e10cSrcweir 	String sHeadline;
254cdf0e10cSrcweir 	sal_uInt16 i;
255cdf0e10cSrcweir 
256cdf0e10cSrcweir 	for( i = 0; i < MAXLEVEL; ++i )
257cdf0e10cSrcweir 	{
258cdf0e10cSrcweir 		// wurde die Vorlage noch nicht angelegt, dann ist sie noch an dieserPosition
259cdf0e10cSrcweir 		if( !rWrtSh.GetParaStyle( sHeadline =
260cdf0e10cSrcweir             SwStyleNameMapper::GetUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i),
261cdf0e10cSrcweir                                           sHeadline )) )
262cdf0e10cSrcweir 			aCollNames[i] = sHeadline;
263cdf0e10cSrcweir 	}
264cdf0e10cSrcweir 
265cdf0e10cSrcweir 	// Erfragen der Gliederungsebenen der Textvorlagen
266cdf0e10cSrcweir 	const sal_uInt16 nCount = rWrtSh.GetTxtFmtCollCount();
267cdf0e10cSrcweir 	for(i = 0; i < nCount; ++i )
268cdf0e10cSrcweir 	{
269cdf0e10cSrcweir 		SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i);
270cdf0e10cSrcweir 		if(!rTxtColl.IsDefault())
271cdf0e10cSrcweir 		{
272cdf0e10cSrcweir 			//sal_uInt8 nOutLevel = rTxtColl.GetOutlineLevel();	//<-#outline level, removed out by zhaojianwei
273cdf0e10cSrcweir 			//if(nOutLevel != NO_NUMBERING)
274cdf0e10cSrcweir 			//->added by zhaojianwei
275cdf0e10cSrcweir 			if(rTxtColl.IsAssignedToListLevelOfOutlineStyle())
276cdf0e10cSrcweir 			{
277cdf0e10cSrcweir 				int nOutLevel = rTxtColl.GetAssignedOutlineStyleLevel();
278cdf0e10cSrcweir 				aCollNames[ nOutLevel ] = rTxtColl.GetName();
279cdf0e10cSrcweir 			}
280cdf0e10cSrcweir 			//<-end
281cdf0e10cSrcweir 		}
282cdf0e10cSrcweir 	}
283cdf0e10cSrcweir }
284cdf0e10cSrcweir 
285cdf0e10cSrcweir /* -----------------07.07.98 14:13-------------------
286cdf0e10cSrcweir  *
287cdf0e10cSrcweir  * --------------------------------------------------*/
~SwOutlineTabDialog()288cdf0e10cSrcweir SwOutlineTabDialog::~SwOutlineTabDialog()
289cdf0e10cSrcweir {
290cdf0e10cSrcweir 	delete pNumRule;
291cdf0e10cSrcweir }
292cdf0e10cSrcweir 
293cdf0e10cSrcweir /* -----------------07.07.98 14:13-------------------
294cdf0e10cSrcweir  *
295cdf0e10cSrcweir  * --------------------------------------------------*/
PageCreated(sal_uInt16 nPageId,SfxTabPage & rPage)296cdf0e10cSrcweir void 	SwOutlineTabDialog::PageCreated(sal_uInt16 nPageId, SfxTabPage& rPage)
297cdf0e10cSrcweir {
298cdf0e10cSrcweir 	switch ( nPageId )
299cdf0e10cSrcweir 	{
300cdf0e10cSrcweir 		case TP_NUM_POSITION:
301cdf0e10cSrcweir                 ((SwNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh);
302cdf0e10cSrcweir                 ((SwNumPositionTabPage&)rPage).SetOutlineTabDialog(this);
303cdf0e10cSrcweir 		break;
304cdf0e10cSrcweir 		case TP_OUTLINE_NUM:
305cdf0e10cSrcweir 				((SwOutlineSettingsTabPage&)rPage).SetWrtShell(&rWrtSh);
306cdf0e10cSrcweir 		break;
307cdf0e10cSrcweir 	}
308cdf0e10cSrcweir }
309cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
310cdf0e10cSrcweir  *
311cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineTabDialog,CancelHdl,Button *,EMPTYARG)312cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, CancelHdl, Button *, EMPTYARG )
313cdf0e10cSrcweir {
314cdf0e10cSrcweir 	if (!bModified)
315cdf0e10cSrcweir 		rWrtSh.ResetModified();
316cdf0e10cSrcweir 	EndDialog(RET_CANCEL);
317cdf0e10cSrcweir 	return 0;
318cdf0e10cSrcweir }
319cdf0e10cSrcweir /* -----------------08.07.98 12:14-------------------
320cdf0e10cSrcweir  *
321cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineTabDialog,FormHdl,Button *,pBtn)322cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, FormHdl, Button *, pBtn )
323cdf0e10cSrcweir {
324cdf0e10cSrcweir 	//PopupMenu auffuellen
325cdf0e10cSrcweir 	for( sal_uInt16 i = 0; i < SwChapterNumRules::nMaxRules; ++i )
326cdf0e10cSrcweir 	{
327cdf0e10cSrcweir 		const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i);
328cdf0e10cSrcweir 		if( pRules )
329cdf0e10cSrcweir 			aFormMenu.SetItemText(i + MN_FORMBASE, pRules->GetName());
330cdf0e10cSrcweir 	}
331cdf0e10cSrcweir 	aFormMenu.SetSelectHdl(LINK(this, SwOutlineTabDialog, MenuSelectHdl));
332cdf0e10cSrcweir 	aFormMenu.Execute(pBtn, Rectangle(Point(0,0), pBtn->GetSizePixel()), POPUPMENU_EXECUTE_DOWN);
333cdf0e10cSrcweir 	return 0;
334cdf0e10cSrcweir }
335cdf0e10cSrcweir 
336cdf0e10cSrcweir /* -----------------08.07.98 12:14-------------------
337cdf0e10cSrcweir  *
338cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineTabDialog,MenuSelectHdl,Menu *,pMenu)339cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, MenuSelectHdl, Menu *, pMenu )
340cdf0e10cSrcweir {
341cdf0e10cSrcweir 	sal_uInt8 nLevelNo = 0;
342cdf0e10cSrcweir 	switch(pMenu->GetCurItemId())
343cdf0e10cSrcweir 	{
344cdf0e10cSrcweir 		case MN_FORM1: nLevelNo = 1;	break;
345cdf0e10cSrcweir 		case MN_FORM2: nLevelNo = 2;	break;
346cdf0e10cSrcweir 		case MN_FORM3: nLevelNo = 3;	break;
347cdf0e10cSrcweir 		case MN_FORM4: nLevelNo = 4;	break;
348cdf0e10cSrcweir 		case MN_FORM5: nLevelNo = 5;	break;
349cdf0e10cSrcweir 		case MN_FORM6: nLevelNo = 6;	break;
350cdf0e10cSrcweir 		case MN_FORM7: nLevelNo = 7;	break;
351cdf0e10cSrcweir 		case MN_FORM8: nLevelNo = 8;	break;
352cdf0e10cSrcweir 		case MN_FORM9: nLevelNo = 9;	break;
353cdf0e10cSrcweir 
354cdf0e10cSrcweir 		case MN_SAVE:
355cdf0e10cSrcweir 		{
356cdf0e10cSrcweir 			SwNumNamesDlg *pDlg = new SwNumNamesDlg(this);
357cdf0e10cSrcweir 			const String *aStrArr[SwChapterNumRules::nMaxRules];
358cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < SwChapterNumRules::nMaxRules; ++i)
359cdf0e10cSrcweir 			{
360cdf0e10cSrcweir 				const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i);
361cdf0e10cSrcweir 				if(pRules)
362cdf0e10cSrcweir 					aStrArr[i] = &pRules->GetName();
363cdf0e10cSrcweir 				else
364cdf0e10cSrcweir 					aStrArr[i] = 0;
365cdf0e10cSrcweir 			}
366cdf0e10cSrcweir 			pDlg->SetUserNames(aStrArr);
367cdf0e10cSrcweir 			if(RET_OK == pDlg->Execute())
368cdf0e10cSrcweir 			{
369cdf0e10cSrcweir 				const String aName(pDlg->GetName());
370cdf0e10cSrcweir 				pChapterNumRules->ApplyNumRules( SwNumRulesWithName(
371cdf0e10cSrcweir 						*pNumRule, aName ), pDlg->GetCurEntryPos() );
372cdf0e10cSrcweir 				pMenu->SetItemText(
373cdf0e10cSrcweir 						pDlg->GetCurEntryPos() + MN_FORMBASE, aName);
374cdf0e10cSrcweir 			}
375cdf0e10cSrcweir 			delete pDlg;
376cdf0e10cSrcweir 			return 0;
377cdf0e10cSrcweir 
378cdf0e10cSrcweir 		}
379cdf0e10cSrcweir 
380cdf0e10cSrcweir 	}
381cdf0e10cSrcweir 	if( nLevelNo-- )
382cdf0e10cSrcweir 	{
383cdf0e10cSrcweir 		const SwNumRulesWithName *pRules = pChapterNumRules->GetRules( nLevelNo );
384cdf0e10cSrcweir 		if( pRules )
385cdf0e10cSrcweir 		{
386cdf0e10cSrcweir 			pRules->MakeNumRule( rWrtSh, *pNumRule );
387cdf0e10cSrcweir 			pNumRule->SetRuleType( OUTLINE_RULE );
388cdf0e10cSrcweir 		}
389cdf0e10cSrcweir 		else
390cdf0e10cSrcweir 			*pNumRule = *rWrtSh.GetOutlineNumRule();
391cdf0e10cSrcweir 	}
392cdf0e10cSrcweir 
393cdf0e10cSrcweir 	sal_uInt16	nPageId = GetCurPageId();
394cdf0e10cSrcweir 	SfxTabPage*	pPage = GetTabPage( nPageId );
395cdf0e10cSrcweir 	pPage->Reset(*GetOutputItemSet());
396cdf0e10cSrcweir 
397cdf0e10cSrcweir 	return 0;
398cdf0e10cSrcweir }
399cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
400cdf0e10cSrcweir  *
401cdf0e10cSrcweir  * --------------------------------------------------*/
GetLevel(const String & rFmtName) const402cdf0e10cSrcweir sal_uInt16 	SwOutlineTabDialog::GetLevel(const String &rFmtName) const
403cdf0e10cSrcweir {
404cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; ++i)
405cdf0e10cSrcweir 	{
406cdf0e10cSrcweir 		if(aCollNames[i] == rFmtName)
407cdf0e10cSrcweir 			return i;
408cdf0e10cSrcweir 	}
409cdf0e10cSrcweir 	return MAXLEVEL;//NO_NUMBERING;	//#outline level,zhaojianwei
410cdf0e10cSrcweir 
411cdf0e10cSrcweir }
412cdf0e10cSrcweir /* -----------------07.07.98 16:30-------------------
413cdf0e10cSrcweir  *
414cdf0e10cSrcweir  * --------------------------------------------------*/
Ok()415cdf0e10cSrcweir short SwOutlineTabDialog::Ok()
416cdf0e10cSrcweir {
417cdf0e10cSrcweir     SfxTabDialog::Ok();
418cdf0e10cSrcweir 	// bei allen erzeugten Vorlagen die Ebenen setzen, muss
419cdf0e10cSrcweir 	// geschehen, um evtl. aufgehobene Zuordnungen
420cdf0e10cSrcweir 	// auch wieder zu loeschen
421cdf0e10cSrcweir 
422cdf0e10cSrcweir     // --> OD 2006-12-11 #130443#
423cdf0e10cSrcweir     // encapsulate changes into a action to avoid effects on the current cursor
424cdf0e10cSrcweir     // position during the changes.
425cdf0e10cSrcweir     rWrtSh.StartAction();
426cdf0e10cSrcweir     // <--
427cdf0e10cSrcweir 
428cdf0e10cSrcweir     const SwNumRule * pOutlineRule = rWrtSh.GetOutlineNumRule();
429cdf0e10cSrcweir 
430cdf0e10cSrcweir 	sal_uInt16 i, nCount = rWrtSh.GetTxtFmtCollCount();
431cdf0e10cSrcweir 	for( i = 0; i < nCount; ++i )
432cdf0e10cSrcweir 	{
433cdf0e10cSrcweir 		SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i);
434cdf0e10cSrcweir 		if( !rTxtColl.IsDefault() )
435cdf0e10cSrcweir         {
436cdf0e10cSrcweir 			//rTxtColl.SetOutlineLevel( (sal_uInt8)GetLevel(rTxtColl.GetName()));//#outline level,removed by zhaojianwei
437cdf0e10cSrcweir 
438cdf0e10cSrcweir             const SfxPoolItem & rItem =
439cdf0e10cSrcweir                 rTxtColl.GetFmtAttr(RES_PARATR_NUMRULE, sal_False);
440cdf0e10cSrcweir 
441cdf0e10cSrcweir 			//if ((sal_uInt8)GetLevel(rTxtColl.GetName()) == NO_NUMBERING)	//#outline level,removed by zhaojianwei
442cdf0e10cSrcweir 			//{
443cdf0e10cSrcweir 			//	if (static_cast<const SwNumRuleItem &>(rItem).GetValue() ==
444cdf0e10cSrcweir 			//		pOutlineRule->GetName())
445cdf0e10cSrcweir 			//	{
446cdf0e10cSrcweir 			//		rTxtColl.ResetFmtAttr(RES_PARATR_NUMRULE);
447cdf0e10cSrcweir 			//	}
448cdf0e10cSrcweir 			//}
449cdf0e10cSrcweir 			//else
450cdf0e10cSrcweir 			//{
451cdf0e10cSrcweir 			//	if (static_cast<const SwNumRuleItem &>(rItem).GetValue() !=
452cdf0e10cSrcweir 			//		pOutlineRule->GetName())
453cdf0e10cSrcweir 			//	{
454cdf0e10cSrcweir 			//		SwNumRuleItem aItem(pOutlineRule->GetName());
455cdf0e10cSrcweir 			//		rTxtColl.SetFmtAttr(aItem);
456cdf0e10cSrcweir 			//	}
457cdf0e10cSrcweir 			//}
458cdf0e10cSrcweir            if ((sal_uInt8)GetLevel(rTxtColl.GetName()) == MAXLEVEL) //add by zhaojianwei
459cdf0e10cSrcweir             {
460cdf0e10cSrcweir 			    if(rTxtColl.IsAssignedToListLevelOfOutlineStyle())
461cdf0e10cSrcweir 				{
462cdf0e10cSrcweir 					rTxtColl.DeleteAssignmentToListLevelOfOutlineStyle();
463cdf0e10cSrcweir 				}
464cdf0e10cSrcweir 				if (static_cast<const SwNumRuleItem &>(rItem).GetValue() ==
465cdf0e10cSrcweir                     pOutlineRule->GetName())
466cdf0e10cSrcweir                 {
467cdf0e10cSrcweir                     rTxtColl.ResetFmtAttr(RES_PARATR_NUMRULE);
468cdf0e10cSrcweir                 }
469cdf0e10cSrcweir             }
470cdf0e10cSrcweir             else
471cdf0e10cSrcweir             {
472cdf0e10cSrcweir 				rTxtColl.AssignToListLevelOfOutlineStyle(GetLevel(rTxtColl.GetName()));
473cdf0e10cSrcweir 
474cdf0e10cSrcweir 				if (static_cast<const SwNumRuleItem &>(rItem).GetValue() !=
475cdf0e10cSrcweir                     pOutlineRule->GetName())
476cdf0e10cSrcweir                 {
477cdf0e10cSrcweir                     SwNumRuleItem aItem(pOutlineRule->GetName());
478cdf0e10cSrcweir                     rTxtColl.SetFmtAttr(aItem);
479cdf0e10cSrcweir                 }
480cdf0e10cSrcweir             }							//<-end,zhaojianwei
481cdf0e10cSrcweir         }
482cdf0e10cSrcweir 	}
483cdf0e10cSrcweir 
484cdf0e10cSrcweir     for(i = 0; i < MAXLEVEL; ++i )
485cdf0e10cSrcweir     {
486cdf0e10cSrcweir         String sHeadline;
487cdf0e10cSrcweir         ::SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i),
488cdf0e10cSrcweir                                          sHeadline );
489cdf0e10cSrcweir         SwTxtFmtColl* pColl = rWrtSh.FindTxtFmtCollByName( sHeadline );
490cdf0e10cSrcweir         if( !pColl )
491cdf0e10cSrcweir         {
492cdf0e10cSrcweir 			//if( !aCollNames[i].Len() )			//#outline level,removed by zhaojianwei
493cdf0e10cSrcweir 			//{
494cdf0e10cSrcweir 			//	SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool(
495cdf0e10cSrcweir 			//		static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i) );
496cdf0e10cSrcweir 			//	pTxtColl->SetOutlineLevel( NO_NUMBERING );
497cdf0e10cSrcweir 			//	pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE);
498cdf0e10cSrcweir 			//}
499cdf0e10cSrcweir 			//else if(aCollNames[i] != sHeadline)
500cdf0e10cSrcweir 			//{
501cdf0e10cSrcweir 			//	SwTxtFmtColl* pTxtColl = rWrtSh.GetParaStyle(
502cdf0e10cSrcweir 			//		aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME);
503cdf0e10cSrcweir 			//	if(pTxtColl)
504cdf0e10cSrcweir 			//	{
505cdf0e10cSrcweir 			//		pTxtColl->SetOutlineLevel( static_cast< sal_uInt8 >(i) );
506cdf0e10cSrcweir 
507cdf0e10cSrcweir 			//		SwNumRuleItem aItem(pOutlineRule->GetName());
508cdf0e10cSrcweir 			//		pTxtColl->SetFmtAttr(aItem);
509cdf0e10cSrcweir 			//	}
510cdf0e10cSrcweir 			//}
511cdf0e10cSrcweir             if(aCollNames[i] != sHeadline)//->added by zhaojianwei
512cdf0e10cSrcweir             {
513cdf0e10cSrcweir 				SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool(
514cdf0e10cSrcweir 					static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i) );
515cdf0e10cSrcweir 				pTxtColl->DeleteAssignmentToListLevelOfOutlineStyle();
516cdf0e10cSrcweir 				pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE);
517cdf0e10cSrcweir 
518cdf0e10cSrcweir 				if( aCollNames[i].Len() )
519cdf0e10cSrcweir 				{
520cdf0e10cSrcweir 					pTxtColl = rWrtSh.GetParaStyle(
521cdf0e10cSrcweir                                 aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME);
522cdf0e10cSrcweir 					if(pTxtColl)
523cdf0e10cSrcweir 					{
524cdf0e10cSrcweir 						pTxtColl->AssignToListLevelOfOutlineStyle(i);
525cdf0e10cSrcweir 						SwNumRuleItem aItem(pOutlineRule->GetName());
526cdf0e10cSrcweir 						pTxtColl->SetFmtAttr(aItem);
527cdf0e10cSrcweir 					}
528cdf0e10cSrcweir                 }
529cdf0e10cSrcweir             }//<--end,zhaojianwei
530cdf0e10cSrcweir         }
531cdf0e10cSrcweir     }
532cdf0e10cSrcweir 
533cdf0e10cSrcweir 	rWrtSh.SetOutlineNumRule( *pNumRule);
534cdf0e10cSrcweir 
535cdf0e10cSrcweir     // --> OD 2006-12-11 #130443#
536cdf0e10cSrcweir     rWrtSh.EndAction();
537cdf0e10cSrcweir     // <--
538cdf0e10cSrcweir 
539cdf0e10cSrcweir 	return RET_OK;
540cdf0e10cSrcweir }
541cdf0e10cSrcweir 
542cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
543cdf0e10cSrcweir  *
544cdf0e10cSrcweir  * --------------------------------------------------*/
SwOutlineSettingsTabPage(Window * pParent,const SfxItemSet & rSet)545cdf0e10cSrcweir SwOutlineSettingsTabPage::SwOutlineSettingsTabPage(Window* pParent, const SfxItemSet& rSet) :
546cdf0e10cSrcweir 	SfxTabPage(pParent, SW_RES(TP_OUTLINE_NUM), rSet),
547cdf0e10cSrcweir     aLevelFL(       this, SW_RES(FL_LEVEL    )),
548cdf0e10cSrcweir     aLevelLB(       this, SW_RES(LB_LEVEL   )),
549cdf0e10cSrcweir 	aNumberFL(this, SW_RES(FL_NUMBER)),
550cdf0e10cSrcweir     aCollLbl(this, SW_RES(FT_COLL)),
551cdf0e10cSrcweir 	aCollBox(this, SW_RES(LB_COLL)),
552cdf0e10cSrcweir     aNumberLbl(this, SW_RES(FT_NUMBER)),
553cdf0e10cSrcweir     aNumberBox(this, SW_RES(LB_NUMBER), INSERT_NUM_TYPE_NO_NUMBERING|INSERT_NUM_EXTENDED_TYPES),
554cdf0e10cSrcweir 	aCharFmtFT(this, SW_RES(FT_CHARFMT)),
555cdf0e10cSrcweir 	aCharFmtLB(this, SW_RES(LB_CHARFMT)),
556cdf0e10cSrcweir 	aAllLevelFT(	this, SW_RES(FT_ALL_LEVEL)),
557cdf0e10cSrcweir 	aAllLevelNF(	this, SW_RES(NF_ALL_LEVEL)),
558cdf0e10cSrcweir 	aDelim(this, SW_RES(FT_DELIM)),
559cdf0e10cSrcweir 	aPrefixFT(this, SW_RES(FT_PREFIX)),
560cdf0e10cSrcweir 	aPrefixED(this, SW_RES(ED_PREFIX)),
561cdf0e10cSrcweir 	aSuffixFT(this, SW_RES(FT_SUFFIX)),
562cdf0e10cSrcweir 	aSuffixED(this, SW_RES(ED_SUFFIX)),
563cdf0e10cSrcweir 	aStartLbl(this, SW_RES(FT_START)),
564cdf0e10cSrcweir 	aStartEdit(this, SW_RES(ED_START)),
565cdf0e10cSrcweir     aPreviewWIN(    this, SW_RES(WIN_PREVIEW )),
566cdf0e10cSrcweir 
567cdf0e10cSrcweir     aNoFmtName(SW_RES(ST_NO_COLL)),
568cdf0e10cSrcweir     pSh(0),
569cdf0e10cSrcweir     pCollNames(0),
570cdf0e10cSrcweir     nActLevel(1)
571cdf0e10cSrcweir {
572cdf0e10cSrcweir 	FreeResource();
573cdf0e10cSrcweir 	SetExchangeSupport();
574cdf0e10cSrcweir 
575cdf0e10cSrcweir 	aCollBox.InsertEntry(aNoFmtName);
576cdf0e10cSrcweir 	aLevelLB.SetSelectHdl(LINK(this, 	SwOutlineSettingsTabPage, LevelHdl));
577cdf0e10cSrcweir 	aAllLevelNF.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, ToggleComplete));
578cdf0e10cSrcweir 	aCollBox.SetSelectHdl(LINK(this, 	SwOutlineSettingsTabPage, CollSelect));
579cdf0e10cSrcweir 	aCollBox.SetGetFocusHdl(LINK(this, 	SwOutlineSettingsTabPage, CollSelectGetFocus));
580cdf0e10cSrcweir 	aNumberBox.SetSelectHdl(LINK(this, 	SwOutlineSettingsTabPage, NumberSelect));
581cdf0e10cSrcweir 	aPrefixED.SetModifyHdl(LINK(this, 	SwOutlineSettingsTabPage, DelimModify));
582cdf0e10cSrcweir 	aSuffixED.SetModifyHdl(LINK(this, 	SwOutlineSettingsTabPage, DelimModify));
583cdf0e10cSrcweir 	aStartEdit.SetModifyHdl(LINK(this, 	SwOutlineSettingsTabPage, StartModified));
584cdf0e10cSrcweir 	aCharFmtLB.SetSelectHdl(LINK(this, 	SwOutlineSettingsTabPage, CharFmtHdl));
585cdf0e10cSrcweir 
586cdf0e10cSrcweir }
587cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
588cdf0e10cSrcweir  *
589cdf0e10cSrcweir  * --------------------------------------------------*/
Update()590cdf0e10cSrcweir void   	SwOutlineSettingsTabPage::Update()
591cdf0e10cSrcweir {
592cdf0e10cSrcweir 		// falls eine Vorlage fuer diese Ebene bereits selektiert wurde,
593cdf0e10cSrcweir 		// diese in der ListBox auswaehlean
594cdf0e10cSrcweir 	aCollBox.Enable(USHRT_MAX != nActLevel);
595cdf0e10cSrcweir 	if(USHRT_MAX == nActLevel)
596cdf0e10cSrcweir 	{
597cdf0e10cSrcweir 		sal_Bool bSamePrefix = sal_True;
598cdf0e10cSrcweir 		sal_Bool bSameSuffix = sal_True;
599cdf0e10cSrcweir 		sal_Bool bSameType = sal_True;
600cdf0e10cSrcweir 		sal_Bool bSameComplete = sal_True;
601cdf0e10cSrcweir 		sal_Bool bSameStart = sal_True;
602cdf0e10cSrcweir 		sal_Bool bSameCharFmt = sal_True;
603cdf0e10cSrcweir 
604cdf0e10cSrcweir 		const SwNumFmt* aNumFmtArr[MAXLEVEL];
605cdf0e10cSrcweir 		const SwCharFmt* pFirstFmt = 0;
606cdf0e10cSrcweir 
607cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
608cdf0e10cSrcweir 		{
609cdf0e10cSrcweir 
610cdf0e10cSrcweir 			aNumFmtArr[ i ] = &pNumRule->Get(i);
611cdf0e10cSrcweir 			if(i == 0)
612cdf0e10cSrcweir 				pFirstFmt = aNumFmtArr[i]->GetCharFmt();
613cdf0e10cSrcweir 			else
614cdf0e10cSrcweir 			{
615cdf0e10cSrcweir 				bSameType 	&= aNumFmtArr[i]->GetNumberingType() == aNumFmtArr[0]->GetNumberingType();
616cdf0e10cSrcweir 				bSameStart	&= aNumFmtArr[i]->GetStart() == aNumFmtArr[0]->GetStart();
617cdf0e10cSrcweir 				bSamePrefix &= aNumFmtArr[i]->GetPrefix() == aNumFmtArr[0]->GetPrefix();
618cdf0e10cSrcweir 				bSameSuffix &= aNumFmtArr[i]->GetSuffix() == aNumFmtArr[0]->GetSuffix();
619cdf0e10cSrcweir 				bSameComplete &= aNumFmtArr[i]->GetIncludeUpperLevels() == aNumFmtArr[0]->GetIncludeUpperLevels();
620cdf0e10cSrcweir 				const SwCharFmt* pFmt = aNumFmtArr[i]->GetCharFmt();
621cdf0e10cSrcweir 				bSameCharFmt &= 	(!pFirstFmt && !pFmt)
622cdf0e10cSrcweir 									|| (pFirstFmt && pFmt && pFmt->GetName() == pFirstFmt->GetName());
623cdf0e10cSrcweir 			}
624cdf0e10cSrcweir 		}
625cdf0e10cSrcweir         CheckForStartValue_Impl(aNumFmtArr[0]->GetNumberingType());
626cdf0e10cSrcweir         if(bSameType)
627cdf0e10cSrcweir 			aNumberBox.SelectNumberingType( aNumFmtArr[0]->GetNumberingType() );
628cdf0e10cSrcweir 		else
629cdf0e10cSrcweir 			aNumberBox.SetNoSelection();
630cdf0e10cSrcweir 		if(bSameStart)
631cdf0e10cSrcweir 			aStartEdit.SetValue(aNumFmtArr[0]->GetStart());
632cdf0e10cSrcweir 		else
633cdf0e10cSrcweir 			aStartEdit.SetText(aEmptyStr);
634cdf0e10cSrcweir 		if(bSamePrefix)
635cdf0e10cSrcweir 			aPrefixED.SetText(aNumFmtArr[0]->GetPrefix());
636cdf0e10cSrcweir 		else
637cdf0e10cSrcweir 			aPrefixED.SetText(aEmptyStr);
638cdf0e10cSrcweir 		if(bSameSuffix)
639cdf0e10cSrcweir 			aSuffixED.SetText(aNumFmtArr[0]->GetSuffix());
640cdf0e10cSrcweir 		else
641cdf0e10cSrcweir 			aSuffixED.SetText(aEmptyStr);
642cdf0e10cSrcweir 
643cdf0e10cSrcweir 		if(bSameCharFmt)
644cdf0e10cSrcweir 		{
645cdf0e10cSrcweir 			if(pFirstFmt)
646cdf0e10cSrcweir 				aCharFmtLB.SelectEntry(pFirstFmt->GetName());
647cdf0e10cSrcweir 			else
648cdf0e10cSrcweir 				aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone );
649cdf0e10cSrcweir 		}
650cdf0e10cSrcweir 		else
651cdf0e10cSrcweir 			aCharFmtLB.SetNoSelection();
652cdf0e10cSrcweir 
653cdf0e10cSrcweir 		aAllLevelFT.Enable(sal_True);
654cdf0e10cSrcweir 		aAllLevelNF.Enable(sal_True);
655cdf0e10cSrcweir 		aAllLevelNF.SetMax(MAXLEVEL);
656cdf0e10cSrcweir 		if(bSameComplete)
657cdf0e10cSrcweir 		{
658cdf0e10cSrcweir 			aAllLevelNF.SetValue(aNumFmtArr[0]->GetIncludeUpperLevels());
659cdf0e10cSrcweir 		}
660cdf0e10cSrcweir 		else
661cdf0e10cSrcweir 		{
662cdf0e10cSrcweir 			aAllLevelNF.SetText(aEmptyStr);
663cdf0e10cSrcweir 		}
664cdf0e10cSrcweir 	}
665cdf0e10cSrcweir 	else
666cdf0e10cSrcweir 	{
667cdf0e10cSrcweir 		sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel);
668cdf0e10cSrcweir 		String aColl(pCollNames[nTmpLevel]);
669cdf0e10cSrcweir 		if(aColl.Len())
670cdf0e10cSrcweir 			aCollBox.SelectEntry(aColl);
671cdf0e10cSrcweir 		else
672cdf0e10cSrcweir 			aCollBox.SelectEntry(aNoFmtName);
673cdf0e10cSrcweir 		const SwNumFmt &rFmt = pNumRule->Get(nTmpLevel);
674cdf0e10cSrcweir 
675cdf0e10cSrcweir 		aNumberBox.SelectNumberingType( rFmt.GetNumberingType() );
676cdf0e10cSrcweir 		aPrefixED.SetText(rFmt.GetPrefix());
677cdf0e10cSrcweir 		aSuffixED.SetText(rFmt.GetSuffix());
678cdf0e10cSrcweir 		const SwCharFmt* pFmt = rFmt.GetCharFmt();
679cdf0e10cSrcweir 		if(pFmt)
680cdf0e10cSrcweir 			aCharFmtLB.SelectEntry(pFmt->GetName());
681cdf0e10cSrcweir 		else
682cdf0e10cSrcweir 			aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone );
683cdf0e10cSrcweir 
684cdf0e10cSrcweir 		if(nTmpLevel)
685cdf0e10cSrcweir 		{
686cdf0e10cSrcweir 			aAllLevelFT.Enable(sal_True);
687cdf0e10cSrcweir 			aAllLevelNF.Enable(sal_True);
688cdf0e10cSrcweir 			aAllLevelNF.SetMax(nTmpLevel + 1);
689cdf0e10cSrcweir 			aAllLevelNF.SetValue(rFmt.GetIncludeUpperLevels());
690cdf0e10cSrcweir 		}
691cdf0e10cSrcweir 		else
692cdf0e10cSrcweir 		{
693cdf0e10cSrcweir 			aAllLevelNF.SetText(aEmptyStr);
694cdf0e10cSrcweir 			aAllLevelNF.Enable(sal_False);
695cdf0e10cSrcweir 			aAllLevelFT.Enable(sal_False);
696cdf0e10cSrcweir 		}
697cdf0e10cSrcweir         CheckForStartValue_Impl(rFmt.GetNumberingType());
698cdf0e10cSrcweir 		aStartEdit.SetValue( rFmt.GetStart() );
699cdf0e10cSrcweir 	}
700cdf0e10cSrcweir 	SetModified();
701cdf0e10cSrcweir }
702cdf0e10cSrcweir 
703cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
704cdf0e10cSrcweir  *
705cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,LevelHdl,ListBox *,pBox)706cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, LevelHdl, ListBox *, pBox )
707cdf0e10cSrcweir {
708cdf0e10cSrcweir 	nActLevel = 0;
709cdf0e10cSrcweir 	if(pBox->IsEntryPosSelected( MAXLEVEL ))
710cdf0e10cSrcweir 	{
711cdf0e10cSrcweir 		nActLevel = 0xFFFF;
712cdf0e10cSrcweir 	}
713cdf0e10cSrcweir 	else
714cdf0e10cSrcweir 	{
715cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
716cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
717cdf0e10cSrcweir 		{
718cdf0e10cSrcweir 			if(pBox->IsEntryPosSelected( i ))
719cdf0e10cSrcweir 				nActLevel |= nMask;
720cdf0e10cSrcweir 			nMask <<= 1;
721cdf0e10cSrcweir 		}
722cdf0e10cSrcweir 	}
723cdf0e10cSrcweir 	Update();
724cdf0e10cSrcweir 	return 0;
725cdf0e10cSrcweir }
726cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
727cdf0e10cSrcweir  *
728cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,ToggleComplete,NumericField *,pFld)729cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, ToggleComplete, NumericField *, pFld )
730cdf0e10cSrcweir {
731cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
732cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
733cdf0e10cSrcweir 	{
734cdf0e10cSrcweir 		if(nActLevel & nMask)
735cdf0e10cSrcweir 		{
736cdf0e10cSrcweir 			SwNumFmt aNumFmt(pNumRule->Get(i));
737cdf0e10cSrcweir 			aNumFmt.SetIncludeUpperLevels( Min( (sal_uInt8)pFld->GetValue(),
738cdf0e10cSrcweir 												(sal_uInt8)(i + 1)) );
739cdf0e10cSrcweir 			pNumRule->Set(i, aNumFmt);
740cdf0e10cSrcweir 		}
741cdf0e10cSrcweir 		nMask <<= 1;
742cdf0e10cSrcweir 	}
743cdf0e10cSrcweir 	SetModified();
744cdf0e10cSrcweir 	return 0;
745cdf0e10cSrcweir }
746cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
747cdf0e10cSrcweir  *
748cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,CollSelect,ListBox *,pBox)749cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CollSelect, ListBox *, pBox )
750cdf0e10cSrcweir {
751cdf0e10cSrcweir 	sal_uInt8 i;
752cdf0e10cSrcweir 
753cdf0e10cSrcweir 	const String aCollName(pBox->GetSelectEntry());
754cdf0e10cSrcweir 	//0xFFFF darf hier nicht sein (disable)
755cdf0e10cSrcweir 	sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel);
756cdf0e10cSrcweir 	String sOldName( pCollNames[nTmpLevel] );
757cdf0e10cSrcweir 
758cdf0e10cSrcweir 	for( i = 0; i < MAXLEVEL; ++i)
759cdf0e10cSrcweir 		pCollNames[i] = aSaveCollNames[i];
760cdf0e10cSrcweir 
761cdf0e10cSrcweir 	if(aCollName == aNoFmtName)
762cdf0e10cSrcweir 		pCollNames[nTmpLevel] = aEmptyStr;
763cdf0e10cSrcweir 	else
764cdf0e10cSrcweir 	{
765cdf0e10cSrcweir 		pCollNames[nTmpLevel] = aCollName;
766cdf0e10cSrcweir 				// wird die Vorlage bereits verwendet ?
767cdf0e10cSrcweir 		for( i = 0; i < MAXLEVEL; ++i)
768cdf0e10cSrcweir 			if(i != nTmpLevel && pCollNames[i] == aCollName )
769cdf0e10cSrcweir 				pCollNames[i] = aEmptyStr;
770cdf0e10cSrcweir 	}
771cdf0e10cSrcweir 
772cdf0e10cSrcweir 	// search the oldname and put it into the current entries
773cdf0e10cSrcweir 	if( sOldName.Len() )
774cdf0e10cSrcweir 		for( i = 0; i < MAXLEVEL; ++i)
775cdf0e10cSrcweir 			if( aSaveCollNames[ i ] == sOldName && i != nTmpLevel &&
776cdf0e10cSrcweir 				!pCollNames[ i ].Len() )
777cdf0e10cSrcweir 			{
778cdf0e10cSrcweir 				sal_uInt8 n;
779cdf0e10cSrcweir 				for( n = 0; n < MAXLEVEL; ++n )
780cdf0e10cSrcweir 					if( pCollNames[ n ] == sOldName )
781cdf0e10cSrcweir 						break;
782cdf0e10cSrcweir 
783cdf0e10cSrcweir 				if( MAXLEVEL == n )
784cdf0e10cSrcweir 					// it was a outline leveld name and the current entries is zero.
785cdf0e10cSrcweir 					pCollNames[ i ] = sOldName;
786cdf0e10cSrcweir 			}
787cdf0e10cSrcweir 
788cdf0e10cSrcweir 	SetModified();
789cdf0e10cSrcweir 	return 0;
790cdf0e10cSrcweir }
791cdf0e10cSrcweir 
IMPL_LINK(SwOutlineSettingsTabPage,CollSelectGetFocus,ListBox *,EMPTYARG)792cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CollSelectGetFocus, ListBox *, EMPTYARG )
793cdf0e10cSrcweir {
794cdf0e10cSrcweir 	for( sal_uInt8 i = 0; i < MAXLEVEL; ++i)
795cdf0e10cSrcweir 		aSaveCollNames[i] =  pCollNames[i];
796cdf0e10cSrcweir 	return 0;
797cdf0e10cSrcweir }
798cdf0e10cSrcweir 
799cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
800cdf0e10cSrcweir  *
801cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,NumberSelect,SwNumberingTypeListBox *,pBox)802cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, NumberSelect, SwNumberingTypeListBox *, pBox )
803cdf0e10cSrcweir {
804cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
805cdf0e10cSrcweir 	sal_Int16 nNumberType = pBox->GetSelectedNumberingType();//(sal_Int16)(sal_uLong)pBox->GetEntryData(pBox->GetSelectEntryPos());
806cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
807cdf0e10cSrcweir 	{
808cdf0e10cSrcweir 		if(nActLevel & nMask)
809cdf0e10cSrcweir 		{
810cdf0e10cSrcweir 			SwNumFmt aNumFmt(pNumRule->Get(i));
811cdf0e10cSrcweir 			aNumFmt.SetNumberingType(nNumberType);
812cdf0e10cSrcweir 			pNumRule->Set(i, aNumFmt);
813cdf0e10cSrcweir             CheckForStartValue_Impl(nNumberType);
814cdf0e10cSrcweir         }
815cdf0e10cSrcweir 		nMask <<= 1;
816cdf0e10cSrcweir 	}
817cdf0e10cSrcweir 	SetModified();
818cdf0e10cSrcweir 	return 0;
819cdf0e10cSrcweir }
820cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
821cdf0e10cSrcweir  *
822cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,DelimModify,Edit *,EMPTYARG)823cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, DelimModify, Edit *, EMPTYARG )
824cdf0e10cSrcweir {
825cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
826cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
827cdf0e10cSrcweir 	{
828cdf0e10cSrcweir 		if(nActLevel & nMask)
829cdf0e10cSrcweir 		{
830cdf0e10cSrcweir 			SwNumFmt aNumFmt(pNumRule->Get(i));
831cdf0e10cSrcweir 			aNumFmt.SetPrefix( aPrefixED.GetText() );
832cdf0e10cSrcweir 			aNumFmt.SetSuffix( aSuffixED.GetText() );
833cdf0e10cSrcweir 			pNumRule->Set(i, aNumFmt);
834cdf0e10cSrcweir 		}
835cdf0e10cSrcweir 		nMask <<= 1;
836cdf0e10cSrcweir 	}
837cdf0e10cSrcweir 	SetModified();
838cdf0e10cSrcweir 	return 0;
839cdf0e10cSrcweir }
840cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
841cdf0e10cSrcweir  *
842cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,StartModified,NumericField *,pFld)843cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, StartModified, NumericField *, pFld )
844cdf0e10cSrcweir {
845cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
846cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
847cdf0e10cSrcweir 	{
848cdf0e10cSrcweir 		if(nActLevel & nMask)
849cdf0e10cSrcweir 		{
850cdf0e10cSrcweir 			SwNumFmt aNumFmt(pNumRule->Get(i));
851cdf0e10cSrcweir 			aNumFmt.SetStart( (sal_uInt16)pFld->GetValue() );
852cdf0e10cSrcweir 			pNumRule->Set(i, aNumFmt);
853cdf0e10cSrcweir 		}
854cdf0e10cSrcweir 		nMask <<= 1;
855cdf0e10cSrcweir 	}
856cdf0e10cSrcweir     SetModified();
857cdf0e10cSrcweir 	return 0;
858cdf0e10cSrcweir }
859cdf0e10cSrcweir /* -----------------21.09.98 12:21-------------------
860cdf0e10cSrcweir  *
861cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwOutlineSettingsTabPage,CharFmtHdl,ListBox *,EMPTYARG)862cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CharFmtHdl, ListBox *, EMPTYARG )
863cdf0e10cSrcweir {
864cdf0e10cSrcweir //	bAutomaticCharStyles = sal_False;
865cdf0e10cSrcweir 	String sEntry = aCharFmtLB.GetSelectEntry();
866cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
867cdf0e10cSrcweir 	sal_Bool bFormatNone = sEntry == ViewShell::GetShellRes()->aStrNone;
868cdf0e10cSrcweir 	SwCharFmt* pFmt = 0;
869cdf0e10cSrcweir 	if(!bFormatNone)
870cdf0e10cSrcweir 	{
871cdf0e10cSrcweir 		sal_uInt16 nChCount = pSh->GetCharFmtCount();
872cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < nChCount; i++)
873cdf0e10cSrcweir 		{
874cdf0e10cSrcweir 			SwCharFmt& rChFmt = pSh->GetCharFmt(i);
875cdf0e10cSrcweir 			if(rChFmt.GetName() == sEntry)
876cdf0e10cSrcweir 			{
877cdf0e10cSrcweir 				pFmt = &rChFmt;
878cdf0e10cSrcweir 				break;
879cdf0e10cSrcweir 			}
880cdf0e10cSrcweir 		}
881cdf0e10cSrcweir 		if(!pFmt)
882cdf0e10cSrcweir 		{
883cdf0e10cSrcweir 			SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
884cdf0e10cSrcweir 			SfxStyleSheetBase* pBase;
885cdf0e10cSrcweir 			pBase = pPool->Find(sEntry, SFX_STYLE_FAMILY_CHAR);
886cdf0e10cSrcweir 			if(!pBase)
887cdf0e10cSrcweir 				pBase = &pPool->Make(sEntry, SFX_STYLE_FAMILY_PAGE);
888cdf0e10cSrcweir 			pFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
889cdf0e10cSrcweir 
890cdf0e10cSrcweir 		}
891cdf0e10cSrcweir 	}
892cdf0e10cSrcweir 
893cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
894cdf0e10cSrcweir 	{
895cdf0e10cSrcweir 		if(nActLevel & nMask)
896cdf0e10cSrcweir 		{
897cdf0e10cSrcweir 			SwNumFmt aNumFmt(pNumRule->Get(i));
898cdf0e10cSrcweir 			if(bFormatNone)
899cdf0e10cSrcweir 				aNumFmt.SetCharFmt(0);
900cdf0e10cSrcweir 			else
901cdf0e10cSrcweir 				aNumFmt.SetCharFmt(pFmt);
902cdf0e10cSrcweir 			pNumRule->Set(i, aNumFmt);
903cdf0e10cSrcweir 		}
904cdf0e10cSrcweir 		nMask <<= 1;
905cdf0e10cSrcweir 	}
906cdf0e10cSrcweir 	return RET_OK;
907cdf0e10cSrcweir }
908cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
909cdf0e10cSrcweir  *
910cdf0e10cSrcweir  * --------------------------------------------------*/
~SwOutlineSettingsTabPage()911cdf0e10cSrcweir SwOutlineSettingsTabPage::~SwOutlineSettingsTabPage()
912cdf0e10cSrcweir {
913cdf0e10cSrcweir }
914cdf0e10cSrcweir /* -----------------07.07.98 16:27-------------------
915cdf0e10cSrcweir  *
916cdf0e10cSrcweir  * --------------------------------------------------*/
SetWrtShell(SwWrtShell * pShell)917cdf0e10cSrcweir void SwOutlineSettingsTabPage::SetWrtShell(SwWrtShell* pShell)
918cdf0e10cSrcweir {
919cdf0e10cSrcweir 	pSh = pShell;
920cdf0e10cSrcweir 	// Erfragen der NumRules dieses Dokumentes
921cdf0e10cSrcweir 	pNumRule = ((SwOutlineTabDialog*)GetTabDialog())->GetNumRule();
922cdf0e10cSrcweir 	pCollNames = ((SwOutlineTabDialog*)GetTabDialog())->GetCollNames();
923cdf0e10cSrcweir 
924cdf0e10cSrcweir 	//pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() );
925cdf0e10cSrcweir 
926cdf0e10cSrcweir 	aPreviewWIN.SetNumRule(pNumRule);
927cdf0e10cSrcweir 	aPreviewWIN.SetOutlineNames(pCollNames);
928cdf0e10cSrcweir 	// Startwert setzen - nActLevel muss hier 1 sein
929cdf0e10cSrcweir 	sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel);
930cdf0e10cSrcweir 	const SwNumFmt& rNumFmt = pNumRule->Get( nTmpLevel );
931cdf0e10cSrcweir 	aStartEdit.SetValue( rNumFmt.GetStart() );
932cdf0e10cSrcweir 
933cdf0e10cSrcweir 	// Poolformate fuer Ueberschriften anlegen
934cdf0e10cSrcweir 	String sStr;
935cdf0e10cSrcweir 	sal_uInt16 i;
936cdf0e10cSrcweir 	for( i = 0; i < MAXLEVEL; ++i )
937cdf0e10cSrcweir 	{
938cdf0e10cSrcweir 		aCollBox.InsertEntry( SwStyleNameMapper::GetUIName(
939cdf0e10cSrcweir                                     static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i), aEmptyStr ));
940cdf0e10cSrcweir 		aLevelLB.InsertEntry( String::CreateFromInt32(i + 1) );
941cdf0e10cSrcweir 	}
942cdf0e10cSrcweir 	sStr.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "1 - " ));
943cdf0e10cSrcweir 	sStr += String::CreateFromInt32(MAXLEVEL);
944cdf0e10cSrcweir 	aLevelLB.InsertEntry( sStr );
945cdf0e10cSrcweir 
946cdf0e10cSrcweir 	// Erfragen der Gliederungsebenen der Textvorlagen
947cdf0e10cSrcweir 	const sal_uInt16 nCount = pSh->GetTxtFmtCollCount();
948cdf0e10cSrcweir 	for( i = 0; i < nCount; ++i )
949cdf0e10cSrcweir 	{
950cdf0e10cSrcweir 		SwTxtFmtColl &rTxtColl = pSh->GetTxtFmtColl(i);
951cdf0e10cSrcweir 		if(!rTxtColl.IsDefault())
952cdf0e10cSrcweir 		{
953cdf0e10cSrcweir 			sStr = rTxtColl.GetName();
954cdf0e10cSrcweir 			if(LISTBOX_ENTRY_NOTFOUND == aCollBox.GetEntryPos( sStr ))
955cdf0e10cSrcweir 				aCollBox.InsertEntry( sStr );
956cdf0e10cSrcweir 		}
957cdf0e10cSrcweir 	}
958cdf0e10cSrcweir 
959cdf0e10cSrcweir 	aNumberBox.SelectNumberingType(rNumFmt.GetNumberingType());
960cdf0e10cSrcweir 	sal_uInt16 nOutlinePos = pSh->GetOutlinePos(MAXLEVEL);
961cdf0e10cSrcweir 	sal_uInt16 nTmp = 0;
962cdf0e10cSrcweir 	if(nOutlinePos != USHRT_MAX)
963cdf0e10cSrcweir 	{
964cdf0e10cSrcweir         nTmp = static_cast<sal_uInt16>(pSh->getIDocumentOutlineNodesAccess()->getOutlineLevel(nOutlinePos));
965cdf0e10cSrcweir 	}
966cdf0e10cSrcweir 	aLevelLB.SelectEntryPos(nTmp-1);//nTmp);//#outline level,zhaojianwei
967cdf0e10cSrcweir 
968cdf0e10cSrcweir 	// Zeichenvorlagen sammeln
969cdf0e10cSrcweir 	aCharFmtLB.Clear();
970cdf0e10cSrcweir 	aCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
971cdf0e10cSrcweir 
972cdf0e10cSrcweir 	// Zeichenvorlagen
973cdf0e10cSrcweir 	::FillCharStyleListBox(aCharFmtLB,
974cdf0e10cSrcweir 						pSh->GetView().GetDocShell());
975cdf0e10cSrcweir 	Update();
976cdf0e10cSrcweir }
977cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
978cdf0e10cSrcweir  *
979cdf0e10cSrcweir  * --------------------------------------------------*/
ActivatePage(const SfxItemSet &)980cdf0e10cSrcweir void    SwOutlineSettingsTabPage::ActivatePage(const SfxItemSet& )
981cdf0e10cSrcweir {
982cdf0e10cSrcweir     nActLevel = SwOutlineTabDialog::GetActNumLevel();
983cdf0e10cSrcweir 	if(nActLevel != USHRT_MAX)
984cdf0e10cSrcweir 		aLevelLB.SelectEntryPos(lcl_BitToLevel(nActLevel));
985cdf0e10cSrcweir 	else
986cdf0e10cSrcweir 		aLevelLB.SelectEntryPos(MAXLEVEL);
987cdf0e10cSrcweir 	LevelHdl(&aLevelLB);
988cdf0e10cSrcweir }
989cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
990cdf0e10cSrcweir  *
991cdf0e10cSrcweir  * --------------------------------------------------*/
DeactivatePage(SfxItemSet *)992cdf0e10cSrcweir int     SwOutlineSettingsTabPage::DeactivatePage(SfxItemSet*)
993cdf0e10cSrcweir {
994cdf0e10cSrcweir     SwOutlineTabDialog::SetActNumLevel(nActLevel);
995cdf0e10cSrcweir 	return LEAVE_PAGE;
996cdf0e10cSrcweir }
997cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
998cdf0e10cSrcweir  *
999cdf0e10cSrcweir  * --------------------------------------------------*/
FillItemSet(SfxItemSet &)1000cdf0e10cSrcweir sal_Bool    SwOutlineSettingsTabPage::FillItemSet( SfxItemSet&  )
1001cdf0e10cSrcweir {
1002cdf0e10cSrcweir 	return sal_True;
1003cdf0e10cSrcweir }
1004cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
1005cdf0e10cSrcweir  *
1006cdf0e10cSrcweir  * --------------------------------------------------*/
Reset(const SfxItemSet & rSet)1007cdf0e10cSrcweir void 	SwOutlineSettingsTabPage::Reset( const SfxItemSet& rSet )
1008cdf0e10cSrcweir {
1009cdf0e10cSrcweir 	ActivatePage(rSet);
1010cdf0e10cSrcweir }
1011cdf0e10cSrcweir /* -----------------07.07.98 14:19-------------------
1012cdf0e10cSrcweir  *
1013cdf0e10cSrcweir  * --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)1014cdf0e10cSrcweir SfxTabPage*	SwOutlineSettingsTabPage::Create( Window* pParent,
1015cdf0e10cSrcweir 								const SfxItemSet& rAttrSet)
1016cdf0e10cSrcweir {
1017cdf0e10cSrcweir 	return new SwOutlineSettingsTabPage(pParent, rAttrSet);
1018cdf0e10cSrcweir }
1019cdf0e10cSrcweir /* -----------------07.11.2002 15:13-----------------
1020cdf0e10cSrcweir  *
1021cdf0e10cSrcweir  * --------------------------------------------------*/
CheckForStartValue_Impl(sal_uInt16 nNumberingType)1022cdf0e10cSrcweir void SwOutlineSettingsTabPage::CheckForStartValue_Impl(sal_uInt16 nNumberingType)
1023cdf0e10cSrcweir {
1024cdf0e10cSrcweir     sal_Bool bIsNull = aStartEdit.GetValue() == 0;
1025cdf0e10cSrcweir     sal_Bool bNoZeroAllowed = nNumberingType < SVX_NUM_ARABIC ||
1026cdf0e10cSrcweir                         SVX_NUM_CHARS_UPPER_LETTER_N == nNumberingType ||
1027cdf0e10cSrcweir                         SVX_NUM_CHARS_LOWER_LETTER_N == nNumberingType;
1028cdf0e10cSrcweir     aStartEdit.SetMin(bNoZeroAllowed ? 1 : 0);
1029cdf0e10cSrcweir     if(bIsNull && bNoZeroAllowed)
1030cdf0e10cSrcweir         aStartEdit.GetModifyHdl().Call(&aStartEdit);
1031cdf0e10cSrcweir }
1032cdf0e10cSrcweir /*-----------------09.12.97 11:54-------------------
1033cdf0e10cSrcweir 
1034cdf0e10cSrcweir --------------------------------------------------*/
lcl_DrawBullet(VirtualDevice * pVDev,const SwNumFmt & rFmt,sal_uInt16 nXStart,sal_uInt16 nYStart,const Size & rSize)1035cdf0e10cSrcweir sal_uInt16 lcl_DrawBullet(VirtualDevice* pVDev,
1036cdf0e10cSrcweir 			const SwNumFmt& rFmt, sal_uInt16 nXStart,
1037cdf0e10cSrcweir 			sal_uInt16 nYStart, const Size& rSize)
1038cdf0e10cSrcweir {
1039cdf0e10cSrcweir 	Font aTmpFont(pVDev->GetFont());
1040cdf0e10cSrcweir 
1041cdf0e10cSrcweir 	Font aFont(*rFmt.GetBulletFont());
1042cdf0e10cSrcweir 	aFont.SetSize(rSize);
1043cdf0e10cSrcweir 	aFont.SetTransparent(sal_True);
1044cdf0e10cSrcweir 	pVDev->SetFont( aFont );
1045cdf0e10cSrcweir 	String aText(rFmt.GetBulletChar());
1046cdf0e10cSrcweir 	pVDev->DrawText( Point(nXStart, nYStart), aText );
1047cdf0e10cSrcweir 	sal_uInt16 nRet = (sal_uInt16)pVDev->GetTextWidth(aText);
1048cdf0e10cSrcweir 
1049cdf0e10cSrcweir 	pVDev->SetFont(aTmpFont);
1050cdf0e10cSrcweir 	return nRet;
1051cdf0e10cSrcweir }
1052cdf0e10cSrcweir /*-----------------09.12.97 11:49-------------------
1053cdf0e10cSrcweir 
1054cdf0e10cSrcweir --------------------------------------------------*/
lcl_DrawGraphic(VirtualDevice * pVDev,const SwNumFmt & rFmt,sal_uInt16 nXStart,sal_uInt16 nYStart,sal_uInt16 nDivision)1055cdf0e10cSrcweir sal_uInt16 lcl_DrawGraphic(VirtualDevice* pVDev, const SwNumFmt &rFmt, sal_uInt16 nXStart,
1056cdf0e10cSrcweir 						sal_uInt16 nYStart, sal_uInt16 nDivision)
1057cdf0e10cSrcweir {
1058cdf0e10cSrcweir 	const SvxBrushItem* pBrushItem = rFmt.GetBrush();
1059cdf0e10cSrcweir 	sal_uInt16 nRet = 0;
1060cdf0e10cSrcweir 	if(pBrushItem)
1061cdf0e10cSrcweir 	{
1062cdf0e10cSrcweir 		const Graphic* pGrf = pBrushItem->GetGraphic();
1063cdf0e10cSrcweir 		if(pGrf)
1064cdf0e10cSrcweir 		{
1065cdf0e10cSrcweir 			Size aGSize( rFmt.GetGraphicSize());
1066cdf0e10cSrcweir 			aGSize.Width() /= nDivision;
1067cdf0e10cSrcweir 			nRet = (sal_uInt16)aGSize.Width();
1068cdf0e10cSrcweir 			aGSize.Height() /= nDivision;
1069cdf0e10cSrcweir 			pGrf->Draw( pVDev, Point(nXStart,nYStart),
1070cdf0e10cSrcweir 					pVDev->PixelToLogic( aGSize ) );
1071cdf0e10cSrcweir 		}
1072cdf0e10cSrcweir 	}
1073cdf0e10cSrcweir 	return nRet;
1074cdf0e10cSrcweir 
1075cdf0e10cSrcweir }
1076cdf0e10cSrcweir /*-----------------02.12.97 10:34-------------------
1077cdf0e10cSrcweir 	Vorschau der Numerierung painten
1078cdf0e10cSrcweir --------------------------------------------------*/
Paint(const Rectangle &)1079cdf0e10cSrcweir void    NumberingPreview::Paint( const Rectangle& /*rRect*/ )
1080cdf0e10cSrcweir {
1081cdf0e10cSrcweir 	Size aSize(PixelToLogic(GetOutputSizePixel()));
1082cdf0e10cSrcweir 	Rectangle aRect(Point(0,0), aSize);
1083cdf0e10cSrcweir 
1084cdf0e10cSrcweir 	VirtualDevice* pVDev = new VirtualDevice(*this);
1085cdf0e10cSrcweir 	pVDev->SetMapMode(GetMapMode());
1086cdf0e10cSrcweir 	pVDev->SetOutputSize( aSize );
1087cdf0e10cSrcweir 
1088cdf0e10cSrcweir 	// #101524# OJ
1089cdf0e10cSrcweir 	pVDev->SetFillColor( GetSettings().GetStyleSettings().GetWindowColor() );
1090cdf0e10cSrcweir 	pVDev->SetLineColor( GetSettings().GetStyleSettings().GetButtonTextColor() );
1091cdf0e10cSrcweir 	pVDev->DrawRect(aRect);
1092cdf0e10cSrcweir 
1093cdf0e10cSrcweir 	if(pActNum)
1094cdf0e10cSrcweir 	{
1095cdf0e10cSrcweir 		sal_uInt16 nWidthRelation;
1096cdf0e10cSrcweir 		if(nPageWidth)
1097cdf0e10cSrcweir 		{
1098cdf0e10cSrcweir 			nWidthRelation = sal_uInt16 (nPageWidth / aSize.Width());
1099cdf0e10cSrcweir 			if(bPosition)
1100cdf0e10cSrcweir 				nWidthRelation = nWidthRelation * 2 / 3;
1101cdf0e10cSrcweir 			else
1102cdf0e10cSrcweir 				nWidthRelation = nWidthRelation / 4;
1103cdf0e10cSrcweir 		}
1104cdf0e10cSrcweir 		else
1105cdf0e10cSrcweir 			nWidthRelation = 30; // Kapiteldialog
1106cdf0e10cSrcweir 
1107cdf0e10cSrcweir 		//Hoehe pro Ebene
1108cdf0e10cSrcweir         sal_uInt16 nXStep = sal_uInt16(aSize.Width() / (3 * MAXLEVEL));
1109cdf0e10cSrcweir 		if(MAXLEVEL < 10)
1110cdf0e10cSrcweir 			nXStep /= 2;
1111cdf0e10cSrcweir 		sal_uInt16 nYStart = 4;
1112cdf0e10cSrcweir         sal_uInt16 nYStep = sal_uInt16((aSize.Height() - 6)/ MAXLEVEL);
1113cdf0e10cSrcweir         aStdFont = OutputDevice::GetDefaultFont(
1114cdf0e10cSrcweir                                     DEFAULTFONT_UI_SANS, (LanguageType)GetAppLanguage(),
1115cdf0e10cSrcweir 									DEFAULTFONT_FLAGS_ONLYONE, this );
1116cdf0e10cSrcweir 		// #101524# OJ
1117cdf0e10cSrcweir         aStdFont.SetColor( SwViewOption::GetFontColor() );
1118cdf0e10cSrcweir 
1119cdf0e10cSrcweir 		//
1120cdf0e10cSrcweir 		sal_uInt16 nFontHeight = nYStep * 6 / 10;
1121cdf0e10cSrcweir 		if(bPosition)
1122cdf0e10cSrcweir 			nFontHeight = nYStep * 15 / 10;
1123cdf0e10cSrcweir 		aStdFont.SetSize(Size( 0, nFontHeight ));
1124cdf0e10cSrcweir 
1125cdf0e10cSrcweir 		sal_uInt16 nPreNum = pActNum->Get(0).GetStart();
1126cdf0e10cSrcweir 
1127cdf0e10cSrcweir 		if(bPosition)
1128cdf0e10cSrcweir 		{
1129cdf0e10cSrcweir 			sal_uInt16 nLineHeight = nFontHeight * 8 / 7;
1130cdf0e10cSrcweir 			sal_uInt8 nStart = 0;
1131cdf0e10cSrcweir 			while( !(nActLevel & (1<<nStart)) )
1132cdf0e10cSrcweir 			{
1133cdf0e10cSrcweir 				nStart++;
1134cdf0e10cSrcweir 			}
1135cdf0e10cSrcweir 			if(nStart) // damit moeglichs Vorgaenger und Nachfolger gezeigt werden
1136cdf0e10cSrcweir 				nStart--;
1137cdf0e10cSrcweir 
1138cdf0e10cSrcweir             SwNumberTree::tNumberVector aNumVector;
1139cdf0e10cSrcweir 			sal_uInt8 nEnd = Min( (sal_uInt8)(nStart + 3), MAXLEVEL );
1140cdf0e10cSrcweir 			for( sal_uInt8 nLevel = nStart; nLevel < nEnd; ++nLevel )
1141cdf0e10cSrcweir 			{
1142cdf0e10cSrcweir 				const SwNumFmt &rFmt = pActNum->Get(nLevel);
1143cdf0e10cSrcweir 				aNumVector.push_back(rFmt.GetStart());
1144cdf0e10cSrcweir 
1145cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
1146cdf0e10cSrcweir                 sal_uInt16 nXStart( 0 );
1147cdf0e10cSrcweir                 short nTextOffset( 0 );
1148cdf0e10cSrcweir                 sal_uInt16 nNumberXPos( 0 );
1149cdf0e10cSrcweir                 if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1150cdf0e10cSrcweir                 {
1151cdf0e10cSrcweir                     nXStart = rFmt.GetAbsLSpace() / nWidthRelation;
1152cdf0e10cSrcweir                     nTextOffset = rFmt.GetCharTextDistance() / nWidthRelation;
1153cdf0e10cSrcweir                     nNumberXPos = nXStart;
1154cdf0e10cSrcweir                     sal_uInt16 nFirstLineOffset = (-rFmt.GetFirstLineOffset()) / nWidthRelation;
1155cdf0e10cSrcweir 
1156cdf0e10cSrcweir                     if(nFirstLineOffset <= nNumberXPos)
1157cdf0e10cSrcweir                         nNumberXPos = nNumberXPos - nFirstLineOffset;
1158cdf0e10cSrcweir                     else
1159cdf0e10cSrcweir                         nNumberXPos = 0;
1160cdf0e10cSrcweir                 }
1161cdf0e10cSrcweir                 else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
1162cdf0e10cSrcweir                 {
1163cdf0e10cSrcweir                     const long nTmpNumberXPos( ( rFmt.GetIndentAt() +
1164cdf0e10cSrcweir                                                  rFmt.GetFirstLineIndent() ) /
1165cdf0e10cSrcweir                                                nWidthRelation );
1166cdf0e10cSrcweir                     if ( nTmpNumberXPos < 0 )
1167cdf0e10cSrcweir                     {
1168cdf0e10cSrcweir                         nNumberXPos = 0;
1169cdf0e10cSrcweir                     }
1170cdf0e10cSrcweir                     else
1171cdf0e10cSrcweir                     {
1172cdf0e10cSrcweir                         nNumberXPos = static_cast<sal_uInt16>(nTmpNumberXPos);
1173cdf0e10cSrcweir                     }
1174cdf0e10cSrcweir                 }
1175cdf0e10cSrcweir                 // <--
1176cdf0e10cSrcweir 
1177cdf0e10cSrcweir 				sal_uInt16 nBulletWidth = 0;
1178cdf0e10cSrcweir 				if( SVX_NUM_BITMAP == rFmt.GetNumberingType() )
1179cdf0e10cSrcweir 				{
1180cdf0e10cSrcweir 					nBulletWidth = lcl_DrawGraphic(pVDev, rFmt,
1181cdf0e10cSrcweir 										nNumberXPos,
1182cdf0e10cSrcweir 											nYStart, nWidthRelation);
1183cdf0e10cSrcweir 				}
1184cdf0e10cSrcweir 				else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() )
1185cdf0e10cSrcweir 				{
1186cdf0e10cSrcweir 					nBulletWidth =  lcl_DrawBullet(pVDev, rFmt, nNumberXPos, nYStart, aStdFont.GetSize());
1187cdf0e10cSrcweir 				}
1188cdf0e10cSrcweir 				else
1189cdf0e10cSrcweir 				{
1190cdf0e10cSrcweir 					pVDev->SetFont(aStdFont);
1191cdf0e10cSrcweir 					if(pActNum->IsContinusNum())
1192cdf0e10cSrcweir 						aNumVector[nLevel] = nPreNum;
1193cdf0e10cSrcweir                     // --> OD 2005-11-17 #128041#
1194cdf0e10cSrcweir                     String aText(pActNum->MakeNumString( aNumVector ));
1195cdf0e10cSrcweir                     // <--
1196cdf0e10cSrcweir 					pVDev->DrawText( Point(nNumberXPos, nYStart), aText );
1197cdf0e10cSrcweir 					nBulletWidth = (sal_uInt16)pVDev->GetTextWidth(aText);
1198cdf0e10cSrcweir 					nPreNum++;
1199cdf0e10cSrcweir 				}
1200cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
1201cdf0e10cSrcweir                 if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT &&
1202cdf0e10cSrcweir                      rFmt.GetLabelFollowedBy() == SvxNumberFormat::SPACE )
1203cdf0e10cSrcweir                 {
1204cdf0e10cSrcweir                     pVDev->SetFont(aStdFont);
1205cdf0e10cSrcweir                     String aText(' ');
1206cdf0e10cSrcweir                     pVDev->DrawText( Point(nNumberXPos, nYStart), aText );
1207cdf0e10cSrcweir                     nBulletWidth = nBulletWidth + (sal_uInt16)pVDev->GetTextWidth(aText);
1208cdf0e10cSrcweir                 }
1209cdf0e10cSrcweir                 // <--
1210cdf0e10cSrcweir 
1211cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
1212cdf0e10cSrcweir                 sal_uInt16 nTextXPos( 0 );
1213cdf0e10cSrcweir                 if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1214cdf0e10cSrcweir                 {
1215cdf0e10cSrcweir                     nTextXPos = nXStart;
1216cdf0e10cSrcweir                     if(nTextOffset < 0)
1217cdf0e10cSrcweir                          nTextXPos = nTextXPos + nTextOffset;
1218cdf0e10cSrcweir                     if(nNumberXPos + nBulletWidth + nTextOffset > nTextXPos )
1219cdf0e10cSrcweir                         nTextXPos = nNumberXPos + nBulletWidth + nTextOffset;
1220cdf0e10cSrcweir                 }
1221cdf0e10cSrcweir                 else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
1222cdf0e10cSrcweir                 {
1223cdf0e10cSrcweir                     switch ( rFmt.GetLabelFollowedBy() )
1224cdf0e10cSrcweir                     {
1225cdf0e10cSrcweir                         case SvxNumberFormat::LISTTAB:
1226cdf0e10cSrcweir                         {
1227cdf0e10cSrcweir                             nTextXPos = static_cast<sal_uInt16>(
1228cdf0e10cSrcweir                                             rFmt.GetListtabPos() / nWidthRelation );
1229cdf0e10cSrcweir                             if ( nTextXPos < nNumberXPos + nBulletWidth )
1230cdf0e10cSrcweir                             {
1231cdf0e10cSrcweir                                 nTextXPos = nNumberXPos + nBulletWidth;
1232cdf0e10cSrcweir                             }
1233cdf0e10cSrcweir                         }
1234cdf0e10cSrcweir                         break;
1235cdf0e10cSrcweir                         case SvxNumberFormat::SPACE:
1236cdf0e10cSrcweir                         case SvxNumberFormat::NOTHING:
1237cdf0e10cSrcweir                         {
1238cdf0e10cSrcweir                             nTextXPos = nNumberXPos + nBulletWidth;
1239cdf0e10cSrcweir                         }
1240cdf0e10cSrcweir                         break;
1241cdf0e10cSrcweir                     }
1242cdf0e10cSrcweir 
1243cdf0e10cSrcweir                     nXStart = static_cast<sal_uInt16>( rFmt.GetIndentAt() / nWidthRelation );
1244cdf0e10cSrcweir                 }
1245cdf0e10cSrcweir                 // <--
1246cdf0e10cSrcweir 
1247cdf0e10cSrcweir 
1248cdf0e10cSrcweir                 Rectangle aRect1(Point(nTextXPos, nYStart + nFontHeight / 2), Size(aSize.Width() / 2, 2));
1249cdf0e10cSrcweir 				pVDev->SetFillColor( GetSettings().GetStyleSettings().GetWindowColor() ); // Color( COL_BLACK ) );
1250cdf0e10cSrcweir 				pVDev->DrawRect( aRect1 );
1251cdf0e10cSrcweir 
1252cdf0e10cSrcweir 				Rectangle aRect2(Point(nXStart, nYStart + nLineHeight + nFontHeight / 2 ), Size(aSize.Width() / 2, 2));
1253cdf0e10cSrcweir 				pVDev->DrawRect( aRect2 );
1254cdf0e10cSrcweir 				nYStart += 2 * nLineHeight;
1255cdf0e10cSrcweir 			}
1256cdf0e10cSrcweir 		}
1257cdf0e10cSrcweir 		else
1258cdf0e10cSrcweir 		{
1259cdf0e10cSrcweir             SwNumberTree::tNumberVector aNumVector;
1260cdf0e10cSrcweir 			sal_uInt16 nLineHeight = nFontHeight * 3 / 2;
1261cdf0e10cSrcweir 			for( sal_uInt8 nLevel = 0; nLevel < MAXLEVEL;
1262cdf0e10cSrcweir                             ++nLevel, nYStart = nYStart + nYStep )
1263cdf0e10cSrcweir 			{
1264cdf0e10cSrcweir 				const SwNumFmt &rFmt = pActNum->Get(nLevel);
1265cdf0e10cSrcweir 				aNumVector.push_back(rFmt.GetStart());
1266cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
1267cdf0e10cSrcweir                 sal_uInt16 nXStart( 0 );
1268cdf0e10cSrcweir                 if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1269cdf0e10cSrcweir                 {
1270cdf0e10cSrcweir                     nXStart = rFmt.GetAbsLSpace() / nWidthRelation;
1271cdf0e10cSrcweir                 }
1272cdf0e10cSrcweir                 else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
1273cdf0e10cSrcweir                 {
1274cdf0e10cSrcweir                     const long nTmpXStart( ( rFmt.GetIndentAt() +
1275cdf0e10cSrcweir                                              rFmt.GetFirstLineIndent() ) /
1276cdf0e10cSrcweir                                            nWidthRelation );
1277cdf0e10cSrcweir                     if ( nTmpXStart < 0 )
1278cdf0e10cSrcweir                     {
1279cdf0e10cSrcweir                         nXStart = 0;
1280cdf0e10cSrcweir                     }
1281cdf0e10cSrcweir                     else
1282cdf0e10cSrcweir                     {
1283cdf0e10cSrcweir                         nXStart = static_cast<sal_uInt16>(nTmpXStart);
1284cdf0e10cSrcweir                     }
1285cdf0e10cSrcweir                 }
1286cdf0e10cSrcweir                 nXStart /= 2;
1287cdf0e10cSrcweir                 nXStart += 2;
1288cdf0e10cSrcweir                 // <--
1289cdf0e10cSrcweir 				sal_uInt16 nTextOffset = 2 * nXStep;
1290cdf0e10cSrcweir 				if( SVX_NUM_BITMAP == rFmt.GetNumberingType() )
1291cdf0e10cSrcweir 				{
1292cdf0e10cSrcweir 					lcl_DrawGraphic(pVDev, rFmt, nXStart, nYStart, nWidthRelation);
1293cdf0e10cSrcweir 					nTextOffset = nLineHeight + nXStep;
1294cdf0e10cSrcweir 				}
1295cdf0e10cSrcweir 				else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() )
1296cdf0e10cSrcweir 				{
1297cdf0e10cSrcweir 					nTextOffset =  lcl_DrawBullet(pVDev, rFmt, nXStart, nYStart, aStdFont.GetSize());
1298cdf0e10cSrcweir                     nTextOffset = nTextOffset + nXStep;
1299cdf0e10cSrcweir 				}
1300cdf0e10cSrcweir 				else
1301cdf0e10cSrcweir 				{
1302cdf0e10cSrcweir 					pVDev->SetFont(aStdFont);
1303cdf0e10cSrcweir 					if(pActNum->IsContinusNum())
1304cdf0e10cSrcweir 						aNumVector[nLevel] = nPreNum;
1305cdf0e10cSrcweir                     // --> OD 2005-11-17 #128041#
1306cdf0e10cSrcweir                     String aText(pActNum->MakeNumString( aNumVector ));
1307cdf0e10cSrcweir                     // <--
1308cdf0e10cSrcweir 					pVDev->DrawText( Point(nXStart, nYStart), aText );
1309cdf0e10cSrcweir 					nTextOffset = (sal_uInt16)pVDev->GetTextWidth(aText);
1310cdf0e10cSrcweir                     nTextOffset = nTextOffset + nXStep;
1311cdf0e10cSrcweir 					nPreNum++;
1312cdf0e10cSrcweir 				}
1313cdf0e10cSrcweir 				pVDev->SetFont(aStdFont);
1314cdf0e10cSrcweir 
1315cdf0e10cSrcweir 				// Changed as per BugID 79541 Branding/Configuration
1316cdf0e10cSrcweir                 uno::Any MyAny = ::utl::ConfigManager::GetConfigManager()->
1317cdf0e10cSrcweir                         GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTNAME );
1318cdf0e10cSrcweir                 ::rtl::OUString aProductName;
1319cdf0e10cSrcweir 
1320cdf0e10cSrcweir 				MyAny >>= aProductName;
1321cdf0e10cSrcweir 				String sMsg(C2S("%PRODUCTNAME"));
1322cdf0e10cSrcweir 				sMsg.SearchAndReplaceAscii( "%PRODUCTNAME" , aProductName );
1323cdf0e10cSrcweir 
1324cdf0e10cSrcweir 				if(pOutlineNames)
1325cdf0e10cSrcweir 					sMsg = pOutlineNames[nLevel];
1326cdf0e10cSrcweir 				pVDev->DrawText( Point(nXStart + nTextOffset, nYStart), sMsg );
1327cdf0e10cSrcweir 			}
1328cdf0e10cSrcweir 		}
1329cdf0e10cSrcweir 	}
1330cdf0e10cSrcweir 	DrawOutDev(	Point(0,0), aSize,
1331cdf0e10cSrcweir 				Point(0,0), aSize,
1332cdf0e10cSrcweir 						*pVDev );
1333cdf0e10cSrcweir 	delete pVDev;
1334cdf0e10cSrcweir 
1335cdf0e10cSrcweir }
1336cdf0e10cSrcweir 
1337cdf0e10cSrcweir /*-----------------02.12.97 10:34-------------------
1338cdf0e10cSrcweir 
1339cdf0e10cSrcweir --------------------------------------------------*/
~NumberingPreview()1340cdf0e10cSrcweir NumberingPreview::~NumberingPreview()
1341cdf0e10cSrcweir {
1342cdf0e10cSrcweir }
1343cdf0e10cSrcweir 
1344cdf0e10cSrcweir 
1345