Add a comment to clarify what kind of inputs the class handles
[LibreOffice.git] / sw / source / uibase / config / viewopt.cxx
blob162d6a103d66ac7a88214d03dd9bdeb784dfe835
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include <sfx2/htmlmode.hxx>
21 #include <svtools/htmlcfg.hxx>
23 #include <editeng/editids.hrc>
24 #include <editeng/svxacorr.hxx>
25 #include <officecfg/Office/Common.hxx>
26 #include <unotools/localedatawrapper.hxx>
27 #include <vcl/outdev.hxx>
28 #include <swmodule.hxx>
29 #include <viewopt.hxx>
30 #include <wdocsh.hxx>
31 #include <swrect.hxx>
32 #include <viewsh.hxx>
33 #include <view.hxx>
34 #include <wrtsh.hxx>
35 #include <crstate.hxx>
36 #include <authratr.hxx>
37 #include <svtools/colorcfg.hxx>
38 #include <unotools/syslocale.hxx>
40 #include <editeng/acorrcfg.hxx>
41 #include <comphelper/lok.hxx>
42 #include <comphelper/configurationlistener.hxx>
44 SwViewColors SwViewOption::s_aInitialColorConfig {};
46 SwViewColors::SwViewColors() :
47 m_aDocColor(COL_LIGHTGRAY),
48 m_aDocBoundColor(COL_LIGHTGRAY),
49 m_aAppBackgroundColor(COL_LIGHTGRAY),
50 m_aTableBoundColor(COL_LIGHTGRAY),
51 m_aFontColor(COL_BLACK),
52 m_aIndexShadingsColor(COL_LIGHTGRAY),
53 m_aLinksColor(COL_BLUE),
54 m_aVisitedLinksColor(COL_RED),
55 m_aTextGridColor(COL_LIGHTGRAY),
56 m_aSpellColor(COL_LIGHTRED),
57 m_aGrammarColor(COL_LIGHTBLUE),
58 m_aSmarttagColor(COL_LIGHTMAGENTA),
59 m_aFieldShadingsColor(COL_LIGHTGRAY),
60 m_aSectionBoundColor(COL_LIGHTGRAY),
61 m_aPageBreakColor(COL_BLUE),
62 m_aNonPrintingCharacterColor(Color(0x268bd2)),
63 m_aScriptIndicatorColor(COL_GREEN),
64 m_aShadowColor(COL_GRAY),
65 m_aHeaderFooterMarkColor(COL_BLUE),
66 m_nAppearanceFlags(ViewOptFlags::NONE)
69 SwViewColors::SwViewColors(const svtools::ColorConfig& rConfig)
71 m_aDocColor = rConfig.GetColorValue(svtools::DOCCOLOR).nColor;
73 m_aDocBoundColor = rConfig.GetColorValue(svtools::DOCBOUNDARIES).nColor;
74 m_nAppearanceFlags = ViewOptFlags::NONE;
75 m_aAppBackgroundColor = rConfig.GetColorValue(svtools::APPBACKGROUND).nColor;
76 m_aTableBoundColor = rConfig.GetColorValue(svtools::TABLEBOUNDARIES).nColor;
78 svtools::ColorConfigValue aValue;
80 aValue = rConfig.GetColorValue(svtools::WRITERIDXSHADINGS);
81 m_aIndexShadingsColor = aValue.nColor;
82 if(aValue.bIsVisible)
83 m_nAppearanceFlags |= ViewOptFlags::IndexShadings;
85 aValue = rConfig.GetColorValue(svtools::LINKS);
86 m_aLinksColor = aValue.nColor;
87 if(aValue.bIsVisible)
88 m_nAppearanceFlags |= ViewOptFlags::Links;
90 aValue = rConfig.GetColorValue(svtools::LINKSVISITED);
91 m_aVisitedLinksColor = aValue.nColor;
92 if(aValue.bIsVisible)
93 m_nAppearanceFlags |= ViewOptFlags::VisitedLinks;
95 aValue = rConfig.GetColorValue(svtools::SHADOWCOLOR);
96 m_aShadowColor = aValue.nColor;
97 if(aValue.bIsVisible)
98 m_nAppearanceFlags |= ViewOptFlags::Shadow;
100 m_aTextGridColor = rConfig.GetColorValue(svtools::WRITERTEXTGRID).nColor;
102 m_aSpellColor = rConfig.GetColorValue(svtools::SPELL).nColor;
103 m_aGrammarColor = rConfig.GetColorValue(svtools::GRAMMAR).nColor;
105 m_aSmarttagColor = rConfig.GetColorValue(svtools::SMARTTAGS).nColor;
107 m_aFontColor = rConfig.GetColorValue(svtools::FONTCOLOR).nColor;
109 aValue = rConfig.GetColorValue(svtools::WRITERFIELDSHADINGS);
110 m_aFieldShadingsColor = aValue.nColor;
111 // as in initializeForTiledRendering we don't want to enable
112 // field shadings for the online case
113 if (aValue.bIsVisible && !comphelper::LibreOfficeKit::isActive())
114 m_nAppearanceFlags |= ViewOptFlags::FieldShadings;
116 m_aSectionBoundColor = rConfig.GetColorValue(svtools::WRITERSECTIONBOUNDARIES).nColor;
118 aValue = rConfig.GetColorValue(svtools::WRITERPAGEBREAKS);
119 m_aPageBreakColor = aValue.nColor;
121 aValue = rConfig.GetColorValue(svtools::WRITERNONPRINTCHARS);
122 m_aNonPrintingCharacterColor = aValue.nColor;
124 aValue = rConfig.GetColorValue(svtools::WRITERHEADERFOOTERMARK);
125 m_aHeaderFooterMarkColor = aValue.nColor;
127 m_aScriptIndicatorColor = rConfig.GetColorValue(svtools::WRITERSCRIPTINDICATOR).nColor;
130 bool SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
132 return m_nCoreOptions == rOpt.m_nCoreOptions
133 && m_nCore2Options == rOpt.m_nCore2Options
134 && m_aSnapSize == rOpt.m_aSnapSize
135 && mnViewLayoutColumns == rOpt.mnViewLayoutColumns
136 && m_nDivisionX == rOpt.GetDivisionX()
137 && m_nDivisionY == rOpt.GetDivisionY()
138 && m_nPagePreviewRow == rOpt.GetPagePrevRow()
139 && m_nPagePreviewCol == rOpt.GetPagePrevCol()
140 && m_aRetouchColor == rOpt.GetRetoucheColor()
141 && mbFormView == rOpt.IsFormView()
142 && mbBrowseMode == rOpt.getBrowseMode()
143 && mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode
144 && mbHideWhitespaceMode == rOpt.mbHideWhitespaceMode
145 && m_bShowPlaceHolderFields == rOpt.m_bShowPlaceHolderFields
146 && m_bIdle == rOpt.m_bIdle
147 && m_nDefaultAnchor == rOpt.m_nDefaultAnchor
148 #ifdef DBG_UTIL
149 // correspond to the statements in ui/config/cfgvw.src
150 && m_bTest1 == rOpt.IsTest1()
151 && m_bTest2 == rOpt.IsTest2()
152 && m_bTest3 == rOpt.IsTest3()
153 && m_bTest4 == rOpt.IsTest4()
154 && m_bTest5 == rOpt.IsTest5()
155 && m_bTest6 == rOpt.IsTest6()
156 && m_bTest7 == rOpt.IsTest7()
157 && m_bTest8 == rOpt.IsTest8()
158 && m_bTest10 == rOpt.IsTest10()
159 #endif
163 bool SwViewOption::IsShowOutlineContentVisibilityButton() const
165 return m_nCoreOptions.bShowOutlineContentVisibilityButton;
168 bool SwViewOption::IsTreatSubOutlineLevelsAsContent() const
170 return m_nCoreOptions.bTreatSubOutlineLevelsAsContent;
173 void SwViewOption::DrawRect( OutputDevice *pOut,
174 const SwRect &rRect, ::Color nCol )
176 if ( pOut->GetOutDevType() != OUTDEV_PRINTER )
178 const Color aCol( nCol );
179 const Color aOldColor( pOut->GetFillColor() );
180 pOut->SetFillColor( aCol );
181 pOut->DrawRect( rRect.SVRect() );
182 pOut->SetFillColor( aOldColor );
184 else
185 DrawRectPrinter( pOut, rRect );
188 void SwViewOption::DrawRectPrinter( OutputDevice *pOut,
189 const SwRect &rRect )
191 Color aOldColor(pOut->GetLineColor());
192 Color aOldFillColor( pOut->GetFillColor() );
193 pOut->SetLineColor( COL_BLACK );
194 pOut->SetFillColor( COL_TRANSPARENT);
195 pOut->DrawRect( rRect.SVRect() );
196 pOut->SetFillColor( aOldFillColor );
197 pOut->SetLineColor( aOldColor );
200 SwTwips SwViewOption::GetPostItsWidth(const OutputDevice* pOut)
202 assert(pOut && "no Outdev");
203 return pOut->GetTextWidth(u" "_ustr);
206 void SwViewOption::PaintPostIts( OutputDevice *pOut, const SwRect &rRect, bool bIsScript ) const
208 if( !(pOut && bIsScript) )
209 return;
211 Color aOldLineColor( pOut->GetLineColor() );
212 pOut->SetLineColor( COL_GRAY );
213 // to make it look nice, we subtract two pixels everywhere
214 SwTwips nPix = o3tl::narrowing<sal_uInt16>(pOut->PixelToLogic( Size(1,1) ).Height()) * 2;
215 if( rRect.Width() <= 2 * nPix || rRect.Height() <= 2 * nPix )
216 nPix = 0;
217 const Point aTopLeft( rRect.Left() + nPix, rRect.Top() + nPix );
218 const Point aBotRight( rRect.Right() - nPix, rRect.Bottom() - nPix );
219 const SwRect aRect( aTopLeft, aBotRight );
220 DrawRect( pOut, aRect, m_aColorConfig.m_aScriptIndicatorColor );
221 pOut->SetLineColor( aOldLineColor );
224 SwViewOption::SwViewOption() :
225 m_sThemeName( u"Default"_ustr ),
226 m_sSymbolFont( u"symbol"_ustr ),
227 m_aRetouchColor( COL_TRANSPARENT ),
228 mnViewLayoutColumns( 0 ),
229 m_nPagePreviewRow( 1 ),
230 m_nPagePreviewCol( 2 ),
231 m_nShadowCursorFillMode( SwFillMode::Tab ),
232 m_bReadonly(false),
233 m_bStarOneSetting(false),
234 m_bIsPagePreview(false),
235 m_bSelectionInReadonly(false),
236 mbFormView(false),
237 mbBrowseMode(false),
238 mbBookView(false),
239 mbViewLayoutBookMode(false),
240 mbHideWhitespaceMode(false),
241 m_bShowPlaceHolderFields( true ),
242 m_bEncloseWithCharactersOn( true ),
243 m_nZoom( 100 ),
244 m_eZoom( SvxZoomType::PERCENT ),
245 m_nTableDestination(TBL_DEST_CELL)
247 m_nCore2Options =
248 ViewOptCoreFlags2::BlackFont |
249 ViewOptCoreFlags2::HiddenPara;
251 m_nUIOptions =
252 ViewOptFlags2::Modified |
253 ViewOptFlags2::GrfKeepZoom |
254 ViewOptFlags2::ResolvedPostits |
255 ViewOptFlags2::AnyRuler;
257 if (!comphelper::IsFuzzing() && MeasurementSystem::Metric != SvtSysLocale().GetLocaleData().getMeasurementSystemEnum())
259 m_aSnapSize.setWidth(720); // 1/2"
260 m_aSnapSize.setHeight(720); // 1/2"
263 else
265 m_aSnapSize.setWidth(567); // 1 cm
266 m_aSnapSize.setHeight(567); // 1 cm
268 m_nDivisionX = m_nDivisionY = 1;
270 m_bSelectionInReadonly = officecfg::Office::Common::Accessibility::IsSelectionInReadonly::get();
272 m_bIdle = true;
274 m_nDefaultAnchor = 1; //FLY_TO_CHAR
276 // tdf#135266 - tox dialog: remember last used entry level depending on the index type
277 m_nTocEntryLvl = 0;
278 m_nIdxEntryLvl = 1;
280 #ifdef DBG_UTIL
281 // correspond to the statements in ui/config/cfgvw.src
282 m_bTest1 = m_bTest2 = m_bTest3 = m_bTest4 =
283 m_bTest5 = m_bTest6 = m_bTest7 = m_bTest8 = m_bTest10 = false;
284 #endif
285 m_aColorConfig = s_aInitialColorConfig;
286 if (comphelper::LibreOfficeKit::isActive())
287 m_aColorConfig.m_aAppBackgroundColor = COL_TRANSPARENT;
290 SwViewOption::SwViewOption(const SwViewOption& rVOpt)
292 m_bReadonly = false;
293 m_bSelectionInReadonly = false;
294 // #114856# Form view
295 m_sThemeName = rVOpt.m_sThemeName;
296 mbFormView = rVOpt.mbFormView;
297 m_nZoom = rVOpt.m_nZoom ;
298 m_aSnapSize = rVOpt.m_aSnapSize ;
299 mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
300 m_nDivisionX = rVOpt.m_nDivisionX ;
301 m_nDivisionY = rVOpt.m_nDivisionY ;
302 m_nPagePreviewRow = rVOpt.m_nPagePreviewRow;
303 m_nPagePreviewCol = rVOpt.m_nPagePreviewCol;
304 m_bIsPagePreview = rVOpt.m_bIsPagePreview;
305 m_eZoom = rVOpt.m_eZoom ;
306 m_nTableDestination = rVOpt.m_nTableDestination ;
307 m_nUIOptions = rVOpt.m_nUIOptions ;
308 m_nCoreOptions = rVOpt.m_nCoreOptions ;
309 m_nCore2Options = rVOpt.m_nCore2Options ;
310 m_aRetouchColor = rVOpt.GetRetoucheColor();
311 m_sSymbolFont = rVOpt.m_sSymbolFont;
312 m_nShadowCursorFillMode = rVOpt.m_nShadowCursorFillMode;
313 m_bStarOneSetting = rVOpt.m_bStarOneSetting;
314 mbBookView = rVOpt.mbBookView;
315 mbBrowseMode = rVOpt.mbBrowseMode;
316 mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
317 mbHideWhitespaceMode = rVOpt.mbHideWhitespaceMode;
318 m_bShowPlaceHolderFields = rVOpt.m_bShowPlaceHolderFields;
319 m_bEncloseWithCharactersOn = rVOpt.m_bEncloseWithCharactersOn;
320 m_bIdle = rVOpt.m_bIdle;
321 m_nDefaultAnchor = rVOpt.m_nDefaultAnchor;
322 m_nTocEntryLvl = rVOpt.m_nTocEntryLvl;
323 m_nIdxEntryLvl = rVOpt.m_nIdxEntryLvl;
324 m_aColorConfig = rVOpt.m_aColorConfig;
326 #ifdef DBG_UTIL
327 m_bTest1 = rVOpt.m_bTest1;
328 m_bTest2 = rVOpt.m_bTest2;
329 m_bTest3 = rVOpt.m_bTest3;
330 m_bTest4 = rVOpt.m_bTest4;
331 m_bTest5 = rVOpt.m_bTest5;
332 m_bTest6 = rVOpt.m_bTest6;
333 m_bTest7 = rVOpt.m_bTest7;
334 m_bTest8 = rVOpt.m_bTest8;
335 m_bTest10 = rVOpt.m_bTest10;
336 #endif
339 SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
341 // #114856# Form view
342 m_sThemeName = rVOpt.m_sThemeName;
343 mbFormView = rVOpt.mbFormView ;
344 m_nZoom = rVOpt.m_nZoom ;
345 m_aSnapSize = rVOpt.m_aSnapSize ;
346 mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
347 m_nDivisionX = rVOpt.m_nDivisionX ;
348 m_nDivisionY = rVOpt.m_nDivisionY ;
349 m_nPagePreviewRow = rVOpt.m_nPagePreviewRow;
350 m_nPagePreviewCol = rVOpt.m_nPagePreviewCol;
351 m_bIsPagePreview = rVOpt.m_bIsPagePreview;
352 m_eZoom = rVOpt.m_eZoom ;
353 m_nTableDestination = rVOpt.m_nTableDestination ;
354 m_nUIOptions = rVOpt.m_nUIOptions ;
355 m_nCoreOptions = rVOpt.m_nCoreOptions;
356 m_nCore2Options = rVOpt.m_nCore2Options;
357 m_aRetouchColor = rVOpt.GetRetoucheColor();
358 m_sSymbolFont = rVOpt.m_sSymbolFont;
359 m_nShadowCursorFillMode = rVOpt.m_nShadowCursorFillMode;
360 m_bStarOneSetting = rVOpt.m_bStarOneSetting;
361 mbBookView = rVOpt.mbBookView;
362 mbBrowseMode = rVOpt.mbBrowseMode;
363 mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
364 mbHideWhitespaceMode = rVOpt.mbHideWhitespaceMode;
365 m_bShowPlaceHolderFields = rVOpt.m_bShowPlaceHolderFields;
366 m_bEncloseWithCharactersOn = rVOpt.m_bEncloseWithCharactersOn;
367 m_bIdle = rVOpt.m_bIdle;
368 m_nDefaultAnchor = rVOpt.m_nDefaultAnchor;
369 m_aColorConfig = rVOpt.m_aColorConfig;
371 #ifdef DBG_UTIL
372 m_bTest1 = rVOpt.m_bTest1;
373 m_bTest2 = rVOpt.m_bTest2;
374 m_bTest3 = rVOpt.m_bTest3;
375 m_bTest4 = rVOpt.m_bTest4;
376 m_bTest5 = rVOpt.m_bTest5;
377 m_bTest6 = rVOpt.m_bTest6;
378 m_bTest7 = rVOpt.m_bTest7;
379 m_bTest8 = rVOpt.m_bTest8;
380 m_bTest10 = rVOpt.m_bTest10;
381 #endif
382 return *this;
385 SwViewOption::~SwViewOption()
389 bool SwViewOption::IsAutoCompleteWords()
391 const SvxSwAutoFormatFlags& rFlags = SvxAutoCorrCfg::Get().GetAutoCorrect()->GetSwFlags();
392 return rFlags.bAutoCmpltCollectWords;
395 AuthorCharAttr::AuthorCharAttr() :
396 m_nItemId (SID_ATTR_CHAR_UNDERLINE),
397 m_nAttr (LINESTYLE_SINGLE),
398 m_nColor (COL_TRANSPARENT)
402 sal_uInt16 GetHtmlMode(const SwDocShell* pShell)
404 sal_uInt16 nRet = 0;
405 if(!pShell || dynamic_cast<const SwWebDocShell*>( pShell) )
407 nRet = HTMLMODE_ON | HTMLMODE_SOME_STYLES;
408 switch ( SvxHtmlOptions::GetExportMode() )
410 case HTML_CFG_MSIE:
411 nRet |= HTMLMODE_FULL_STYLES;
412 break;
413 case HTML_CFG_NS40:
414 // no special features for this browser
415 break;
416 case HTML_CFG_WRITER:
417 nRet |= HTMLMODE_FULL_STYLES;
418 break;
421 return nRet;
424 RndStdIds SwViewOption::GetDefaultAnchorType() const
426 switch ( m_nDefaultAnchor )
428 case 0:
429 return RndStdIds::FLY_AT_PARA; //0
430 case 1:
431 return RndStdIds::FLY_AT_CHAR; //4
432 case 2:
433 return RndStdIds::FLY_AS_CHAR; //1
434 default:
435 return RndStdIds::FLY_AT_CHAR; //4
436 }//switch
439 const Color& SwViewOption::GetDocColor() const
441 return m_aColorConfig.m_aDocColor;
444 const Color& SwViewOption::GetDocBoundariesColor() const
446 return m_aColorConfig.m_aDocBoundColor;
449 const Color& SwViewOption::GetAppBackgroundColor() const
451 return m_aColorConfig.m_aAppBackgroundColor;
454 const Color& SwViewOption::GetTableBoundariesColor() const
456 return m_aColorConfig.m_aTableBoundColor;
459 const Color& SwViewOption::GetIndexShadingsColor() const
461 return m_aColorConfig.m_aIndexShadingsColor;
464 const Color& SwViewOption::GetLinksColor() const
466 return m_aColorConfig.m_aLinksColor;
469 const Color& SwViewOption::GetVisitedLinksColor() const
471 return m_aColorConfig.m_aVisitedLinksColor;
474 const Color& SwViewOption::GetTextGridColor() const
476 return m_aColorConfig.m_aTextGridColor;
479 const Color& SwViewOption::GetSpellColor() const
481 return m_aColorConfig.m_aSpellColor;
484 const Color& SwViewOption::GetGrammarColor() const
486 return m_aColorConfig.m_aGrammarColor;
489 const Color& SwViewOption::GetSmarttagColor() const
491 return m_aColorConfig.m_aSmarttagColor;
494 const Color& SwViewOption::GetShadowColor() const
496 return m_aColorConfig.m_aShadowColor;
499 const Color& SwViewOption::GetFontColor() const
501 return m_aColorConfig.m_aFontColor;
504 const Color& SwViewOption::GetFieldShadingsColor() const
506 return m_aColorConfig.m_aFieldShadingsColor;
509 const Color& SwViewOption::GetSectionBoundColor() const
511 return m_aColorConfig.m_aSectionBoundColor;
514 const Color& SwViewOption::GetPageBreakColor() const
516 return m_aColorConfig.m_aPageBreakColor;
519 const Color& SwViewOption::GetNonPrintingCharacterColor() const
521 return m_aColorConfig.m_aNonPrintingCharacterColor;
524 const Color& SwViewOption::GetHeaderFooterMarkColor() const
526 return m_aColorConfig.m_aHeaderFooterMarkColor;
529 void SwViewOption::SetAppearanceFlag(ViewOptFlags nFlag, bool bSet, bool bSaveInConfig )
531 if(bSet)
532 m_aColorConfig.m_nAppearanceFlags |= nFlag;
533 else
534 m_aColorConfig.m_nAppearanceFlags &= ~nFlag;
535 if(!bSaveInConfig)
536 return;
538 //create an editable svtools::ColorConfig and store the change
539 svtools::EditableColorConfig aEditableConfig;
540 struct FlagToConfig_Impl
542 ViewOptFlags nFlag;
543 svtools::ColorConfigEntry eEntry;
545 static const FlagToConfig_Impl aFlags[] =
547 { ViewOptFlags::IndexShadings , svtools::WRITERIDXSHADINGS },
548 { ViewOptFlags::Links , svtools::LINKS },
549 { ViewOptFlags::VisitedLinks , svtools::LINKSVISITED },
550 { ViewOptFlags::FieldShadings , svtools::WRITERFIELDSHADINGS },
551 { ViewOptFlags::Shadow , svtools::SHADOWCOLOR },
553 for (auto& item : aFlags)
555 if (nFlag & item.nFlag)
557 svtools::ColorConfigValue aValue = aEditableConfig.GetColorValue(item.eEntry);
558 aValue.bIsVisible = bSet;
559 aEditableConfig.SetColorValue(item.eEntry, aValue);
564 bool SwViewOption::IsAppearanceFlag(ViewOptFlags nFlag) const
566 return bool(m_aColorConfig.m_nAppearanceFlags & nFlag);
569 namespace{
570 rtl::Reference<comphelper::ConfigurationListener> const & getWCOptionListener()
572 static rtl::Reference<comphelper::ConfigurationListener> xListener(new comphelper::ConfigurationListener(u"/org.openoffice.Office.Writer/Cursor/Option"_ustr));
573 return xListener;
577 bool SwViewOption::IsIgnoreProtectedArea()
579 if (comphelper::IsFuzzing())
580 return false;
581 static comphelper::ConfigurationListenerProperty<bool> gIgnoreProtectedArea(getWCOptionListener(), u"IgnoreProtectedArea"_ustr);
582 return gIgnoreProtectedArea.get();
585 void SwViewOption::SyncLayoutRelatedViewOptions(const SwViewOption& rOpt)
587 SetFieldName(rOpt.IsFieldName());
588 SetShowHiddenField(rOpt.IsShowHiddenField());
589 SetShowHiddenPara(rOpt.IsShowHiddenPara());
590 SetShowHiddenChar(rOpt.IsShowHiddenChar());
591 SetViewLayoutBookMode(rOpt.IsViewLayoutBookMode());
592 SetHideWhitespaceMode(rOpt.IsHideWhitespaceMode());
593 SetViewLayoutColumns(rOpt.GetViewLayoutColumns());
594 SetPostIts(rOpt.IsPostIts());
597 const SwViewOption& SwViewOption::GetCurrentViewOptions()
599 SfxViewShell* pCurrentShell = SfxViewShell::Current();
600 SwView* pView = dynamic_cast<SwView*>(pCurrentShell);
601 if(pView)
603 return *pView->GetWrtShell().GetViewOptions();
606 // Some unit tests don't have a SfxViewShell, so we need to return something
607 static SwViewOption aDefaultViewOptions;
608 return aDefaultViewOptions;
611 void SwViewOption::dumpAsXml(xmlTextWriterPtr pWriter) const
613 (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SwViewOption"));
614 m_nCoreOptions.dumpAsXml(pWriter);
615 (void)xmlTextWriterEndElement(pWriter);
618 void ViewOptFlags1::dumpAsXml(xmlTextWriterPtr pWriter) const
620 (void)xmlTextWriterStartElement(pWriter, BAD_CAST("ViewOptFlags1"));
621 (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("view-metachars"), "%s",
622 BAD_CAST(OString::boolean(bViewMetachars).getStr()));
623 (void)xmlTextWriterEndElement(pWriter);
626 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */