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