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