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