1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22 // MARKER(update_precomp.py): autogen include statement, do not remove
23 #include "precompiled_sw.hxx"
24
25 #define _SVSTDARR_STRINGSDTOR
26 #include <svl/svstdarr.hxx>
27
28 #include <com/sun/star/i18n/ScriptType.hpp>
29
30 #include <hintids.hxx>
31 #include <cmdid.h> // Function-Ids
32 #include <vcl/msgbox.hxx>
33 #include <svl/eitem.hxx>
34 #include <sfx2/request.hxx>
35 #include <sfx2/app.hxx>
36 #include <sfx2/printer.hxx>
37 #include <svx/htmlmode.hxx>
38 #include <sfx2/bindings.hxx>
39 #include <editeng/brshitem.hxx>
40 #include <editeng/tstpitem.hxx>
41 #include <svx/optgrid.hxx>
42 #include <svx/svxdlg.hxx>
43 #include <svx/dialogs.hrc>
44 #include <i18npool/mslangid.hxx>
45 #include <fontcfg.hxx>
46 #include <optload.hxx>
47 #include <optcomp.hxx>
48 #include <edtwin.hxx>
49 #include <swmodule.hxx>
50 #include <view.hxx>
51 #include <doc.hxx>
52 #include <wrtsh.hxx>
53 #include <IDocumentDeviceAccess.hxx>
54 #include <uitool.hxx>
55 #include <initui.hxx> // fuer ::GetGlossaries()
56 #include <fldbas.hxx> //fuer UpdateFields
57 #include <wview.hxx>
58 #include <cfgitems.hxx>
59 #include <prtopt.hxx>
60 #include <pview.hxx>
61 #include <usrpref.hxx>
62 #include <modcfg.hxx>
63 #include <glosdoc.hxx>
64 #include <uiitems.hxx>
65 #include <editeng/langitem.hxx>
66 #include <unotools/lingucfg.hxx>
67 #include <editeng/unolingu.hxx>
68 #include <globals.hrc>
69 #include <globals.h> // globale Konstanten z.B.
70 #include <svl/slstitm.hxx>
71 #include "swabstdlg.hxx"
72 #include <swwrtshitem.hxx>
73
74 #include <unomid.h>
75
76 using namespace ::com::sun::star::uno;
77 using namespace ::com::sun::star::lang;
78
79 /* -----------------12.02.99 12:28-------------------
80 *
81 * --------------------------------------------------*/
82
CreateItemSet(sal_uInt16 nId)83 SfxItemSet* SwModule::CreateItemSet( sal_uInt16 nId )
84 {
85 sal_Bool bTextDialog = (nId == SID_SW_EDITOPTIONS) ? sal_True : sal_False;
86
87 // hier werden die Optionen fuer die Web- und den Textdialog zusmmengesetzt
88 SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
89 SwMasterUsrPref* pPref = bTextDialog ? pUsrPref : pWebUsrPref;
90 //kein MakeUsrPref, da hier nur die Optionen von Textdoks genommen werden duerfen
91 SwView* pAppView = GetView();
92 if(pAppView && pAppView->GetViewFrame() != SfxViewFrame::Current())
93 pAppView = 0;
94 if(pAppView)
95 {
96 // wenn Text dann nicht WebView und umgekehrt
97 sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pAppView);
98 if( (bWebView && !bTextDialog) ||(!bWebView && bTextDialog))
99 {
100 aViewOpt = *pAppView->GetWrtShell().GetViewOptions();
101 }
102 else
103 pAppView = 0; // mit View kann hier nichts gewonnen werden
104 }
105
106 /********************************************************************/
107 /* Optionen/Bearbeiten */
108 /********************************************************************/
109 SfxItemSet* pRet = new SfxItemSet (GetPool(), FN_PARAM_DOCDISP, FN_PARAM_ELEM,
110 SID_PRINTPREVIEW, SID_PRINTPREVIEW,
111 SID_ATTR_GRID_OPTIONS, SID_ATTR_GRID_OPTIONS,
112 FN_PARAM_PRINTER, FN_PARAM_STDFONTS,
113 FN_PARAM_WRTSHELL, FN_PARAM_WRTSHELL,
114 FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
115 SID_ATTR_METRIC, SID_ATTR_METRIC,
116 SID_ATTR_DEFTABSTOP, SID_ATTR_DEFTABSTOP,
117 RES_BACKGROUND, RES_BACKGROUND,
118 SID_HTML_MODE, SID_HTML_MODE,
119 FN_PARAM_SHADOWCURSOR, FN_PARAM_SHADOWCURSOR,
120 FN_PARAM_CRSR_IN_PROTECTED, FN_PARAM_CRSR_IN_PROTECTED,
121 FN_HSCROLL_METRIC, FN_VSCROLL_METRIC,
122 SID_ATTR_LANGUAGE, SID_ATTR_LANGUAGE,
123 SID_ATTR_CHAR_CJK_LANGUAGE, SID_ATTR_CHAR_CJK_LANGUAGE,
124 SID_ATTR_CHAR_CTL_LANGUAGE, SID_ATTR_CHAR_CTL_LANGUAGE,
125 #ifdef DBG_UTIL
126 FN_PARAM_SWTEST, FN_PARAM_SWTEST,
127 #endif
128 0);
129
130 pRet->Put( SwDocDisplayItem( aViewOpt, FN_PARAM_DOCDISP) );
131 pRet->Put( SwElemItem( aViewOpt, FN_PARAM_ELEM) );
132 if( bTextDialog )
133 {
134 pRet->Put( SwShadowCursorItem( aViewOpt, FN_PARAM_SHADOWCURSOR ));
135 pRet->Put( SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aViewOpt.IsCursorInProtectedArea()));
136 }
137
138 if( pAppView )
139 {
140 SwWrtShell& rWrtShell = pAppView->GetWrtShell();
141
142 SfxPrinter* pPrt = rWrtShell.getIDocumentDeviceAccess()->getPrinter( false );
143 if( pPrt )
144 pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));
145 pRet->Put(SwPtrItem(FN_PARAM_WRTSHELL, &rWrtShell));
146
147 pRet->Put((const SvxLanguageItem&)
148 rWrtShell.GetDefault(RES_CHRATR_LANGUAGE), SID_ATTR_LANGUAGE);
149
150 pRet->Put((const SvxLanguageItem&)
151 rWrtShell.GetDefault(RES_CHRATR_CJK_LANGUAGE), SID_ATTR_CHAR_CJK_LANGUAGE);
152
153 pRet->Put((const SvxLanguageItem&)
154 rWrtShell.GetDefault(RES_CHRATR_CTL_LANGUAGE), SID_ATTR_CHAR_CTL_LANGUAGE);
155 }
156 else
157 {
158 /* Der Drucker wird jetzt von der TabPage erzeugt und auch geloescht
159 * SfxItemSet* pSet = new SfxItemSet( SFX_APP()->GetPool(),
160 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
161 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
162 0 );
163
164 pPrt = new SfxPrinter(pSet);
165 pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));*/
166
167 SvtLinguConfig aLinguCfg;
168 Locale aLocale;
169 LanguageType nLang;
170
171 using namespace ::com::sun::star::i18n::ScriptType;
172
173 Any aLang = aLinguCfg.GetProperty(C2U("DefaultLocale"));
174 aLang >>= aLocale;
175 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), LATIN);
176 pRet->Put(SvxLanguageItem(nLang, SID_ATTR_LANGUAGE));
177
178 aLang = aLinguCfg.GetProperty(C2U("DefaultLocale_CJK"));
179 aLang >>= aLocale;
180 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), ASIAN);
181 pRet->Put(SvxLanguageItem(nLang, SID_ATTR_CHAR_CJK_LANGUAGE));
182
183 aLang = aLinguCfg.GetProperty(C2U("DefaultLocale_CTL"));
184 aLang >>= aLocale;
185 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), COMPLEX);
186 pRet->Put(SvxLanguageItem(nLang, SID_ATTR_CHAR_CTL_LANGUAGE));
187 }
188 if(bTextDialog)
189 pRet->Put(SwPtrItem(FN_PARAM_STDFONTS, GetStdFontConfig()));
190 if( PTR_CAST( SwPagePreView, SfxViewShell::Current())!=0)
191 {
192 SfxBoolItem aBool(SfxBoolItem(SID_PRINTPREVIEW, sal_True));
193 pRet->Put(aBool);
194 }
195
196 FieldUnit eUnit = pPref->GetHScrollMetric();
197 if(pAppView)
198 pAppView->GetHRulerMetric(eUnit);
199 pRet->Put(SfxUInt16Item( FN_HSCROLL_METRIC, static_cast< sal_uInt16 >(eUnit)));
200
201 eUnit = pPref->GetVScrollMetric();
202 if(pAppView)
203 pAppView->GetVRulerMetric(eUnit);
204 pRet->Put(SfxUInt16Item( FN_VSCROLL_METRIC, static_cast< sal_uInt16 >(eUnit) ));
205 pRet->Put(SfxUInt16Item( SID_ATTR_METRIC, static_cast< sal_uInt16 >(pPref->GetMetric()) ));
206 if(bTextDialog)
207 {
208 if(pAppView)
209 {
210 const SvxTabStopItem& rDefTabs =
211 (const SvxTabStopItem&)pAppView->GetWrtShell().
212 GetDefault(RES_PARATR_TABSTOP);
213 pRet->Put( SfxUInt16Item( SID_ATTR_DEFTABSTOP, (sal_uInt16)::GetTabDist(rDefTabs)));
214 }
215 else
216 pRet->Put(SfxUInt16Item( SID_ATTR_DEFTABSTOP, (sal_uInt16)pPref->GetDefTab()));
217 }
218
219 /*-----------------01.02.97 11.13-------------------
220 Optionen fuer GridTabPage
221 --------------------------------------------------*/
222
223 SvxGridItem aGridItem( SID_ATTR_GRID_OPTIONS);
224
225 aGridItem.SetUseGridSnap( aViewOpt.IsSnap());
226 aGridItem.SetSynchronize( aViewOpt.IsSynchronize());
227 aGridItem.SetGridVisible( aViewOpt.IsGridVisible());
228
229 const Size& rSnapSize = aViewOpt.GetSnapSize();
230 aGridItem.SetFldDrawX( (sal_uInt16) (rSnapSize.Width() ));
231 aGridItem.SetFldDrawY( (sal_uInt16) (rSnapSize.Height()));
232
233 aGridItem.SetFldDivisionX( aViewOpt.GetDivisionX());
234 aGridItem.SetFldDivisionY( aViewOpt.GetDivisionY());
235
236 pRet->Put(aGridItem);
237
238 /*-----------------01.02.97 13.02-------------------
239 Optionen fuer PrintTabPage
240 --------------------------------------------------*/
241 const SwPrintData* pOpt = pAppView ?
242 &pAppView->GetWrtShell().getIDocumentDeviceAccess()->getPrintData() :
243 0;
244
245 if(!pOpt)
246 pOpt = GetPrtOptions(!bTextDialog);
247
248 SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, *pOpt );
249 pRet->Put(aAddPrinterItem);
250
251 /*-----------------01.02.97 13.12-------------------
252 Optionen fuer Web-Hintergrund
253 --------------------------------------------------*/
254 if(!bTextDialog)
255 {
256 pRet->Put(SvxBrushItem(aViewOpt.GetRetoucheColor(), RES_BACKGROUND));
257 }
258
259 #ifdef DBG_UTIL
260 /*-----------------01.02.97 13.02-------------------
261 Test-Optionen
262 --------------------------------------------------*/
263 SwTestItem aTestItem(FN_PARAM_SWTEST);
264 aTestItem.bTest1 = aViewOpt.IsTest1();
265 aTestItem.bTest2 = aViewOpt.IsTest2();
266 aTestItem.bTest3 = aViewOpt.IsTest3();
267 aTestItem.bTest4 = aViewOpt.IsTest4();
268 aTestItem.bTest5 = aViewOpt.IsTest5();
269 aTestItem.bTest6 = aViewOpt.IsTest6();
270 aTestItem.bTest7 = aViewOpt.IsTest7();
271 aTestItem.bTest8 = aViewOpt.IsTest8();
272 aTestItem.bTest9 = SwViewOption::IsTest9();
273 aTestItem.bTest10 = aViewOpt.IsTest10();
274 pRet->Put(aTestItem);
275 #endif
276 /*-----------------01.02.97 13.04-------------------
277
278 --------------------------------------------------*/
279 if(!bTextDialog)
280 pRet->Put(SfxUInt16Item(SID_HTML_MODE, HTMLMODE_ON));
281 // delete pPrt;
282 return pRet;
283 }
284 /* -----------------12.02.99 12:28-------------------
285 *
286 * --------------------------------------------------*/
ApplyItemSet(sal_uInt16 nId,const SfxItemSet & rSet)287 void SwModule::ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet )
288 {
289 sal_Bool bTextDialog = nId == SID_SW_EDITOPTIONS;
290 SwView* pAppView = GetView();
291 if(pAppView && pAppView->GetViewFrame() != SfxViewFrame::Current())
292 pAppView = 0;
293 if(pAppView)
294 {
295 // the text dialog mustn't apply data to the web view and vice versa
296 sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pAppView);
297 if( bWebView == bTextDialog)
298 pAppView = 0; //
299 }
300
301 SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
302 SwMasterUsrPref* pPref = bTextDialog ? pUsrPref : pWebUsrPref;
303
304 const SfxPoolItem* pItem;
305 SfxBindings *pBindings = pAppView ? &pAppView->GetViewFrame()->GetBindings()
306 : NULL;
307
308 /*---------------------------------------------------------------------
309 Seite Dokumentansicht auswerten
310 -----------------------------------------------------------------------*/
311 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_DOCDISP, sal_False, &pItem ))
312 {
313 const SwDocDisplayItem* pDocDispItem = (const SwDocDisplayItem*)pItem;
314
315 if(!aViewOpt.IsViewMetaChars())
316 {
317 if( (!aViewOpt.IsTab( sal_True ) && pDocDispItem->bTab) ||
318 (!aViewOpt.IsBlank( sal_True ) && pDocDispItem->bSpace) ||
319 (!aViewOpt.IsParagraph( sal_True ) && pDocDispItem->bParagraphEnd) ||
320 (!aViewOpt.IsLineBreak( sal_True ) && pDocDispItem->bManualBreak) )
321 {
322 aViewOpt.SetViewMetaChars(sal_True);
323 if(pBindings)
324 pBindings->Invalidate(FN_VIEW_META_CHARS);
325 }
326
327 }
328 pDocDispItem->FillViewOptions( aViewOpt );
329 if(pBindings)
330 {
331 pBindings->Invalidate(FN_VIEW_GRAPHIC);
332 pBindings->Invalidate(FN_VIEW_HIDDEN_PARA);
333 }
334 }
335
336 /*---------------------------------------------------------------------
337 Elemente - Item auswerten
338 -----------------------------------------------------------------------*/
339
340 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ELEM, sal_False, &pItem ) )
341 {
342 const SwElemItem* pElemItem = (const SwElemItem*)pItem;
343 pElemItem->FillViewOptions( aViewOpt );
344
345 }
346
347 if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_METRIC, sal_False, &pItem ) )
348 {
349 SFX_APP()->SetOptions(rSet);
350 const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
351 ::SetDfltMetric((FieldUnit)pMetricItem->GetValue(), !bTextDialog);
352 }
353 if( SFX_ITEM_SET == rSet.GetItemState(FN_HSCROLL_METRIC, sal_False, &pItem ) )
354 {
355 const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
356 FieldUnit eUnit = (FieldUnit)pMetricItem->GetValue();
357 pPref->SetHScrollMetric(eUnit);
358 if(pAppView)
359 pAppView->ChangeTabMetric(eUnit);
360 }
361
362 if( SFX_ITEM_SET == rSet.GetItemState(FN_VSCROLL_METRIC, sal_False, &pItem ) )
363 {
364 const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
365 FieldUnit eUnit = (FieldUnit)pMetricItem->GetValue();
366 pPref->SetVScrollMetric(eUnit);
367 if(pAppView)
368 pAppView->ChangeVRulerMetric(eUnit);
369 }
370
371 if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_DEFTABSTOP, sal_False, &pItem ) )
372 {
373 sal_uInt16 nTabDist = ((const SfxUInt16Item*)pItem)->GetValue();
374 pPref->SetDefTab(nTabDist);
375 if(pAppView)
376 {
377 SvxTabStopItem aDefTabs( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
378 MakeDefTabs( nTabDist, aDefTabs );
379 pAppView->GetWrtShell().SetDefault( aDefTabs );
380 }
381 }
382
383
384 /*-----------------01.02.97 11.36-------------------
385 Hintergrund nur im WebDialog
386 --------------------------------------------------*/
387 if(SFX_ITEM_SET == rSet.GetItemState(RES_BACKGROUND))
388 {
389 const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rSet.Get(
390 RES_BACKGROUND);
391 aViewOpt.SetRetoucheColor( rBrushItem.GetColor() );
392 }
393
394 /*--------------------------------------------------------------------
395 Seite Rastereinstellungen auswerten
396 ----------------------------------------------------------------------*/
397
398 if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_GRID_OPTIONS, sal_False, &pItem ))
399 {
400 const SvxGridItem* pGridItem = (const SvxGridItem*)pItem;
401
402 aViewOpt.SetSnap( pGridItem->GetUseGridSnap() );
403 aViewOpt.SetSynchronize(pGridItem->GetSynchronize());
404 if( aViewOpt.IsGridVisible() != pGridItem->GetGridVisible() )
405 aViewOpt.SetGridVisible( pGridItem->GetGridVisible());
406 Size aSize = Size( pGridItem->GetFldDrawX() ,
407 pGridItem->GetFldDrawY() );
408 if( aViewOpt.GetSnapSize() != aSize )
409 aViewOpt.SetSnapSize( aSize );
410 short nDiv = (short)pGridItem->GetFldDivisionX() ;
411 if( aViewOpt.GetDivisionX() != nDiv )
412 aViewOpt.SetDivisionX( nDiv );
413 nDiv = (short)pGridItem->GetFldDivisionY();
414 if( aViewOpt.GetDivisionY() != nDiv )
415 aViewOpt.SetDivisionY( nDiv );
416
417 if(pBindings)
418 {
419 pBindings->Invalidate(SID_GRID_VISIBLE);
420 pBindings->Invalidate(SID_GRID_USE);
421 }
422 }
423
424 //--------------------------------------------------------------------------
425 // Writer Drucker Zusatzeinstellungen auswerten
426 //----------------------------------------------------------------------------
427
428 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER, sal_False, &pItem ))
429 {
430 SwPrintOptions* pOpt = GetPrtOptions(!bTextDialog);
431 if (pOpt)
432 {
433 const SwAddPrinterItem* pAddPrinterAttr = (const SwAddPrinterItem*)pItem;
434 *pOpt = *pAddPrinterAttr;
435
436 if(pAppView)
437 pAppView->GetWrtShell().getIDocumentDeviceAccess()->setPrintData( *pOpt );
438 }
439
440 }
441
442 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
443 {
444 ((SwShadowCursorItem*)pItem)->FillViewOptions( aViewOpt );
445 if(pBindings)
446 pBindings->Invalidate(FN_SHADOWCURSOR);
447 }
448
449 if( pAppView )
450 {
451 SwWrtShell &rWrtSh = pAppView->GetWrtShell();
452 const bool bAlignFormulas = rWrtSh.GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT );
453 pPref->SetAlignMathObjectsToBaseline( bAlignFormulas );
454
455 // don't align formulas in documents that are currently loading
456 if (bAlignFormulas && !rWrtSh.GetDoc()->IsInReading())
457 rWrtSh.AlignAllFormulasToBaseline();
458 }
459
460 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
461 {
462 aViewOpt.SetCursorInProtectedArea(((const SfxBoolItem*)pItem)->GetValue());
463 }
464
465
466 #ifdef DBG_UTIL
467 /*--------------------------------------------------------------------------
468 Writer Testseite auswerten
469 ----------------------------------------------------------------------------*/
470
471 if( SFX_ITEM_SET == rSet.GetItemState(
472 FN_PARAM_SWTEST, sal_False, &pItem ))
473 {
474 const SwTestItem* pTestItem = (const SwTestItem*)pItem;
475 aViewOpt.SetTest1((sal_Bool)pTestItem->bTest1);
476 aViewOpt.SetTest2((sal_Bool)pTestItem->bTest2);
477 aViewOpt.SetTest3((sal_Bool)pTestItem->bTest3);
478 aViewOpt.SetTest4((sal_Bool)pTestItem->bTest4);
479 aViewOpt.SetTest5((sal_Bool)pTestItem->bTest5);
480 aViewOpt.SetTest6((sal_Bool)pTestItem->bTest6);
481 aViewOpt.SetTest7((sal_Bool)pTestItem->bTest7);
482 aViewOpt.SetTest8((sal_Bool)pTestItem->bTest8);
483 SwViewOption::SetTest9((sal_Bool)pTestItem->bTest9);
484 aViewOpt.SetTest10((sal_Bool)pTestItem->bTest10);
485 }
486 #endif
487 // dann an der akt. View und Shell die entsp. Elemente setzen
488 ApplyUsrPref( aViewOpt, pAppView, bTextDialog? VIEWOPT_DEST_TEXT : VIEWOPT_DEST_WEB);
489 }
490 /* -----------------12.02.99 12:28-------------------
491 *
492 * --------------------------------------------------*/
CreateTabPage(sal_uInt16 nId,Window * pParent,const SfxItemSet & rSet)493 SfxTabPage* SwModule::CreateTabPage( sal_uInt16 nId, Window* pParent, const SfxItemSet& rSet )
494 {
495 SfxTabPage* pRet = NULL;
496 SfxAllItemSet aSet(*(rSet.GetPool()));
497 switch( nId )
498 {
499 case RID_SW_TP_CONTENT_OPT:
500 case RID_SW_TP_HTML_CONTENT_OPT:
501 {
502 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
503 if ( pFact )
504 {
505 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
506 if ( fnCreatePage )
507 pRet = (*fnCreatePage)( pParent, rSet );
508 }
509 break;
510 }
511 case RID_SW_TP_HTML_OPTGRID_PAGE:
512 case RID_SVXPAGE_GRID:
513 pRet = SvxGridTabPage::Create(pParent, rSet);
514 break;
515
516 case RID_SW_TP_STD_FONT:
517 case RID_SW_TP_STD_FONT_CJK:
518 case RID_SW_TP_STD_FONT_CTL:
519 {
520 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
521 if ( pFact )
522 {
523 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
524 if ( fnCreatePage )
525 pRet = (*fnCreatePage)( pParent, rSet );
526 }
527 if(RID_SW_TP_STD_FONT != nId)
528 {
529 aSet.Put (SfxUInt16Item(SID_FONTMODE_TYPE, RID_SW_TP_STD_FONT_CJK == nId ? FONT_GROUP_CJK : FONT_GROUP_CTL));
530 pRet->PageCreated(aSet);
531 }
532 }
533 break;
534 case RID_SW_TP_HTML_OPTPRINT_PAGE:
535 case RID_SW_TP_OPTPRINT_PAGE:
536 {
537 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
538 if ( pFact )
539 {
540 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
541 if ( fnCreatePage )
542 pRet = (*fnCreatePage)( pParent, rSet );
543 }
544 aSet.Put (SfxBoolItem(SID_FAX_LIST, sal_True));
545 pRet->PageCreated(aSet);
546 }
547 break;
548 case RID_SW_TP_HTML_OPTTABLE_PAGE:
549 case RID_SW_TP_OPTTABLE_PAGE:
550 {
551 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
552 if ( pFact )
553 {
554 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
555 if ( fnCreatePage )
556 pRet = (*fnCreatePage)( pParent, rSet );
557 }
558 SwView* pCurrView = GetView();
559 if(pCurrView)
560 {
561 // wenn Text dann nicht WebView und umgekehrt
562 sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pCurrView);
563 if( (bWebView && RID_SW_TP_HTML_OPTTABLE_PAGE == nId) ||
564 (!bWebView && RID_SW_TP_HTML_OPTTABLE_PAGE != nId) )
565 {
566 aSet.Put (SwWrtShellItem(SID_WRT_SHELL,pCurrView->GetWrtShellPtr()));
567 pRet->PageCreated(aSet);
568 }
569 }
570 }
571 break;
572 case RID_SW_TP_OPTSHDWCRSR:
573 case RID_SW_TP_HTML_OPTSHDWCRSR:
574 case RID_SW_TP_REDLINE_OPT:
575 case RID_SW_TP_OPTLOAD_PAGE:
576 case RID_SW_TP_OPTCOMPATIBILITY_PAGE:
577 case RID_SW_TP_MAILCONFIG:
578 {
579 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
580 if ( pFact )
581 {
582 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
583 if ( fnCreatePage )
584 pRet = (*fnCreatePage)( pParent, rSet );
585 }
586 if (pRet && (nId == RID_SW_TP_OPTSHDWCRSR || nId == RID_SW_TP_HTML_OPTSHDWCRSR))
587 {
588 SwView* pCurrView = GetView();
589 if(pCurrView)
590 {
591 aSet.Put( SwWrtShellItem( SID_WRT_SHELL, pCurrView->GetWrtShellPtr() ) );
592 pRet->PageCreated(aSet);
593 }
594 }
595 }
596 break;
597 #ifdef DBG_UTIL
598 case RID_SW_TP_OPTTEST_PAGE:
599 {
600 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
601 if ( pFact )
602 {
603 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
604 if ( fnCreatePage )
605 pRet = (*fnCreatePage)( pParent, rSet );
606 }
607 break;
608 }
609 #endif
610 case RID_SW_TP_BACKGROUND:
611 {
612 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
613 if ( pFact )
614 {
615 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND );
616 if ( fnCreatePage )
617 pRet = (*fnCreatePage)( pParent, rSet );
618 }
619 break;
620 }
621 case TP_OPTCAPTION_PAGE:
622 case RID_SW_TP_OPTCAPTION_PAGE:
623 {
624 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
625 if ( pFact )
626 {
627 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SW_TP_OPTCAPTION_PAGE );
628 if ( fnCreatePage )
629 pRet = (*fnCreatePage)( pParent, rSet );
630 }
631 }
632 break;
633 }
634
635 DBG_ASSERT( pRet, "SwModule::CreateTabPage(): Unknown tabpage id" );
636 return pRet;
637 }
638
639 /* vim: set noet sw=4 ts=4: */
640