Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <hintids.hxx>
21 : #include <vcl/msgbox.hxx>
22 : #include <sfx2/app.hxx>
23 : #include <sfx2/imgmgr.hxx>
24 : #include <svx/gallery.hxx>
25 : #include <editeng/brushitem.hxx>
26 : #include <editeng/lrspitem.hxx>
27 : #include <editeng/numitem.hxx>
28 : #include <swvset.hxx>
29 : #include <swmodule.hxx>
30 : #include <wrtsh.hxx>
31 : #include <docsh.hxx>
32 : #include <wview.hxx>
33 : #include <uitool.hxx>
34 : #include <wdocsh.hxx>
35 : #include <uiitems.hxx>
36 : #include <docstyle.hxx>
37 : #include <charfmt.hxx>
38 : #include <uinums.hxx>
39 : #include <poolfmt.hxx>
40 : #include <shellres.hxx>
41 : #include <outline.hxx>
42 : #include <num.hxx>
43 : #include <viewopt.hxx>
44 : #include <frmmgr.hxx>
45 :
46 : #include <misc.hrc>
47 : #include <frmui.hrc>
48 : #include <globals.hrc>
49 : #include <helpid.h>
50 : #include <SwStyleNameMapper.hxx>
51 : #include <svx/svxids.hrc>
52 : #include <svx/dialogs.hrc>
53 : #include <svl/stritem.hxx>
54 : #include <svl/aeitem.hxx>
55 : #include <svl/slstitm.hxx>
56 :
57 : static bool bLastRelative = false;
58 :
59 : //See cui/uiconfig/ui/numberingpositionpage.ui for effectively a duplicate
60 : //dialog to this one, except with a different preview window impl.
61 : //TODO, determine if SwNumPositionTabPage and SvxNumPositionTabPage can be
62 : //merged
63 0 : SwNumPositionTabPage::SwNumPositionTabPage(vcl::Window* pParent,
64 : const SfxItemSet& rSet)
65 : : SfxTabPage(pParent, "OutlinePositionPage",
66 : "modules/swriter/ui/outlinepositionpage.ui", &rSet)
67 : , pActNum(0)
68 : , pSaveNum(0)
69 : , pWrtSh(0)
70 : , pOutlineDlg(0)
71 : , nActNumLvl(0)
72 : , bModified(false)
73 : , bPreset(false)
74 : , bInInintControl(false)
75 0 : , bLabelAlignmentPosAndSpaceModeActive(false)
76 : {
77 0 : get(m_pLevelLB, "levellb");
78 0 : m_pLevelLB->EnableMultiSelection(true);
79 0 : get(m_pPositionFrame, "numberingframe");
80 0 : get(m_pDistBorderFT, "indent");
81 0 : get(m_pDistBorderMF, "indentmf");
82 0 : get(m_pRelativeCB, "relative");
83 0 : get(m_pIndentFT, "numberingwidth");
84 0 : get(m_pIndentMF, "numberingwidthmf");
85 0 : get(m_pDistNumFT, "numdist");
86 0 : get(m_pDistNumMF, "numdistmf");
87 0 : get(m_pAlignFT, "numalign");
88 0 : get(m_pAlignLB, "numalignlb");
89 :
90 0 : get(m_pLabelFollowedByFT, "numfollowedby");
91 0 : get(m_pLabelFollowedByLB, "numfollowedbylb");
92 0 : get(m_pListtabFT, "at");
93 0 : get(m_pListtabMF, "atmf");
94 0 : get(m_pAlign2FT, "num2align");
95 0 : get(m_pAlign2LB, "num2alignlb");
96 0 : get(m_pAlignedAtFT, "alignedat");
97 0 : get(m_pAlignedAtMF, "alignedatmf");
98 0 : get(m_pIndentAtFT, "indentat");
99 0 : get(m_pIndentAtMF, "indentatmf");
100 0 : get(m_pStandardPB, "standard");
101 :
102 0 : get(m_pPreviewWIN, "preview");
103 :
104 0 : SetExchangeSupport();
105 0 : m_pPreviewWIN->SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
106 :
107 0 : m_pStandardPB->SetAccessibleRelationMemberOf(m_pPositionFrame->get_label_widget());
108 :
109 0 : m_pRelativeCB->Check();
110 0 : m_pAlignLB->SetSelectHdl(LINK(this, SwNumPositionTabPage, EditModifyHdl));
111 0 : m_pAlign2LB->SetSelectHdl(LINK(this, SwNumPositionTabPage, EditModifyHdl));
112 0 : for ( sal_Int32 i = 0; i < m_pAlignLB->GetEntryCount(); ++i )
113 : {
114 0 : m_pAlign2LB->InsertEntry( m_pAlignLB->GetEntry( i ) );
115 : }
116 0 : m_pAlign2LB->SetDropDownLineCount( m_pAlign2LB->GetEntryCount() );
117 0 : m_pAlign2FT->SetText( m_pAlignFT->GetText() );
118 :
119 0 : Link<> aLk = LINK(this, SwNumPositionTabPage, DistanceHdl);
120 0 : m_pDistBorderMF->SetUpHdl(aLk);
121 0 : m_pDistNumMF->SetUpHdl(aLk);
122 0 : m_pIndentMF->SetUpHdl(aLk);
123 0 : m_pDistBorderMF->SetDownHdl(aLk);
124 0 : m_pDistNumMF->SetDownHdl(aLk);
125 0 : m_pIndentMF->SetDownHdl(aLk);
126 0 : m_pDistBorderMF->SetLoseFocusHdl(aLk);
127 0 : m_pDistNumMF->SetLoseFocusHdl(aLk);
128 0 : m_pIndentMF->SetLoseFocusHdl(aLk);
129 :
130 0 : m_pLabelFollowedByLB->SetDropDownLineCount( m_pLabelFollowedByLB->GetEntryCount() );
131 0 : m_pLabelFollowedByLB->SetSelectHdl( LINK(this, SwNumPositionTabPage, LabelFollowedByHdl_Impl) );
132 :
133 0 : aLk = LINK(this, SwNumPositionTabPage, ListtabPosHdl_Impl);
134 0 : m_pListtabMF->SetUpHdl(aLk);
135 0 : m_pListtabMF->SetDownHdl(aLk);
136 0 : m_pListtabMF->SetLoseFocusHdl(aLk);
137 :
138 0 : aLk = LINK(this, SwNumPositionTabPage, AlignAtHdl_Impl);
139 0 : m_pAlignedAtMF->SetUpHdl(aLk);
140 0 : m_pAlignedAtMF->SetDownHdl(aLk);
141 0 : m_pAlignedAtMF->SetLoseFocusHdl(aLk);
142 :
143 0 : aLk = LINK(this, SwNumPositionTabPage, IndentAtHdl_Impl);
144 0 : m_pIndentAtMF->SetUpHdl(aLk);
145 0 : m_pIndentAtMF->SetDownHdl(aLk);
146 0 : m_pIndentAtMF->SetLoseFocusHdl(aLk);
147 :
148 0 : m_pLevelLB->SetSelectHdl(LINK(this, SwNumPositionTabPage, LevelHdl));
149 0 : m_pRelativeCB->SetClickHdl(LINK(this, SwNumPositionTabPage, RelativeHdl));
150 0 : m_pStandardPB->SetClickHdl(LINK(this, SwNumPositionTabPage, StandardHdl));
151 :
152 : // insert levels
153 0 : for(sal_uInt16 i = 1; i <= MAXLEVEL; i++)
154 0 : m_pLevelLB->InsertEntry(OUString::number(i));
155 0 : OUString sEntry("1 - ");
156 0 : sEntry += OUString::number(MAXLEVEL);
157 0 : m_pLevelLB->InsertEntry(sEntry);
158 0 : m_pLevelLB->SelectEntry(sEntry);
159 :
160 0 : m_pRelativeCB->Check(bLastRelative);
161 0 : m_pPreviewWIN->SetPositionMode();
162 0 : }
163 :
164 0 : SwNumPositionTabPage::~SwNumPositionTabPage()
165 : {
166 0 : disposeOnce();
167 0 : }
168 :
169 0 : void SwNumPositionTabPage::dispose()
170 : {
171 0 : delete pActNum;
172 0 : m_pLevelLB.clear();
173 0 : m_pPositionFrame.clear();
174 0 : m_pDistBorderFT.clear();
175 0 : m_pDistBorderMF.clear();
176 0 : m_pRelativeCB.clear();
177 0 : m_pIndentFT.clear();
178 0 : m_pIndentMF.clear();
179 0 : m_pDistNumFT.clear();
180 0 : m_pDistNumMF.clear();
181 0 : m_pAlignFT.clear();
182 0 : m_pAlignLB.clear();
183 0 : m_pLabelFollowedByFT.clear();
184 0 : m_pLabelFollowedByLB.clear();
185 0 : m_pListtabFT.clear();
186 0 : m_pListtabMF.clear();
187 0 : m_pAlign2FT.clear();
188 0 : m_pAlign2LB.clear();
189 0 : m_pAlignedAtFT.clear();
190 0 : m_pAlignedAtMF.clear();
191 0 : m_pIndentAtFT.clear();
192 0 : m_pIndentAtMF.clear();
193 0 : m_pStandardPB.clear();
194 0 : m_pPreviewWIN.clear();
195 0 : pOutlineDlg.clear();
196 0 : SfxTabPage::dispose();
197 0 : }
198 :
199 0 : void SwNumPositionTabPage::InitControls()
200 : {
201 0 : bInInintControl = true;
202 0 : const bool bRelative = !bLabelAlignmentPosAndSpaceModeActive &&
203 0 : m_pRelativeCB->IsEnabled() && m_pRelativeCB->IsChecked();
204 0 : const bool bSingleSelection = m_pLevelLB->GetSelectEntryCount() == 1 &&
205 0 : USHRT_MAX != nActNumLvl;
206 :
207 0 : m_pDistBorderMF->Enable( !bLabelAlignmentPosAndSpaceModeActive &&
208 0 : ( bSingleSelection || bRelative || pOutlineDlg.get() != 0 ) );
209 0 : m_pDistBorderFT->Enable( !bLabelAlignmentPosAndSpaceModeActive &&
210 0 : ( bSingleSelection || bRelative || pOutlineDlg.get() != 0 ) );
211 :
212 0 : bool bSetDistEmpty = false;
213 0 : bool bSameDistBorderNum = !bLabelAlignmentPosAndSpaceModeActive;
214 0 : bool bSameDist = !bLabelAlignmentPosAndSpaceModeActive;
215 0 : bool bSameIndent = !bLabelAlignmentPosAndSpaceModeActive;
216 0 : bool bSameAdjust = true;
217 :
218 0 : bool bSameLabelFollowedBy = bLabelAlignmentPosAndSpaceModeActive;
219 0 : bool bSameListtab = bLabelAlignmentPosAndSpaceModeActive;
220 0 : bool bSameAlignAt = bLabelAlignmentPosAndSpaceModeActive;
221 0 : bool bSameIndentAt = bLabelAlignmentPosAndSpaceModeActive;
222 :
223 : const SwNumFormat* aNumFormatArr[MAXLEVEL];
224 0 : sal_uInt16 nMask = 1;
225 0 : sal_uInt16 nLvl = USHRT_MAX;
226 0 : long nFirstBorderTextRelative = -1;
227 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
228 : {
229 0 : aNumFormatArr[i] = &pActNum->Get(i);
230 0 : if(nActNumLvl & nMask)
231 : {
232 0 : if(USHRT_MAX == nLvl)
233 : {
234 0 : nLvl = i;
235 : }
236 :
237 0 : if( i > nLvl)
238 : {
239 0 : bSameAdjust &= aNumFormatArr[i]->GetNumAdjust() == aNumFormatArr[nLvl]->GetNumAdjust();
240 0 : if ( !bLabelAlignmentPosAndSpaceModeActive )
241 : {
242 0 : if(bRelative)
243 : {
244 : const long nBorderTextRelative =
245 0 : aNumFormatArr[i]->GetAbsLSpace() + aNumFormatArr[i]->GetFirstLineOffset() -
246 0 : aNumFormatArr[i - 1]->GetAbsLSpace() + aNumFormatArr[i - 1]->GetFirstLineOffset();
247 0 : if (nFirstBorderTextRelative == -1)
248 0 : nFirstBorderTextRelative = nBorderTextRelative;
249 : else
250 0 : bSameDistBorderNum &= nFirstBorderTextRelative == nBorderTextRelative;
251 : }
252 : else
253 : {
254 : bSameDistBorderNum &=
255 0 : aNumFormatArr[i]->GetAbsLSpace() - aNumFormatArr[i]->GetFirstLineOffset() ==
256 0 : aNumFormatArr[i - 1]->GetAbsLSpace() - aNumFormatArr[i - 1]->GetFirstLineOffset();
257 : }
258 :
259 0 : bSameDist &= aNumFormatArr[i]->GetCharTextDistance() == aNumFormatArr[nLvl]->GetCharTextDistance();
260 0 : bSameIndent &= aNumFormatArr[i]->GetFirstLineOffset() == aNumFormatArr[nLvl]->GetFirstLineOffset();
261 : }
262 : else
263 : {
264 : bSameLabelFollowedBy &=
265 0 : aNumFormatArr[i]->GetLabelFollowedBy() == aNumFormatArr[nLvl]->GetLabelFollowedBy();
266 : bSameListtab &=
267 0 : aNumFormatArr[i]->GetListtabPos() == aNumFormatArr[nLvl]->GetListtabPos();
268 : bSameAlignAt &=
269 0 : ( ( aNumFormatArr[i]->GetIndentAt() + aNumFormatArr[i]->GetFirstLineIndent() )
270 0 : == ( aNumFormatArr[nLvl]->GetIndentAt() + aNumFormatArr[nLvl]->GetFirstLineIndent() ) );
271 : bSameIndentAt &=
272 0 : aNumFormatArr[i]->GetIndentAt() == aNumFormatArr[nLvl]->GetIndentAt();
273 : }
274 : }
275 : }
276 0 : nMask <<= 1;
277 :
278 : }
279 0 : if (MAXLEVEL <= nLvl)
280 : {
281 : OSL_ENSURE(false, "cannot happen.");
282 0 : return;
283 : }
284 0 : if(bSameDistBorderNum)
285 : {
286 : long nDistBorderNum;
287 0 : if(bRelative)
288 : {
289 0 : nDistBorderNum = (long)aNumFormatArr[nLvl]->GetAbsLSpace()+ aNumFormatArr[nLvl]->GetFirstLineOffset();
290 0 : if(nLvl)
291 0 : nDistBorderNum -= (long)aNumFormatArr[nLvl - 1]->GetAbsLSpace()+ aNumFormatArr[nLvl - 1]->GetFirstLineOffset();
292 : }
293 : else
294 : {
295 0 : nDistBorderNum = (long)aNumFormatArr[nLvl]->GetAbsLSpace()+ aNumFormatArr[nLvl]->GetFirstLineOffset();
296 : }
297 0 : m_pDistBorderMF->SetValue(m_pDistBorderMF->Normalize(nDistBorderNum),FUNIT_TWIP);
298 : }
299 : else
300 0 : bSetDistEmpty = true;
301 :
302 0 : if(bSameDist)
303 0 : m_pDistNumMF->SetValue(m_pDistNumMF->Normalize(aNumFormatArr[nLvl]->GetCharTextDistance()), FUNIT_TWIP);
304 : else
305 0 : m_pDistNumMF->SetText(aEmptyOUStr);
306 0 : if(bSameIndent)
307 0 : m_pIndentMF->SetValue(m_pIndentMF->Normalize(-aNumFormatArr[nLvl]->GetFirstLineOffset()), FUNIT_TWIP);
308 : else
309 0 : m_pIndentMF->SetText(aEmptyOUStr);
310 :
311 0 : if(bSameAdjust)
312 : {
313 0 : sal_Int32 nPos = 1; // centered
314 0 : if(aNumFormatArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT)
315 0 : nPos = 0;
316 0 : else if(aNumFormatArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT)
317 0 : nPos = 2;
318 0 : m_pAlignLB->SelectEntryPos(nPos);
319 0 : m_pAlign2LB->SelectEntryPos( nPos );
320 : }
321 : else
322 : {
323 0 : m_pAlignLB->SetNoSelection();
324 0 : m_pAlign2LB->SetNoSelection();
325 : }
326 :
327 0 : if ( bSameLabelFollowedBy )
328 : {
329 0 : sal_Int32 nPos = 0; // LISTTAB
330 0 : if ( aNumFormatArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::SPACE )
331 : {
332 0 : nPos = 1;
333 : }
334 0 : else if ( aNumFormatArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::NOTHING )
335 : {
336 0 : nPos = 2;
337 : }
338 0 : m_pLabelFollowedByLB->SelectEntryPos( nPos );
339 : }
340 : else
341 : {
342 0 : m_pLabelFollowedByLB->SetNoSelection();
343 : }
344 :
345 0 : if ( aNumFormatArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::LISTTAB )
346 : {
347 0 : m_pListtabFT->Enable( true );
348 0 : m_pListtabMF->Enable( true );
349 0 : if ( bSameListtab )
350 : {
351 0 : m_pListtabMF->SetValue(m_pListtabMF->Normalize(aNumFormatArr[nLvl]->GetListtabPos()),FUNIT_TWIP);
352 : }
353 : else
354 : {
355 0 : m_pListtabMF->SetText(aEmptyOUStr);
356 : }
357 : }
358 : else
359 : {
360 0 : m_pListtabFT->Enable( false );
361 0 : m_pListtabMF->Enable( false );
362 0 : m_pListtabMF->SetText(aEmptyOUStr);
363 : }
364 :
365 0 : if ( bSameAlignAt )
366 : {
367 0 : m_pAlignedAtMF->SetValue(
368 0 : m_pAlignedAtMF->Normalize( aNumFormatArr[nLvl]->GetIndentAt() +
369 0 : aNumFormatArr[nLvl]->GetFirstLineIndent()),
370 0 : FUNIT_TWIP );
371 : }
372 : else
373 : {
374 0 : m_pAlignedAtMF->SetText(aEmptyOUStr);
375 : }
376 :
377 0 : if ( bSameIndentAt )
378 : {
379 0 : m_pIndentAtMF->SetValue(
380 0 : m_pIndentAtMF->Normalize( aNumFormatArr[nLvl]->GetIndentAt()), FUNIT_TWIP );
381 : }
382 : else
383 : {
384 0 : m_pIndentAtMF->SetText(aEmptyOUStr);
385 : }
386 :
387 0 : if(bSetDistEmpty)
388 0 : m_pDistBorderMF->SetText(aEmptyOUStr);
389 :
390 0 : bInInintControl = false;
391 : }
392 :
393 0 : void SwNumPositionTabPage::ActivatePage(const SfxItemSet& )
394 : {
395 : const SfxPoolItem* pItem;
396 : sal_uInt16 nTmpNumLvl =
397 0 : pOutlineDlg ? SwOutlineTabDialog::GetActNumLevel() : 0;
398 0 : const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
399 0 : if(pExampleSet && pExampleSet->GetItemState(FN_PARAM_NUM_PRESET, false, &pItem) != SfxItemState::UNKNOWN)
400 : {
401 0 : bPreset = static_cast<const SfxBoolItem*>(pItem)->GetValue();
402 : }
403 0 : bModified = (!pActNum->GetNumFormat( 0 ) || bPreset);
404 0 : if(*pActNum != *pSaveNum ||
405 0 : nActNumLvl != nTmpNumLvl )
406 : {
407 0 : *pActNum = *pSaveNum;
408 0 : nActNumLvl = nTmpNumLvl;
409 0 : sal_uInt16 nMask = 1;
410 0 : m_pLevelLB->SetUpdateMode(false);
411 0 : m_pLevelLB->SetNoSelection();
412 0 : m_pLevelLB->SelectEntryPos( MAXLEVEL, nActNumLvl == USHRT_MAX);
413 0 : if(nActNumLvl != USHRT_MAX)
414 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
415 : {
416 0 : if(nActNumLvl & nMask)
417 0 : m_pLevelLB->SelectEntryPos( i, true);
418 0 : nMask <<= 1 ;
419 : }
420 0 : m_pLevelLB->SetUpdateMode(true);
421 :
422 0 : InitPosAndSpaceMode();
423 0 : ShowControlsDependingOnPosAndSpaceMode();
424 :
425 0 : InitControls();
426 : }
427 0 : m_pRelativeCB->Enable(1 != nActNumLvl);
428 0 : m_pPreviewWIN->Invalidate();
429 0 : }
430 :
431 0 : SfxTabPage::sfxpg SwNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet)
432 : {
433 0 : SwOutlineTabDialog::SetActNumLevel(nActNumLvl);
434 0 : if(_pSet)
435 0 : FillItemSet(_pSet);
436 0 : return LEAVE_PAGE;
437 :
438 : }
439 :
440 0 : bool SwNumPositionTabPage::FillItemSet( SfxItemSet* rSet )
441 : {
442 0 : if(pOutlineDlg)
443 0 : *pOutlineDlg->GetNumRule() = *pActNum;
444 0 : else if(bModified && pActNum)
445 : {
446 0 : *pSaveNum = *pActNum;
447 0 : rSet->Put(SwUINumRuleItem( *pSaveNum ));
448 0 : rSet->Put(SfxBoolItem(FN_PARAM_NUM_PRESET, false));
449 : }
450 0 : return bModified;
451 : }
452 :
453 0 : void SwNumPositionTabPage::Reset( const SfxItemSet* rSet )
454 : {
455 : const SfxPoolItem* pItem;
456 0 : if(pOutlineDlg)
457 : {
458 0 : pSaveNum = pOutlineDlg->GetNumRule();
459 0 : m_pLevelLB->EnableMultiSelection(false);
460 : }
461 0 : else if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_ACT_NUMBER, false, &pItem))
462 0 : pSaveNum = const_cast<SwUINumRuleItem*>(static_cast<const SwUINumRuleItem*>(pItem))->GetNumRule();
463 :
464 0 : nActNumLvl = SwOutlineTabDialog::GetActNumLevel();
465 0 : sal_uInt16 nMask = 1;
466 0 : m_pLevelLB->SetUpdateMode(false);
467 0 : m_pLevelLB->SetNoSelection();
468 0 : if(nActNumLvl == USHRT_MAX)
469 : {
470 0 : m_pLevelLB->SelectEntryPos( MAXLEVEL, true);
471 : }
472 : else
473 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
474 : {
475 0 : if(nActNumLvl & nMask)
476 0 : m_pLevelLB->SelectEntryPos( i, true);
477 0 : nMask <<= 1;
478 : }
479 0 : m_pLevelLB->SetUpdateMode(true);
480 :
481 0 : if(!pActNum)
482 0 : pActNum = new SwNumRule(*pSaveNum);
483 0 : else if(*pSaveNum != *pActNum)
484 0 : *pActNum = *pSaveNum;
485 0 : m_pPreviewWIN->SetNumRule(pActNum);
486 0 : InitPosAndSpaceMode();
487 0 : ShowControlsDependingOnPosAndSpaceMode();
488 0 : InitControls();
489 0 : bModified = false;
490 0 : }
491 :
492 0 : void SwNumPositionTabPage::InitPosAndSpaceMode()
493 : {
494 0 : if ( pActNum == 0 )
495 : {
496 : OSL_FAIL( "<SwNumPositionTabPage::InitPosAndSpaceMode()> - misusage of method -> <pAktNum> has to be already set!" );
497 0 : return;
498 : }
499 :
500 : SvxNumberFormat::SvxNumPositionAndSpaceMode ePosAndSpaceMode =
501 0 : SvxNumberFormat::LABEL_ALIGNMENT;
502 0 : sal_uInt16 nMask = 1;
503 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
504 : {
505 0 : if(nActNumLvl & nMask)
506 : {
507 0 : SvxNumberFormat aNumFormat( pActNum->Get(i) );
508 0 : ePosAndSpaceMode = aNumFormat.GetPositionAndSpaceMode();
509 0 : if ( ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
510 : {
511 0 : break;
512 0 : }
513 : }
514 0 : nMask <<= 1;
515 : }
516 :
517 : bLabelAlignmentPosAndSpaceModeActive =
518 0 : ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT;
519 : }
520 :
521 0 : void SwNumPositionTabPage::ShowControlsDependingOnPosAndSpaceMode()
522 : {
523 0 : m_pDistBorderFT->Show( !bLabelAlignmentPosAndSpaceModeActive );
524 0 : m_pDistBorderMF->Show( !bLabelAlignmentPosAndSpaceModeActive );
525 0 : m_pRelativeCB->Show( !bLabelAlignmentPosAndSpaceModeActive );
526 0 : m_pIndentFT->Show( !bLabelAlignmentPosAndSpaceModeActive );
527 0 : m_pIndentMF->Show( !bLabelAlignmentPosAndSpaceModeActive );
528 0 : m_pDistNumFT->Show( !bLabelAlignmentPosAndSpaceModeActive );
529 0 : m_pDistNumMF->Show( !bLabelAlignmentPosAndSpaceModeActive );
530 0 : m_pAlignFT->Show( !bLabelAlignmentPosAndSpaceModeActive );
531 0 : m_pAlignLB->Show( !bLabelAlignmentPosAndSpaceModeActive );
532 :
533 0 : m_pLabelFollowedByFT->Show( bLabelAlignmentPosAndSpaceModeActive );
534 0 : m_pLabelFollowedByLB->Show( bLabelAlignmentPosAndSpaceModeActive );
535 0 : m_pListtabFT->Show( bLabelAlignmentPosAndSpaceModeActive );
536 0 : m_pListtabMF->Show( bLabelAlignmentPosAndSpaceModeActive );
537 0 : m_pAlign2FT->Show( bLabelAlignmentPosAndSpaceModeActive );
538 0 : m_pAlign2LB->Show( bLabelAlignmentPosAndSpaceModeActive );
539 0 : m_pAlignedAtFT->Show( bLabelAlignmentPosAndSpaceModeActive );
540 0 : m_pAlignedAtMF->Show( bLabelAlignmentPosAndSpaceModeActive );
541 0 : m_pIndentAtFT->Show( bLabelAlignmentPosAndSpaceModeActive );
542 0 : m_pIndentAtMF->Show( bLabelAlignmentPosAndSpaceModeActive );
543 0 : }
544 :
545 0 : VclPtr<SfxTabPage> SwNumPositionTabPage::Create( vcl::Window* pParent,
546 : const SfxItemSet* rAttrSet)
547 : {
548 0 : return VclPtr<SwNumPositionTabPage>::Create(pParent, *rAttrSet);
549 : }
550 :
551 0 : void SwNumPositionTabPage::SetWrtShell(SwWrtShell* pSh)
552 : {
553 0 : pWrtSh = pSh;
554 :
555 0 : const SwTwips nWidth = pWrtSh->GetAnyCurRect(RECT_FRM).Width();
556 :
557 0 : m_pDistBorderMF->SetMax(m_pDistBorderMF->Normalize( nWidth ), FUNIT_TWIP );
558 0 : m_pDistNumMF->SetMax(m_pDistNumMF->Normalize( nWidth ), FUNIT_TWIP);
559 0 : m_pIndentMF->SetMax(m_pIndentMF->Normalize( nWidth ), FUNIT_TWIP );
560 0 : m_pListtabMF->SetMax(m_pListtabMF->Normalize( nWidth ), FUNIT_TWIP );
561 0 : m_pAlignedAtMF->SetMax(m_pAlignedAtMF->Normalize( nWidth ), FUNIT_TWIP );
562 0 : m_pIndentAtMF->SetMax(m_pIndentAtMF->Normalize( nWidth ), FUNIT_TWIP );
563 0 : const SwTwips nLast2 = nWidth /2;
564 0 : m_pDistBorderMF->SetLast( m_pDistBorderMF->Normalize( nLast2 ), FUNIT_TWIP );
565 0 : m_pDistNumMF->SetLast(m_pDistNumMF->Normalize( nLast2 ), FUNIT_TWIP);
566 0 : m_pIndentMF->SetLast(m_pIndentMF->Normalize( nLast2 ), FUNIT_TWIP );
567 0 : m_pListtabMF->SetLast(m_pListtabMF->Normalize( nLast2 ), FUNIT_TWIP );
568 0 : m_pAlignedAtMF->SetLast(m_pAlignedAtMF->Normalize( nLast2 ), FUNIT_TWIP );
569 0 : m_pIndentAtMF->SetLast(m_pIndentAtMF->Normalize( nLast2 ), FUNIT_TWIP );
570 :
571 0 : const SwRect& rPrtRect = pWrtSh->GetAnyCurRect(RECT_PAGE);
572 0 : m_pPreviewWIN->SetPageWidth(rPrtRect.Width());
573 0 : FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &pWrtSh->GetView()));
574 0 : if(eMetric == FUNIT_MM)
575 : {
576 0 : m_pDistBorderMF->SetDecimalDigits(1);
577 0 : m_pDistNumMF->SetDecimalDigits(1);
578 0 : m_pIndentMF->SetDecimalDigits(1);
579 0 : m_pListtabMF->SetDecimalDigits(1);
580 0 : m_pAlignedAtMF->SetDecimalDigits(1);
581 0 : m_pIndentAtMF->SetDecimalDigits(1);
582 : }
583 0 : m_pDistBorderMF->SetUnit( eMetric );
584 0 : m_pDistNumMF->SetUnit( eMetric );
585 0 : m_pIndentMF->SetUnit( eMetric );
586 0 : m_pListtabMF->SetUnit( eMetric );
587 0 : m_pAlignedAtMF->SetUnit( eMetric );
588 0 : m_pIndentAtMF->SetUnit( eMetric );
589 0 : }
590 :
591 0 : IMPL_LINK_NOARG(SwNumPositionTabPage, EditModifyHdl)
592 : {
593 0 : sal_uInt16 nMask = 1;
594 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
595 : {
596 0 : if(nActNumLvl & nMask)
597 : {
598 0 : SwNumFormat aNumFormat(pActNum->Get(i));
599 :
600 0 : const sal_Int32 nPos = m_pAlignLB->IsVisible()
601 0 : ? m_pAlignLB->GetSelectEntryPos()
602 0 : : m_pAlign2LB->GetSelectEntryPos();
603 0 : SvxAdjust eAdjust = SVX_ADJUST_CENTER;
604 0 : if(nPos == 0)
605 0 : eAdjust = SVX_ADJUST_LEFT;
606 0 : else if(nPos == 2)
607 0 : eAdjust = SVX_ADJUST_RIGHT;
608 0 : aNumFormat.SetNumAdjust( eAdjust );
609 0 : pActNum->Set(i, aNumFormat);
610 : }
611 0 : nMask <<= 1;
612 : }
613 0 : SetModified();
614 0 : return 0;
615 : }
616 :
617 0 : IMPL_LINK( SwNumPositionTabPage, LevelHdl, ListBox *, pBox )
618 : {
619 0 : sal_uInt16 nSaveNumLvl = nActNumLvl;
620 0 : nActNumLvl = 0;
621 0 : if(pBox->IsEntryPosSelected( MAXLEVEL ) &&
622 0 : (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
623 : {
624 0 : nActNumLvl = 0xFFFF;
625 0 : pBox->SetUpdateMode(false);
626 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
627 0 : pBox->SelectEntryPos( i, false );
628 0 : pBox->SetUpdateMode(true);
629 : }
630 0 : else if(pBox->GetSelectEntryCount())
631 : {
632 0 : sal_uInt16 nMask = 1;
633 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
634 : {
635 0 : if(pBox->IsEntryPosSelected( i ))
636 0 : nActNumLvl |= nMask;
637 0 : nMask <<= 1;
638 : }
639 0 : pBox->SelectEntryPos( MAXLEVEL, false );
640 : }
641 : else
642 : {
643 0 : nActNumLvl = nSaveNumLvl;
644 0 : sal_uInt16 nMask = 1;
645 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; i++ )
646 : {
647 0 : if(nActNumLvl & nMask)
648 : {
649 0 : pBox->SelectEntryPos(i);
650 0 : break;
651 : }
652 0 : nMask <<=1;
653 : }
654 : }
655 0 : m_pRelativeCB->Enable(1 != nActNumLvl);
656 0 : SetModified();
657 0 : InitPosAndSpaceMode();
658 0 : ShowControlsDependingOnPosAndSpaceMode();
659 0 : InitControls();
660 0 : return 0;
661 : }
662 :
663 0 : IMPL_LINK( SwNumPositionTabPage, DistanceHdl, MetricField *, pField )
664 : {
665 0 : if(bInInintControl)
666 0 : return 0;
667 0 : long nValue = static_cast< long >(pField->Denormalize(pField->GetValue(FUNIT_TWIP)));
668 0 : sal_uInt16 nMask = 1;
669 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
670 : {
671 0 : if(nActNumLvl & nMask)
672 : {
673 0 : SwNumFormat aNumFormat( pActNum->Get( i ) );
674 0 : if(pField == m_pDistBorderMF)
675 : {
676 :
677 0 : if(m_pRelativeCB->IsChecked() && m_pRelativeCB->IsEnabled())
678 : {
679 0 : if(0 == i)
680 : {
681 0 : long nTmp = aNumFormat.GetFirstLineOffset();
682 0 : aNumFormat.SetAbsLSpace( nValue - nTmp );
683 : }
684 : else
685 : {
686 0 : long nTmp = pActNum->Get( i - 1 ).GetAbsLSpace() +
687 0 : pActNum->Get( i - 1 ).GetFirstLineOffset() -
688 0 : pActNum->Get( i ).GetFirstLineOffset();
689 :
690 0 : aNumFormat.SetAbsLSpace( nValue + nTmp );
691 : }
692 : }
693 : else
694 : {
695 0 : aNumFormat.SetAbsLSpace( (short)nValue - aNumFormat.GetFirstLineOffset());
696 : }
697 : }
698 0 : else if (pField == m_pDistNumMF)
699 : {
700 0 : aNumFormat.SetCharTextDistance( nValue );
701 : }
702 0 : else if (pField == m_pIndentMF)
703 : {
704 : // now AbsLSpace also has to be modified by FirstLineOffset
705 0 : long nDiff = nValue + aNumFormat.GetFirstLineOffset();
706 0 : long nAbsLSpace = aNumFormat.GetAbsLSpace();
707 0 : aNumFormat.SetAbsLSpace( nAbsLSpace + nDiff );
708 0 : aNumFormat.SetFirstLineOffset( -nValue );
709 : }
710 :
711 0 : pActNum->Set( i, aNumFormat );
712 : }
713 0 : nMask <<= 1;
714 : }
715 :
716 0 : SetModified();
717 0 : if(!m_pDistBorderMF->IsEnabled())
718 0 : m_pDistBorderMF->SetText(aEmptyOUStr);
719 :
720 0 : return 0;
721 : }
722 :
723 0 : IMPL_LINK( SwNumPositionTabPage, RelativeHdl, CheckBox *, pBox )
724 : {
725 0 : bool bOn = pBox->IsChecked();
726 0 : bool bSingleSelection = m_pLevelLB->GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
727 0 : bool bSetValue = false;
728 0 : long nValue = 0;
729 0 : if(bOn || bSingleSelection)
730 : {
731 0 : sal_uInt16 nMask = 1;
732 0 : bool bFirst = true;
733 0 : bSetValue = true;
734 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
735 : {
736 0 : if(nActNumLvl & nMask)
737 : {
738 0 : const SwNumFormat &rNumFormat = pActNum->Get(i);
739 0 : if(bFirst)
740 : {
741 0 : nValue = rNumFormat.GetAbsLSpace();
742 0 : if(bOn && i)
743 0 : nValue -= pActNum->Get(i - 1).GetAbsLSpace();
744 : }
745 : else
746 0 : bSetValue = nValue == rNumFormat.GetAbsLSpace() - pActNum->Get(i - 1).GetAbsLSpace();
747 0 : bFirst = false;
748 : }
749 0 : nMask <<= 1;
750 : }
751 :
752 : }
753 0 : if(bSetValue)
754 0 : m_pDistBorderMF->SetValue(m_pDistBorderMF->Normalize(nValue), FUNIT_TWIP);
755 : else
756 0 : m_pDistBorderMF->SetText(aEmptyOUStr);
757 0 : m_pDistBorderMF->Enable(bOn || bSingleSelection || pOutlineDlg);
758 0 : bLastRelative = bOn;
759 0 : return 0;
760 : }
761 :
762 0 : IMPL_LINK_NOARG(SwNumPositionTabPage, LabelFollowedByHdl_Impl)
763 : {
764 : // determine value to be set at the chosen list levels
765 0 : SvxNumberFormat::LabelFollowedBy eLabelFollowedBy = SvxNumberFormat::LISTTAB;
766 : {
767 0 : const sal_Int32 nPos = m_pLabelFollowedByLB->GetSelectEntryPos();
768 0 : if ( nPos == 1 )
769 : {
770 0 : eLabelFollowedBy = SvxNumberFormat::SPACE;
771 : }
772 0 : else if ( nPos == 2 )
773 : {
774 0 : eLabelFollowedBy = SvxNumberFormat::NOTHING;
775 : }
776 : }
777 :
778 : // set value at the chosen list levels
779 0 : bool bSameListtabPos = true;
780 0 : sal_uInt16 nFirstLvl = USHRT_MAX;
781 0 : sal_uInt16 nMask = 1;
782 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
783 : {
784 0 : if ( nActNumLvl & nMask )
785 : {
786 0 : SwNumFormat aNumFormat( pActNum->Get(i) );
787 0 : aNumFormat.SetLabelFollowedBy( eLabelFollowedBy );
788 0 : pActNum->Set( i, aNumFormat );
789 :
790 0 : if ( nFirstLvl == USHRT_MAX )
791 : {
792 0 : nFirstLvl = i;
793 : }
794 : else
795 : {
796 0 : bSameListtabPos &= aNumFormat.GetListtabPos() ==
797 0 : pActNum->Get( nFirstLvl ).GetListtabPos();
798 0 : }
799 : }
800 0 : nMask <<= 1;
801 : }
802 :
803 : // enable/disable metric field for list tab stop position depending on
804 : // selected item following the list label.
805 0 : m_pListtabFT->Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
806 0 : m_pListtabMF->Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
807 0 : if ( bSameListtabPos && eLabelFollowedBy == SvxNumberFormat::LISTTAB )
808 : {
809 0 : m_pListtabMF->SetValue(
810 0 : m_pListtabMF->Normalize( pActNum->Get( nFirstLvl ).GetListtabPos() ),
811 0 : FUNIT_TWIP );
812 : }
813 : else
814 : {
815 0 : m_pListtabMF->SetText( OUString() );
816 : }
817 :
818 0 : SetModified();
819 :
820 0 : return 0;
821 : }
822 :
823 0 : IMPL_LINK( SwNumPositionTabPage, ListtabPosHdl_Impl, MetricField*, pField )
824 : {
825 : // determine value to be set at the chosen list levels
826 0 : const long nValue = static_cast< long >(pField->Denormalize(pField->GetValue(FUNIT_TWIP)));
827 :
828 : // set value at the chosen list levels
829 0 : sal_uInt16 nMask = 1;
830 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
831 : {
832 0 : if ( nActNumLvl & nMask )
833 : {
834 0 : SwNumFormat aNumFormat( pActNum->Get(i) );
835 0 : aNumFormat.SetListtabPos( nValue );
836 0 : pActNum->Set( i, aNumFormat );
837 : }
838 0 : nMask <<= 1;
839 : }
840 :
841 0 : SetModified();
842 :
843 0 : return 0;
844 : }
845 :
846 0 : IMPL_LINK( SwNumPositionTabPage, AlignAtHdl_Impl, MetricField*, pField )
847 : {
848 : // determine value to be set at the chosen list levels
849 0 : const long nValue = static_cast< long >(pField->Denormalize(pField->GetValue(FUNIT_TWIP)));
850 :
851 : // set value at the chosen list levels
852 0 : sal_uInt16 nMask = 1;
853 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
854 : {
855 0 : if ( nActNumLvl & nMask )
856 : {
857 0 : SwNumFormat aNumFormat( pActNum->Get(i) );
858 0 : const long nFirstLineIndent = nValue - aNumFormat.GetIndentAt();
859 0 : aNumFormat.SetFirstLineIndent( nFirstLineIndent );
860 0 : pActNum->Set( i, aNumFormat );
861 : }
862 0 : nMask <<= 1;
863 : }
864 :
865 0 : SetModified();
866 :
867 0 : return 0;
868 : }
869 :
870 0 : IMPL_LINK( SwNumPositionTabPage, IndentAtHdl_Impl, MetricField*, pField )
871 : {
872 : // determine value to be set at the chosen list levels
873 0 : const long nValue = static_cast< long >(pField->Denormalize(pField->GetValue(FUNIT_TWIP)));
874 :
875 : // set value at the chosen list levels
876 0 : sal_uInt16 nMask = 1;
877 0 : for( sal_uInt16 i = 0; i < MAXLEVEL; ++i )
878 : {
879 0 : if ( nActNumLvl & nMask )
880 : {
881 0 : SwNumFormat aNumFormat( pActNum->Get(i) );
882 0 : const long nAlignedAt = aNumFormat.GetIndentAt() +
883 0 : aNumFormat.GetFirstLineIndent();
884 0 : aNumFormat.SetIndentAt( nValue );
885 0 : const long nNewFirstLineIndent = nAlignedAt - nValue;
886 0 : aNumFormat.SetFirstLineIndent( nNewFirstLineIndent );
887 0 : pActNum->Set( i, aNumFormat );
888 : }
889 0 : nMask <<= 1;
890 : }
891 :
892 0 : SetModified();
893 :
894 0 : return 0;
895 : }
896 :
897 0 : IMPL_LINK_NOARG(SwNumPositionTabPage, StandardHdl)
898 : {
899 0 : sal_uInt16 nMask = 1;
900 0 : for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
901 : {
902 0 : if(nActNumLvl & nMask)
903 : {
904 0 : SwNumFormat aNumFormat( pActNum->Get( i ) );
905 : SwNumRule aTmpNumRule( pWrtSh->GetUniqueNumRuleName(),
906 : aNumFormat.GetPositionAndSpaceMode(),
907 0 : pOutlineDlg ? OUTLINE_RULE : NUM_RULE );
908 0 : SwNumFormat aTempFormat(aTmpNumRule.Get( i ));
909 0 : aNumFormat.SetPositionAndSpaceMode( aTempFormat.GetPositionAndSpaceMode() );
910 0 : if ( aTempFormat.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
911 : {
912 0 : aNumFormat.SetAbsLSpace( aTempFormat.GetAbsLSpace());
913 0 : aNumFormat.SetCharTextDistance( aTempFormat.GetCharTextDistance() );
914 0 : aNumFormat.SetFirstLineOffset( aTempFormat.GetFirstLineOffset() );
915 : }
916 0 : else if ( aTempFormat.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
917 : {
918 0 : aNumFormat.SetNumAdjust( aTempFormat.GetNumAdjust() );
919 0 : aNumFormat.SetLabelFollowedBy( aTempFormat.GetLabelFollowedBy() );
920 0 : aNumFormat.SetListtabPos( aTempFormat.GetListtabPos() );
921 0 : aNumFormat.SetFirstLineIndent( aTempFormat.GetFirstLineIndent() );
922 0 : aNumFormat.SetIndentAt( aTempFormat.GetIndentAt() );
923 : }
924 0 : pActNum->Set( i, aNumFormat );
925 : }
926 0 : nMask <<= 1;
927 : }
928 :
929 0 : InitControls();
930 0 : SetModified();
931 0 : return 0;
932 : }
933 :
934 : #ifdef DBG_UTIL
935 : void SwNumPositionTabPage::SetModified(bool bRepaint)
936 : {
937 : bModified = true;
938 : if(bRepaint)
939 : {
940 : m_pPreviewWIN->SetLevel(nActNumLvl);
941 : m_pPreviewWIN->Invalidate();
942 : }
943 : }
944 : #endif
945 :
946 0 : SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(vcl::Window* pParent,
947 : const SfxItemSet* pSwItemSet, SwWrtShell & rSh)
948 : : SfxTabDialog(pParent, "BulletsAndNumberingDialog",
949 : "modules/swriter/ui/bulletsandnumbering.ui",
950 : pSwItemSet)
951 0 : , rWrtSh(rSh)
952 : {
953 0 : GetUserButton()->SetClickHdl(LINK(this, SwSvxNumBulletTabDialog, RemoveNumberingHdl));
954 0 : GetUserButton()->Enable(rWrtSh.GetNumRuleAtCurrCrsrPos() != NULL);
955 0 : m_nSingleNumPageId = AddTabPage("singlenum", RID_SVXPAGE_PICK_SINGLE_NUM );
956 0 : m_nBulletPageId = AddTabPage("bullets", RID_SVXPAGE_PICK_BULLET );
957 0 : AddTabPage("outlinenum", RID_SVXPAGE_PICK_NUM );
958 0 : AddTabPage("graphics", RID_SVXPAGE_PICK_BMP );
959 0 : m_nOptionsPageId = AddTabPage("options", RID_SVXPAGE_NUM_OPTIONS );
960 0 : m_nPositionPageId = AddTabPage("position", RID_SVXPAGE_NUM_POSITION );
961 0 : }
962 :
963 0 : SwSvxNumBulletTabDialog::~SwSvxNumBulletTabDialog()
964 : {
965 0 : }
966 :
967 0 : void SwSvxNumBulletTabDialog::PageCreated(sal_uInt16 nPageId, SfxTabPage& rPage)
968 : {
969 : // set styles' names and metric
970 0 : OUString sNumCharFormat, sBulletCharFormat;
971 0 : SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFormat );
972 0 : SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFormat );
973 :
974 0 : if (nPageId == m_nSingleNumPageId)
975 : {
976 0 : SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
977 0 : aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFormat));
978 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFormat));
979 0 : rPage.PageCreated(aSet);
980 : }
981 0 : else if (nPageId == m_nBulletPageId)
982 : {
983 0 : SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
984 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFormat));
985 0 : rPage.PageCreated(aSet);
986 : }
987 0 : else if (nPageId == m_nOptionsPageId)
988 : {
989 0 : SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
990 0 : aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFormat));
991 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFormat));
992 : // collect char styles
993 0 : ScopedVclPtrInstance< ListBox > rCharFormatLB(this);
994 0 : rCharFormatLB->Clear();
995 0 : rCharFormatLB->InsertEntry( SwViewShell::GetShellRes()->aStrNone );
996 0 : SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
997 0 : ::FillCharStyleListBox(*rCharFormatLB.get(), pDocShell);
998 :
999 0 : std::vector<OUString> aList;
1000 0 : for(sal_Int32 j = 0; j < rCharFormatLB->GetEntryCount(); j++)
1001 0 : aList.push_back( rCharFormatLB->GetEntry(j) );
1002 :
1003 0 : aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ;
1004 :
1005 0 : FieldUnit eMetric = ::GetDfltMetric(pDocShell->ISA(SwWebDocShell));
1006 0 : aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric) ) );
1007 0 : rPage.PageCreated(aSet);
1008 : }
1009 0 : else if (nPageId == m_nPositionPageId)
1010 : {
1011 0 : SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
1012 0 : FieldUnit eMetric = ::GetDfltMetric(pDocShell->ISA(SwWebDocShell));
1013 0 : SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
1014 0 : aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)) );
1015 0 : rPage.PageCreated(aSet);
1016 0 : }
1017 0 : }
1018 :
1019 0 : short SwSvxNumBulletTabDialog::Ok()
1020 : {
1021 0 : short nRet = SfxTabDialog::Ok();
1022 0 : pExampleSet->ClearItem(SID_PARAM_NUM_PRESET);
1023 0 : return nRet;
1024 : }
1025 :
1026 0 : IMPL_LINK_NOARG(SwSvxNumBulletTabDialog, RemoveNumberingHdl)
1027 : {
1028 0 : EndDialog(RET_USER);
1029 0 : return 0;
1030 0 : }
1031 :
1032 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|