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 :
22 : #include <vcl/msgbox.hxx>
23 : #include <sfx2/viewfrm.hxx>
24 : #include <svx/hdft.hxx>
25 : #include <editeng/flstitem.hxx>
26 : #include <sfx2/htmlmode.hxx>
27 : #include <svtools/htmlcfg.hxx>
28 : #include <svl/cjkoptions.hxx>
29 : #include <numpara.hxx>
30 : #include <fmtclds.hxx>
31 : #include <swtypes.hxx>
32 : #include <swmodule.hxx>
33 : #include <wrtsh.hxx>
34 : #include <view.hxx>
35 : #include <wdocsh.hxx>
36 : #include <viewopt.hxx>
37 : #include <pgfnote.hxx>
38 : #include <pggrid.hxx>
39 : #include <tmpdlg.hxx> // the dialog
40 : #include <column.hxx> // columns
41 : #include <drpcps.hxx> // initials
42 : #include <frmpage.hxx> // frames
43 : #include <wrap.hxx> // frames
44 : #include <frmmgr.hxx> // frames
45 : #include <ccoll.hxx> // CondColl
46 : #include <swuiccoll.hxx>
47 : #include <docstyle.hxx> //
48 : #include <fmtcol.hxx> //
49 : #include <macassgn.hxx> //
50 : #include <poolfmt.hxx>
51 : #include <uitool.hxx>
52 : #include <shellres.hxx>
53 : #include <swabstdlg.hxx>
54 :
55 : #include <cmdid.h>
56 : #include <helpid.h>
57 : #include <globals.hrc>
58 : #include <fmtui.hrc>
59 : #include <SwStyleNameMapper.hxx>
60 : #include <svx/svxids.hrc>
61 : #include <svl/stritem.hxx>
62 : #include <svl/aeitem.hxx>
63 : #include <svl/slstitm.hxx>
64 : #include <svl/eitem.hxx>
65 : #include <svl/intitem.hxx>
66 : #include <svx/svxdlg.hxx>
67 : #include <svx/dialogs.hrc>
68 : #include <svx/flagsdef.hxx>
69 :
70 : extern SW_DLLPUBLIC SwWrtShell* GetActiveWrtShell();
71 :
72 : /*--------------------------------------------------------------------
73 : Description: the dialog's carrier
74 : --------------------------------------------------------------------*/
75 :
76 0 : SwTemplateDlg::SwTemplateDlg(Window* pParent,
77 : SfxStyleSheetBase& rBase,
78 : sal_uInt16 nRegion,
79 : const sal_uInt16 nSlot,
80 : SwWrtShell* pActShell,
81 : sal_Bool bNew ) :
82 : SfxStyleDialog( pParent,
83 : SW_RES(DLG_TEMPLATE_BASE + nRegion),
84 : rBase,
85 : sal_False,
86 : 0 ),
87 : nType( nRegion ),
88 : pWrtShell(pActShell),
89 0 : bNewStyle(bNew)
90 : {
91 0 : FreeResource();
92 :
93 0 : nHtmlMode = ::GetHtmlMode(pWrtShell->GetView().GetDocShell());
94 0 : SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
95 : OSL_ENSURE(pFact, "Dialogdiet fail!");
96 : // tinker TabPages together
97 0 : switch( nRegion )
98 : {
99 : // character styles
100 : case SFX_STYLE_FAMILY_CHAR:
101 : {
102 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
103 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) , "GetTabPageRangesFunc fail!");
104 0 : AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
105 :
106 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
107 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) , "GetTabPageRangesFunc fail!");
108 0 : AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
109 :
110 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
111 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
112 0 : AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
113 :
114 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
115 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
116 0 : AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
117 :
118 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
119 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) , "GetTabPageRangesFunc fail!");
120 0 : AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
121 :
122 0 : SvtCJKOptions aCJKOptions;
123 0 : if(nHtmlMode & HTMLMODE_ON || !aCJKOptions.IsDoubleLinesEnabled())
124 0 : RemoveTabPage(TP_CHAR_TWOLN);
125 : }
126 0 : break;
127 : // paragraph styles
128 : case SFX_STYLE_FAMILY_PARA:
129 : {
130 : OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageCreatorFunc fail!");
131 : OSL_ENSURE(pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageRangesFunc fail!");
132 0 : AddTabPage( TP_PARA_STD, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH) );
133 :
134 : OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageCreatorFunc fail!");
135 : OSL_ENSURE(pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageRangesFunc fail!");
136 0 : AddTabPage( TP_PARA_ALIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH) );
137 :
138 : OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageCreatorFunc fail!");
139 : OSL_ENSURE(pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageRangesFunc fail!");
140 0 : AddTabPage( TP_PARA_EXT, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH) );
141 :
142 : OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageCreatorFunc fail!");
143 : OSL_ENSURE(pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageRangesFunc fail!");
144 0 : AddTabPage( TP_PARA_ASIAN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN) );
145 :
146 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
147 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageRangesFunc fail!");
148 0 : AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
149 :
150 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
151 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageRangesFunc fail!");
152 0 : AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
153 :
154 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
155 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
156 0 : AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
157 :
158 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
159 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
160 0 : AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
161 :
162 :
163 : OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR), "GetTabPageCreatorFunc fail!");
164 : OSL_ENSURE(pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR), "GetTabPageRangesFunc fail!");
165 0 : AddTabPage( TP_TABULATOR, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR), pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR) );
166 :
167 :
168 : AddTabPage(TP_NUMPARA, SwParagraphNumTabPage::Create,
169 0 : SwParagraphNumTabPage::GetRanges);
170 : AddTabPage(TP_DROPCAPS, SwDropCapsPage::Create,
171 0 : SwDropCapsPage::GetRanges );
172 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
173 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
174 0 : AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
175 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
176 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
177 0 : AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
178 :
179 : AddTabPage( TP_CONDCOLL, SwCondCollPage::Create,
180 0 : SwCondCollPage::GetRanges );
181 0 : if( (!bNewStyle && RES_CONDTXTFMTCOLL != ((SwDocStyleSheet&)rBase).GetCollection()->Which())
182 0 : || nHtmlMode & HTMLMODE_ON )
183 0 : RemoveTabPage(TP_CONDCOLL);
184 :
185 0 : SvtCJKOptions aCJKOptions;
186 0 : if(nHtmlMode & HTMLMODE_ON)
187 : {
188 0 : SvxHtmlOptions& rHtmlOpt = SvxHtmlOptions::Get();
189 0 : if (!rHtmlOpt.IsPrintLayoutExtension())
190 0 : RemoveTabPage(TP_PARA_EXT);
191 0 : RemoveTabPage(TP_PARA_ASIAN);
192 0 : RemoveTabPage(TP_TABULATOR);
193 0 : RemoveTabPage(TP_NUMPARA);
194 0 : RemoveTabPage(TP_CHAR_TWOLN);
195 0 : if(!(nHtmlMode & HTMLMODE_FULL_STYLES))
196 : {
197 0 : RemoveTabPage(TP_BACKGROUND);
198 0 : RemoveTabPage(TP_DROPCAPS);
199 : }
200 : }
201 : else
202 : {
203 0 : if(!aCJKOptions.IsAsianTypographyEnabled())
204 0 : RemoveTabPage(TP_PARA_ASIAN);
205 0 : if(!aCJKOptions.IsDoubleLinesEnabled())
206 0 : RemoveTabPage(TP_CHAR_TWOLN);
207 0 : }
208 : }
209 0 : break;
210 : // frame styles
211 : case SFX_STYLE_FAMILY_FRAME:
212 : {
213 : AddTabPage(TP_FRM_STD, SwFrmPage::Create,
214 0 : SwFrmPage::GetRanges );
215 : AddTabPage(TP_FRM_ADD, SwFrmAddPage::Create,
216 0 : SwFrmAddPage::GetRanges );
217 : AddTabPage(TP_FRM_WRAP, SwWrapTabPage::Create,
218 0 : SwWrapTabPage::GetRanges );
219 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
220 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
221 0 : AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
222 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
223 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
224 0 : AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
225 :
226 : AddTabPage(TP_COLUMN, SwColumnPage::Create,
227 0 : SwColumnPage::GetRanges );
228 :
229 0 : AddTabPage( TP_MACRO_ASSIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_MACROASSIGN), 0);
230 :
231 0 : break;
232 : }
233 : // page styles
234 : case SFX_STYLE_FAMILY_PAGE:
235 : {
236 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
237 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
238 0 : AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
239 : AddTabPage(TP_HEADER_PAGE, String(SW_RES(STR_PAGE_HEADER)),
240 : SvxHeaderPage::Create,
241 0 : SvxHeaderPage::GetRanges );
242 : AddTabPage(TP_FOOTER_PAGE, String(SW_RES(STR_PAGE_FOOTER)),
243 : SvxFooterPage::Create,
244 0 : SvxFooterPage::GetRanges );
245 0 : if ( nSlot == FN_FORMAT_PAGE_COLUMN_DLG )
246 : {
247 0 : SetCurPageId(TP_COLUMN);
248 : }
249 0 : else if ( nSlot == FN_FORMAT_PAGE_SETTING_DLG )
250 : {
251 0 : SetCurPageId(TP_PAGE_STD);
252 : }
253 :
254 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), "GetTabPageCreatorFunc fail!");
255 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), "GetTabPageRangesFunc fail!");
256 : AddTabPage(TP_PAGE_STD, String(SW_RES(STR_PAGE_STD)),
257 0 : pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ),
258 0 : pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ),
259 : sal_False,
260 0 : 1 ); // after the manage-page
261 0 : if(!pActShell || 0 == ::GetHtmlMode(pWrtShell->GetView().GetDocShell()))
262 : {
263 : OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
264 : OSL_ENSURE(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
265 : AddTabPage(TP_BORDER, String(SW_RES(STR_PAGE_BORDER)),
266 0 : pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
267 : AddTabPage(TP_COLUMN, String(SW_RES(STR_PAGE_COLUMN)),
268 : SwColumnPage::Create,
269 0 : SwColumnPage::GetRanges );
270 : AddTabPage(TP_FOOTNOTE_PAGE, String(SW_RES(STR_PAGE_FOOTNOTE)),
271 : SwFootNotePage::Create,
272 0 : SwFootNotePage::GetRanges );
273 : AddTabPage(TP_TEXTGRID_PAGE, String(SW_RES(STR_PAGE_TEXTGRID)),
274 : SwTextGridPage::Create,
275 0 : SwTextGridPage::GetRanges );
276 0 : SvtCJKOptions aCJKOptions;
277 0 : if(!aCJKOptions.IsAsianTypographyEnabled())
278 0 : RemoveTabPage(TP_TEXTGRID_PAGE);
279 : }
280 :
281 :
282 : }
283 0 : break;
284 : // numbering styles
285 : case SFX_STYLE_FAMILY_PSEUDO:
286 : {
287 0 : AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM );
288 0 : AddTabPage( RID_SVXPAGE_PICK_BULLET );
289 0 : AddTabPage( RID_SVXPAGE_PICK_NUM );
290 0 : AddTabPage( RID_SVXPAGE_PICK_BMP);
291 0 : AddTabPage( RID_SVXPAGE_NUM_OPTIONS );
292 0 : AddTabPage( RID_SVXPAGE_NUM_POSITION );
293 :
294 : }
295 0 : break;
296 :
297 : default:
298 : OSL_ENSURE(!this, "wrong family");
299 :
300 : }
301 0 : EnableApplyButton( true );
302 0 : }
303 :
304 0 : SwTemplateDlg::~SwTemplateDlg()
305 : {
306 0 : }
307 :
308 0 : short SwTemplateDlg::Ok()
309 : {
310 0 : short nRet = SfxTabDialog::Ok();
311 0 : if( RET_OK == nRet )
312 : {
313 : const SfxPoolItem *pOutItem, *pExItem;
314 0 : if( SFX_ITEM_SET == pExampleSet->GetItemState(
315 0 : SID_ATTR_NUMBERING_RULE, sal_False, &pExItem ) &&
316 0 : ( !GetOutputItemSet() ||
317 : SFX_ITEM_SET != GetOutputItemSet()->GetItemState(
318 0 : SID_ATTR_NUMBERING_RULE, sal_False, &pOutItem ) ||
319 0 : *pExItem != *pOutItem ))
320 : {
321 0 : if( GetOutputItemSet() )
322 0 : ((SfxItemSet*)GetOutputItemSet())->Put( *pExItem );
323 : else
324 0 : nRet = RET_CANCEL;
325 : }
326 : }
327 : else
328 : //JP 09.01.98 Bug #46446#:
329 : // that's the Ok-Handler, so OK has to be default!
330 0 : nRet = RET_OK;
331 0 : return nRet;
332 : }
333 :
334 0 : const SfxItemSet* SwTemplateDlg::GetRefreshedSet()
335 : {
336 0 : SfxItemSet* pInSet = GetInputSetImpl();
337 0 : pInSet->ClearItem();
338 0 : pInSet->SetParent( &GetStyleSheet().GetItemSet() );
339 0 : return pInSet;
340 : }
341 :
342 0 : void SwTemplateDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
343 : {
344 : // set style's and metric's names
345 0 : String sNumCharFmt, sBulletCharFmt;
346 0 : SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFmt);
347 0 : SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt);
348 0 : SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
349 :
350 0 : switch( nId )
351 : {
352 : case TP_CHAR_STD:
353 : {
354 : OSL_ENSURE(::GetActiveView(), "no active view");
355 :
356 : SvxFontListItem aFontListItem( *( (SvxFontListItem*)::GetActiveView()->
357 0 : GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) );
358 :
359 0 : aSet.Put (SvxFontListItem( aFontListItem.GetFontList(), SID_ATTR_CHAR_FONTLIST));
360 0 : sal_uInt32 nFlags = 0;
361 0 : if(rPage.GetItemSet().GetParent() && 0 == (nHtmlMode & HTMLMODE_ON ))
362 0 : nFlags = SVX_RELATIVE_MODE;
363 0 : if( SFX_STYLE_FAMILY_CHAR == nType )
364 0 : nFlags = nFlags|SVX_PREVIEW_CHARACTER;
365 0 : aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags));
366 0 : rPage.PageCreated(aSet);
367 : }
368 0 : break;
369 :
370 : case TP_CHAR_EXT:
371 : {
372 0 : sal_uInt32 nFlags = SVX_ENABLE_FLASH;
373 0 : if( SFX_STYLE_FAMILY_CHAR == nType )
374 0 : nFlags = nFlags|SVX_PREVIEW_CHARACTER;
375 0 : aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags));
376 0 : rPage.PageCreated(aSet);
377 : }
378 0 : break;
379 :
380 : case TP_CHAR_POS:
381 0 : if( SFX_STYLE_FAMILY_CHAR == nType )
382 : {
383 0 : aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER));
384 0 : rPage.PageCreated(aSet);
385 : }
386 0 : break;
387 :
388 : case TP_CHAR_TWOLN:
389 0 : if( SFX_STYLE_FAMILY_CHAR == nType )
390 : {
391 0 : aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER));
392 0 : rPage.PageCreated(aSet);
393 : }
394 0 : break;
395 :
396 : case TP_PARA_STD:
397 : {
398 0 : if( rPage.GetItemSet().GetParent() )
399 : {
400 0 : aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST,MM50/10));
401 0 : aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_FLAGSET,0x000F));
402 0 : rPage.PageCreated(aSet);
403 : }
404 :
405 : }
406 0 : break;
407 : case TP_NUMPARA:
408 : {
409 : //-->#outlinelevel added by zhaojianwei
410 : // handle if the current paragraph style is assigned to a list level of outline style,
411 0 : SwTxtFmtColl* pTmpColl = pWrtShell->FindTxtFmtCollByName( GetStyleSheet().GetName() );
412 0 : if( pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle() )
413 : {
414 0 : ((SwParagraphNumTabPage&)rPage).DisableOutline() ;
415 0 : ((SwParagraphNumTabPage&)rPage).DisableNumbering();
416 : }//<-end
417 0 : ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox();
418 0 : SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool();
419 0 : pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL);
420 0 : const SfxStyleSheetBase* pBase = pPool->First();
421 0 : std::set<String> aNames;
422 0 : while(pBase)
423 : {
424 0 : aNames.insert(pBase->GetName());
425 0 : pBase = pPool->Next();
426 : }
427 0 : for(std::set<String>::const_iterator it = aNames.begin(); it != aNames.end(); ++it)
428 0 : rBox.InsertEntry(*it);
429 : }
430 0 : break;
431 : case TP_PARA_ALIGN:
432 : {
433 0 : aSet.Put(SfxBoolItem(SID_SVXPARAALIGNTABPAGE_ENABLEJUSTIFYEXT,sal_True));
434 0 : rPage.PageCreated(aSet);
435 : }
436 0 : break;
437 :
438 : case TP_FRM_STD:
439 0 : ((SwFrmPage&)rPage).SetNewFrame( sal_True );
440 0 : ((SwFrmPage&)rPage).SetFormatUsed( sal_True );
441 0 : break;
442 :
443 : case TP_FRM_ADD:
444 0 : ((SwFrmAddPage&)rPage).SetFormatUsed(sal_True);
445 0 : ((SwFrmAddPage&)rPage).SetNewFrame(sal_True);
446 0 : break;
447 :
448 : case TP_FRM_WRAP:
449 0 : ((SwWrapTabPage&)rPage).SetFormatUsed( sal_True, sal_False );
450 0 : break;
451 :
452 : case TP_COLUMN:
453 0 : if( nType == SFX_STYLE_FAMILY_FRAME )
454 0 : ((SwColumnPage&)rPage).SetFrmMode(sal_True);
455 0 : ((SwColumnPage&)rPage).SetFormatUsed( sal_True );
456 0 : break;
457 :
458 : case TP_BACKGROUND:
459 : {
460 0 : sal_Int32 nFlagType = 0;
461 0 : if( SFX_STYLE_FAMILY_PARA == nType )
462 0 : nFlagType |= SVX_SHOW_PARACTL;
463 0 : if( SFX_STYLE_FAMILY_CHAR != nType )
464 0 : nFlagType |= SVX_SHOW_SELECTOR;
465 0 : if( SFX_STYLE_FAMILY_FRAME == nType )
466 0 : nFlagType |= SVX_ENABLE_TRANSPARENCY;
467 0 : aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlagType));
468 0 : rPage.PageCreated(aSet);
469 : }
470 0 : break;
471 : case TP_CONDCOLL:
472 : ((SwCondCollPage&)rPage).SetCollection(
473 0 : ((SwDocStyleSheet&)GetStyleSheet()).GetCollection(), bNewStyle );
474 0 : break;
475 :
476 : case TP_PAGE_STD:
477 0 : if(0 == (nHtmlMode & HTMLMODE_ON ))
478 : {
479 0 : std::vector<OUString> aList;
480 0 : String aNew;
481 0 : SwStyleNameMapper::FillUIName( RES_POOLCOLL_TEXT, aNew );
482 0 : aList.push_back( aNew );
483 0 : if( pWrtShell )
484 : {
485 : SfxStyleSheetBasePool* pStyleSheetPool = pWrtShell->
486 0 : GetView().GetDocShell()->GetStyleSheetPool();
487 0 : pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA);
488 0 : SfxStyleSheetBase *pFirstStyle = pStyleSheetPool->First();
489 0 : while(pFirstStyle)
490 : {
491 0 : aList.push_back( pFirstStyle->GetName() );
492 0 : pFirstStyle = pStyleSheetPool->Next();
493 : }
494 : }
495 0 : aSet.Put (SfxStringListItem(SID_COLLECT_LIST, &aList));
496 0 : rPage.PageCreated(aSet);
497 : }
498 0 : break;
499 :
500 : case TP_MACRO_ASSIGN:
501 : {
502 0 : SfxAllItemSet aNewSet(*aSet.GetPool());
503 0 : aNewSet.Put( SwMacroAssignDlg::AddEvents(MACASSGN_ALLFRM) );
504 0 : if ( pWrtShell )
505 0 : rPage.SetFrame( pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() );
506 0 : rPage.PageCreated(aNewSet);
507 0 : break;
508 : }
509 :
510 : case RID_SVXPAGE_PICK_NUM:
511 : {
512 0 : aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
513 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
514 0 : rPage.PageCreated(aSet);
515 : }
516 0 : break;
517 : case RID_SVXPAGE_NUM_OPTIONS:
518 : {
519 :
520 0 : aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
521 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
522 : // collect character styles
523 0 : ListBox rCharFmtLB(this);
524 0 : rCharFmtLB.Clear();
525 0 : rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
526 0 : SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
527 0 : ::FillCharStyleListBox(rCharFmtLB, pDocShell);
528 :
529 0 : std::vector<OUString> aList;
530 0 : for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++)
531 0 : aList.push_back( rCharFmtLB.GetEntry(j) );
532 :
533 0 : aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ;
534 0 : FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
535 0 : aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)));
536 0 : rPage.PageCreated(aSet);
537 : }
538 0 : break;
539 : case RID_SVXPAGE_NUM_POSITION:
540 : {
541 0 : SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
542 0 : FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
543 :
544 0 : aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)));
545 0 : rPage.PageCreated(aSet);
546 : }
547 0 : break;
548 : case RID_SVXPAGE_PICK_BULLET :
549 : {
550 0 : aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
551 0 : rPage.PageCreated(aSet);
552 : }
553 0 : break;
554 : case TP_HEADER_PAGE:
555 0 : if(0 == (nHtmlMode & HTMLMODE_ON ))
556 0 : ((SvxHeaderPage&)rPage).EnableDynamicSpacing();
557 0 : break;
558 : case TP_FOOTER_PAGE:
559 0 : if(0 == (nHtmlMode & HTMLMODE_ON ))
560 0 : ((SvxFooterPage&)rPage).EnableDynamicSpacing();
561 0 : break;
562 : case TP_BORDER :
563 0 : if( SFX_STYLE_FAMILY_PARA == nType )
564 : {
565 0 : aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_PARA));
566 : }
567 0 : else if( SFX_STYLE_FAMILY_FRAME == nType )
568 : {
569 0 : aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_FRAME));
570 : }
571 0 : rPage.PageCreated(aSet);
572 :
573 0 : break;
574 0 : }
575 0 : }
576 :
577 :
578 :
579 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|