xref: /AOO41X/main/sw/source/ui/misc/num.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 
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #define USE_NUMTABPAGES
37*cdf0e10cSrcweir #define _NUM_CXX
38*cdf0e10cSrcweir #include <hintids.hxx>
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #ifndef _MSGBOX_HXX //autogen
41*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
42*cdf0e10cSrcweir #endif
43*cdf0e10cSrcweir #include <tools/urlobj.hxx>
44*cdf0e10cSrcweir #include <sfx2/app.hxx>
45*cdf0e10cSrcweir #include <sfx2/imgmgr.hxx>
46*cdf0e10cSrcweir #include <svx/gallery.hxx>
47*cdf0e10cSrcweir #include <editeng/brshitem.hxx>
48*cdf0e10cSrcweir #include <editeng/lrspitem.hxx>
49*cdf0e10cSrcweir #include <editeng/numitem.hxx>
50*cdf0e10cSrcweir #include <swvset.hxx>
51*cdf0e10cSrcweir #include <swmodule.hxx>
52*cdf0e10cSrcweir #include <wrtsh.hxx>
53*cdf0e10cSrcweir #ifndef _DOCSH_HXX
54*cdf0e10cSrcweir #include <docsh.hxx>
55*cdf0e10cSrcweir #endif
56*cdf0e10cSrcweir #ifndef _WVIEW_HXX
57*cdf0e10cSrcweir #include <wview.hxx>
58*cdf0e10cSrcweir #endif
59*cdf0e10cSrcweir #include <uitool.hxx>
60*cdf0e10cSrcweir #ifndef _WDOCSH_HXX
61*cdf0e10cSrcweir #include <wdocsh.hxx>
62*cdf0e10cSrcweir #endif
63*cdf0e10cSrcweir #include <uiitems.hxx>
64*cdf0e10cSrcweir #include <docstyle.hxx>
65*cdf0e10cSrcweir #include <charfmt.hxx>
66*cdf0e10cSrcweir #include <uinums.hxx>
67*cdf0e10cSrcweir #include <poolfmt.hxx>
68*cdf0e10cSrcweir #include <shellres.hxx>
69*cdf0e10cSrcweir #include <outline.hxx>
70*cdf0e10cSrcweir #include <num.hxx>
71*cdf0e10cSrcweir #include <viewopt.hxx>
72*cdf0e10cSrcweir #include <frmmgr.hxx>
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir #ifndef _MISC_HRC
75*cdf0e10cSrcweir #include <misc.hrc>
76*cdf0e10cSrcweir #endif
77*cdf0e10cSrcweir #ifndef _FRMUI_HRC
78*cdf0e10cSrcweir #include <frmui.hrc>
79*cdf0e10cSrcweir #endif
80*cdf0e10cSrcweir #ifndef _NUM_HRC
81*cdf0e10cSrcweir #include <num.hrc>
82*cdf0e10cSrcweir #endif
83*cdf0e10cSrcweir #ifndef _GLOBALS_HRC
84*cdf0e10cSrcweir #include <globals.hrc>
85*cdf0e10cSrcweir #endif
86*cdf0e10cSrcweir #ifndef _HELPID_H
87*cdf0e10cSrcweir #include <helpid.h>
88*cdf0e10cSrcweir #endif
89*cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
90*cdf0e10cSrcweir #include <svx/svxids.hrc>
91*cdf0e10cSrcweir #include <svx/dialogs.hrc>
92*cdf0e10cSrcweir #include <svl/stritem.hxx>
93*cdf0e10cSrcweir #include <svl/aeitem.hxx>
94*cdf0e10cSrcweir #include <svl/slstitm.hxx>
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir static sal_Bool bLastRelative = sal_False;
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir --------------------------------------------------*/
101*cdf0e10cSrcweir SwNumPositionTabPage::SwNumPositionTabPage(Window* pParent,
102*cdf0e10cSrcweir 							   const SfxItemSet& rSet) :
103*cdf0e10cSrcweir 	SfxTabPage( pParent, SW_RES( TP_NUM_POSITION ), rSet ),
104*cdf0e10cSrcweir     aLevelFL(       this, SW_RES(FL_LEVEL    )),
105*cdf0e10cSrcweir     aLevelLB(       this, SW_RES(LB_LEVEL   )),
106*cdf0e10cSrcweir     aPositionFL(    this, SW_RES(FL_POSITION )),
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir     aDistBorderFT(  this, SW_RES(FT_BORDERDIST  )),
109*cdf0e10cSrcweir     aDistBorderMF(  this, SW_RES(MF_BORDERDIST  )),
110*cdf0e10cSrcweir     aRelativeCB(    this, SW_RES(CB_RELATIVE     )),
111*cdf0e10cSrcweir     aIndentFT(      this, SW_RES(FT_INDENT       )),
112*cdf0e10cSrcweir     aIndentMF(      this, SW_RES(MF_INDENT       )),
113*cdf0e10cSrcweir     aDistNumFT(     this, SW_RES(FT_NUMDIST     )),
114*cdf0e10cSrcweir     aDistNumMF(     this, SW_RES(MF_NUMDIST     )),
115*cdf0e10cSrcweir     aAlignFT(       this, SW_RES(FT_ALIGN    )),
116*cdf0e10cSrcweir     aAlignLB(       this, SW_RES(LB_ALIGN    )),
117*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
118*cdf0e10cSrcweir     aLabelFollowedByFT( this, SW_RES(FT_LABEL_FOLLOWED_BY) ),
119*cdf0e10cSrcweir     aLabelFollowedByLB( this, SW_RES(LB_LABEL_FOLLOWED_BY) ),
120*cdf0e10cSrcweir     aListtabFT( this, SW_RES(FT_LISTTAB) ),
121*cdf0e10cSrcweir     aListtabMF( this, SW_RES(MF_LISTTAB) ),
122*cdf0e10cSrcweir     aAlign2FT( this, SW_RES(FT_ALIGN_2) ),
123*cdf0e10cSrcweir     aAlign2LB( this, SW_RES(LB_ALIGN_2) ),
124*cdf0e10cSrcweir     aAlignedAtFT( this, SW_RES(FT_ALIGNED_AT) ),
125*cdf0e10cSrcweir     aAlignedAtMF( this, SW_RES(MF_ALIGNED_AT) ),
126*cdf0e10cSrcweir     aIndentAtFT( this, SW_RES(FT_INDENT_AT) ),
127*cdf0e10cSrcweir     aIndentAtMF( this, SW_RES(MF_INDENT_AT) ),
128*cdf0e10cSrcweir     // <--
129*cdf0e10cSrcweir     aStandardPB(    this, SW_RES(PB_STANDARD        )),
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir     aPreviewWIN(    this, SW_RES(WIN_PREVIEW     )),
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir     pActNum(0),
134*cdf0e10cSrcweir     pSaveNum(0),
135*cdf0e10cSrcweir     pWrtSh(0),
136*cdf0e10cSrcweir 	pOutlineDlg(0),
137*cdf0e10cSrcweir     bPreset( sal_False ),
138*cdf0e10cSrcweir     bInInintControl(sal_False),
139*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
140*cdf0e10cSrcweir     bLabelAlignmentPosAndSpaceModeActive( false )
141*cdf0e10cSrcweir     // <--
142*cdf0e10cSrcweir {
143*cdf0e10cSrcweir 	FreeResource();
144*cdf0e10cSrcweir 	SetExchangeSupport();
145*cdf0e10cSrcweir 	aPreviewWIN.SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 	aStandardPB.SetAccessibleRelationMemberOf(&aPositionFL);
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir 
150*cdf0e10cSrcweir 	aRelativeCB.Check();
151*cdf0e10cSrcweir 	aAlignLB.SetSelectHdl(LINK(this, SwNumPositionTabPage, EditModifyHdl));
152*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
153*cdf0e10cSrcweir     aAlign2LB.SetSelectHdl(LINK(this, SwNumPositionTabPage, EditModifyHdl));
154*cdf0e10cSrcweir     for ( sal_uInt16 i = 0; i < aAlignLB.GetEntryCount(); ++i )
155*cdf0e10cSrcweir     {
156*cdf0e10cSrcweir         aAlign2LB.InsertEntry( aAlignLB.GetEntry( i ) );
157*cdf0e10cSrcweir     }
158*cdf0e10cSrcweir     aAlign2LB.SetDropDownLineCount( aAlign2LB.GetEntryCount() );
159*cdf0e10cSrcweir     aAlign2FT.SetText( aAlignFT.GetText() );
160*cdf0e10cSrcweir     // <--
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir 	Link aLk = LINK(this, SwNumPositionTabPage, DistanceHdl);
163*cdf0e10cSrcweir 	aDistBorderMF.SetUpHdl(aLk);
164*cdf0e10cSrcweir 	aDistNumMF.SetUpHdl(aLk);
165*cdf0e10cSrcweir 	aIndentMF.SetUpHdl(aLk);
166*cdf0e10cSrcweir 	aDistBorderMF.SetDownHdl(aLk);
167*cdf0e10cSrcweir 	aDistNumMF.SetDownHdl(aLk);
168*cdf0e10cSrcweir 	aIndentMF.SetDownHdl(aLk);
169*cdf0e10cSrcweir 	aDistBorderMF.SetLoseFocusHdl(aLk);
170*cdf0e10cSrcweir 	aDistNumMF.SetLoseFocusHdl(aLk);
171*cdf0e10cSrcweir 	aIndentMF.SetLoseFocusHdl(aLk);
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
174*cdf0e10cSrcweir     aLabelFollowedByLB.SetDropDownLineCount( aLabelFollowedByLB.GetEntryCount() );
175*cdf0e10cSrcweir     aLabelFollowedByLB.SetSelectHdl( LINK(this, SwNumPositionTabPage, LabelFollowedByHdl_Impl) );
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir     aLk = LINK(this, SwNumPositionTabPage, ListtabPosHdl_Impl);
178*cdf0e10cSrcweir     aListtabMF.SetUpHdl(aLk);
179*cdf0e10cSrcweir     aListtabMF.SetDownHdl(aLk);
180*cdf0e10cSrcweir     aListtabMF.SetLoseFocusHdl(aLk);
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir     aLk = LINK(this, SwNumPositionTabPage, AlignAtHdl_Impl);
183*cdf0e10cSrcweir     aAlignedAtMF.SetUpHdl(aLk);
184*cdf0e10cSrcweir     aAlignedAtMF.SetDownHdl(aLk);
185*cdf0e10cSrcweir     aAlignedAtMF.SetLoseFocusHdl(aLk);
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir     aLk = LINK(this, SwNumPositionTabPage, IndentAtHdl_Impl);
188*cdf0e10cSrcweir     aIndentAtMF.SetUpHdl(aLk);
189*cdf0e10cSrcweir     aIndentAtMF.SetDownHdl(aLk);
190*cdf0e10cSrcweir     aIndentAtMF.SetLoseFocusHdl(aLk);
191*cdf0e10cSrcweir     // <--
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 	aLevelLB.SetSelectHdl(LINK(this, SwNumPositionTabPage, LevelHdl));
194*cdf0e10cSrcweir 	aRelativeCB.SetClickHdl(LINK(this, SwNumPositionTabPage, RelativeHdl));
195*cdf0e10cSrcweir 	aStandardPB.SetClickHdl(LINK(this, SwNumPositionTabPage, StandardHdl));
196*cdf0e10cSrcweir 
197*cdf0e10cSrcweir 	// Ebenen einfuegen
198*cdf0e10cSrcweir 	for(sal_uInt16 i = 1; i <= MAXLEVEL; i++)
199*cdf0e10cSrcweir 		aLevelLB.InsertEntry(String::CreateFromInt32(i));
200*cdf0e10cSrcweir 	String sEntry(String::CreateFromAscii("1 - "));
201*cdf0e10cSrcweir 	sEntry += String::CreateFromInt32(MAXLEVEL);
202*cdf0e10cSrcweir 	aLevelLB.InsertEntry(sEntry);
203*cdf0e10cSrcweir 	aLevelLB.SelectEntry(sEntry);
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir 	aRelativeCB.Check(bLastRelative);
206*cdf0e10cSrcweir 	aPreviewWIN.SetPositionMode();
207*cdf0e10cSrcweir }
208*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
209*cdf0e10cSrcweir 
210*cdf0e10cSrcweir --------------------------------------------------*/
211*cdf0e10cSrcweir SwNumPositionTabPage::~SwNumPositionTabPage()
212*cdf0e10cSrcweir {
213*cdf0e10cSrcweir 	delete pActNum;
214*cdf0e10cSrcweir }
215*cdf0e10cSrcweir /*-----------------03.12.97 10:06-------------------
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir --------------------------------------------------*/
218*cdf0e10cSrcweir void SwNumPositionTabPage::InitControls()
219*cdf0e10cSrcweir {
220*cdf0e10cSrcweir 	bInInintControl	= sal_True;
221*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
222*cdf0e10cSrcweir     const bool bRelative = !bLabelAlignmentPosAndSpaceModeActive &&
223*cdf0e10cSrcweir                            aRelativeCB.IsEnabled() && aRelativeCB.IsChecked();
224*cdf0e10cSrcweir     const bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 &&
225*cdf0e10cSrcweir                                   USHRT_MAX != nActNumLvl;
226*cdf0e10cSrcweir 
227*cdf0e10cSrcweir     aDistBorderMF.Enable( !bLabelAlignmentPosAndSpaceModeActive &&
228*cdf0e10cSrcweir                           ( bSingleSelection || bRelative || pOutlineDlg != 0 ) );
229*cdf0e10cSrcweir     aDistBorderFT.Enable( !bLabelAlignmentPosAndSpaceModeActive &&
230*cdf0e10cSrcweir                           ( bSingleSelection || bRelative || pOutlineDlg != 0 ) );
231*cdf0e10cSrcweir     // <--
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir     bool bSetDistEmpty = false;
234*cdf0e10cSrcweir     bool bSameDistBorderNum = !bLabelAlignmentPosAndSpaceModeActive;
235*cdf0e10cSrcweir     bool bSameDist      = !bLabelAlignmentPosAndSpaceModeActive;
236*cdf0e10cSrcweir     bool bSameIndent    = !bLabelAlignmentPosAndSpaceModeActive;
237*cdf0e10cSrcweir     bool bSameAdjust    = true;
238*cdf0e10cSrcweir 
239*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
240*cdf0e10cSrcweir     bool bSameLabelFollowedBy = bLabelAlignmentPosAndSpaceModeActive;
241*cdf0e10cSrcweir     bool bSameListtab = bLabelAlignmentPosAndSpaceModeActive;
242*cdf0e10cSrcweir     bool bSameAlignAt = bLabelAlignmentPosAndSpaceModeActive;
243*cdf0e10cSrcweir     bool bSameIndentAt = bLabelAlignmentPosAndSpaceModeActive;
244*cdf0e10cSrcweir     // <--
245*cdf0e10cSrcweir 
246*cdf0e10cSrcweir 	const SwNumFmt* aNumFmtArr[MAXLEVEL];
247*cdf0e10cSrcweir 	const SwFmtVertOrient* pFirstOrient = 0;
248*cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
249*cdf0e10cSrcweir 	sal_uInt16 nLvl = USHRT_MAX;
250*cdf0e10cSrcweir 	long nFirstBorderText = 0;
251*cdf0e10cSrcweir 	long nFirstBorderTextRelative = -1;
252*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
253*cdf0e10cSrcweir 	{
254*cdf0e10cSrcweir 		aNumFmtArr[i] = &pActNum->Get(i);
255*cdf0e10cSrcweir 		if(nActNumLvl & nMask)
256*cdf0e10cSrcweir 		{
257*cdf0e10cSrcweir 			if(USHRT_MAX == nLvl)
258*cdf0e10cSrcweir 			{
259*cdf0e10cSrcweir 				nLvl = i;
260*cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
261*cdf0e10cSrcweir                 if ( !bLabelAlignmentPosAndSpaceModeActive )
262*cdf0e10cSrcweir                 {
263*cdf0e10cSrcweir                     pFirstOrient = aNumFmtArr[nLvl]->GetGraphicOrientation();
264*cdf0e10cSrcweir                     nFirstBorderText = nLvl > 0 ?
265*cdf0e10cSrcweir                         aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset() -
266*cdf0e10cSrcweir                         aNumFmtArr[nLvl - 1]->GetAbsLSpace() + aNumFmtArr[nLvl - 1]->GetFirstLineOffset():
267*cdf0e10cSrcweir                             aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset();
268*cdf0e10cSrcweir                 }
269*cdf0e10cSrcweir                 // <--
270*cdf0e10cSrcweir 			}
271*cdf0e10cSrcweir 
272*cdf0e10cSrcweir 			if( i > nLvl)
273*cdf0e10cSrcweir 			{
274*cdf0e10cSrcweir                 // --> OD 2008-02-01 #newlistlevelattrs#
275*cdf0e10cSrcweir                 bSameAdjust &= aNumFmtArr[i]->GetNumAdjust() == aNumFmtArr[nLvl]->GetNumAdjust();
276*cdf0e10cSrcweir                 if ( !bLabelAlignmentPosAndSpaceModeActive )
277*cdf0e10cSrcweir                 {
278*cdf0e10cSrcweir                     if(bRelative)
279*cdf0e10cSrcweir                     {
280*cdf0e10cSrcweir                         if(nFirstBorderTextRelative == -1)
281*cdf0e10cSrcweir                             nFirstBorderTextRelative =
282*cdf0e10cSrcweir                             (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
283*cdf0e10cSrcweir                             aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
284*cdf0e10cSrcweir                         else
285*cdf0e10cSrcweir                             bSameDistBorderNum &= nFirstBorderTextRelative ==
286*cdf0e10cSrcweir                             (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
287*cdf0e10cSrcweir                             aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
288*cdf0e10cSrcweir 
289*cdf0e10cSrcweir                     }
290*cdf0e10cSrcweir                     else
291*cdf0e10cSrcweir                     {
292*cdf0e10cSrcweir                         bSameDistBorderNum &=
293*cdf0e10cSrcweir                         aNumFmtArr[i]->GetAbsLSpace() - aNumFmtArr[i]->GetFirstLineOffset() ==
294*cdf0e10cSrcweir                         aNumFmtArr[i - 1]->GetAbsLSpace() - aNumFmtArr[i - 1]->GetFirstLineOffset();
295*cdf0e10cSrcweir                     }
296*cdf0e10cSrcweir 
297*cdf0e10cSrcweir                     bSameDist       &= aNumFmtArr[i]->GetCharTextDistance() == aNumFmtArr[nLvl]->GetCharTextDistance();
298*cdf0e10cSrcweir                     bSameIndent     &= aNumFmtArr[i]->GetFirstLineOffset() == aNumFmtArr[nLvl]->GetFirstLineOffset();
299*cdf0e10cSrcweir                 }
300*cdf0e10cSrcweir                 else
301*cdf0e10cSrcweir                 {
302*cdf0e10cSrcweir                     bSameLabelFollowedBy &=
303*cdf0e10cSrcweir                         aNumFmtArr[i]->GetLabelFollowedBy() == aNumFmtArr[nLvl]->GetLabelFollowedBy();
304*cdf0e10cSrcweir                     bSameListtab &=
305*cdf0e10cSrcweir                         aNumFmtArr[i]->GetListtabPos() == aNumFmtArr[nLvl]->GetListtabPos();
306*cdf0e10cSrcweir                     bSameAlignAt &=
307*cdf0e10cSrcweir                         ( ( aNumFmtArr[i]->GetIndentAt() + aNumFmtArr[i]->GetFirstLineIndent() )
308*cdf0e10cSrcweir                             == ( aNumFmtArr[nLvl]->GetIndentAt() + aNumFmtArr[nLvl]->GetFirstLineIndent() ) );
309*cdf0e10cSrcweir                     bSameIndentAt &=
310*cdf0e10cSrcweir                         aNumFmtArr[i]->GetIndentAt() == aNumFmtArr[nLvl]->GetIndentAt();
311*cdf0e10cSrcweir                 }
312*cdf0e10cSrcweir                 // <--
313*cdf0e10cSrcweir 
314*cdf0e10cSrcweir 			}
315*cdf0e10cSrcweir 		}
316*cdf0e10cSrcweir 		nMask <<= 1;
317*cdf0e10cSrcweir 
318*cdf0e10cSrcweir 	}
319*cdf0e10cSrcweir 	if(bSameDistBorderNum)
320*cdf0e10cSrcweir 	{
321*cdf0e10cSrcweir 		long nDistBorderNum;
322*cdf0e10cSrcweir 		if(bRelative)
323*cdf0e10cSrcweir 		{
324*cdf0e10cSrcweir 			nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
325*cdf0e10cSrcweir 			if(nLvl)
326*cdf0e10cSrcweir 				nDistBorderNum -= (long)aNumFmtArr[nLvl - 1]->GetAbsLSpace()+ aNumFmtArr[nLvl - 1]->GetFirstLineOffset();
327*cdf0e10cSrcweir 		}
328*cdf0e10cSrcweir 		else
329*cdf0e10cSrcweir 		{
330*cdf0e10cSrcweir 			nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
331*cdf0e10cSrcweir 		}
332*cdf0e10cSrcweir 		aDistBorderMF.SetValue(aDistBorderMF.Normalize(nDistBorderNum),FUNIT_TWIP);
333*cdf0e10cSrcweir 	}
334*cdf0e10cSrcweir 	else
335*cdf0e10cSrcweir 		bSetDistEmpty = sal_True;
336*cdf0e10cSrcweir 
337*cdf0e10cSrcweir 	if(bSameDist)
338*cdf0e10cSrcweir 		aDistNumMF	 .SetValue(aDistNumMF.Normalize(aNumFmtArr[nLvl]->GetCharTextDistance()), FUNIT_TWIP);
339*cdf0e10cSrcweir 	else
340*cdf0e10cSrcweir 		aDistNumMF.SetText(aEmptyStr);
341*cdf0e10cSrcweir 	if(bSameIndent)
342*cdf0e10cSrcweir 		aIndentMF.SetValue(aIndentMF.Normalize(-aNumFmtArr[nLvl]->GetFirstLineOffset()), FUNIT_TWIP);
343*cdf0e10cSrcweir 	else
344*cdf0e10cSrcweir 		aIndentMF.SetText(aEmptyStr);
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir 	if(bSameAdjust)
347*cdf0e10cSrcweir 	{
348*cdf0e10cSrcweir 		sal_uInt16 nPos = 1; // zentriert
349*cdf0e10cSrcweir 		if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT)
350*cdf0e10cSrcweir 			nPos = 0;
351*cdf0e10cSrcweir 		else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT)
352*cdf0e10cSrcweir 			nPos = 2;
353*cdf0e10cSrcweir 		aAlignLB.SelectEntryPos(nPos);
354*cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
355*cdf0e10cSrcweir         aAlign2LB.SelectEntryPos( nPos );
356*cdf0e10cSrcweir         // <--
357*cdf0e10cSrcweir 	}
358*cdf0e10cSrcweir 	else
359*cdf0e10cSrcweir 	{
360*cdf0e10cSrcweir 		aAlignLB.SetNoSelection();
361*cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
362*cdf0e10cSrcweir         aAlign2LB.SetNoSelection();
363*cdf0e10cSrcweir         // <--
364*cdf0e10cSrcweir 	}
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
367*cdf0e10cSrcweir     if ( bSameLabelFollowedBy )
368*cdf0e10cSrcweir     {
369*cdf0e10cSrcweir         sal_uInt16 nPos = 0; // LISTTAB
370*cdf0e10cSrcweir         if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::SPACE )
371*cdf0e10cSrcweir         {
372*cdf0e10cSrcweir             nPos = 1;
373*cdf0e10cSrcweir         }
374*cdf0e10cSrcweir         else if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::NOTHING )
375*cdf0e10cSrcweir         {
376*cdf0e10cSrcweir             nPos = 2;
377*cdf0e10cSrcweir         }
378*cdf0e10cSrcweir         aLabelFollowedByLB.SelectEntryPos( nPos );
379*cdf0e10cSrcweir     }
380*cdf0e10cSrcweir     else
381*cdf0e10cSrcweir     {
382*cdf0e10cSrcweir         aLabelFollowedByLB.SetNoSelection();
383*cdf0e10cSrcweir     }
384*cdf0e10cSrcweir 
385*cdf0e10cSrcweir     if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::LISTTAB )
386*cdf0e10cSrcweir     {
387*cdf0e10cSrcweir         aListtabFT.Enable( true );
388*cdf0e10cSrcweir         aListtabMF.Enable( true );
389*cdf0e10cSrcweir         if ( bSameListtab )
390*cdf0e10cSrcweir         {
391*cdf0e10cSrcweir             aListtabMF.SetValue(aListtabMF.Normalize(aNumFmtArr[nLvl]->GetListtabPos()),FUNIT_TWIP);
392*cdf0e10cSrcweir         }
393*cdf0e10cSrcweir         else
394*cdf0e10cSrcweir         {
395*cdf0e10cSrcweir             aListtabMF.SetText(aEmptyStr);
396*cdf0e10cSrcweir         }
397*cdf0e10cSrcweir     }
398*cdf0e10cSrcweir     else
399*cdf0e10cSrcweir     {
400*cdf0e10cSrcweir         aListtabFT.Enable( false );
401*cdf0e10cSrcweir         aListtabMF.Enable( false );
402*cdf0e10cSrcweir         aListtabMF.SetText(aEmptyStr);
403*cdf0e10cSrcweir     }
404*cdf0e10cSrcweir 
405*cdf0e10cSrcweir     if ( bSameAlignAt )
406*cdf0e10cSrcweir     {
407*cdf0e10cSrcweir         aAlignedAtMF.SetValue(
408*cdf0e10cSrcweir             aAlignedAtMF.Normalize( aNumFmtArr[nLvl]->GetIndentAt() +
409*cdf0e10cSrcweir                                     aNumFmtArr[nLvl]->GetFirstLineIndent()),
410*cdf0e10cSrcweir             FUNIT_TWIP );
411*cdf0e10cSrcweir     }
412*cdf0e10cSrcweir     else
413*cdf0e10cSrcweir     {
414*cdf0e10cSrcweir         aAlignedAtMF.SetText(aEmptyStr);
415*cdf0e10cSrcweir     }
416*cdf0e10cSrcweir 
417*cdf0e10cSrcweir     if ( bSameIndentAt )
418*cdf0e10cSrcweir     {
419*cdf0e10cSrcweir         aIndentAtMF.SetValue(
420*cdf0e10cSrcweir             aIndentAtMF.Normalize( aNumFmtArr[nLvl]->GetIndentAt()), FUNIT_TWIP );
421*cdf0e10cSrcweir     }
422*cdf0e10cSrcweir     else
423*cdf0e10cSrcweir     {
424*cdf0e10cSrcweir         aIndentAtMF.SetText(aEmptyStr);
425*cdf0e10cSrcweir     }
426*cdf0e10cSrcweir     // <--
427*cdf0e10cSrcweir 
428*cdf0e10cSrcweir 	if(sal_True == bSetDistEmpty)
429*cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
430*cdf0e10cSrcweir 
431*cdf0e10cSrcweir 	bInInintControl	= sal_False;
432*cdf0e10cSrcweir }
433*cdf0e10cSrcweir 
434*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
435*cdf0e10cSrcweir 
436*cdf0e10cSrcweir --------------------------------------------------*/
437*cdf0e10cSrcweir void SwNumPositionTabPage::ActivatePage(const SfxItemSet& )
438*cdf0e10cSrcweir {
439*cdf0e10cSrcweir 	const SfxPoolItem* pItem;
440*cdf0e10cSrcweir 	sal_uInt16 nTmpNumLvl =
441*cdf0e10cSrcweir 		pOutlineDlg ? pOutlineDlg->GetActNumLevel() : 0;
442*cdf0e10cSrcweir 	const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
443*cdf0e10cSrcweir 	if(pExampleSet && pExampleSet->GetItemState(FN_PARAM_NUM_PRESET, sal_False, &pItem))
444*cdf0e10cSrcweir 	{
445*cdf0e10cSrcweir 		bPreset = ((const SfxBoolItem*)pItem)->GetValue();
446*cdf0e10cSrcweir 	}
447*cdf0e10cSrcweir 	//
448*cdf0e10cSrcweir 	bModified = (!pActNum->GetNumFmt( 0 ) || bPreset);
449*cdf0e10cSrcweir 	if(*pActNum != *pSaveNum ||
450*cdf0e10cSrcweir 		nActNumLvl != nTmpNumLvl )
451*cdf0e10cSrcweir 	{
452*cdf0e10cSrcweir 		*pActNum = *pSaveNum;
453*cdf0e10cSrcweir 		nActNumLvl = nTmpNumLvl;
454*cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
455*cdf0e10cSrcweir 		aLevelLB.SetUpdateMode(sal_False);
456*cdf0e10cSrcweir 		aLevelLB.SetNoSelection();
457*cdf0e10cSrcweir 		aLevelLB.SelectEntryPos( MAXLEVEL, nActNumLvl == USHRT_MAX);
458*cdf0e10cSrcweir 		if(nActNumLvl != USHRT_MAX)
459*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
460*cdf0e10cSrcweir 			{
461*cdf0e10cSrcweir 				if(nActNumLvl & nMask)
462*cdf0e10cSrcweir 					aLevelLB.SelectEntryPos( i, sal_True);
463*cdf0e10cSrcweir 				nMask <<= 1 ;
464*cdf0e10cSrcweir 			}
465*cdf0e10cSrcweir 		aLevelLB.SetUpdateMode(sal_True);
466*cdf0e10cSrcweir 
467*cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
468*cdf0e10cSrcweir         InitPosAndSpaceMode();
469*cdf0e10cSrcweir         ShowControlsDependingOnPosAndSpaceMode();
470*cdf0e10cSrcweir         // <--
471*cdf0e10cSrcweir 
472*cdf0e10cSrcweir         InitControls();
473*cdf0e10cSrcweir 	}
474*cdf0e10cSrcweir 	aRelativeCB.Enable(1 != nActNumLvl);
475*cdf0e10cSrcweir 	aPreviewWIN.Invalidate();
476*cdf0e10cSrcweir }
477*cdf0e10cSrcweir 
478*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
479*cdf0e10cSrcweir 
480*cdf0e10cSrcweir --------------------------------------------------*/
481*cdf0e10cSrcweir int  SwNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet)
482*cdf0e10cSrcweir {
483*cdf0e10cSrcweir     SwOutlineTabDialog::SetActNumLevel(nActNumLvl);
484*cdf0e10cSrcweir     if(_pSet)
485*cdf0e10cSrcweir         FillItemSet(*_pSet);
486*cdf0e10cSrcweir 	return sal_True;
487*cdf0e10cSrcweir 
488*cdf0e10cSrcweir }
489*cdf0e10cSrcweir 
490*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
491*cdf0e10cSrcweir 
492*cdf0e10cSrcweir --------------------------------------------------*/
493*cdf0e10cSrcweir sal_Bool SwNumPositionTabPage::FillItemSet( SfxItemSet& rSet )
494*cdf0e10cSrcweir {
495*cdf0e10cSrcweir 	if(pOutlineDlg)
496*cdf0e10cSrcweir 		*pOutlineDlg->GetNumRule() = *pActNum;
497*cdf0e10cSrcweir 	else if(bModified && pActNum)
498*cdf0e10cSrcweir 	{
499*cdf0e10cSrcweir 		*pSaveNum = *pActNum;
500*cdf0e10cSrcweir 		rSet.Put(SwUINumRuleItem( *pSaveNum ));
501*cdf0e10cSrcweir 		rSet.Put(SfxBoolItem(FN_PARAM_NUM_PRESET, sal_False));
502*cdf0e10cSrcweir 	}
503*cdf0e10cSrcweir 	return bModified;
504*cdf0e10cSrcweir }
505*cdf0e10cSrcweir 
506*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
507*cdf0e10cSrcweir 
508*cdf0e10cSrcweir --------------------------------------------------*/
509*cdf0e10cSrcweir void SwNumPositionTabPage::Reset( const SfxItemSet& rSet )
510*cdf0e10cSrcweir {
511*cdf0e10cSrcweir 	const SfxPoolItem* pItem;
512*cdf0e10cSrcweir 	if(pOutlineDlg)
513*cdf0e10cSrcweir 	{
514*cdf0e10cSrcweir 		pSaveNum = pOutlineDlg->GetNumRule();
515*cdf0e10cSrcweir 		aLevelLB.EnableMultiSelection(sal_False);
516*cdf0e10cSrcweir 	}
517*cdf0e10cSrcweir 	else if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_ACT_NUMBER, sal_False, &pItem))
518*cdf0e10cSrcweir 		pSaveNum = ((SwUINumRuleItem*)pItem)->GetNumRule();
519*cdf0e10cSrcweir 
520*cdf0e10cSrcweir     nActNumLvl = SwOutlineTabDialog::GetActNumLevel();
521*cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
522*cdf0e10cSrcweir 	aLevelLB.SetUpdateMode(sal_False);
523*cdf0e10cSrcweir 	aLevelLB.SetNoSelection();
524*cdf0e10cSrcweir 	if(nActNumLvl == USHRT_MAX)
525*cdf0e10cSrcweir 	{
526*cdf0e10cSrcweir 		aLevelLB.SelectEntryPos( MAXLEVEL, sal_True);
527*cdf0e10cSrcweir 	}
528*cdf0e10cSrcweir 	else
529*cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
530*cdf0e10cSrcweir 		{
531*cdf0e10cSrcweir 			if(nActNumLvl & nMask)
532*cdf0e10cSrcweir 				aLevelLB.SelectEntryPos( i, sal_True);
533*cdf0e10cSrcweir 			nMask <<= 1;
534*cdf0e10cSrcweir 		}
535*cdf0e10cSrcweir 	aLevelLB.SetUpdateMode(sal_True);
536*cdf0e10cSrcweir 
537*cdf0e10cSrcweir 	if(!pActNum)
538*cdf0e10cSrcweir 		pActNum = new  SwNumRule(*pSaveNum);
539*cdf0e10cSrcweir 	else if(*pSaveNum != *pActNum)
540*cdf0e10cSrcweir 		*pActNum = *pSaveNum;
541*cdf0e10cSrcweir 	aPreviewWIN.SetNumRule(pActNum);
542*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
543*cdf0e10cSrcweir     InitPosAndSpaceMode();
544*cdf0e10cSrcweir     ShowControlsDependingOnPosAndSpaceMode();
545*cdf0e10cSrcweir     // <--
546*cdf0e10cSrcweir 	InitControls();
547*cdf0e10cSrcweir 	bModified = sal_False;
548*cdf0e10cSrcweir }
549*cdf0e10cSrcweir 
550*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs#
551*cdf0e10cSrcweir void SwNumPositionTabPage::InitPosAndSpaceMode()
552*cdf0e10cSrcweir {
553*cdf0e10cSrcweir     if ( pActNum == 0 )
554*cdf0e10cSrcweir     {
555*cdf0e10cSrcweir         DBG_ASSERT( false,
556*cdf0e10cSrcweir                 "<SwNumPositionTabPage::InitPosAndSpaceMode()> - misusage of method -> <pAktNum> has to be already set!" );
557*cdf0e10cSrcweir         return;
558*cdf0e10cSrcweir     }
559*cdf0e10cSrcweir 
560*cdf0e10cSrcweir     SvxNumberFormat::SvxNumPositionAndSpaceMode ePosAndSpaceMode =
561*cdf0e10cSrcweir                                             SvxNumberFormat::LABEL_ALIGNMENT;
562*cdf0e10cSrcweir     sal_uInt16 nMask = 1;
563*cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
564*cdf0e10cSrcweir     {
565*cdf0e10cSrcweir         if(nActNumLvl & nMask)
566*cdf0e10cSrcweir         {
567*cdf0e10cSrcweir             SvxNumberFormat aNumFmt( pActNum->Get(i) );
568*cdf0e10cSrcweir             ePosAndSpaceMode = aNumFmt.GetPositionAndSpaceMode();
569*cdf0e10cSrcweir             if ( ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
570*cdf0e10cSrcweir             {
571*cdf0e10cSrcweir                 break;
572*cdf0e10cSrcweir             }
573*cdf0e10cSrcweir         }
574*cdf0e10cSrcweir         nMask <<= 1;
575*cdf0e10cSrcweir     }
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir     bLabelAlignmentPosAndSpaceModeActive =
578*cdf0e10cSrcweir                     ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT;
579*cdf0e10cSrcweir }
580*cdf0e10cSrcweir 
581*cdf0e10cSrcweir void SwNumPositionTabPage::ShowControlsDependingOnPosAndSpaceMode()
582*cdf0e10cSrcweir {
583*cdf0e10cSrcweir     aDistBorderFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
584*cdf0e10cSrcweir     aDistBorderMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
585*cdf0e10cSrcweir     aRelativeCB.Show( !bLabelAlignmentPosAndSpaceModeActive );
586*cdf0e10cSrcweir     aIndentFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
587*cdf0e10cSrcweir     aIndentMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
588*cdf0e10cSrcweir     aDistNumFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
589*cdf0e10cSrcweir     aDistNumMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
590*cdf0e10cSrcweir     aAlignFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
591*cdf0e10cSrcweir     aAlignLB.Show( !bLabelAlignmentPosAndSpaceModeActive );
592*cdf0e10cSrcweir 
593*cdf0e10cSrcweir     aLabelFollowedByFT.Show( bLabelAlignmentPosAndSpaceModeActive );
594*cdf0e10cSrcweir     aLabelFollowedByLB.Show( bLabelAlignmentPosAndSpaceModeActive );
595*cdf0e10cSrcweir     aListtabFT.Show( bLabelAlignmentPosAndSpaceModeActive );
596*cdf0e10cSrcweir     aListtabMF.Show( bLabelAlignmentPosAndSpaceModeActive );
597*cdf0e10cSrcweir     aAlign2FT.Show( bLabelAlignmentPosAndSpaceModeActive );
598*cdf0e10cSrcweir     aAlign2LB.Show( bLabelAlignmentPosAndSpaceModeActive );
599*cdf0e10cSrcweir     aAlignedAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
600*cdf0e10cSrcweir     aAlignedAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
601*cdf0e10cSrcweir     aIndentAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
602*cdf0e10cSrcweir     aIndentAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
603*cdf0e10cSrcweir }
604*cdf0e10cSrcweir // <--
605*cdf0e10cSrcweir 
606*cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
607*cdf0e10cSrcweir 
608*cdf0e10cSrcweir --------------------------------------------------*/
609*cdf0e10cSrcweir SfxTabPage*	SwNumPositionTabPage::Create( Window* pParent,
610*cdf0e10cSrcweir 								const SfxItemSet& rAttrSet)
611*cdf0e10cSrcweir {
612*cdf0e10cSrcweir 	return new SwNumPositionTabPage(pParent, rAttrSet);
613*cdf0e10cSrcweir }
614*cdf0e10cSrcweir 
615*cdf0e10cSrcweir /*-----------------04.12.97 12:51-------------------
616*cdf0e10cSrcweir 
617*cdf0e10cSrcweir --------------------------------------------------*/
618*cdf0e10cSrcweir void SwNumPositionTabPage::SetWrtShell(SwWrtShell* pSh)
619*cdf0e10cSrcweir {
620*cdf0e10cSrcweir 	pWrtSh = pSh;
621*cdf0e10cSrcweir 
622*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
623*cdf0e10cSrcweir     const SwTwips nWidth = pWrtSh->GetAnyCurRect(RECT_FRM).Width();
624*cdf0e10cSrcweir 
625*cdf0e10cSrcweir     aDistBorderMF.SetMax(aDistBorderMF.Normalize( nWidth ), FUNIT_TWIP );
626*cdf0e10cSrcweir     aDistNumMF   .SetMax(aDistNumMF   .Normalize( nWidth ), FUNIT_TWIP );
627*cdf0e10cSrcweir     aIndentMF    .SetMax(aIndentMF    .Normalize( nWidth ), FUNIT_TWIP );
628*cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
629*cdf0e10cSrcweir     aListtabMF.SetMax(aListtabMF.Normalize( nWidth ), FUNIT_TWIP );
630*cdf0e10cSrcweir     aAlignedAtMF.SetMax(aAlignedAtMF.Normalize( nWidth ), FUNIT_TWIP );
631*cdf0e10cSrcweir     aIndentAtMF.SetMax(aIndentAtMF.Normalize( nWidth ), FUNIT_TWIP );
632*cdf0e10cSrcweir     // <--
633*cdf0e10cSrcweir     const SwTwips nLast2 = nWidth /2;
634*cdf0e10cSrcweir     aDistBorderMF.SetLast( aDistBorderMF.Normalize(   nLast2 ), FUNIT_TWIP );
635*cdf0e10cSrcweir     aDistNumMF   .SetLast( aDistNumMF     .Normalize( nLast2 ), FUNIT_TWIP );
636*cdf0e10cSrcweir     aIndentMF    .SetLast( aIndentMF      .Normalize( nLast2 ), FUNIT_TWIP );
637*cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
638*cdf0e10cSrcweir     aListtabMF.SetLast(aListtabMF.Normalize( nLast2 ), FUNIT_TWIP );
639*cdf0e10cSrcweir     aAlignedAtMF.SetLast(aAlignedAtMF.Normalize( nLast2 ), FUNIT_TWIP );
640*cdf0e10cSrcweir     aIndentAtMF.SetLast(aIndentAtMF.Normalize( nLast2 ), FUNIT_TWIP );
641*cdf0e10cSrcweir     // <--
642*cdf0e10cSrcweir     // <--
643*cdf0e10cSrcweir 
644*cdf0e10cSrcweir     const SwRect& rPrtRect = pWrtSh->GetAnyCurRect(RECT_PAGE);
645*cdf0e10cSrcweir 	aPreviewWIN.SetPageWidth(rPrtRect.Width());
646*cdf0e10cSrcweir 	FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &pWrtSh->GetView()));
647*cdf0e10cSrcweir 	if(eMetric == FUNIT_MM)
648*cdf0e10cSrcweir 	{
649*cdf0e10cSrcweir 		aDistBorderMF .SetDecimalDigits(1);
650*cdf0e10cSrcweir 		aDistNumMF	  .SetDecimalDigits(1);
651*cdf0e10cSrcweir 		aIndentMF	  .SetDecimalDigits(1);
652*cdf0e10cSrcweir         // --> OD 2008-02-18 #newlistlevelattrs#
653*cdf0e10cSrcweir         aListtabMF.SetDecimalDigits(1);
654*cdf0e10cSrcweir         aAlignedAtMF.SetDecimalDigits(1);
655*cdf0e10cSrcweir         aIndentAtMF.SetDecimalDigits(1);
656*cdf0e10cSrcweir         // <--
657*cdf0e10cSrcweir 	}
658*cdf0e10cSrcweir 	aDistBorderMF .SetUnit( eMetric );
659*cdf0e10cSrcweir 	aDistNumMF	  .SetUnit( eMetric );
660*cdf0e10cSrcweir 	aIndentMF	  .SetUnit( eMetric );
661*cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
662*cdf0e10cSrcweir     aListtabMF.SetUnit( eMetric );
663*cdf0e10cSrcweir     aAlignedAtMF.SetUnit( eMetric );
664*cdf0e10cSrcweir     aIndentAtMF.SetUnit( eMetric );
665*cdf0e10cSrcweir     // <--
666*cdf0e10cSrcweir }
667*cdf0e10cSrcweir 
668*cdf0e10cSrcweir /*-----------------03.12.97 11:06-------------------
669*cdf0e10cSrcweir 
670*cdf0e10cSrcweir --------------------------------------------------*/
671*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, EditModifyHdl, Edit *, EMPTYARG )
672*cdf0e10cSrcweir {
673*cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
674*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
675*cdf0e10cSrcweir 	{
676*cdf0e10cSrcweir 		if(nActNumLvl & nMask)
677*cdf0e10cSrcweir 		{
678*cdf0e10cSrcweir 			SwNumFmt aNumFmt(pActNum->Get(i));
679*cdf0e10cSrcweir 
680*cdf0e10cSrcweir             // --> OD 2008-02-01 #newlistlevelattrs#
681*cdf0e10cSrcweir             const sal_uInt16 nPos = aAlignLB.IsVisible()
682*cdf0e10cSrcweir                                 ? aAlignLB.GetSelectEntryPos()
683*cdf0e10cSrcweir                                 : aAlign2LB.GetSelectEntryPos();
684*cdf0e10cSrcweir             // <--
685*cdf0e10cSrcweir 			SvxAdjust eAdjust = SVX_ADJUST_CENTER;
686*cdf0e10cSrcweir 			if(nPos == 0)
687*cdf0e10cSrcweir 				eAdjust = SVX_ADJUST_LEFT;
688*cdf0e10cSrcweir 			else if(nPos == 2)
689*cdf0e10cSrcweir 				eAdjust = SVX_ADJUST_RIGHT;
690*cdf0e10cSrcweir 			aNumFmt.SetNumAdjust( eAdjust );
691*cdf0e10cSrcweir 			pActNum->Set(i, aNumFmt);
692*cdf0e10cSrcweir 		}
693*cdf0e10cSrcweir 		nMask <<= 1;
694*cdf0e10cSrcweir 	}
695*cdf0e10cSrcweir 	SetModified();
696*cdf0e10cSrcweir 	return 0;
697*cdf0e10cSrcweir }
698*cdf0e10cSrcweir /*-----------------03.12.97 11:11-------------------
699*cdf0e10cSrcweir 
700*cdf0e10cSrcweir --------------------------------------------------*/
701*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, LevelHdl, ListBox *, pBox )
702*cdf0e10cSrcweir {
703*cdf0e10cSrcweir 	sal_uInt16 nSaveNumLvl = nActNumLvl;
704*cdf0e10cSrcweir 	nActNumLvl = 0;
705*cdf0e10cSrcweir 	if(pBox->IsEntryPosSelected( MAXLEVEL ) &&
706*cdf0e10cSrcweir 			(pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
707*cdf0e10cSrcweir 	{
708*cdf0e10cSrcweir 		nActNumLvl = 0xFFFF;
709*cdf0e10cSrcweir 		pBox->SetUpdateMode(sal_False);
710*cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
711*cdf0e10cSrcweir 			pBox->SelectEntryPos( i, sal_False );
712*cdf0e10cSrcweir 		pBox->SetUpdateMode(sal_True);
713*cdf0e10cSrcweir 	}
714*cdf0e10cSrcweir 	else if(pBox->GetSelectEntryCount())
715*cdf0e10cSrcweir 	{
716*cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
717*cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
718*cdf0e10cSrcweir 		{
719*cdf0e10cSrcweir 			if(pBox->IsEntryPosSelected( i ))
720*cdf0e10cSrcweir 				nActNumLvl |= nMask;
721*cdf0e10cSrcweir 			nMask <<= 1;
722*cdf0e10cSrcweir 		}
723*cdf0e10cSrcweir 		pBox->SelectEntryPos( MAXLEVEL, sal_False );
724*cdf0e10cSrcweir 	}
725*cdf0e10cSrcweir 	else
726*cdf0e10cSrcweir 	{
727*cdf0e10cSrcweir 		nActNumLvl = nSaveNumLvl;
728*cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
729*cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
730*cdf0e10cSrcweir 		{
731*cdf0e10cSrcweir 			if(nActNumLvl & nMask)
732*cdf0e10cSrcweir 			{
733*cdf0e10cSrcweir 				pBox->SelectEntryPos(i);
734*cdf0e10cSrcweir 				break;
735*cdf0e10cSrcweir 			}
736*cdf0e10cSrcweir 			nMask <<=1;
737*cdf0e10cSrcweir 		}
738*cdf0e10cSrcweir 	}
739*cdf0e10cSrcweir 	aRelativeCB.Enable(1 != nActNumLvl);
740*cdf0e10cSrcweir 	SetModified();
741*cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
742*cdf0e10cSrcweir     InitPosAndSpaceMode();
743*cdf0e10cSrcweir     ShowControlsDependingOnPosAndSpaceMode();
744*cdf0e10cSrcweir     // <--
745*cdf0e10cSrcweir 	InitControls();
746*cdf0e10cSrcweir 	return 0;
747*cdf0e10cSrcweir }
748*cdf0e10cSrcweir /*-----------------03.12.97 12:24-------------------
749*cdf0e10cSrcweir 
750*cdf0e10cSrcweir --------------------------------------------------*/
751*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, DistanceHdl, MetricField *, pFld )
752*cdf0e10cSrcweir {
753*cdf0e10cSrcweir 	if(bInInintControl)
754*cdf0e10cSrcweir 		return 0;
755*cdf0e10cSrcweir     long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
756*cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
757*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
758*cdf0e10cSrcweir 	{
759*cdf0e10cSrcweir 		if(nActNumLvl & nMask)
760*cdf0e10cSrcweir 		{
761*cdf0e10cSrcweir 			SwNumFmt aNumFmt( pActNum->Get( i ) );
762*cdf0e10cSrcweir 			if(pFld == &aDistBorderMF)
763*cdf0e10cSrcweir 			{
764*cdf0e10cSrcweir 
765*cdf0e10cSrcweir 				if(aRelativeCB.IsChecked() && aRelativeCB.IsEnabled())
766*cdf0e10cSrcweir 				{
767*cdf0e10cSrcweir 					if(0 == i)
768*cdf0e10cSrcweir 					{
769*cdf0e10cSrcweir 						long nTmp = aNumFmt.GetFirstLineOffset();
770*cdf0e10cSrcweir 						aNumFmt.SetAbsLSpace( sal_uInt16(nValue - nTmp));
771*cdf0e10cSrcweir 					}
772*cdf0e10cSrcweir 					else
773*cdf0e10cSrcweir 					{
774*cdf0e10cSrcweir 						long nTmp = pActNum->Get( i - 1 ).GetAbsLSpace() +
775*cdf0e10cSrcweir 									pActNum->Get( i - 1 ).GetFirstLineOffset() -
776*cdf0e10cSrcweir 									pActNum->Get( i ).GetFirstLineOffset();
777*cdf0e10cSrcweir 
778*cdf0e10cSrcweir 						aNumFmt.SetAbsLSpace( sal_uInt16(nValue + nTmp));
779*cdf0e10cSrcweir 					}
780*cdf0e10cSrcweir 				}
781*cdf0e10cSrcweir 				else
782*cdf0e10cSrcweir 				{
783*cdf0e10cSrcweir 					aNumFmt.SetAbsLSpace( (short)nValue - aNumFmt.GetFirstLineOffset());
784*cdf0e10cSrcweir 				}
785*cdf0e10cSrcweir 			}
786*cdf0e10cSrcweir 			else if(pFld == &aDistNumMF)
787*cdf0e10cSrcweir 			{
788*cdf0e10cSrcweir 				aNumFmt.SetCharTextDistance( (short)nValue );
789*cdf0e10cSrcweir 			}
790*cdf0e10cSrcweir 			else if(pFld == &aIndentMF)
791*cdf0e10cSrcweir 			{
792*cdf0e10cSrcweir 				//jetzt muss mit dem FirstLineOffset auch der AbsLSpace veraendert werden
793*cdf0e10cSrcweir 				long nDiff = nValue + aNumFmt.GetFirstLineOffset();
794*cdf0e10cSrcweir 				long nAbsLSpace = aNumFmt.GetAbsLSpace();
795*cdf0e10cSrcweir 				aNumFmt.SetAbsLSpace(sal_uInt16(nAbsLSpace + nDiff));
796*cdf0e10cSrcweir 				aNumFmt.SetFirstLineOffset( -(short)nValue );
797*cdf0e10cSrcweir 			}
798*cdf0e10cSrcweir 
799*cdf0e10cSrcweir 			pActNum->Set( i, aNumFmt );
800*cdf0e10cSrcweir 		}
801*cdf0e10cSrcweir 		nMask <<= 1;
802*cdf0e10cSrcweir 	}
803*cdf0e10cSrcweir 
804*cdf0e10cSrcweir 	SetModified();
805*cdf0e10cSrcweir 	if(!aDistBorderMF.IsEnabled())
806*cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
807*cdf0e10cSrcweir 
808*cdf0e10cSrcweir 	return 0;
809*cdf0e10cSrcweir }
810*cdf0e10cSrcweir 
811*cdf0e10cSrcweir /*-----------------04.12.97 12:35-------------------
812*cdf0e10cSrcweir 
813*cdf0e10cSrcweir --------------------------------------------------*/
814*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, RelativeHdl, CheckBox *, pBox )
815*cdf0e10cSrcweir {
816*cdf0e10cSrcweir 	sal_Bool bOn = pBox->IsChecked();
817*cdf0e10cSrcweir 	sal_Bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
818*cdf0e10cSrcweir 	sal_Bool bSetValue = sal_False;
819*cdf0e10cSrcweir 	long nValue = 0;
820*cdf0e10cSrcweir 	if(bOn || bSingleSelection)
821*cdf0e10cSrcweir 	{
822*cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
823*cdf0e10cSrcweir 		sal_Bool bFirst = sal_True;
824*cdf0e10cSrcweir 		bSetValue = sal_True;
825*cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
826*cdf0e10cSrcweir 		{
827*cdf0e10cSrcweir 			if(nActNumLvl & nMask)
828*cdf0e10cSrcweir 			{
829*cdf0e10cSrcweir 				const SwNumFmt &rNumFmt = pActNum->Get(i);
830*cdf0e10cSrcweir 				if(bFirst)
831*cdf0e10cSrcweir 				{
832*cdf0e10cSrcweir 					nValue = rNumFmt.GetAbsLSpace();
833*cdf0e10cSrcweir 					if(bOn && i)
834*cdf0e10cSrcweir 						nValue -= pActNum->Get(i - 1).GetAbsLSpace();
835*cdf0e10cSrcweir 				}
836*cdf0e10cSrcweir 				else
837*cdf0e10cSrcweir 					bSetValue = nValue == rNumFmt.GetAbsLSpace() - pActNum->Get(i - 1).GetAbsLSpace();
838*cdf0e10cSrcweir 				bFirst = sal_False;
839*cdf0e10cSrcweir 			}
840*cdf0e10cSrcweir 			nMask <<= 1;
841*cdf0e10cSrcweir 		}
842*cdf0e10cSrcweir 
843*cdf0e10cSrcweir 	}
844*cdf0e10cSrcweir 	if(bSetValue)
845*cdf0e10cSrcweir 		aDistBorderMF.SetValue(aDistBorderMF.Normalize(nValue),	FUNIT_TWIP);
846*cdf0e10cSrcweir 	else
847*cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
848*cdf0e10cSrcweir 	aDistBorderMF.Enable(bOn || bSingleSelection||0 != pOutlineDlg);
849*cdf0e10cSrcweir 	bLastRelative = bOn;
850*cdf0e10cSrcweir 	return 0;
851*cdf0e10cSrcweir }
852*cdf0e10cSrcweir 
853*cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
854*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, LabelFollowedByHdl_Impl, ListBox*, EMPTYARG )
855*cdf0e10cSrcweir {
856*cdf0e10cSrcweir     // determine value to be set at the chosen list levels
857*cdf0e10cSrcweir     SvxNumberFormat::SvxNumLabelFollowedBy eLabelFollowedBy =
858*cdf0e10cSrcweir                                                     SvxNumberFormat::LISTTAB;
859*cdf0e10cSrcweir     {
860*cdf0e10cSrcweir         const sal_uInt16 nPos = aLabelFollowedByLB.GetSelectEntryPos();
861*cdf0e10cSrcweir         if ( nPos == 1 )
862*cdf0e10cSrcweir         {
863*cdf0e10cSrcweir             eLabelFollowedBy = SvxNumberFormat::SPACE;
864*cdf0e10cSrcweir         }
865*cdf0e10cSrcweir         else if ( nPos == 2 )
866*cdf0e10cSrcweir         {
867*cdf0e10cSrcweir             eLabelFollowedBy = SvxNumberFormat::NOTHING;
868*cdf0e10cSrcweir         }
869*cdf0e10cSrcweir     }
870*cdf0e10cSrcweir 
871*cdf0e10cSrcweir     // set value at the chosen list levels
872*cdf0e10cSrcweir     bool bSameListtabPos = true;
873*cdf0e10cSrcweir     sal_uInt16 nFirstLvl = USHRT_MAX;
874*cdf0e10cSrcweir     sal_uInt16 nMask = 1;
875*cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
876*cdf0e10cSrcweir     {
877*cdf0e10cSrcweir         if ( nActNumLvl & nMask )
878*cdf0e10cSrcweir         {
879*cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
880*cdf0e10cSrcweir             aNumFmt.SetLabelFollowedBy( eLabelFollowedBy );
881*cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
882*cdf0e10cSrcweir 
883*cdf0e10cSrcweir             if ( nFirstLvl == USHRT_MAX )
884*cdf0e10cSrcweir             {
885*cdf0e10cSrcweir                 nFirstLvl = i;
886*cdf0e10cSrcweir             }
887*cdf0e10cSrcweir             else
888*cdf0e10cSrcweir             {
889*cdf0e10cSrcweir                 bSameListtabPos &= aNumFmt.GetListtabPos() ==
890*cdf0e10cSrcweir                         pActNum->Get( nFirstLvl ).GetListtabPos();
891*cdf0e10cSrcweir             }
892*cdf0e10cSrcweir         }
893*cdf0e10cSrcweir         nMask <<= 1;
894*cdf0e10cSrcweir     }
895*cdf0e10cSrcweir 
896*cdf0e10cSrcweir     // enable/disable metric field for list tab stop position depending on
897*cdf0e10cSrcweir     // selected item following the list label.
898*cdf0e10cSrcweir     aListtabFT.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
899*cdf0e10cSrcweir     aListtabMF.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
900*cdf0e10cSrcweir     if ( bSameListtabPos && eLabelFollowedBy == SvxNumberFormat::LISTTAB )
901*cdf0e10cSrcweir     {
902*cdf0e10cSrcweir         aListtabMF.SetValue(
903*cdf0e10cSrcweir             aListtabMF.Normalize( pActNum->Get( nFirstLvl ).GetListtabPos() ),
904*cdf0e10cSrcweir             FUNIT_TWIP );
905*cdf0e10cSrcweir     }
906*cdf0e10cSrcweir     else
907*cdf0e10cSrcweir     {
908*cdf0e10cSrcweir         aListtabMF.SetText( String() );
909*cdf0e10cSrcweir     }
910*cdf0e10cSrcweir 
911*cdf0e10cSrcweir     SetModified();
912*cdf0e10cSrcweir 
913*cdf0e10cSrcweir     return 0;
914*cdf0e10cSrcweir }
915*cdf0e10cSrcweir // <--
916*cdf0e10cSrcweir 
917*cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
918*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, ListtabPosHdl_Impl, MetricField*, pFld )
919*cdf0e10cSrcweir {
920*cdf0e10cSrcweir     // determine value to be set at the chosen list levels
921*cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
922*cdf0e10cSrcweir 
923*cdf0e10cSrcweir     // set value at the chosen list levels
924*cdf0e10cSrcweir     sal_uInt16 nMask = 1;
925*cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
926*cdf0e10cSrcweir     {
927*cdf0e10cSrcweir         if ( nActNumLvl & nMask )
928*cdf0e10cSrcweir         {
929*cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
930*cdf0e10cSrcweir             aNumFmt.SetListtabPos( nValue );
931*cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
932*cdf0e10cSrcweir         }
933*cdf0e10cSrcweir         nMask <<= 1;
934*cdf0e10cSrcweir     }
935*cdf0e10cSrcweir 
936*cdf0e10cSrcweir     SetModified();
937*cdf0e10cSrcweir 
938*cdf0e10cSrcweir     return 0;
939*cdf0e10cSrcweir }
940*cdf0e10cSrcweir // <--
941*cdf0e10cSrcweir 
942*cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
943*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, AlignAtHdl_Impl, MetricField*, pFld )
944*cdf0e10cSrcweir {
945*cdf0e10cSrcweir     // determine value to be set at the chosen list levels
946*cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
947*cdf0e10cSrcweir 
948*cdf0e10cSrcweir     // set value at the chosen list levels
949*cdf0e10cSrcweir     sal_uInt16 nMask = 1;
950*cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
951*cdf0e10cSrcweir     {
952*cdf0e10cSrcweir         if ( nActNumLvl & nMask )
953*cdf0e10cSrcweir         {
954*cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
955*cdf0e10cSrcweir             const long nFirstLineIndent = nValue - aNumFmt.GetIndentAt();
956*cdf0e10cSrcweir             aNumFmt.SetFirstLineIndent( nFirstLineIndent );
957*cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
958*cdf0e10cSrcweir         }
959*cdf0e10cSrcweir         nMask <<= 1;
960*cdf0e10cSrcweir     }
961*cdf0e10cSrcweir 
962*cdf0e10cSrcweir     SetModified();
963*cdf0e10cSrcweir 
964*cdf0e10cSrcweir     return 0;
965*cdf0e10cSrcweir }
966*cdf0e10cSrcweir // <--
967*cdf0e10cSrcweir 
968*cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
969*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, IndentAtHdl_Impl, MetricField*, pFld )
970*cdf0e10cSrcweir {
971*cdf0e10cSrcweir     // determine value to be set at the chosen list levels
972*cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
973*cdf0e10cSrcweir 
974*cdf0e10cSrcweir     // set value at the chosen list levels
975*cdf0e10cSrcweir     sal_uInt16 nMask = 1;
976*cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
977*cdf0e10cSrcweir     {
978*cdf0e10cSrcweir         if ( nActNumLvl & nMask )
979*cdf0e10cSrcweir         {
980*cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
981*cdf0e10cSrcweir             const long nAlignedAt = aNumFmt.GetIndentAt() +
982*cdf0e10cSrcweir                                     aNumFmt.GetFirstLineIndent();
983*cdf0e10cSrcweir             aNumFmt.SetIndentAt( nValue );
984*cdf0e10cSrcweir             const long nNewFirstLineIndent = nAlignedAt - nValue;
985*cdf0e10cSrcweir             aNumFmt.SetFirstLineIndent( nNewFirstLineIndent );
986*cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
987*cdf0e10cSrcweir         }
988*cdf0e10cSrcweir         nMask <<= 1;
989*cdf0e10cSrcweir     }
990*cdf0e10cSrcweir 
991*cdf0e10cSrcweir     SetModified();
992*cdf0e10cSrcweir 
993*cdf0e10cSrcweir     return 0;
994*cdf0e10cSrcweir }
995*cdf0e10cSrcweir // <--
996*cdf0e10cSrcweir 
997*cdf0e10cSrcweir /*-----------------05.12.97 15:33-------------------
998*cdf0e10cSrcweir 
999*cdf0e10cSrcweir --------------------------------------------------*/
1000*cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, StandardHdl, PushButton *, EMPTYARG )
1001*cdf0e10cSrcweir {
1002*cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
1003*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
1004*cdf0e10cSrcweir 	{
1005*cdf0e10cSrcweir 		if(nActNumLvl & nMask)
1006*cdf0e10cSrcweir 		{
1007*cdf0e10cSrcweir 			SwNumFmt aNumFmt( pActNum->Get( i ) );
1008*cdf0e10cSrcweir             // --> OD 2008-02-11 #newlistlevelattrs#
1009*cdf0e10cSrcweir             SwNumRule aTmpNumRule( pWrtSh->GetUniqueNumRuleName(),
1010*cdf0e10cSrcweir                                    aNumFmt.GetPositionAndSpaceMode(),
1011*cdf0e10cSrcweir                                    pOutlineDlg ? OUTLINE_RULE : NUM_RULE );
1012*cdf0e10cSrcweir             // <--
1013*cdf0e10cSrcweir 			SwNumFmt aTempFmt(aTmpNumRule.Get( i ));
1014*cdf0e10cSrcweir             // --> OD 2008-02-05 #newlistlevelattrs#
1015*cdf0e10cSrcweir             aNumFmt.SetPositionAndSpaceMode( aTempFmt.GetPositionAndSpaceMode() );
1016*cdf0e10cSrcweir             if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1017*cdf0e10cSrcweir             {
1018*cdf0e10cSrcweir                 aNumFmt.SetAbsLSpace( aTempFmt.GetAbsLSpace());
1019*cdf0e10cSrcweir                 aNumFmt.SetCharTextDistance( aTempFmt.GetCharTextDistance() );
1020*cdf0e10cSrcweir                 aNumFmt.SetFirstLineOffset( aTempFmt.GetFirstLineOffset() );
1021*cdf0e10cSrcweir             }
1022*cdf0e10cSrcweir             else if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
1023*cdf0e10cSrcweir             {
1024*cdf0e10cSrcweir                 aNumFmt.SetNumAdjust( aTempFmt.GetNumAdjust() );
1025*cdf0e10cSrcweir                 aNumFmt.SetLabelFollowedBy( aTempFmt.GetLabelFollowedBy() );
1026*cdf0e10cSrcweir                 aNumFmt.SetListtabPos( aTempFmt.GetListtabPos() );
1027*cdf0e10cSrcweir                 aNumFmt.SetFirstLineIndent( aTempFmt.GetFirstLineIndent() );
1028*cdf0e10cSrcweir                 aNumFmt.SetIndentAt( aTempFmt.GetIndentAt() );
1029*cdf0e10cSrcweir             }
1030*cdf0e10cSrcweir             // <--
1031*cdf0e10cSrcweir 
1032*cdf0e10cSrcweir 			pActNum->Set( i, aNumFmt );
1033*cdf0e10cSrcweir 		}
1034*cdf0e10cSrcweir 		nMask <<= 1;
1035*cdf0e10cSrcweir 	}
1036*cdf0e10cSrcweir 
1037*cdf0e10cSrcweir 	InitControls();
1038*cdf0e10cSrcweir 	SetModified();
1039*cdf0e10cSrcweir 	return 0;
1040*cdf0e10cSrcweir }
1041*cdf0e10cSrcweir 
1042*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
1043*cdf0e10cSrcweir void SwNumPositionTabPage::SetModified(sal_Bool bRepaint)
1044*cdf0e10cSrcweir {
1045*cdf0e10cSrcweir 	bModified = sal_True;
1046*cdf0e10cSrcweir 	if(bRepaint)
1047*cdf0e10cSrcweir 	{
1048*cdf0e10cSrcweir 		aPreviewWIN.SetLevel(nActNumLvl);
1049*cdf0e10cSrcweir 		aPreviewWIN.Invalidate();
1050*cdf0e10cSrcweir 	}
1051*cdf0e10cSrcweir }
1052*cdf0e10cSrcweir 
1053*cdf0e10cSrcweir #endif
1054*cdf0e10cSrcweir 
1055*cdf0e10cSrcweir /**************************************************************************/
1056*cdf0e10cSrcweir /*                                                                        */
1057*cdf0e10cSrcweir /*                                                                        */
1058*cdf0e10cSrcweir /**************************************************************************/
1059*cdf0e10cSrcweir 
1060*cdf0e10cSrcweir 
1061*cdf0e10cSrcweir SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(Window* pParent,
1062*cdf0e10cSrcweir 					const SfxItemSet* pSwItemSet, SwWrtShell & rSh) :
1063*cdf0e10cSrcweir 	SfxTabDialog(pParent, SW_RES(DLG_SVXTEST_NUM_BULLET), pSwItemSet, sal_False, &aEmptyStr),
1064*cdf0e10cSrcweir 	rWrtSh(rSh),
1065*cdf0e10cSrcweir     sRemoveText(SW_RES(ST_RESET)),
1066*cdf0e10cSrcweir     nRetOptionsDialog(USHRT_MAX)
1067*cdf0e10cSrcweir {
1068*cdf0e10cSrcweir 	FreeResource();
1069*cdf0e10cSrcweir 	GetUserButton()->SetText(sRemoveText);
1070*cdf0e10cSrcweir 	GetUserButton()->SetHelpId(HID_NUM_RESET);
1071*cdf0e10cSrcweir 	GetUserButton()->SetClickHdl(LINK(this, SwSvxNumBulletTabDialog, RemoveNumberingHdl));
1072*cdf0e10cSrcweir 	if(!rWrtSh.GetCurNumRule())
1073*cdf0e10cSrcweir 		GetUserButton()->Enable(sal_False);
1074*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM );
1075*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_BULLET );
1076*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_NUM );
1077*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_BMP );
1078*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_NUM_OPTIONS );
1079*cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_NUM_POSITION );
1080*cdf0e10cSrcweir 
1081*cdf0e10cSrcweir }
1082*cdf0e10cSrcweir /*-----------------07.02.97 12.08-------------------
1083*cdf0e10cSrcweir 
1084*cdf0e10cSrcweir --------------------------------------------------*/
1085*cdf0e10cSrcweir 
1086*cdf0e10cSrcweir SwSvxNumBulletTabDialog::~SwSvxNumBulletTabDialog()
1087*cdf0e10cSrcweir {
1088*cdf0e10cSrcweir }
1089*cdf0e10cSrcweir 
1090*cdf0e10cSrcweir /*-----------------07.02.97 14.48-------------------
1091*cdf0e10cSrcweir 
1092*cdf0e10cSrcweir --------------------------------------------------*/
1093*cdf0e10cSrcweir 
1094*cdf0e10cSrcweir void SwSvxNumBulletTabDialog::PageCreated(sal_uInt16 nPageId, SfxTabPage& rPage)
1095*cdf0e10cSrcweir {
1096*cdf0e10cSrcweir 	//Namen der Vorlagen und Metric setzen
1097*cdf0e10cSrcweir 	String sNumCharFmt, sBulletCharFmt;
1098*cdf0e10cSrcweir 	SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFmt );
1099*cdf0e10cSrcweir 	SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt );
1100*cdf0e10cSrcweir 
1101*cdf0e10cSrcweir 	switch ( nPageId )
1102*cdf0e10cSrcweir 	{
1103*cdf0e10cSrcweir 	case RID_SVXPAGE_PICK_NUM:
1104*cdf0e10cSrcweir 		{
1105*cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1106*cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
1107*cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1108*cdf0e10cSrcweir             rPage.PageCreated(aSet);
1109*cdf0e10cSrcweir 		}
1110*cdf0e10cSrcweir 		break;
1111*cdf0e10cSrcweir 	case RID_SVXPAGE_PICK_BULLET :
1112*cdf0e10cSrcweir 		{
1113*cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1114*cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1115*cdf0e10cSrcweir             rPage.PageCreated(aSet);
1116*cdf0e10cSrcweir 		}
1117*cdf0e10cSrcweir 		break;
1118*cdf0e10cSrcweir 
1119*cdf0e10cSrcweir 	case RID_SVXPAGE_NUM_OPTIONS:
1120*cdf0e10cSrcweir 		{
1121*cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1122*cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
1123*cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1124*cdf0e10cSrcweir 			// Zeichenvorlagen sammeln
1125*cdf0e10cSrcweir             ListBox rCharFmtLB(this);
1126*cdf0e10cSrcweir 			rCharFmtLB.Clear();
1127*cdf0e10cSrcweir 			rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
1128*cdf0e10cSrcweir 			SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
1129*cdf0e10cSrcweir 			::FillCharStyleListBox(rCharFmtLB,	pDocShell);
1130*cdf0e10cSrcweir 			List aList;
1131*cdf0e10cSrcweir 			for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++)
1132*cdf0e10cSrcweir 			{
1133*cdf0e10cSrcweir 
1134*cdf0e10cSrcweir 				 aList.Insert( new XubString(rCharFmtLB.GetEntry(j)), LIST_APPEND );
1135*cdf0e10cSrcweir 			}
1136*cdf0e10cSrcweir 			aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ;
1137*cdf0e10cSrcweir 
1138*cdf0e10cSrcweir 			FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
1139*cdf0e10cSrcweir             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric) ) );
1140*cdf0e10cSrcweir             rPage.PageCreated(aSet);
1141*cdf0e10cSrcweir 			for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i )
1142*cdf0e10cSrcweir 					delete (XubString*)aList.Remove(i);
1143*cdf0e10cSrcweir 			aList.Clear();
1144*cdf0e10cSrcweir 		}
1145*cdf0e10cSrcweir 		break;
1146*cdf0e10cSrcweir 	case RID_SVXPAGE_NUM_POSITION:
1147*cdf0e10cSrcweir 		{
1148*cdf0e10cSrcweir 			SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
1149*cdf0e10cSrcweir 			FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
1150*cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1151*cdf0e10cSrcweir             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)) );
1152*cdf0e10cSrcweir             rPage.PageCreated(aSet);
1153*cdf0e10cSrcweir // 			((SvxNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh);
1154*cdf0e10cSrcweir 		}
1155*cdf0e10cSrcweir 		break;
1156*cdf0e10cSrcweir 	}
1157*cdf0e10cSrcweir }
1158*cdf0e10cSrcweir /*-----------------17.02.97 16.52-------------------
1159*cdf0e10cSrcweir 
1160*cdf0e10cSrcweir --------------------------------------------------*/
1161*cdf0e10cSrcweir short  SwSvxNumBulletTabDialog::Ok()
1162*cdf0e10cSrcweir {
1163*cdf0e10cSrcweir 	short nRet = SfxTabDialog::Ok();
1164*cdf0e10cSrcweir 	pExampleSet->ClearItem(SID_PARAM_NUM_PRESET);
1165*cdf0e10cSrcweir 	return nRet;
1166*cdf0e10cSrcweir }
1167*cdf0e10cSrcweir /* -----------------02.12.98 08:35-------------------
1168*cdf0e10cSrcweir  *
1169*cdf0e10cSrcweir  * --------------------------------------------------*/
1170*cdf0e10cSrcweir IMPL_LINK(SwSvxNumBulletTabDialog, RemoveNumberingHdl, PushButton*, EMPTYARG)
1171*cdf0e10cSrcweir {
1172*cdf0e10cSrcweir 	EndDialog(RET_USER);
1173*cdf0e10cSrcweir 	return 0;
1174*cdf0e10cSrcweir }
1175*cdf0e10cSrcweir 
1176*cdf0e10cSrcweir 
1177