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 226 : 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 226 : bool bVScrollChanged = rPref.IsViewVScrollBar() != pSh->GetViewOptions()->IsViewVScrollBar();
76 226 : bool bHScrollChanged = rPref.IsViewHScrollBar() != pSh->GetViewOptions()->IsViewHScrollBar();
77 226 : bool bVAlignChanged = rPref.IsVRulerRight() != pSh->GetViewOptions()->IsVRulerRight();
78 :
79 226 : pSh->SetUIOptions(rPref);
80 226 : const SwViewOption* pNewPref = pSh->GetViewOptions();
81 :
82 : // Scrollbars on / off
83 226 : if(bVScrollChanged)
84 : {
85 6 : pView->EnableVScrollbar(pNewPref->IsViewVScrollBar());
86 : }
87 226 : if(bHScrollChanged)
88 : {
89 6 : pView->EnableHScrollbar( pNewPref->IsViewHScrollBar() || pNewPref->getBrowseMode() );
90 : }
91 : //if only the position of the vertical ruler has been changed initiate an update
92 226 : if(bVAlignChanged && !bHScrollChanged && !bVScrollChanged)
93 6 : pView->InvalidateBorder();
94 :
95 : // Rulers on / off
96 226 : if(pNewPref->IsViewVRuler())
97 106 : pView->CreateVRuler();
98 : else
99 120 : pView->KillVRuler();
100 :
101 : // TabWindow on / off
102 226 : if(pNewPref->IsViewHRuler())
103 98 : pView->CreateTab();
104 : else
105 128 : pView->KillTab();
106 :
107 226 : pView->GetPostItMgr()->PrepareView(true);
108 226 : }
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 175 : SwView* GetActiveView()
119 : {
120 175 : SfxViewShell* pView = SfxViewShell::Current();
121 175 : return PTR_CAST( SwView, pView );
122 : }
123 :
124 537 : SwView* SwModule::GetFirstView()
125 : {
126 : // returns only sivible SwView
127 537 : const TypeId aTypeId = TYPE(SwView);
128 537 : SwView* pView = (SwView*)SfxViewShell::GetFirst(&aTypeId);
129 537 : return pView;
130 : }
131 :
132 103 : SwView* SwModule::GetNextView(SwView* pView)
133 : {
134 : OSL_ENSURE(PTR_CAST(SwView, pView),"return no SwView");
135 103 : const TypeId aTypeId = TYPE(SwView);
136 103 : SwView* pNView = (SwView*)SfxViewShell::GetNext(*pView, &aTypeId, true);
137 103 : return pNView;
138 : }
139 :
140 : // New Master for the settings is set; this affects the current view and all following.
141 226 : void SwModule::ApplyUsrPref(const SwViewOption &rUsrPref, SwView* pActView,
142 : sal_uInt16 nDest )
143 : {
144 226 : SwView* pCurrView = pActView;
145 226 : SwViewShell* pSh = pCurrView ? &pCurrView->GetWrtShell() : 0;
146 :
147 : SwMasterUsrPref* pPref = (SwMasterUsrPref*)GetUsrPref(
148 : VIEWOPT_DEST_WEB == nDest ? true :
149 : VIEWOPT_DEST_TEXT== nDest ? false :
150 226 : pCurrView && pCurrView->ISA(SwWebView) );
151 :
152 : // with Uno, only sdbcx::View, but not the Module should be changed
153 226 : bool bViewOnly = VIEWOPT_DEST_VIEW_ONLY == nDest;
154 : // fob Preview off
155 : SwPagePreview* pPPView;
156 226 : 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 226 : if(!bViewOnly)
171 : {
172 0 : pPref->SetUsrPref( rUsrPref );
173 0 : pPref->SetModified();
174 : }
175 :
176 226 : if( !pCurrView )
177 0 : return;
178 :
179 : // Passing on to CORE
180 : bool bReadonly;
181 226 : const SwDocShell* pDocSh = pCurrView->GetDocShell();
182 226 : if (pDocSh)
183 226 : bReadonly = pDocSh->IsReadOnly();
184 : else //Use existing option if DocShell missing
185 0 : bReadonly = pSh->GetViewOptions()->IsReadonly();
186 226 : boost::scoped_ptr<SwViewOption> xViewOpt;
187 226 : if (!bViewOnly)
188 0 : xViewOpt.reset(new SwViewOption(*pPref));
189 : else
190 226 : xViewOpt.reset(new SwViewOption(rUsrPref));
191 226 : xViewOpt->SetReadonly( bReadonly );
192 226 : if( !(*pSh->GetViewOptions() == *xViewOpt) )
193 : {
194 : //is maybe only a SwViewShell
195 136 : pSh->StartAction();
196 136 : pSh->ApplyViewOptions( *xViewOpt );
197 136 : ((SwWrtShell*)pSh)->SetReadOnlyAvailable(xViewOpt->IsCursorInProtectedArea());
198 136 : pSh->EndAction();
199 : }
200 226 : if ( pSh->GetViewOptions()->IsReadonly() != bReadonly )
201 0 : pSh->SetReadonlyOption(bReadonly);
202 :
203 226 : lcl_SetUIPrefs(*xViewOpt, pCurrView, pSh);
204 :
205 : // in the end the Idle-Flag is set again
206 226 : 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 358 : SwNavigationConfig* SwModule::GetNavigationConfig()
341 : {
342 358 : if(!pNavigationConfig)
343 : {
344 4 : pNavigationConfig = new SwNavigationConfig;
345 : }
346 358 : return pNavigationConfig;
347 : }
348 :
349 4812 : SwPrintOptions* SwModule::GetPrtOptions(bool bWeb)
350 : {
351 4812 : if(bWeb && !pWebPrtOpt)
352 : {
353 2 : pWebPrtOpt = new SwPrintOptions(true);
354 : }
355 4810 : else if(!bWeb && !pPrtOpt)
356 : {
357 80 : pPrtOpt = new SwPrintOptions(false);
358 : }
359 :
360 4812 : 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 2 : void SwModule::ShowDBObj(SwView& rView, const SwDBData& rData, bool /*bOnlyIfAvailable*/)
371 : {
372 2 : Reference<XFrame> xFrame = rView.GetViewFrame()->GetFrame().GetFrameInterface();
373 4 : Reference<XDispatchProvider> xDP(xFrame, uno::UNO_QUERY);
374 :
375 4 : uno::Reference<XFrame> xBeamerFrame = xFrame->findFrame("_beamer", FrameSearchFlag::CHILDREN);
376 2 : if (xBeamerFrame.is())
377 : { // the beamer has been opened by the SfxViewFrame
378 2 : Reference<XController> xController = xBeamerFrame->getController();
379 4 : Reference<XSelectionSupplier> xControllerSelection(xController, UNO_QUERY);
380 2 : if (xControllerSelection.is())
381 : {
382 :
383 2 : ODataAccessDescriptor aSelection;
384 2 : aSelection.setDataSource(rData.sDataSource);
385 2 : aSelection[daCommand] <<= rData.sCommand;
386 2 : aSelection[daCommandType] <<= rData.nCommandType;
387 2 : xControllerSelection->select(makeAny(aSelection.createPropertyValueSequence()));
388 : }
389 : else {
390 : OSL_FAIL("no selection supplier in the beamer!");
391 2 : }
392 2 : }
393 2 : }
394 :
395 6872 : sal_uInt16 SwModule::GetRedlineAuthor()
396 : {
397 6872 : if (!bAuthorInitialised)
398 : {
399 84 : const SvtUserOptions& rOpt = GetUserOptions();
400 84 : sActAuthor = rOpt.GetFullName();
401 84 : if (sActAuthor.isEmpty())
402 : {
403 84 : sActAuthor = rOpt.GetID();
404 84 : if (sActAuthor.isEmpty())
405 84 : sActAuthor = SW_RESSTR( STR_REDLINE_UNKNOWN_AUTHOR );
406 : }
407 84 : bAuthorInitialised = true;
408 : }
409 6872 : return InsertRedlineAuthor( sActAuthor );
410 : }
411 :
412 5520 : void SwModule::SetRedlineAuthor(const OUString &rAuthor)
413 : {
414 5520 : bAuthorInitialised = true;
415 5520 : sActAuthor = rAuthor;
416 5520 : InsertRedlineAuthor( sActAuthor );
417 5520 : }
418 :
419 110 : 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 220 : while(!(nPos < pAuthorNames->size()))
423 : {
424 0 : InsertRedlineAuthor("nn");
425 : }
426 110 : return (*pAuthorNames)[nPos];
427 : }
428 :
429 18226 : sal_uInt16 SwModule::InsertRedlineAuthor(const OUString& rAuthor)
430 : {
431 18226 : sal_uInt16 nPos = 0;
432 :
433 67056 : while(nPos < pAuthorNames->size() && (*pAuthorNames)[nPos] != rAuthor)
434 30604 : ++nPos;
435 :
436 18226 : if (nPos == pAuthorNames->size())
437 238 : pAuthorNames->push_back(rAuthor);
438 :
439 18226 : return nPos;
440 : }
441 :
442 3908 : static void lcl_FillAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet,
443 : const AuthorCharAttr &rAttr )
444 : {
445 3908 : Color aCol( rAttr.nColor );
446 :
447 3908 : 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 3908 : aCol.SetColor( aColArr[ nAuthor % (sizeof( aColArr ) /
455 3908 : sizeof( aColArr[0] )) ] );
456 : }
457 :
458 3908 : bool bBackGr = COL_NONE_COLOR == rAttr.nColor;
459 :
460 3908 : switch (rAttr.nItemId)
461 : {
462 : case SID_ATTR_CHAR_WEIGHT:
463 : {
464 1036 : SvxWeightItem aW( (FontWeight)rAttr.nAttr, RES_CHRATR_WEIGHT );
465 1036 : rSet.Put( aW );
466 1036 : aW.SetWhich( RES_CHRATR_CJK_WEIGHT );
467 1036 : rSet.Put( aW );
468 1036 : aW.SetWhich( RES_CHRATR_CTL_WEIGHT );
469 1036 : rSet.Put( aW );
470 : }
471 1036 : 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 722 : RES_CHRATR_UNDERLINE));
487 722 : break;
488 :
489 : case SID_ATTR_CHAR_STRIKEOUT:
490 : rSet.Put(SvxCrossedOutItem( (FontStrikeout)rAttr.nAttr,
491 2150 : RES_CHRATR_CROSSEDOUT));
492 2150 : 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 3908 : if( !bBackGr )
506 3908 : rSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
507 3908 : }
508 :
509 722 : void SwModule::GetInsertAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
510 : {
511 722 : lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetInsertAuthorAttr());
512 722 : }
513 :
514 2150 : void SwModule::GetDeletedAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
515 : {
516 2150 : lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetDeletedAuthorAttr());
517 2150 : }
518 :
519 : // For future extension:
520 1036 : void SwModule::GetFormatAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet )
521 : {
522 1036 : lcl_FillAuthorAttr( nAuthor, rSet, pModuleConfig->GetFormatAuthorAttr() );
523 1036 : }
524 :
525 163622 : sal_uInt16 SwModule::GetRedlineMarkPos()
526 : {
527 163622 : return pModuleConfig->GetMarkAlignMode();
528 : }
529 :
530 0 : bool SwModule::IsInsTblFormatNum(bool bHTML) const
531 : {
532 0 : return pModuleConfig->IsInsTblFormatNum(bHTML);
533 : }
534 :
535 0 : bool SwModule::IsInsTblChangeNumFormat(bool bHTML) const
536 : {
537 0 : return pModuleConfig->IsInsTblChangeNumFormat(bHTML);
538 : }
539 :
540 154 : bool SwModule::IsInsTblAlignNum(bool bHTML) const
541 : {
542 154 : return pModuleConfig->IsInsTblAlignNum(bHTML);
543 : }
544 :
545 1643 : const Color &SwModule::GetRedlineMarkColor()
546 : {
547 1643 : return pModuleConfig->GetMarkAlignColor();
548 : }
549 :
550 1346 : const SwViewOption* SwModule::GetViewOption(bool bWeb)
551 : {
552 1346 : return GetUsrPref( bWeb );
553 : }
554 :
555 24 : OUString SwModule::GetDocStatWordDelim() const
556 : {
557 24 : return pModuleConfig->GetWordDelimiter();
558 : }
559 :
560 : // Passing-through of the ModuleConfig's Metric (for HTML-Export)
561 254 : FieldUnit SwModule::GetMetric( bool bWeb ) const
562 : {
563 : SwMasterUsrPref* pPref;
564 254 : if(bWeb)
565 : {
566 2 : if(!pWebUsrPref)
567 0 : GetUsrPref(true);
568 2 : pPref = pWebUsrPref;
569 : }
570 : else
571 : {
572 252 : if(!pUsrPref)
573 0 : GetUsrPref(false);
574 252 : pPref = pUsrPref;
575 : }
576 254 : return pPref->GetMetric();
577 : }
578 :
579 : // Pass-through Update-Status
580 3728 : sal_uInt16 SwModule::GetLinkUpdMode( bool ) const
581 : {
582 3728 : if(!pUsrPref)
583 0 : GetUsrPref(false);
584 3728 : return (sal_uInt16)pUsrPref->GetUpdateLinkMode();
585 : }
586 :
587 482 : SwFldUpdateFlags SwModule::GetFldUpdateFlags( bool ) const
588 : {
589 482 : if(!pUsrPref)
590 20 : GetUsrPref(false);
591 482 : return pUsrPref->GetFldUpdateFlags();
592 : }
593 :
594 0 : void SwModule::ApplyFldUpdateFlags(SwFldUpdateFlags eFldFlags)
595 : {
596 0 : if(!pUsrPref)
597 0 : GetUsrPref(false);
598 0 : pUsrPref->SetFldUpdateFlags(eFldFlags);
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 9 : void SwModule::CheckSpellChanges( bool bOnlineSpelling,
609 : bool bIsSpellWrongAgain, bool bIsSpellAllAgain, bool bSmartTags )
610 : {
611 9 : bool bOnlyWrong = bIsSpellWrongAgain && !bIsSpellAllAgain;
612 9 : bool bInvalid = bOnlyWrong || bIsSpellAllAgain;
613 9 : if( bOnlineSpelling || bInvalid )
614 : {
615 9 : TypeId aType = TYPE(SwDocShell);
616 18 : for( SwDocShell *pDocSh = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
617 : pDocSh;
618 9 : pDocSh = (SwDocShell*)SfxObjectShell::GetNext( *pDocSh, &aType ) )
619 : {
620 9 : SwDoc* pTmp = pDocSh->GetDoc();
621 9 : if ( pTmp->getIDocumentLayoutAccess().GetCurrentViewShell() )
622 : {
623 9 : pTmp->SpellItAgainSam( bInvalid, bOnlyWrong, bSmartTags );
624 9 : SwViewShell* pViewShell = pTmp->getIDocumentLayoutAccess().GetCurrentViewShell();
625 9 : if ( bSmartTags && pViewShell && pViewShell->GetWin() )
626 8 : pViewShell->GetWin()->Invalidate();
627 : }
628 : }
629 : }
630 9 : }
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 270 : }
658 :
659 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|