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 <boost/scoped_ptr.hpp>
21 :
22 : #include <hintids.hxx>
23 : #include <sfx2/request.hxx>
24 : #include <sfx2/dispatch.hxx>
25 : #include <sfx2/childwin.hxx>
26 : #include <unotools/useroptions.hxx>
27 : #include <cppuhelper/weak.hxx>
28 : #include <com/sun/star/frame/FrameSearchFlag.hpp>
29 : #include <com/sun/star/view/XSelectionSupplier.hpp>
30 : #include <cppuhelper/implbase1.hxx>
31 : #include <svx/dataaccessdescriptor.hxx>
32 : #include <editeng/wghtitem.hxx>
33 : #include <editeng/postitem.hxx>
34 : #include <editeng/udlnitem.hxx>
35 : #include <editeng/crossedoutitem.hxx>
36 : #include <editeng/cmapitem.hxx>
37 : #include <editeng/colritem.hxx>
38 : #include <editeng/brushitem.hxx>
39 : #include <vcl/msgbox.hxx>
40 : #include <svl/cjkoptions.hxx>
41 : #include <swmodule.hxx>
42 : #include <swtypes.hxx>
43 : #include <usrpref.hxx>
44 : #include <modcfg.hxx>
45 : #include <view.hxx>
46 : #include <pview.hxx>
47 : #include <wview.hxx>
48 : #include <wrtsh.hxx>
49 : #include <docsh.hxx>
50 : #include <dbmgr.hxx>
51 : #include <uinums.hxx>
52 : #include <prtopt.hxx>
53 : #include <navicfg.hxx>
54 : #include <doc.hxx>
55 : #include <cmdid.h>
56 : #include <app.hrc>
57 : #include "helpid.h"
58 : #include <IDocumentLayoutAccess.hxx>
59 :
60 : #include <unomid.h>
61 : #include <tools/color.hxx>
62 : #include "PostItMgr.hxx"
63 :
64 : using namespace ::svx;
65 : using namespace ::com::sun::star;
66 : using namespace ::com::sun::star::uno;
67 : using namespace ::com::sun::star::beans;
68 : using namespace ::com::sun::star::frame;
69 : using namespace ::com::sun::star::view;
70 : using namespace ::com::sun::star::lang;
71 :
72 113 : static void lcl_SetUIPrefs(const SwViewOption &rPref, SwView* pView, SwViewShell* pSh )
73 : {
74 : // in FrameSets the actual visibility can differ from the ViewOption's setting
75 113 : bool bVScrollChanged = rPref.IsViewVScrollBar() != pSh->GetViewOptions()->IsViewVScrollBar();
76 113 : bool bHScrollChanged = rPref.IsViewHScrollBar() != pSh->GetViewOptions()->IsViewHScrollBar();
77 113 : bool bVAlignChanged = rPref.IsVRulerRight() != pSh->GetViewOptions()->IsVRulerRight();
78 :
79 113 : pSh->SetUIOptions(rPref);
80 113 : const SwViewOption* pNewPref = pSh->GetViewOptions();
81 :
82 : // Scrollbars on / off
83 113 : if(bVScrollChanged)
84 : {
85 3 : pView->EnableVScrollbar(pNewPref->IsViewVScrollBar());
86 : }
87 113 : if(bHScrollChanged)
88 : {
89 3 : pView->EnableHScrollbar( pNewPref->IsViewHScrollBar() || pNewPref->getBrowseMode() );
90 : }
91 : //if only the position of the vertical ruler has been changed initiate an update
92 113 : if(bVAlignChanged && !bHScrollChanged && !bVScrollChanged)
93 3 : pView->InvalidateBorder();
94 :
95 : // Rulers on / off
96 113 : if(pNewPref->IsViewVRuler())
97 23 : pView->CreateVRuler();
98 : else
99 90 : pView->KillVRuler();
100 :
101 : // TabWindow on / off
102 113 : if(pNewPref->IsViewHRuler())
103 27 : pView->CreateTab();
104 : else
105 86 : pView->KillTab();
106 :
107 113 : pView->GetPostItMgr()->PrepareView(true);
108 113 : }
109 :
110 0 : SwWrtShell* GetActiveWrtShell()
111 : {
112 0 : SwView *pActive = ::GetActiveView();
113 0 : if( pActive )
114 0 : return &pActive->GetWrtShell();
115 0 : return 0;
116 : }
117 :
118 727 : SwView* GetActiveView()
119 : {
120 727 : SfxViewShell* pView = SfxViewShell::Current();
121 727 : return PTR_CAST( SwView, pView );
122 : }
123 :
124 38 : SwView* SwModule::GetFirstView()
125 : {
126 : // returns only sivible SwView
127 38 : const TypeId aTypeId = TYPE(SwView);
128 38 : SwView* pView = static_cast<SwView*>(SfxViewShell::GetFirst(&aTypeId));
129 38 : return pView;
130 : }
131 :
132 9 : SwView* SwModule::GetNextView(SwView* pView)
133 : {
134 : OSL_ENSURE(PTR_CAST(SwView, pView),"return no SwView");
135 9 : const TypeId aTypeId = TYPE(SwView);
136 9 : SwView* pNView = static_cast<SwView*>(SfxViewShell::GetNext(*pView, &aTypeId, true));
137 9 : return pNView;
138 : }
139 :
140 : // New Master for the settings is set; this affects the current view and all following.
141 113 : void SwModule::ApplyUsrPref(const SwViewOption &rUsrPref, SwView* pActView,
142 : sal_uInt16 nDest )
143 : {
144 113 : SwView* pCurrView = pActView;
145 113 : SwViewShell* pSh = pCurrView ? &pCurrView->GetWrtShell() : 0;
146 :
147 : SwMasterUsrPref* pPref = const_cast<SwMasterUsrPref*>(GetUsrPref(
148 : nDest == VIEWOPT_DEST_WEB
149 113 : || (nDest != VIEWOPT_DEST_TEXT
150 226 : && pCurrView && pCurrView->ISA(SwWebView)) ));
151 :
152 : // with Uno, only sdbcx::View, but not the Module should be changed
153 113 : bool bViewOnly = VIEWOPT_DEST_VIEW_ONLY == nDest;
154 : // fob Preview off
155 : SwPagePreview* pPPView;
156 113 : if( !pCurrView && 0 != (pPPView = PTR_CAST( SwPagePreview, SfxViewShell::Current())) )
157 : {
158 0 : if(!bViewOnly)
159 0 : pPref->SetUIOptions( rUsrPref );
160 0 : pPPView->EnableVScrollbar(pPref->IsViewVScrollBar());
161 0 : pPPView->EnableHScrollbar(pPref->IsViewHScrollBar());
162 0 : if(!bViewOnly)
163 : {
164 0 : pPref->SetPagePrevRow(rUsrPref.GetPagePrevRow());
165 0 : pPref->SetPagePrevCol(rUsrPref.GetPagePrevCol());
166 : }
167 0 : return;
168 : }
169 :
170 113 : if(!bViewOnly)
171 : {
172 0 : pPref->SetUsrPref( rUsrPref );
173 0 : pPref->SetModified();
174 : }
175 :
176 113 : if( !pCurrView )
177 0 : return;
178 :
179 : // Passing on to CORE
180 : bool bReadonly;
181 113 : const SwDocShell* pDocSh = pCurrView->GetDocShell();
182 113 : if (pDocSh)
183 113 : bReadonly = pDocSh->IsReadOnly();
184 : else //Use existing option if DocShell missing
185 0 : bReadonly = pSh->GetViewOptions()->IsReadonly();
186 113 : boost::scoped_ptr<SwViewOption> xViewOpt;
187 113 : if (!bViewOnly)
188 0 : xViewOpt.reset(new SwViewOption(*pPref));
189 : else
190 113 : xViewOpt.reset(new SwViewOption(rUsrPref));
191 113 : xViewOpt->SetReadonly( bReadonly );
192 113 : if( !(*pSh->GetViewOptions() == *xViewOpt) )
193 : {
194 : //is maybe only a SwViewShell
195 68 : pSh->StartAction();
196 68 : pSh->ApplyViewOptions( *xViewOpt );
197 68 : static_cast<SwWrtShell*>(pSh)->SetReadOnlyAvailable(xViewOpt->IsCursorInProtectedArea());
198 68 : pSh->EndAction();
199 : }
200 113 : if ( pSh->GetViewOptions()->IsReadonly() != bReadonly )
201 0 : pSh->SetReadonlyOption(bReadonly);
202 :
203 113 : lcl_SetUIPrefs(*xViewOpt, pCurrView, pSh);
204 :
205 : // in the end the Idle-Flag is set again
206 113 : pPref->SetIdle(true);
207 : }
208 :
209 0 : void SwModule::ApplyUserMetric( FieldUnit eMetric, bool bWeb )
210 : {
211 : SwMasterUsrPref* pPref;
212 0 : if(bWeb)
213 : {
214 0 : if(!pWebUsrPref)
215 0 : GetUsrPref(true);
216 0 : pPref = pWebUsrPref;
217 : }
218 : else
219 : {
220 0 : if(!pUsrPref)
221 0 : GetUsrPref(false);
222 0 : pPref = pUsrPref;
223 : }
224 0 : FieldUnit eOldMetric = pPref->GetMetric();
225 0 : if(eOldMetric != eMetric)
226 0 : pPref->SetMetric(eMetric);
227 :
228 0 : FieldUnit eHScrollMetric = pPref->IsHScrollMetric() ? pPref->GetHScrollMetric() : eMetric;
229 0 : FieldUnit eVScrollMetric = pPref->IsVScrollMetric() ? pPref->GetVScrollMetric() : eMetric;
230 :
231 0 : SwView* pTmpView = SwModule::GetFirstView();
232 : // switch the ruler for all MDI-Windows
233 0 : while(pTmpView)
234 : {
235 0 : if(bWeb == (0 != PTR_CAST(SwWebView, pTmpView)))
236 : {
237 0 : pTmpView->ChangeVRulerMetric(eVScrollMetric);
238 0 : pTmpView->ChangeTabMetric(eHScrollMetric);
239 : }
240 :
241 0 : pTmpView = SwModule::GetNextView(pTmpView);
242 : }
243 0 : }
244 :
245 0 : void SwModule::ApplyRulerMetric( FieldUnit eMetric, bool bHorizontal, bool bWeb )
246 : {
247 : SwMasterUsrPref* pPref;
248 0 : if(bWeb)
249 : {
250 0 : if(!pWebUsrPref)
251 0 : GetUsrPref(true);
252 0 : pPref = pWebUsrPref;
253 : }
254 : else
255 : {
256 0 : if(!pUsrPref)
257 0 : GetUsrPref(false);
258 0 : pPref = pUsrPref;
259 : }
260 0 : if( bHorizontal )
261 0 : pPref->SetHScrollMetric(eMetric);
262 : else
263 0 : pPref->SetVScrollMetric(eMetric);
264 :
265 0 : SwView* pTmpView = SwModule::GetFirstView();
266 : // switch metric at the appropriate rulers
267 0 : while(pTmpView)
268 : {
269 0 : if(bWeb == (0 != dynamic_cast<SwWebView *>( pTmpView )))
270 : {
271 0 : if( bHorizontal )
272 0 : pTmpView->ChangeTabMetric(eMetric);
273 : else
274 0 : pTmpView->ChangeVRulerMetric(eMetric);
275 : }
276 0 : pTmpView = SwModule::GetNextView(pTmpView);
277 : }
278 0 : }
279 :
280 : //set the usrpref 's char unit attribute and set rulers unit as char if the "apply char unit" is checked
281 0 : void SwModule::ApplyUserCharUnit(bool bApplyChar, bool bWeb)
282 : {
283 : SwMasterUsrPref* pPref;
284 0 : if(bWeb)
285 : {
286 0 : if(!pWebUsrPref)
287 0 : GetUsrPref(true);
288 0 : pPref = pWebUsrPref;
289 : }
290 : else
291 : {
292 0 : if(!pUsrPref)
293 0 : GetUsrPref(false);
294 0 : pPref = pUsrPref;
295 : }
296 0 : bool bOldApplyCharUnit = pPref->IsApplyCharUnit();
297 0 : bool bHasChanged = false;
298 0 : if(bOldApplyCharUnit != bApplyChar)
299 : {
300 0 : pPref->SetApplyCharUnit(bApplyChar);
301 0 : bHasChanged = true;
302 : }
303 :
304 0 : if( !bHasChanged )
305 0 : return;
306 :
307 0 : FieldUnit eHScrollMetric = pPref->IsHScrollMetric() ? pPref->GetHScrollMetric() : pPref->GetMetric();
308 0 : FieldUnit eVScrollMetric = pPref->IsVScrollMetric() ? pPref->GetVScrollMetric() : pPref->GetMetric();
309 0 : if(bApplyChar)
310 : {
311 0 : eHScrollMetric = FUNIT_CHAR;
312 0 : eVScrollMetric = FUNIT_LINE;
313 : }
314 : else
315 : {
316 0 : SvtCJKOptions aCJKOptions;
317 0 : if ( !aCJKOptions.IsAsianTypographyEnabled() && ( eHScrollMetric == FUNIT_CHAR ))
318 0 : eHScrollMetric = FUNIT_INCH;
319 0 : else if ( eHScrollMetric == FUNIT_CHAR )
320 0 : eHScrollMetric = FUNIT_CM;
321 0 : if ( !aCJKOptions.IsAsianTypographyEnabled() && ( eVScrollMetric == FUNIT_LINE ))
322 0 : eVScrollMetric = FUNIT_INCH;
323 0 : else if ( eVScrollMetric == FUNIT_LINE )
324 0 : eVScrollMetric = FUNIT_CM;
325 : }
326 0 : SwView* pTmpView = SwModule::GetFirstView();
327 : // switch rulers for all MDI-Windows
328 0 : while(pTmpView)
329 : {
330 0 : if(bWeb == (0 != PTR_CAST(SwWebView, pTmpView)))
331 : {
332 0 : pTmpView->ChangeVRulerMetric(eVScrollMetric);
333 0 : pTmpView->ChangeTabMetric(eHScrollMetric);
334 : }
335 :
336 0 : pTmpView = SwModule::GetNextView(pTmpView);
337 : }
338 : }
339 :
340 23 : SwNavigationConfig* SwModule::GetNavigationConfig()
341 : {
342 23 : if(!pNavigationConfig)
343 : {
344 2 : pNavigationConfig = new SwNavigationConfig;
345 : }
346 23 : return pNavigationConfig;
347 : }
348 :
349 2707 : SwPrintOptions* SwModule::GetPrtOptions(bool bWeb)
350 : {
351 2707 : if(bWeb && !pWebPrtOpt)
352 : {
353 1 : pWebPrtOpt = new SwPrintOptions(true);
354 : }
355 2706 : else if(!bWeb && !pPrtOpt)
356 : {
357 55 : pPrtOpt = new SwPrintOptions(false);
358 : }
359 :
360 2707 : return bWeb ? pWebPrtOpt : pPrtOpt;
361 : }
362 :
363 0 : SwChapterNumRules* SwModule::GetChapterNumRules()
364 : {
365 0 : if(!pChapterNumRules)
366 0 : pChapterNumRules = new SwChapterNumRules;
367 0 : return pChapterNumRules;
368 : }
369 :
370 1 : void SwModule::ShowDBObj(SwView& rView, const SwDBData& rData, bool /*bOnlyIfAvailable*/)
371 : {
372 1 : Reference<XFrame> xFrame = rView.GetViewFrame()->GetFrame().GetFrameInterface();
373 2 : Reference<XDispatchProvider> xDP(xFrame, uno::UNO_QUERY);
374 :
375 2 : uno::Reference<XFrame> xBeamerFrame = xFrame->findFrame("_beamer", FrameSearchFlag::CHILDREN);
376 1 : if (xBeamerFrame.is())
377 : { // the beamer has been opened by the SfxViewFrame
378 1 : Reference<XController> xController = xBeamerFrame->getController();
379 2 : Reference<XSelectionSupplier> xControllerSelection(xController, UNO_QUERY);
380 1 : if (xControllerSelection.is())
381 : {
382 :
383 1 : ODataAccessDescriptor aSelection;
384 1 : aSelection.setDataSource(rData.sDataSource);
385 1 : aSelection[daCommand] <<= rData.sCommand;
386 1 : aSelection[daCommandType] <<= rData.nCommandType;
387 1 : xControllerSelection->select(makeAny(aSelection.createPropertyValueSequence()));
388 : }
389 : else {
390 : OSL_FAIL("no selection supplier in the beamer!");
391 1 : }
392 1 : }
393 1 : }
394 :
395 3845 : sal_uInt16 SwModule::GetRedlineAuthor()
396 : {
397 3845 : if (!bAuthorInitialised)
398 : {
399 56 : const SvtUserOptions& rOpt = GetUserOptions();
400 56 : sActAuthor = rOpt.GetFullName();
401 56 : if (sActAuthor.isEmpty())
402 : {
403 56 : sActAuthor = rOpt.GetID();
404 56 : if (sActAuthor.isEmpty())
405 56 : sActAuthor = SW_RESSTR( STR_REDLINE_UNKNOWN_AUTHOR );
406 : }
407 56 : bAuthorInitialised = true;
408 : }
409 3845 : return InsertRedlineAuthor( sActAuthor );
410 : }
411 :
412 2807 : void SwModule::SetRedlineAuthor(const OUString &rAuthor)
413 : {
414 2807 : bAuthorInitialised = true;
415 2807 : sActAuthor = rAuthor;
416 2807 : InsertRedlineAuthor( sActAuthor );
417 2807 : }
418 :
419 93 : OUString SwModule::GetRedlineAuthor(sal_uInt16 nPos)
420 : {
421 : OSL_ENSURE(nPos < pAuthorNames->size(), "author not found!"); //#i45342# RTF doc with no author table caused reader to crash
422 186 : while(!(nPos < pAuthorNames->size()))
423 : {
424 0 : InsertRedlineAuthor("nn");
425 : }
426 93 : return (*pAuthorNames)[nPos];
427 : }
428 :
429 9637 : sal_uInt16 SwModule::InsertRedlineAuthor(const OUString& rAuthor)
430 : {
431 9637 : sal_uInt16 nPos = 0;
432 :
433 34802 : while(nPos < pAuthorNames->size() && (*pAuthorNames)[nPos] != rAuthor)
434 15528 : ++nPos;
435 :
436 9637 : if (nPos == pAuthorNames->size())
437 136 : pAuthorNames->push_back(rAuthor);
438 :
439 9637 : return nPos;
440 : }
441 :
442 2142 : static void lcl_FillAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet,
443 : const AuthorCharAttr &rAttr )
444 : {
445 2142 : Color aCol( rAttr.nColor );
446 :
447 2142 : if( COL_TRANSPARENT == rAttr.nColor )
448 : {
449 : static const ColorData aColArr[] = {
450 : COL_AUTHOR1_DARK, COL_AUTHOR2_DARK, COL_AUTHOR3_DARK,
451 : COL_AUTHOR4_DARK, COL_AUTHOR5_DARK, COL_AUTHOR6_DARK,
452 : COL_AUTHOR7_DARK, COL_AUTHOR8_DARK, COL_AUTHOR9_DARK };
453 :
454 2142 : aCol.SetColor( aColArr[ nAuthor % (sizeof( aColArr ) /
455 2142 : sizeof( aColArr[0] )) ] );
456 : }
457 :
458 2142 : bool bBackGr = COL_NONE_COLOR == rAttr.nColor;
459 :
460 2142 : switch (rAttr.nItemId)
461 : {
462 : case SID_ATTR_CHAR_WEIGHT:
463 : {
464 518 : SvxWeightItem aW( (FontWeight)rAttr.nAttr, RES_CHRATR_WEIGHT );
465 518 : rSet.Put( aW );
466 518 : aW.SetWhich( RES_CHRATR_CJK_WEIGHT );
467 518 : rSet.Put( aW );
468 518 : aW.SetWhich( RES_CHRATR_CTL_WEIGHT );
469 518 : rSet.Put( aW );
470 : }
471 518 : break;
472 :
473 : case SID_ATTR_CHAR_POSTURE:
474 : {
475 0 : SvxPostureItem aP( (FontItalic)rAttr.nAttr, RES_CHRATR_POSTURE );
476 0 : rSet.Put( aP );
477 0 : aP.SetWhich( RES_CHRATR_CJK_POSTURE );
478 0 : rSet.Put( aP );
479 0 : aP.SetWhich( RES_CHRATR_CTL_POSTURE );
480 0 : rSet.Put( aP );
481 : }
482 0 : break;
483 :
484 : case SID_ATTR_CHAR_UNDERLINE:
485 : rSet.Put( SvxUnderlineItem( (FontUnderline)rAttr.nAttr,
486 496 : RES_CHRATR_UNDERLINE));
487 496 : break;
488 :
489 : case SID_ATTR_CHAR_STRIKEOUT:
490 : rSet.Put(SvxCrossedOutItem( (FontStrikeout)rAttr.nAttr,
491 1128 : RES_CHRATR_CROSSEDOUT));
492 1128 : break;
493 :
494 : case SID_ATTR_CHAR_CASEMAP:
495 : rSet.Put( SvxCaseMapItem( (SvxCaseMap)rAttr.nAttr,
496 0 : RES_CHRATR_CASEMAP));
497 0 : break;
498 :
499 : case SID_ATTR_BRUSH:
500 0 : rSet.Put( SvxBrushItem( aCol, RES_CHRATR_BACKGROUND ));
501 0 : bBackGr = true;
502 0 : break;
503 : }
504 :
505 2142 : if( !bBackGr )
506 2142 : rSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
507 2142 : }
508 :
509 496 : void SwModule::GetInsertAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
510 : {
511 496 : lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetInsertAuthorAttr());
512 496 : }
513 :
514 1128 : void SwModule::GetDeletedAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
515 : {
516 1128 : lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetDeletedAuthorAttr());
517 1128 : }
518 :
519 : // For future extension:
520 518 : void SwModule::GetFormatAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet )
521 : {
522 518 : lcl_FillAuthorAttr( nAuthor, rSet, pModuleConfig->GetFormatAuthorAttr() );
523 518 : }
524 :
525 26869084 : sal_uInt16 SwModule::GetRedlineMarkPos()
526 : {
527 26869084 : return pModuleConfig->GetMarkAlignMode();
528 : }
529 :
530 0 : bool SwModule::IsInsTableFormatNum(bool bHTML) const
531 : {
532 0 : return pModuleConfig->IsInsTableFormatNum(bHTML);
533 : }
534 :
535 0 : bool SwModule::IsInsTableChangeNumFormat(bool bHTML) const
536 : {
537 0 : return pModuleConfig->IsInsTableChangeNumFormat(bHTML);
538 : }
539 :
540 95 : bool SwModule::IsInsTableAlignNum(bool bHTML) const
541 : {
542 95 : return pModuleConfig->IsInsTableAlignNum(bHTML);
543 : }
544 :
545 1038 : const Color &SwModule::GetRedlineMarkColor()
546 : {
547 1038 : return pModuleConfig->GetMarkAlignColor();
548 : }
549 :
550 48517700 : const SwViewOption* SwModule::GetViewOption(bool bWeb)
551 : {
552 48517700 : return GetUsrPref( bWeb );
553 : }
554 :
555 5 : OUString SwModule::GetDocStatWordDelim() const
556 : {
557 5 : return pModuleConfig->GetWordDelimiter();
558 : }
559 :
560 : // Passing-through of the ModuleConfig's Metric (for HTML-Export)
561 295 : FieldUnit SwModule::GetMetric( bool bWeb ) const
562 : {
563 : SwMasterUsrPref* pPref;
564 295 : if(bWeb)
565 : {
566 1 : if(!pWebUsrPref)
567 0 : GetUsrPref(true);
568 1 : pPref = pWebUsrPref;
569 : }
570 : else
571 : {
572 294 : if(!pUsrPref)
573 0 : GetUsrPref(false);
574 294 : pPref = pUsrPref;
575 : }
576 295 : return pPref->GetMetric();
577 : }
578 :
579 : // Pass-through Update-Status
580 2165 : sal_uInt16 SwModule::GetLinkUpdMode( bool ) const
581 : {
582 2165 : if(!pUsrPref)
583 0 : GetUsrPref(false);
584 2165 : return (sal_uInt16)pUsrPref->GetUpdateLinkMode();
585 : }
586 :
587 5623 : SwFieldUpdateFlags SwModule::GetFieldUpdateFlags( bool ) const
588 : {
589 5623 : if(!pUsrPref)
590 13 : GetUsrPref(false);
591 5623 : return pUsrPref->GetFieldUpdateFlags();
592 : }
593 :
594 0 : void SwModule::ApplyFieldUpdateFlags(SwFieldUpdateFlags eFieldFlags)
595 : {
596 0 : if(!pUsrPref)
597 0 : GetUsrPref(false);
598 0 : pUsrPref->SetFieldUpdateFlags(eFieldFlags);
599 0 : }
600 :
601 0 : void SwModule::ApplyLinkMode(sal_Int32 nNewLinkMode)
602 : {
603 0 : if(!pUsrPref)
604 0 : GetUsrPref(false);
605 0 : pUsrPref->SetUpdateLinkMode(nNewLinkMode);
606 0 : }
607 :
608 5 : void SwModule::CheckSpellChanges( bool bOnlineSpelling,
609 : bool bIsSpellWrongAgain, bool bIsSpellAllAgain, bool bSmartTags )
610 : {
611 5 : bool bOnlyWrong = bIsSpellWrongAgain && !bIsSpellAllAgain;
612 5 : bool bInvalid = bOnlyWrong || bIsSpellAllAgain;
613 5 : if( bOnlineSpelling || bInvalid )
614 : {
615 5 : TypeId aType = TYPE(SwDocShell);
616 10 : for( SwDocShell *pDocSh = static_cast<SwDocShell*>(SfxObjectShell::GetFirst(&aType));
617 : pDocSh;
618 5 : pDocSh = static_cast<SwDocShell*>(SfxObjectShell::GetNext( *pDocSh, &aType ) ) )
619 : {
620 5 : SwDoc* pTmp = pDocSh->GetDoc();
621 5 : if ( pTmp->getIDocumentLayoutAccess().GetCurrentViewShell() )
622 : {
623 5 : pTmp->SpellItAgainSam( bInvalid, bOnlyWrong, bSmartTags );
624 5 : SwViewShell* pViewShell = pTmp->getIDocumentLayoutAccess().GetCurrentViewShell();
625 5 : if ( bSmartTags && pViewShell && pViewShell->GetWin() )
626 4 : pViewShell->GetWin()->Invalidate();
627 : }
628 : }
629 : }
630 5 : }
631 :
632 0 : void SwModule::ApplyDefaultPageMode(bool bIsSquaredPageMode)
633 : {
634 0 : if(!pUsrPref)
635 0 : GetUsrPref(false);
636 0 : pUsrPref->SetDefaultPageMode(bIsSquaredPageMode);
637 0 : }
638 :
639 0 : SvxCompareMode SwModule::GetCompareMode() const
640 : {
641 0 : return pModuleConfig->GetCompareMode();
642 : }
643 :
644 0 : bool SwModule::IsUseRsid() const
645 : {
646 0 : return pModuleConfig->IsUseRsid();
647 : }
648 :
649 0 : bool SwModule::IsIgnorePieces() const
650 : {
651 0 : return pModuleConfig->IsIgnorePieces();
652 : }
653 :
654 0 : sal_uInt16 SwModule::GetPieceLen() const
655 : {
656 0 : return pModuleConfig->GetPieceLen();
657 177 : }
658 :
659 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|