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