xref: /trunk/main/sw/source/ui/misc/num.cxx (revision 34760e49)
1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5efeef26fSAndrew Rist  * distributed with this work for additional information
6efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10efeef26fSAndrew Rist  *
11efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12efeef26fSAndrew Rist  *
13efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17efeef26fSAndrew Rist  * specific language governing permissions and limitations
18efeef26fSAndrew Rist  * under the License.
19efeef26fSAndrew Rist  *
20efeef26fSAndrew Rist  *************************************************************/
21efeef26fSAndrew Rist 
22efeef26fSAndrew 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 --------------------------------------------------*/
SwNumPositionTabPage(Window * pParent,const SfxItemSet & rSet)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 --------------------------------------------------*/
~SwNumPositionTabPage()207cdf0e10cSrcweir SwNumPositionTabPage::~SwNumPositionTabPage()
208cdf0e10cSrcweir {
209cdf0e10cSrcweir 	delete pActNum;
210cdf0e10cSrcweir }
211cdf0e10cSrcweir /*-----------------03.12.97 10:06-------------------
212cdf0e10cSrcweir 
213cdf0e10cSrcweir --------------------------------------------------*/
InitControls()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 	}
315205b6fc7SArmin Le Grand     if (MAXLEVEL <= nLvl)
316205b6fc7SArmin Le Grand     {
317205b6fc7SArmin Le Grand         OSL_ENSURE(false, "cannot happen.");
318205b6fc7SArmin Le Grand         return;
319205b6fc7SArmin Le Grand     }
320cdf0e10cSrcweir 	if(bSameDistBorderNum)
321cdf0e10cSrcweir 	{
322cdf0e10cSrcweir 		long nDistBorderNum;
323cdf0e10cSrcweir 		if(bRelative)
324cdf0e10cSrcweir 		{
325cdf0e10cSrcweir 			nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
326cdf0e10cSrcweir 			if(nLvl)
327cdf0e10cSrcweir 				nDistBorderNum -= (long)aNumFmtArr[nLvl - 1]->GetAbsLSpace()+ aNumFmtArr[nLvl - 1]->GetFirstLineOffset();
328cdf0e10cSrcweir 		}
329cdf0e10cSrcweir 		else
330cdf0e10cSrcweir 		{
331cdf0e10cSrcweir 			nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
332cdf0e10cSrcweir 		}
333cdf0e10cSrcweir 		aDistBorderMF.SetValue(aDistBorderMF.Normalize(nDistBorderNum),FUNIT_TWIP);
334cdf0e10cSrcweir 	}
335cdf0e10cSrcweir 	else
336cdf0e10cSrcweir 		bSetDistEmpty = sal_True;
337cdf0e10cSrcweir 
338cdf0e10cSrcweir 	if(bSameDist)
339cdf0e10cSrcweir 		aDistNumMF	 .SetValue(aDistNumMF.Normalize(aNumFmtArr[nLvl]->GetCharTextDistance()), FUNIT_TWIP);
340cdf0e10cSrcweir 	else
341cdf0e10cSrcweir 		aDistNumMF.SetText(aEmptyStr);
342cdf0e10cSrcweir 	if(bSameIndent)
343cdf0e10cSrcweir 		aIndentMF.SetValue(aIndentMF.Normalize(-aNumFmtArr[nLvl]->GetFirstLineOffset()), FUNIT_TWIP);
344cdf0e10cSrcweir 	else
345cdf0e10cSrcweir 		aIndentMF.SetText(aEmptyStr);
346cdf0e10cSrcweir 
347cdf0e10cSrcweir 	if(bSameAdjust)
348cdf0e10cSrcweir 	{
349cdf0e10cSrcweir 		sal_uInt16 nPos = 1; // zentriert
350cdf0e10cSrcweir 		if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT)
351cdf0e10cSrcweir 			nPos = 0;
352cdf0e10cSrcweir 		else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT)
353cdf0e10cSrcweir 			nPos = 2;
354cdf0e10cSrcweir 		aAlignLB.SelectEntryPos(nPos);
355cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
356cdf0e10cSrcweir         aAlign2LB.SelectEntryPos( nPos );
357cdf0e10cSrcweir         // <--
358cdf0e10cSrcweir 	}
359cdf0e10cSrcweir 	else
360cdf0e10cSrcweir 	{
361cdf0e10cSrcweir 		aAlignLB.SetNoSelection();
362cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
363cdf0e10cSrcweir         aAlign2LB.SetNoSelection();
364cdf0e10cSrcweir         // <--
365cdf0e10cSrcweir 	}
366cdf0e10cSrcweir 
367cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
368cdf0e10cSrcweir     if ( bSameLabelFollowedBy )
369cdf0e10cSrcweir     {
370cdf0e10cSrcweir         sal_uInt16 nPos = 0; // LISTTAB
371cdf0e10cSrcweir         if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::SPACE )
372cdf0e10cSrcweir         {
373cdf0e10cSrcweir             nPos = 1;
374cdf0e10cSrcweir         }
375cdf0e10cSrcweir         else if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::NOTHING )
376cdf0e10cSrcweir         {
377cdf0e10cSrcweir             nPos = 2;
378cdf0e10cSrcweir         }
379cdf0e10cSrcweir         aLabelFollowedByLB.SelectEntryPos( nPos );
380cdf0e10cSrcweir     }
381cdf0e10cSrcweir     else
382cdf0e10cSrcweir     {
383cdf0e10cSrcweir         aLabelFollowedByLB.SetNoSelection();
384cdf0e10cSrcweir     }
385cdf0e10cSrcweir 
386cdf0e10cSrcweir     if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::LISTTAB )
387cdf0e10cSrcweir     {
388cdf0e10cSrcweir         aListtabFT.Enable( true );
389cdf0e10cSrcweir         aListtabMF.Enable( true );
390cdf0e10cSrcweir         if ( bSameListtab )
391cdf0e10cSrcweir         {
392cdf0e10cSrcweir             aListtabMF.SetValue(aListtabMF.Normalize(aNumFmtArr[nLvl]->GetListtabPos()),FUNIT_TWIP);
393cdf0e10cSrcweir         }
394cdf0e10cSrcweir         else
395cdf0e10cSrcweir         {
396cdf0e10cSrcweir             aListtabMF.SetText(aEmptyStr);
397cdf0e10cSrcweir         }
398cdf0e10cSrcweir     }
399cdf0e10cSrcweir     else
400cdf0e10cSrcweir     {
401cdf0e10cSrcweir         aListtabFT.Enable( false );
402cdf0e10cSrcweir         aListtabMF.Enable( false );
403cdf0e10cSrcweir         aListtabMF.SetText(aEmptyStr);
404cdf0e10cSrcweir     }
405cdf0e10cSrcweir 
406cdf0e10cSrcweir     if ( bSameAlignAt )
407cdf0e10cSrcweir     {
408cdf0e10cSrcweir         aAlignedAtMF.SetValue(
409cdf0e10cSrcweir             aAlignedAtMF.Normalize( aNumFmtArr[nLvl]->GetIndentAt() +
410cdf0e10cSrcweir                                     aNumFmtArr[nLvl]->GetFirstLineIndent()),
411cdf0e10cSrcweir             FUNIT_TWIP );
412cdf0e10cSrcweir     }
413cdf0e10cSrcweir     else
414cdf0e10cSrcweir     {
415cdf0e10cSrcweir         aAlignedAtMF.SetText(aEmptyStr);
416cdf0e10cSrcweir     }
417cdf0e10cSrcweir 
418cdf0e10cSrcweir     if ( bSameIndentAt )
419cdf0e10cSrcweir     {
420cdf0e10cSrcweir         aIndentAtMF.SetValue(
421cdf0e10cSrcweir             aIndentAtMF.Normalize( aNumFmtArr[nLvl]->GetIndentAt()), FUNIT_TWIP );
422cdf0e10cSrcweir     }
423cdf0e10cSrcweir     else
424cdf0e10cSrcweir     {
425cdf0e10cSrcweir         aIndentAtMF.SetText(aEmptyStr);
426cdf0e10cSrcweir     }
427cdf0e10cSrcweir     // <--
428cdf0e10cSrcweir 
429cdf0e10cSrcweir 	if(sal_True == bSetDistEmpty)
430cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
431cdf0e10cSrcweir 
432cdf0e10cSrcweir 	bInInintControl	= sal_False;
433cdf0e10cSrcweir }
434cdf0e10cSrcweir 
435cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
436cdf0e10cSrcweir 
437cdf0e10cSrcweir --------------------------------------------------*/
ActivatePage(const SfxItemSet &)438cdf0e10cSrcweir void SwNumPositionTabPage::ActivatePage(const SfxItemSet& )
439cdf0e10cSrcweir {
440cdf0e10cSrcweir 	const SfxPoolItem* pItem;
441cdf0e10cSrcweir 	sal_uInt16 nTmpNumLvl =
442cdf0e10cSrcweir 		pOutlineDlg ? pOutlineDlg->GetActNumLevel() : 0;
443cdf0e10cSrcweir 	const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
444cdf0e10cSrcweir 	if(pExampleSet && pExampleSet->GetItemState(FN_PARAM_NUM_PRESET, sal_False, &pItem))
445cdf0e10cSrcweir 	{
446cdf0e10cSrcweir 		bPreset = ((const SfxBoolItem*)pItem)->GetValue();
447cdf0e10cSrcweir 	}
448cdf0e10cSrcweir 	//
449cdf0e10cSrcweir 	bModified = (!pActNum->GetNumFmt( 0 ) || bPreset);
450cdf0e10cSrcweir 	if(*pActNum != *pSaveNum ||
451cdf0e10cSrcweir 		nActNumLvl != nTmpNumLvl )
452cdf0e10cSrcweir 	{
453cdf0e10cSrcweir 		*pActNum = *pSaveNum;
454cdf0e10cSrcweir 		nActNumLvl = nTmpNumLvl;
455cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
456cdf0e10cSrcweir 		aLevelLB.SetUpdateMode(sal_False);
457cdf0e10cSrcweir 		aLevelLB.SetNoSelection();
458cdf0e10cSrcweir 		aLevelLB.SelectEntryPos( MAXLEVEL, nActNumLvl == USHRT_MAX);
459cdf0e10cSrcweir 		if(nActNumLvl != USHRT_MAX)
460cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
461cdf0e10cSrcweir 			{
462cdf0e10cSrcweir 				if(nActNumLvl & nMask)
463cdf0e10cSrcweir 					aLevelLB.SelectEntryPos( i, sal_True);
464cdf0e10cSrcweir 				nMask <<= 1 ;
465cdf0e10cSrcweir 			}
466cdf0e10cSrcweir 		aLevelLB.SetUpdateMode(sal_True);
467cdf0e10cSrcweir 
468cdf0e10cSrcweir         // --> OD 2008-02-01 #newlistlevelattrs#
469cdf0e10cSrcweir         InitPosAndSpaceMode();
470cdf0e10cSrcweir         ShowControlsDependingOnPosAndSpaceMode();
471cdf0e10cSrcweir         // <--
472cdf0e10cSrcweir 
473cdf0e10cSrcweir         InitControls();
474cdf0e10cSrcweir 	}
475cdf0e10cSrcweir 	aRelativeCB.Enable(1 != nActNumLvl);
476cdf0e10cSrcweir 	aPreviewWIN.Invalidate();
477cdf0e10cSrcweir }
478cdf0e10cSrcweir 
479cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
480cdf0e10cSrcweir 
481cdf0e10cSrcweir --------------------------------------------------*/
DeactivatePage(SfxItemSet * _pSet)482cdf0e10cSrcweir int  SwNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet)
483cdf0e10cSrcweir {
484cdf0e10cSrcweir     SwOutlineTabDialog::SetActNumLevel(nActNumLvl);
485cdf0e10cSrcweir     if(_pSet)
486cdf0e10cSrcweir         FillItemSet(*_pSet);
487cdf0e10cSrcweir 	return sal_True;
488cdf0e10cSrcweir 
489cdf0e10cSrcweir }
490cdf0e10cSrcweir 
491cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
492cdf0e10cSrcweir 
493cdf0e10cSrcweir --------------------------------------------------*/
FillItemSet(SfxItemSet & rSet)494cdf0e10cSrcweir sal_Bool SwNumPositionTabPage::FillItemSet( SfxItemSet& rSet )
495cdf0e10cSrcweir {
496cdf0e10cSrcweir 	if(pOutlineDlg)
497cdf0e10cSrcweir 		*pOutlineDlg->GetNumRule() = *pActNum;
498cdf0e10cSrcweir 	else if(bModified && pActNum)
499cdf0e10cSrcweir 	{
500cdf0e10cSrcweir 		*pSaveNum = *pActNum;
501cdf0e10cSrcweir 		rSet.Put(SwUINumRuleItem( *pSaveNum ));
502cdf0e10cSrcweir 		rSet.Put(SfxBoolItem(FN_PARAM_NUM_PRESET, sal_False));
503cdf0e10cSrcweir 	}
504cdf0e10cSrcweir 	return bModified;
505cdf0e10cSrcweir }
506cdf0e10cSrcweir 
507cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
508cdf0e10cSrcweir 
509cdf0e10cSrcweir --------------------------------------------------*/
Reset(const SfxItemSet & rSet)510cdf0e10cSrcweir void SwNumPositionTabPage::Reset( const SfxItemSet& rSet )
511cdf0e10cSrcweir {
512cdf0e10cSrcweir 	const SfxPoolItem* pItem;
513cdf0e10cSrcweir 	if(pOutlineDlg)
514cdf0e10cSrcweir 	{
515cdf0e10cSrcweir 		pSaveNum = pOutlineDlg->GetNumRule();
516cdf0e10cSrcweir 		aLevelLB.EnableMultiSelection(sal_False);
517cdf0e10cSrcweir 	}
518cdf0e10cSrcweir 	else if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_ACT_NUMBER, sal_False, &pItem))
519cdf0e10cSrcweir 		pSaveNum = ((SwUINumRuleItem*)pItem)->GetNumRule();
520cdf0e10cSrcweir 
521cdf0e10cSrcweir     nActNumLvl = SwOutlineTabDialog::GetActNumLevel();
522cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
523cdf0e10cSrcweir 	aLevelLB.SetUpdateMode(sal_False);
524cdf0e10cSrcweir 	aLevelLB.SetNoSelection();
525cdf0e10cSrcweir 	if(nActNumLvl == USHRT_MAX)
526cdf0e10cSrcweir 	{
527cdf0e10cSrcweir 		aLevelLB.SelectEntryPos( MAXLEVEL, sal_True);
528cdf0e10cSrcweir 	}
529cdf0e10cSrcweir 	else
530cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
531cdf0e10cSrcweir 		{
532cdf0e10cSrcweir 			if(nActNumLvl & nMask)
533cdf0e10cSrcweir 				aLevelLB.SelectEntryPos( i, sal_True);
534cdf0e10cSrcweir 			nMask <<= 1;
535cdf0e10cSrcweir 		}
536cdf0e10cSrcweir 	aLevelLB.SetUpdateMode(sal_True);
537cdf0e10cSrcweir 
538cdf0e10cSrcweir 	if(!pActNum)
539cdf0e10cSrcweir 		pActNum = new  SwNumRule(*pSaveNum);
540cdf0e10cSrcweir 	else if(*pSaveNum != *pActNum)
541cdf0e10cSrcweir 		*pActNum = *pSaveNum;
542cdf0e10cSrcweir 	aPreviewWIN.SetNumRule(pActNum);
543cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
544cdf0e10cSrcweir     InitPosAndSpaceMode();
545cdf0e10cSrcweir     ShowControlsDependingOnPosAndSpaceMode();
546cdf0e10cSrcweir     // <--
547cdf0e10cSrcweir 	InitControls();
548cdf0e10cSrcweir 	bModified = sal_False;
549cdf0e10cSrcweir }
550cdf0e10cSrcweir 
551cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs#
InitPosAndSpaceMode()552cdf0e10cSrcweir void SwNumPositionTabPage::InitPosAndSpaceMode()
553cdf0e10cSrcweir {
554cdf0e10cSrcweir     if ( pActNum == 0 )
555cdf0e10cSrcweir     {
556cdf0e10cSrcweir         DBG_ASSERT( false,
557cdf0e10cSrcweir                 "<SwNumPositionTabPage::InitPosAndSpaceMode()> - misusage of method -> <pAktNum> has to be already set!" );
558cdf0e10cSrcweir         return;
559cdf0e10cSrcweir     }
560cdf0e10cSrcweir 
561cdf0e10cSrcweir     SvxNumberFormat::SvxNumPositionAndSpaceMode ePosAndSpaceMode =
562cdf0e10cSrcweir                                             SvxNumberFormat::LABEL_ALIGNMENT;
563cdf0e10cSrcweir     sal_uInt16 nMask = 1;
564cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
565cdf0e10cSrcweir     {
566cdf0e10cSrcweir         if(nActNumLvl & nMask)
567cdf0e10cSrcweir         {
568cdf0e10cSrcweir             SvxNumberFormat aNumFmt( pActNum->Get(i) );
569cdf0e10cSrcweir             ePosAndSpaceMode = aNumFmt.GetPositionAndSpaceMode();
570cdf0e10cSrcweir             if ( ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
571cdf0e10cSrcweir             {
572cdf0e10cSrcweir                 break;
573cdf0e10cSrcweir             }
574cdf0e10cSrcweir         }
575cdf0e10cSrcweir         nMask <<= 1;
576cdf0e10cSrcweir     }
577cdf0e10cSrcweir 
578cdf0e10cSrcweir     bLabelAlignmentPosAndSpaceModeActive =
579cdf0e10cSrcweir                     ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT;
580cdf0e10cSrcweir }
581cdf0e10cSrcweir 
ShowControlsDependingOnPosAndSpaceMode()582cdf0e10cSrcweir void SwNumPositionTabPage::ShowControlsDependingOnPosAndSpaceMode()
583cdf0e10cSrcweir {
584cdf0e10cSrcweir     aDistBorderFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
585cdf0e10cSrcweir     aDistBorderMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
586cdf0e10cSrcweir     aRelativeCB.Show( !bLabelAlignmentPosAndSpaceModeActive );
587cdf0e10cSrcweir     aIndentFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
588cdf0e10cSrcweir     aIndentMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
589cdf0e10cSrcweir     aDistNumFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
590cdf0e10cSrcweir     aDistNumMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
591cdf0e10cSrcweir     aAlignFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
592cdf0e10cSrcweir     aAlignLB.Show( !bLabelAlignmentPosAndSpaceModeActive );
593cdf0e10cSrcweir 
594cdf0e10cSrcweir     aLabelFollowedByFT.Show( bLabelAlignmentPosAndSpaceModeActive );
595cdf0e10cSrcweir     aLabelFollowedByLB.Show( bLabelAlignmentPosAndSpaceModeActive );
596cdf0e10cSrcweir     aListtabFT.Show( bLabelAlignmentPosAndSpaceModeActive );
597cdf0e10cSrcweir     aListtabMF.Show( bLabelAlignmentPosAndSpaceModeActive );
598cdf0e10cSrcweir     aAlign2FT.Show( bLabelAlignmentPosAndSpaceModeActive );
599cdf0e10cSrcweir     aAlign2LB.Show( bLabelAlignmentPosAndSpaceModeActive );
600cdf0e10cSrcweir     aAlignedAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
601cdf0e10cSrcweir     aAlignedAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
602cdf0e10cSrcweir     aIndentAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
603cdf0e10cSrcweir     aIndentAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
604cdf0e10cSrcweir }
605cdf0e10cSrcweir // <--
606cdf0e10cSrcweir 
607cdf0e10cSrcweir /*-----------------03.12.97 10:02-------------------
608cdf0e10cSrcweir 
609cdf0e10cSrcweir --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)610cdf0e10cSrcweir SfxTabPage*	SwNumPositionTabPage::Create( Window* pParent,
611cdf0e10cSrcweir 								const SfxItemSet& rAttrSet)
612cdf0e10cSrcweir {
613cdf0e10cSrcweir 	return new SwNumPositionTabPage(pParent, rAttrSet);
614cdf0e10cSrcweir }
615cdf0e10cSrcweir 
616cdf0e10cSrcweir /*-----------------04.12.97 12:51-------------------
617cdf0e10cSrcweir 
618cdf0e10cSrcweir --------------------------------------------------*/
SetWrtShell(SwWrtShell * pSh)619cdf0e10cSrcweir void SwNumPositionTabPage::SetWrtShell(SwWrtShell* pSh)
620cdf0e10cSrcweir {
621cdf0e10cSrcweir 	pWrtSh = pSh;
622cdf0e10cSrcweir 
623cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
624cdf0e10cSrcweir     const SwTwips nWidth = pWrtSh->GetAnyCurRect(RECT_FRM).Width();
625cdf0e10cSrcweir 
626cdf0e10cSrcweir     aDistBorderMF.SetMax(aDistBorderMF.Normalize( nWidth ), FUNIT_TWIP );
627cdf0e10cSrcweir     aDistNumMF   .SetMax(aDistNumMF   .Normalize( nWidth ), FUNIT_TWIP );
628cdf0e10cSrcweir     aIndentMF    .SetMax(aIndentMF    .Normalize( nWidth ), FUNIT_TWIP );
629cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
630cdf0e10cSrcweir     aListtabMF.SetMax(aListtabMF.Normalize( nWidth ), FUNIT_TWIP );
631cdf0e10cSrcweir     aAlignedAtMF.SetMax(aAlignedAtMF.Normalize( nWidth ), FUNIT_TWIP );
632cdf0e10cSrcweir     aIndentAtMF.SetMax(aIndentAtMF.Normalize( nWidth ), FUNIT_TWIP );
633cdf0e10cSrcweir     // <--
634cdf0e10cSrcweir     const SwTwips nLast2 = nWidth /2;
635cdf0e10cSrcweir     aDistBorderMF.SetLast( aDistBorderMF.Normalize(   nLast2 ), FUNIT_TWIP );
636cdf0e10cSrcweir     aDistNumMF   .SetLast( aDistNumMF     .Normalize( nLast2 ), FUNIT_TWIP );
637cdf0e10cSrcweir     aIndentMF    .SetLast( aIndentMF      .Normalize( nLast2 ), FUNIT_TWIP );
638cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
639cdf0e10cSrcweir     aListtabMF.SetLast(aListtabMF.Normalize( nLast2 ), FUNIT_TWIP );
640cdf0e10cSrcweir     aAlignedAtMF.SetLast(aAlignedAtMF.Normalize( nLast2 ), FUNIT_TWIP );
641cdf0e10cSrcweir     aIndentAtMF.SetLast(aIndentAtMF.Normalize( nLast2 ), FUNIT_TWIP );
642cdf0e10cSrcweir     // <--
643cdf0e10cSrcweir     // <--
644cdf0e10cSrcweir 
645cdf0e10cSrcweir     const SwRect& rPrtRect = pWrtSh->GetAnyCurRect(RECT_PAGE);
646cdf0e10cSrcweir 	aPreviewWIN.SetPageWidth(rPrtRect.Width());
647cdf0e10cSrcweir 	FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &pWrtSh->GetView()));
648cdf0e10cSrcweir 	if(eMetric == FUNIT_MM)
649cdf0e10cSrcweir 	{
650cdf0e10cSrcweir 		aDistBorderMF .SetDecimalDigits(1);
651cdf0e10cSrcweir 		aDistNumMF	  .SetDecimalDigits(1);
652cdf0e10cSrcweir 		aIndentMF	  .SetDecimalDigits(1);
653cdf0e10cSrcweir         // --> OD 2008-02-18 #newlistlevelattrs#
654cdf0e10cSrcweir         aListtabMF.SetDecimalDigits(1);
655cdf0e10cSrcweir         aAlignedAtMF.SetDecimalDigits(1);
656cdf0e10cSrcweir         aIndentAtMF.SetDecimalDigits(1);
657cdf0e10cSrcweir         // <--
658cdf0e10cSrcweir 	}
659cdf0e10cSrcweir 	aDistBorderMF .SetUnit( eMetric );
660cdf0e10cSrcweir 	aDistNumMF	  .SetUnit( eMetric );
661cdf0e10cSrcweir 	aIndentMF	  .SetUnit( eMetric );
662cdf0e10cSrcweir     // --> OD 2008-02-18 #newlistlevelattrs#
663cdf0e10cSrcweir     aListtabMF.SetUnit( eMetric );
664cdf0e10cSrcweir     aAlignedAtMF.SetUnit( eMetric );
665cdf0e10cSrcweir     aIndentAtMF.SetUnit( eMetric );
666cdf0e10cSrcweir     // <--
667cdf0e10cSrcweir }
668cdf0e10cSrcweir 
669cdf0e10cSrcweir /*-----------------03.12.97 11:06-------------------
670cdf0e10cSrcweir 
671cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwNumPositionTabPage,EditModifyHdl,Edit *,EMPTYARG)672cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, EditModifyHdl, Edit *, EMPTYARG )
673cdf0e10cSrcweir {
674cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
675cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
676cdf0e10cSrcweir 	{
677cdf0e10cSrcweir 		if(nActNumLvl & nMask)
678cdf0e10cSrcweir 		{
679cdf0e10cSrcweir 			SwNumFmt aNumFmt(pActNum->Get(i));
680cdf0e10cSrcweir 
681cdf0e10cSrcweir             // --> OD 2008-02-01 #newlistlevelattrs#
682cdf0e10cSrcweir             const sal_uInt16 nPos = aAlignLB.IsVisible()
683cdf0e10cSrcweir                                 ? aAlignLB.GetSelectEntryPos()
684cdf0e10cSrcweir                                 : aAlign2LB.GetSelectEntryPos();
685cdf0e10cSrcweir             // <--
686cdf0e10cSrcweir 			SvxAdjust eAdjust = SVX_ADJUST_CENTER;
687cdf0e10cSrcweir 			if(nPos == 0)
688cdf0e10cSrcweir 				eAdjust = SVX_ADJUST_LEFT;
689cdf0e10cSrcweir 			else if(nPos == 2)
690cdf0e10cSrcweir 				eAdjust = SVX_ADJUST_RIGHT;
691cdf0e10cSrcweir 			aNumFmt.SetNumAdjust( eAdjust );
692cdf0e10cSrcweir 			pActNum->Set(i, aNumFmt);
693cdf0e10cSrcweir 		}
694cdf0e10cSrcweir 		nMask <<= 1;
695cdf0e10cSrcweir 	}
696cdf0e10cSrcweir 	SetModified();
697cdf0e10cSrcweir 	return 0;
698cdf0e10cSrcweir }
699cdf0e10cSrcweir /*-----------------03.12.97 11:11-------------------
700cdf0e10cSrcweir 
701cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwNumPositionTabPage,LevelHdl,ListBox *,pBox)702cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, LevelHdl, ListBox *, pBox )
703cdf0e10cSrcweir {
704cdf0e10cSrcweir 	sal_uInt16 nSaveNumLvl = nActNumLvl;
705cdf0e10cSrcweir 	nActNumLvl = 0;
706cdf0e10cSrcweir 	if(pBox->IsEntryPosSelected( MAXLEVEL ) &&
707cdf0e10cSrcweir 			(pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
708cdf0e10cSrcweir 	{
709cdf0e10cSrcweir 		nActNumLvl = 0xFFFF;
710cdf0e10cSrcweir 		pBox->SetUpdateMode(sal_False);
711cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
712cdf0e10cSrcweir 			pBox->SelectEntryPos( i, sal_False );
713cdf0e10cSrcweir 		pBox->SetUpdateMode(sal_True);
714cdf0e10cSrcweir 	}
715cdf0e10cSrcweir 	else if(pBox->GetSelectEntryCount())
716cdf0e10cSrcweir 	{
717cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
718cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
719cdf0e10cSrcweir 		{
720cdf0e10cSrcweir 			if(pBox->IsEntryPosSelected( i ))
721cdf0e10cSrcweir 				nActNumLvl |= nMask;
722cdf0e10cSrcweir 			nMask <<= 1;
723cdf0e10cSrcweir 		}
724cdf0e10cSrcweir 		pBox->SelectEntryPos( MAXLEVEL, sal_False );
725cdf0e10cSrcweir 	}
726cdf0e10cSrcweir 	else
727cdf0e10cSrcweir 	{
728cdf0e10cSrcweir 		nActNumLvl = nSaveNumLvl;
729cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
730cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
731cdf0e10cSrcweir 		{
732cdf0e10cSrcweir 			if(nActNumLvl & nMask)
733cdf0e10cSrcweir 			{
734cdf0e10cSrcweir 				pBox->SelectEntryPos(i);
735cdf0e10cSrcweir 				break;
736cdf0e10cSrcweir 			}
737cdf0e10cSrcweir 			nMask <<=1;
738cdf0e10cSrcweir 		}
739cdf0e10cSrcweir 	}
740cdf0e10cSrcweir 	aRelativeCB.Enable(1 != nActNumLvl);
741cdf0e10cSrcweir 	SetModified();
742cdf0e10cSrcweir     // --> OD 2008-02-01 #newlistlevelattrs#
743cdf0e10cSrcweir     InitPosAndSpaceMode();
744cdf0e10cSrcweir     ShowControlsDependingOnPosAndSpaceMode();
745cdf0e10cSrcweir     // <--
746cdf0e10cSrcweir 	InitControls();
747cdf0e10cSrcweir 	return 0;
748cdf0e10cSrcweir }
749cdf0e10cSrcweir /*-----------------03.12.97 12:24-------------------
750cdf0e10cSrcweir 
751cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwNumPositionTabPage,DistanceHdl,MetricField *,pFld)752cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, DistanceHdl, MetricField *, pFld )
753cdf0e10cSrcweir {
754cdf0e10cSrcweir 	if(bInInintControl)
755cdf0e10cSrcweir 		return 0;
756cdf0e10cSrcweir     long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
757cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
758cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
759cdf0e10cSrcweir 	{
760cdf0e10cSrcweir 		if(nActNumLvl & nMask)
761cdf0e10cSrcweir 		{
762cdf0e10cSrcweir 			SwNumFmt aNumFmt( pActNum->Get( i ) );
763cdf0e10cSrcweir 			if(pFld == &aDistBorderMF)
764cdf0e10cSrcweir 			{
765cdf0e10cSrcweir 
766cdf0e10cSrcweir 				if(aRelativeCB.IsChecked() && aRelativeCB.IsEnabled())
767cdf0e10cSrcweir 				{
768cdf0e10cSrcweir 					if(0 == i)
769cdf0e10cSrcweir 					{
770cdf0e10cSrcweir 						long nTmp = aNumFmt.GetFirstLineOffset();
771cdf0e10cSrcweir 						aNumFmt.SetAbsLSpace( sal_uInt16(nValue - nTmp));
772cdf0e10cSrcweir 					}
773cdf0e10cSrcweir 					else
774cdf0e10cSrcweir 					{
775cdf0e10cSrcweir 						long nTmp = pActNum->Get( i - 1 ).GetAbsLSpace() +
776cdf0e10cSrcweir 									pActNum->Get( i - 1 ).GetFirstLineOffset() -
777cdf0e10cSrcweir 									pActNum->Get( i ).GetFirstLineOffset();
778cdf0e10cSrcweir 
779cdf0e10cSrcweir 						aNumFmt.SetAbsLSpace( sal_uInt16(nValue + nTmp));
780cdf0e10cSrcweir 					}
781cdf0e10cSrcweir 				}
782cdf0e10cSrcweir 				else
783cdf0e10cSrcweir 				{
784cdf0e10cSrcweir 					aNumFmt.SetAbsLSpace( (short)nValue - aNumFmt.GetFirstLineOffset());
785cdf0e10cSrcweir 				}
786cdf0e10cSrcweir 			}
787cdf0e10cSrcweir 			else if(pFld == &aDistNumMF)
788cdf0e10cSrcweir 			{
789cdf0e10cSrcweir 				aNumFmt.SetCharTextDistance( (short)nValue );
790cdf0e10cSrcweir 			}
791cdf0e10cSrcweir 			else if(pFld == &aIndentMF)
792cdf0e10cSrcweir 			{
793cdf0e10cSrcweir 				//jetzt muss mit dem FirstLineOffset auch der AbsLSpace veraendert werden
794cdf0e10cSrcweir 				long nDiff = nValue + aNumFmt.GetFirstLineOffset();
795cdf0e10cSrcweir 				long nAbsLSpace = aNumFmt.GetAbsLSpace();
796cdf0e10cSrcweir 				aNumFmt.SetAbsLSpace(sal_uInt16(nAbsLSpace + nDiff));
797cdf0e10cSrcweir 				aNumFmt.SetFirstLineOffset( -(short)nValue );
798cdf0e10cSrcweir 			}
799cdf0e10cSrcweir 
800cdf0e10cSrcweir 			pActNum->Set( i, aNumFmt );
801cdf0e10cSrcweir 		}
802cdf0e10cSrcweir 		nMask <<= 1;
803cdf0e10cSrcweir 	}
804cdf0e10cSrcweir 
805cdf0e10cSrcweir 	SetModified();
806cdf0e10cSrcweir 	if(!aDistBorderMF.IsEnabled())
807cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
808cdf0e10cSrcweir 
809cdf0e10cSrcweir 	return 0;
810cdf0e10cSrcweir }
811cdf0e10cSrcweir 
812cdf0e10cSrcweir /*-----------------04.12.97 12:35-------------------
813cdf0e10cSrcweir 
814cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwNumPositionTabPage,RelativeHdl,CheckBox *,pBox)815cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, RelativeHdl, CheckBox *, pBox )
816cdf0e10cSrcweir {
817cdf0e10cSrcweir 	sal_Bool bOn = pBox->IsChecked();
818cdf0e10cSrcweir 	sal_Bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
819cdf0e10cSrcweir 	sal_Bool bSetValue = sal_False;
820cdf0e10cSrcweir 	long nValue = 0;
821cdf0e10cSrcweir 	if(bOn || bSingleSelection)
822cdf0e10cSrcweir 	{
823cdf0e10cSrcweir 		sal_uInt16 nMask = 1;
824cdf0e10cSrcweir 		sal_Bool bFirst = sal_True;
825cdf0e10cSrcweir 		bSetValue = sal_True;
826cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
827cdf0e10cSrcweir 		{
828cdf0e10cSrcweir 			if(nActNumLvl & nMask)
829cdf0e10cSrcweir 			{
830cdf0e10cSrcweir 				const SwNumFmt &rNumFmt = pActNum->Get(i);
831cdf0e10cSrcweir 				if(bFirst)
832cdf0e10cSrcweir 				{
833cdf0e10cSrcweir 					nValue = rNumFmt.GetAbsLSpace();
834cdf0e10cSrcweir 					if(bOn && i)
835cdf0e10cSrcweir 						nValue -= pActNum->Get(i - 1).GetAbsLSpace();
836cdf0e10cSrcweir 				}
837cdf0e10cSrcweir 				else
838cdf0e10cSrcweir 					bSetValue = nValue == rNumFmt.GetAbsLSpace() - pActNum->Get(i - 1).GetAbsLSpace();
839cdf0e10cSrcweir 				bFirst = sal_False;
840cdf0e10cSrcweir 			}
841cdf0e10cSrcweir 			nMask <<= 1;
842cdf0e10cSrcweir 		}
843cdf0e10cSrcweir 
844cdf0e10cSrcweir 	}
845cdf0e10cSrcweir 	if(bSetValue)
846cdf0e10cSrcweir 		aDistBorderMF.SetValue(aDistBorderMF.Normalize(nValue),	FUNIT_TWIP);
847cdf0e10cSrcweir 	else
848cdf0e10cSrcweir 		aDistBorderMF.SetText(aEmptyStr);
849cdf0e10cSrcweir 	aDistBorderMF.Enable(bOn || bSingleSelection||0 != pOutlineDlg);
850cdf0e10cSrcweir 	bLastRelative = bOn;
851cdf0e10cSrcweir 	return 0;
852cdf0e10cSrcweir }
853cdf0e10cSrcweir 
854cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
IMPL_LINK(SwNumPositionTabPage,LabelFollowedByHdl_Impl,ListBox *,EMPTYARG)855cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, LabelFollowedByHdl_Impl, ListBox*, EMPTYARG )
856cdf0e10cSrcweir {
857cdf0e10cSrcweir     // determine value to be set at the chosen list levels
858cdf0e10cSrcweir     SvxNumberFormat::SvxNumLabelFollowedBy eLabelFollowedBy =
859cdf0e10cSrcweir                                                     SvxNumberFormat::LISTTAB;
860cdf0e10cSrcweir     {
861cdf0e10cSrcweir         const sal_uInt16 nPos = aLabelFollowedByLB.GetSelectEntryPos();
862cdf0e10cSrcweir         if ( nPos == 1 )
863cdf0e10cSrcweir         {
864cdf0e10cSrcweir             eLabelFollowedBy = SvxNumberFormat::SPACE;
865cdf0e10cSrcweir         }
866cdf0e10cSrcweir         else if ( nPos == 2 )
867cdf0e10cSrcweir         {
868cdf0e10cSrcweir             eLabelFollowedBy = SvxNumberFormat::NOTHING;
869cdf0e10cSrcweir         }
870cdf0e10cSrcweir     }
871cdf0e10cSrcweir 
872cdf0e10cSrcweir     // set value at the chosen list levels
873cdf0e10cSrcweir     bool bSameListtabPos = true;
874cdf0e10cSrcweir     sal_uInt16 nFirstLvl = USHRT_MAX;
875cdf0e10cSrcweir     sal_uInt16 nMask = 1;
876cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
877cdf0e10cSrcweir     {
878cdf0e10cSrcweir         if ( nActNumLvl & nMask )
879cdf0e10cSrcweir         {
880cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
881cdf0e10cSrcweir             aNumFmt.SetLabelFollowedBy( eLabelFollowedBy );
882cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
883cdf0e10cSrcweir 
884cdf0e10cSrcweir             if ( nFirstLvl == USHRT_MAX )
885cdf0e10cSrcweir             {
886cdf0e10cSrcweir                 nFirstLvl = i;
887cdf0e10cSrcweir             }
888cdf0e10cSrcweir             else
889cdf0e10cSrcweir             {
890cdf0e10cSrcweir                 bSameListtabPos &= aNumFmt.GetListtabPos() ==
891cdf0e10cSrcweir                         pActNum->Get( nFirstLvl ).GetListtabPos();
892cdf0e10cSrcweir             }
893cdf0e10cSrcweir         }
894cdf0e10cSrcweir         nMask <<= 1;
895cdf0e10cSrcweir     }
896cdf0e10cSrcweir 
897cdf0e10cSrcweir     // enable/disable metric field for list tab stop position depending on
898cdf0e10cSrcweir     // selected item following the list label.
899cdf0e10cSrcweir     aListtabFT.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
900cdf0e10cSrcweir     aListtabMF.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
901cdf0e10cSrcweir     if ( bSameListtabPos && eLabelFollowedBy == SvxNumberFormat::LISTTAB )
902cdf0e10cSrcweir     {
903cdf0e10cSrcweir         aListtabMF.SetValue(
904cdf0e10cSrcweir             aListtabMF.Normalize( pActNum->Get( nFirstLvl ).GetListtabPos() ),
905cdf0e10cSrcweir             FUNIT_TWIP );
906cdf0e10cSrcweir     }
907cdf0e10cSrcweir     else
908cdf0e10cSrcweir     {
909cdf0e10cSrcweir         aListtabMF.SetText( String() );
910cdf0e10cSrcweir     }
911cdf0e10cSrcweir 
912cdf0e10cSrcweir     SetModified();
913cdf0e10cSrcweir 
914cdf0e10cSrcweir     return 0;
915cdf0e10cSrcweir }
916cdf0e10cSrcweir // <--
917cdf0e10cSrcweir 
918cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
IMPL_LINK(SwNumPositionTabPage,ListtabPosHdl_Impl,MetricField *,pFld)919cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, ListtabPosHdl_Impl, MetricField*, pFld )
920cdf0e10cSrcweir {
921cdf0e10cSrcweir     // determine value to be set at the chosen list levels
922cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
923cdf0e10cSrcweir 
924cdf0e10cSrcweir     // set value at the chosen list levels
925cdf0e10cSrcweir     sal_uInt16 nMask = 1;
926cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
927cdf0e10cSrcweir     {
928cdf0e10cSrcweir         if ( nActNumLvl & nMask )
929cdf0e10cSrcweir         {
930cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
931cdf0e10cSrcweir             aNumFmt.SetListtabPos( nValue );
932cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
933cdf0e10cSrcweir         }
934cdf0e10cSrcweir         nMask <<= 1;
935cdf0e10cSrcweir     }
936cdf0e10cSrcweir 
937cdf0e10cSrcweir     SetModified();
938cdf0e10cSrcweir 
939cdf0e10cSrcweir     return 0;
940cdf0e10cSrcweir }
941cdf0e10cSrcweir // <--
942cdf0e10cSrcweir 
943cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
IMPL_LINK(SwNumPositionTabPage,AlignAtHdl_Impl,MetricField *,pFld)944cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, AlignAtHdl_Impl, MetricField*, pFld )
945cdf0e10cSrcweir {
946cdf0e10cSrcweir     // determine value to be set at the chosen list levels
947cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
948cdf0e10cSrcweir 
949cdf0e10cSrcweir     // set value at the chosen list levels
950cdf0e10cSrcweir     sal_uInt16 nMask = 1;
951cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
952cdf0e10cSrcweir     {
953cdf0e10cSrcweir         if ( nActNumLvl & nMask )
954cdf0e10cSrcweir         {
955cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
956cdf0e10cSrcweir             const long nFirstLineIndent = nValue - aNumFmt.GetIndentAt();
957cdf0e10cSrcweir             aNumFmt.SetFirstLineIndent( nFirstLineIndent );
958cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
959cdf0e10cSrcweir         }
960cdf0e10cSrcweir         nMask <<= 1;
961cdf0e10cSrcweir     }
962cdf0e10cSrcweir 
963cdf0e10cSrcweir     SetModified();
964cdf0e10cSrcweir 
965cdf0e10cSrcweir     return 0;
966cdf0e10cSrcweir }
967cdf0e10cSrcweir // <--
968cdf0e10cSrcweir 
969cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs#
IMPL_LINK(SwNumPositionTabPage,IndentAtHdl_Impl,MetricField *,pFld)970cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, IndentAtHdl_Impl, MetricField*, pFld )
971cdf0e10cSrcweir {
972cdf0e10cSrcweir     // determine value to be set at the chosen list levels
973cdf0e10cSrcweir     const long nValue = static_cast< long >(pFld->Denormalize(pFld->GetValue(FUNIT_TWIP)));
974cdf0e10cSrcweir 
975cdf0e10cSrcweir     // set value at the chosen list levels
976cdf0e10cSrcweir     sal_uInt16 nMask = 1;
977cdf0e10cSrcweir     for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
978cdf0e10cSrcweir     {
979cdf0e10cSrcweir         if ( nActNumLvl & nMask )
980cdf0e10cSrcweir         {
981cdf0e10cSrcweir             SwNumFmt aNumFmt( pActNum->Get(i) );
982cdf0e10cSrcweir             const long nAlignedAt = aNumFmt.GetIndentAt() +
983cdf0e10cSrcweir                                     aNumFmt.GetFirstLineIndent();
984cdf0e10cSrcweir             aNumFmt.SetIndentAt( nValue );
985cdf0e10cSrcweir             const long nNewFirstLineIndent = nAlignedAt - nValue;
986cdf0e10cSrcweir             aNumFmt.SetFirstLineIndent( nNewFirstLineIndent );
987cdf0e10cSrcweir             pActNum->Set( i, aNumFmt );
988cdf0e10cSrcweir         }
989cdf0e10cSrcweir         nMask <<= 1;
990cdf0e10cSrcweir     }
991cdf0e10cSrcweir 
992cdf0e10cSrcweir     SetModified();
993cdf0e10cSrcweir 
994cdf0e10cSrcweir     return 0;
995cdf0e10cSrcweir }
996cdf0e10cSrcweir // <--
997cdf0e10cSrcweir 
998cdf0e10cSrcweir /*-----------------05.12.97 15:33-------------------
999cdf0e10cSrcweir 
1000cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(SwNumPositionTabPage,StandardHdl,PushButton *,EMPTYARG)1001cdf0e10cSrcweir IMPL_LINK( SwNumPositionTabPage, StandardHdl, PushButton *, EMPTYARG )
1002cdf0e10cSrcweir {
1003cdf0e10cSrcweir 	sal_uInt16 nMask = 1;
1004cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
1005cdf0e10cSrcweir 	{
1006cdf0e10cSrcweir 		if(nActNumLvl & nMask)
1007cdf0e10cSrcweir 		{
1008cdf0e10cSrcweir 			SwNumFmt aNumFmt( pActNum->Get( i ) );
1009cdf0e10cSrcweir             // --> OD 2008-02-11 #newlistlevelattrs#
1010cdf0e10cSrcweir             SwNumRule aTmpNumRule( pWrtSh->GetUniqueNumRuleName(),
1011cdf0e10cSrcweir                                    aNumFmt.GetPositionAndSpaceMode(),
1012cdf0e10cSrcweir                                    pOutlineDlg ? OUTLINE_RULE : NUM_RULE );
1013cdf0e10cSrcweir             // <--
1014cdf0e10cSrcweir 			SwNumFmt aTempFmt(aTmpNumRule.Get( i ));
1015cdf0e10cSrcweir             // --> OD 2008-02-05 #newlistlevelattrs#
1016cdf0e10cSrcweir             aNumFmt.SetPositionAndSpaceMode( aTempFmt.GetPositionAndSpaceMode() );
1017cdf0e10cSrcweir             if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1018cdf0e10cSrcweir             {
1019cdf0e10cSrcweir                 aNumFmt.SetAbsLSpace( aTempFmt.GetAbsLSpace());
1020cdf0e10cSrcweir                 aNumFmt.SetCharTextDistance( aTempFmt.GetCharTextDistance() );
1021cdf0e10cSrcweir                 aNumFmt.SetFirstLineOffset( aTempFmt.GetFirstLineOffset() );
1022cdf0e10cSrcweir             }
1023cdf0e10cSrcweir             else if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
1024cdf0e10cSrcweir             {
1025cdf0e10cSrcweir                 aNumFmt.SetNumAdjust( aTempFmt.GetNumAdjust() );
1026cdf0e10cSrcweir                 aNumFmt.SetLabelFollowedBy( aTempFmt.GetLabelFollowedBy() );
1027cdf0e10cSrcweir                 aNumFmt.SetListtabPos( aTempFmt.GetListtabPos() );
1028cdf0e10cSrcweir                 aNumFmt.SetFirstLineIndent( aTempFmt.GetFirstLineIndent() );
1029cdf0e10cSrcweir                 aNumFmt.SetIndentAt( aTempFmt.GetIndentAt() );
1030cdf0e10cSrcweir             }
1031cdf0e10cSrcweir             // <--
1032cdf0e10cSrcweir 
1033cdf0e10cSrcweir 			pActNum->Set( i, aNumFmt );
1034cdf0e10cSrcweir 		}
1035cdf0e10cSrcweir 		nMask <<= 1;
1036cdf0e10cSrcweir 	}
1037cdf0e10cSrcweir 
1038cdf0e10cSrcweir 	InitControls();
1039cdf0e10cSrcweir 	SetModified();
1040cdf0e10cSrcweir 	return 0;
1041cdf0e10cSrcweir }
1042cdf0e10cSrcweir 
1043cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
SetModified(sal_Bool bRepaint)1044cdf0e10cSrcweir void SwNumPositionTabPage::SetModified(sal_Bool bRepaint)
1045cdf0e10cSrcweir {
1046cdf0e10cSrcweir 	bModified = sal_True;
1047cdf0e10cSrcweir 	if(bRepaint)
1048cdf0e10cSrcweir 	{
1049cdf0e10cSrcweir 		aPreviewWIN.SetLevel(nActNumLvl);
1050cdf0e10cSrcweir 		aPreviewWIN.Invalidate();
1051cdf0e10cSrcweir 	}
1052cdf0e10cSrcweir }
1053cdf0e10cSrcweir 
1054cdf0e10cSrcweir #endif
1055cdf0e10cSrcweir 
1056cdf0e10cSrcweir /**************************************************************************/
1057cdf0e10cSrcweir /*                                                                        */
1058cdf0e10cSrcweir /*                                                                        */
1059cdf0e10cSrcweir /**************************************************************************/
1060cdf0e10cSrcweir 
1061cdf0e10cSrcweir 
SwSvxNumBulletTabDialog(Window * pParent,const SfxItemSet * pSwItemSet,SwWrtShell & rSh)1062cdf0e10cSrcweir SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(Window* pParent,
1063cdf0e10cSrcweir 					const SfxItemSet* pSwItemSet, SwWrtShell & rSh) :
1064cdf0e10cSrcweir 	SfxTabDialog(pParent, SW_RES(DLG_SVXTEST_NUM_BULLET), pSwItemSet, sal_False, &aEmptyStr),
1065cdf0e10cSrcweir 	rWrtSh(rSh),
1066cdf0e10cSrcweir     sRemoveText(SW_RES(ST_RESET)),
1067cdf0e10cSrcweir     nRetOptionsDialog(USHRT_MAX)
1068cdf0e10cSrcweir {
1069cdf0e10cSrcweir 	FreeResource();
1070cdf0e10cSrcweir 	GetUserButton()->SetText(sRemoveText);
1071cdf0e10cSrcweir 	GetUserButton()->SetHelpId(HID_NUM_RESET);
1072cdf0e10cSrcweir 	GetUserButton()->SetClickHdl(LINK(this, SwSvxNumBulletTabDialog, RemoveNumberingHdl));
1073*34760e49SOliver-Rainer Wittmann 	if(!rWrtSh.GetNumRuleAtCurrCrsrPos())
1074cdf0e10cSrcweir 		GetUserButton()->Enable(sal_False);
1075cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM );
1076cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_BULLET );
1077cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_NUM );
1078cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_PICK_BMP );
1079cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_NUM_OPTIONS );
1080cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_NUM_POSITION );
1081cdf0e10cSrcweir 
1082cdf0e10cSrcweir }
1083cdf0e10cSrcweir /*-----------------07.02.97 12.08-------------------
1084cdf0e10cSrcweir 
1085cdf0e10cSrcweir --------------------------------------------------*/
1086cdf0e10cSrcweir 
~SwSvxNumBulletTabDialog()1087cdf0e10cSrcweir SwSvxNumBulletTabDialog::~SwSvxNumBulletTabDialog()
1088cdf0e10cSrcweir {
1089cdf0e10cSrcweir }
1090cdf0e10cSrcweir 
1091cdf0e10cSrcweir /*-----------------07.02.97 14.48-------------------
1092cdf0e10cSrcweir 
1093cdf0e10cSrcweir --------------------------------------------------*/
1094cdf0e10cSrcweir 
PageCreated(sal_uInt16 nPageId,SfxTabPage & rPage)1095cdf0e10cSrcweir void SwSvxNumBulletTabDialog::PageCreated(sal_uInt16 nPageId, SfxTabPage& rPage)
1096cdf0e10cSrcweir {
1097cdf0e10cSrcweir 	//Namen der Vorlagen und Metric setzen
1098cdf0e10cSrcweir 	String sNumCharFmt, sBulletCharFmt;
1099cdf0e10cSrcweir 	SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFmt );
1100cdf0e10cSrcweir 	SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt );
1101cdf0e10cSrcweir 
1102cdf0e10cSrcweir 	switch ( nPageId )
1103cdf0e10cSrcweir 	{
1104cdf0e10cSrcweir 	case RID_SVXPAGE_PICK_NUM:
1105cdf0e10cSrcweir 		{
1106cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1107cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
1108cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1109cdf0e10cSrcweir             rPage.PageCreated(aSet);
1110cdf0e10cSrcweir 		}
1111cdf0e10cSrcweir 		break;
1112cdf0e10cSrcweir 	case RID_SVXPAGE_PICK_BULLET :
1113cdf0e10cSrcweir 		{
1114cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1115cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1116cdf0e10cSrcweir             rPage.PageCreated(aSet);
1117cdf0e10cSrcweir 		}
1118cdf0e10cSrcweir 		break;
1119cdf0e10cSrcweir 
1120cdf0e10cSrcweir 	case RID_SVXPAGE_NUM_OPTIONS:
1121cdf0e10cSrcweir 		{
1122cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1123cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
1124cdf0e10cSrcweir             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
1125cdf0e10cSrcweir 			// Zeichenvorlagen sammeln
1126cdf0e10cSrcweir             ListBox rCharFmtLB(this);
1127cdf0e10cSrcweir 			rCharFmtLB.Clear();
1128cdf0e10cSrcweir 			rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
1129cdf0e10cSrcweir 			SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
1130cdf0e10cSrcweir 			::FillCharStyleListBox(rCharFmtLB,	pDocShell);
1131cdf0e10cSrcweir 			List aList;
1132cdf0e10cSrcweir 			for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++)
1133cdf0e10cSrcweir 			{
1134cdf0e10cSrcweir 
1135cdf0e10cSrcweir 				 aList.Insert( new XubString(rCharFmtLB.GetEntry(j)), LIST_APPEND );
1136cdf0e10cSrcweir 			}
1137cdf0e10cSrcweir 			aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ;
1138cdf0e10cSrcweir 
1139cdf0e10cSrcweir 			FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
1140cdf0e10cSrcweir             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric) ) );
1141cdf0e10cSrcweir             rPage.PageCreated(aSet);
1142cdf0e10cSrcweir 			for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i )
1143cdf0e10cSrcweir 					delete (XubString*)aList.Remove(i);
1144cdf0e10cSrcweir 			aList.Clear();
1145cdf0e10cSrcweir 		}
1146cdf0e10cSrcweir 		break;
1147cdf0e10cSrcweir 	case RID_SVXPAGE_NUM_POSITION:
1148cdf0e10cSrcweir 		{
1149cdf0e10cSrcweir 			SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
1150cdf0e10cSrcweir 			FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
1151cdf0e10cSrcweir             SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1152cdf0e10cSrcweir             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)) );
1153cdf0e10cSrcweir             rPage.PageCreated(aSet);
1154cdf0e10cSrcweir // 			((SvxNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh);
1155cdf0e10cSrcweir 		}
1156cdf0e10cSrcweir 		break;
1157cdf0e10cSrcweir 	}
1158cdf0e10cSrcweir }
1159cdf0e10cSrcweir /*-----------------17.02.97 16.52-------------------
1160cdf0e10cSrcweir 
1161cdf0e10cSrcweir --------------------------------------------------*/
Ok()1162cdf0e10cSrcweir short  SwSvxNumBulletTabDialog::Ok()
1163cdf0e10cSrcweir {
1164cdf0e10cSrcweir 	short nRet = SfxTabDialog::Ok();
1165cdf0e10cSrcweir 	pExampleSet->ClearItem(SID_PARAM_NUM_PRESET);
1166cdf0e10cSrcweir 	return nRet;
1167cdf0e10cSrcweir }
1168cdf0e10cSrcweir /* -----------------02.12.98 08:35-------------------
1169cdf0e10cSrcweir  *
1170cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwSvxNumBulletTabDialog,RemoveNumberingHdl,PushButton *,EMPTYARG)1171cdf0e10cSrcweir IMPL_LINK(SwSvxNumBulletTabDialog, RemoveNumberingHdl, PushButton*, EMPTYARG)
1172cdf0e10cSrcweir {
1173cdf0e10cSrcweir 	EndDialog(RET_USER);
1174cdf0e10cSrcweir 	return 0;
1175cdf0e10cSrcweir }
1176cdf0e10cSrcweir 
1177cdf0e10cSrcweir 
1178