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 <config_features.h>
21
22 #include <sal/config.h>
23 #include <sal/log.hxx>
24
25 #include <utility>
26
27 #include <o3tl/any.hxx>
28 #include <sfx2/sfxbasecontroller.hxx>
29 #include "SwXDocumentSettings.hxx"
30 #include <comphelper/MasterPropertySetInfo.hxx>
31 #include <cppuhelper/queryinterface.hxx>
32 #include <cppuhelper/supportsservice.hxx>
33 #include <com/sun/star/beans/PropertyAttribute.hpp>
34 #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
35 #include <com/sun/star/document/PrinterIndependentLayout.hpp>
36 #include <doc.hxx>
37 #include <IDocumentSettingAccess.hxx>
38 #include <IDocumentDeviceAccess.hxx>
39 #include <IDocumentRedlineAccess.hxx>
40 #include <docsh.hxx>
41 #include <fldupde.hxx>
42 #include <linkenum.hxx>
43 #include <sfx2/printer.hxx>
44 #include <editsh.hxx>
45 #include <drawdoc.hxx>
46 #include <svl/zforlist.hxx>
47 #include <unotxdoc.hxx>
48 #include <cmdid.h>
49 #include <sfx2/zoomitem.hxx>
50 #include <unomod.hxx>
51 #include <vcl/svapp.hxx>
52 #include <svl/asiancfg.hxx>
53 #include <tools/stream.hxx>
54
55 #include <swmodule.hxx>
56 #include <cfgitems.hxx>
57 #include <prtopt.hxx>
58 #include <dbmgr.hxx>
59
60 using namespace comphelper;
61 using namespace ::com::sun::star;
62 using namespace ::com::sun::star::uno;
63 using namespace ::com::sun::star::beans;
64 using namespace ::com::sun::star::lang;
65 using namespace ::com::sun::star::i18n;
66
67 enum SwDocumentSettingsPropertyHandles
68 {
69 HANDLE_FORBIDDEN_CHARS,
70 HANDLE_LINK_UPDATE_MODE,
71 HANDLE_FIELD_AUTO_UPDATE,
72 HANDLE_CHART_AUTO_UPDATE,
73 HANDLE_ADD_PARA_TABLE_SPACING,
74 HANDLE_ADD_PARA_TABLE_SPACING_AT_START,
75 HANDLE_ALIGN_TAB_STOP_POSITION,
76 HANDLE_PRINTER_NAME,
77 HANDLE_PRINTER_SETUP,
78 HANDLE_PRINTER_PAPER,
79 HANDLE_IS_KERN_ASIAN_PUNCTUATION,
80 HANDLE_CHARACTER_COMPRESSION_TYPE,
81 HANDLE_APPLY_USER_DATA,
82 HANDLE_SAVE_THUMBNAIL,
83 HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS,
84 HANDLE_CURRENT_DATABASE_DATA_SOURCE,
85 HANDLE_CURRENT_DATABASE_COMMAND,
86 HANDLE_CURRENT_DATABASE_COMMAND_TYPE,
87 HANDLE_EMBEDDED_DATABASE_NAME,
88 HANDLE_SAVE_VERSION_ON_CLOSE,
89 HANDLE_UPDATE_FROM_TEMPLATE,
90 HANDLE_PRINTER_INDEPENDENT_LAYOUT,
91 HANDLE_IS_LABEL_DOC,
92 HANDLE_IS_ADD_FLY_OFFSET,
93 HANDLE_IS_ADD_VERTICAL_FLY_OFFSET,
94 HANDLE_IS_ADD_EXTERNAL_LEADING,
95 HANDLE_OLD_NUMBERING,
96 HANDLE_OUTLINELEVEL_YIELDS_NUMBERING,
97 /* Stampit It disable the print cancel button of the shown progress dialog. */
98 HANDLE_ALLOW_PRINTJOB_CANCEL,
99 HANDLE_USE_FORMER_LINE_SPACING,
100 HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS,
101 HANDLE_ADD_PARA_LINE_SPACING_TO_TABLE_CELLS,
102 HANDLE_USE_FORMER_OBJECT_POSITIONING,
103 HANDLE_USE_FORMER_TEXT_WRAPPING,
104 HANDLE_CHANGES_PASSWORD,
105 HANDLE_CONSIDER_WRAP_ON_OBJPOS,
106 HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
107 HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
108 HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
109 HANDLE_TABLE_ROW_KEEP,
110 HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,
111 HANDLE_LOAD_READONLY,
112 HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE,
113 HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES,
114 HANDLE_UNIX_FORCE_ZERO_EXT_LEADING,
115 HANDLE_USE_OLD_PRINTER_METRICS,
116 HANDLE_PROTECT_FORM,
117 HANDLE_MS_WORD_COMP_TRAILING_BLANKS,
118 HANDLE_MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY,
119 HANDLE_TABS_RELATIVE_TO_INDENT,
120 HANDLE_RSID,
121 HANDLE_RSID_ROOT,
122 HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
123 HANDLE_MODIFYPASSWORDINFO,
124 HANDLE_MATH_BASELINE_ALIGNMENT,
125 HANDLE_INVERT_BORDER_SPACING,
126 HANDLE_COLLAPSE_EMPTY_CELL_PARA,
127 HANDLE_SMALL_CAPS_PERCENTAGE_66,
128 HANDLE_TAB_OVERFLOW,
129 HANDLE_UNBREAKABLE_NUMBERINGS,
130 HANDLE_STYLES_NODEFAULT,
131 HANDLE_FLOATTABLE_NOMARGINS,
132 HANDLE_CLIPPED_PICTURES,
133 HANDLE_BACKGROUND_PARA_OVER_DRAWINGS,
134 HANDLE_EMBED_FONTS,
135 HANDLE_EMBED_USED_FONTS,
136 HANDLE_EMBED_LATIN_SCRIPT_FONTS,
137 HANDLE_EMBED_ASIAN_SCRIPT_FONTS,
138 HANDLE_EMBED_COMPLEX_SCRIPT_FONTS,
139 HANDLE_EMBED_SYSTEM_FONTS,
140 HANDLE_TAB_OVER_MARGIN,
141 HANDLE_TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK,
142 HANDLE_SURROUND_TEXT_WRAP_SMALL,
143 HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING,
144 HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE,
145 HANDLE_SUBTRACT_FLYS,
146 HANDLE_DISABLE_OFF_PAGE_POSITIONING,
147 HANDLE_EMPTY_DB_FIELD_HIDES_PARA,
148 HANDLE_CONTINUOUS_ENDNOTES,
149 HANDLE_HEADER_SPACING_BELOW_LAST_PARA,
150 };
151
lcl_createSettingsInfo()152 static MasterPropertySetInfo * lcl_createSettingsInfo()
153 {
154 static PropertyInfo const aWriterSettingsInfoMap[] =
155 {
156 { OUString("ForbiddenCharacters"), HANDLE_FORBIDDEN_CHARS, cppu::UnoType<css::i18n::XForbiddenCharacters>::get(), 0},
157 { OUString("LinkUpdateMode"), HANDLE_LINK_UPDATE_MODE, cppu::UnoType<sal_Int16>::get(), 0},
158 { OUString("FieldAutoUpdate"), HANDLE_FIELD_AUTO_UPDATE, cppu::UnoType<bool>::get(), 0},
159 { OUString("ChartAutoUpdate"), HANDLE_CHART_AUTO_UPDATE, cppu::UnoType<bool>::get(), 0},
160 { OUString("AddParaTableSpacing"), HANDLE_ADD_PARA_TABLE_SPACING, cppu::UnoType<bool>::get(), 0},
161 { OUString("AddParaTableSpacingAtStart"), HANDLE_ADD_PARA_TABLE_SPACING_AT_START, cppu::UnoType<bool>::get(), 0},
162 { OUString("AlignTabStopPosition"), HANDLE_ALIGN_TAB_STOP_POSITION, cppu::UnoType<bool>::get(), 0},
163 { OUString("PrinterName"), HANDLE_PRINTER_NAME, cppu::UnoType<OUString>::get(), 0},
164 { OUString("PrinterSetup"), HANDLE_PRINTER_SETUP, cppu::UnoType< cppu::UnoSequenceType<sal_Int8> >::get(), 0},
165 { OUString("PrinterPaperFromSetup"), HANDLE_PRINTER_PAPER, cppu::UnoType<bool>::get(), 0},
166 { OUString("IsKernAsianPunctuation"), HANDLE_IS_KERN_ASIAN_PUNCTUATION, cppu::UnoType<bool>::get(), 0},
167 { OUString("CharacterCompressionType"), HANDLE_CHARACTER_COMPRESSION_TYPE, cppu::UnoType<sal_Int16>::get(), 0},
168 { OUString("ApplyUserData"), HANDLE_APPLY_USER_DATA, cppu::UnoType<bool>::get(), 0 },
169 { OUString("SaveThumbnail"), HANDLE_SAVE_THUMBNAIL, cppu::UnoType<bool>::get(), 0 },
170 { OUString("SaveGlobalDocumentLinks"), HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS, cppu::UnoType<bool>::get(), 0},
171 { OUString("CurrentDatabaseDataSource"), HANDLE_CURRENT_DATABASE_DATA_SOURCE, cppu::UnoType<OUString>::get(), 0},
172 { OUString("CurrentDatabaseCommand"), HANDLE_CURRENT_DATABASE_COMMAND, cppu::UnoType<OUString>::get(), 0},
173 { OUString("CurrentDatabaseCommandType"), HANDLE_CURRENT_DATABASE_COMMAND_TYPE, cppu::UnoType<sal_Int32>::get(), 0},
174 { OUString("EmbeddedDatabaseName"), HANDLE_EMBEDDED_DATABASE_NAME, cppu::UnoType<OUString>::get(), 0},
175 { OUString("SaveVersionOnClose"), HANDLE_SAVE_VERSION_ON_CLOSE, cppu::UnoType<bool>::get(), 0},
176 { OUString("UpdateFromTemplate"), HANDLE_UPDATE_FROM_TEMPLATE, cppu::UnoType<bool>::get(), 0},
177
178 { OUString("PrinterIndependentLayout"), HANDLE_PRINTER_INDEPENDENT_LAYOUT, cppu::UnoType<sal_Int16>::get(), 0},
179 { OUString("IsLabelDocument"), HANDLE_IS_LABEL_DOC, cppu::UnoType<bool>::get(), 0},
180 { OUString("AddFrameOffsets"), HANDLE_IS_ADD_FLY_OFFSET, cppu::UnoType<bool>::get(), 0},
181 { OUString("AddVerticalFrameOffsets"), HANDLE_IS_ADD_VERTICAL_FLY_OFFSET, cppu::UnoType<bool>::get(), 0},
182 { OUString("AddExternalLeading"), HANDLE_IS_ADD_EXTERNAL_LEADING, cppu::UnoType<bool>::get(), 0},
183 { OUString("UseOldNumbering"), HANDLE_OLD_NUMBERING, cppu::UnoType<bool>::get(), 0},
184 { OUString("OutlineLevelYieldsNumbering"), HANDLE_OUTLINELEVEL_YIELDS_NUMBERING, cppu::UnoType<bool>::get(), 0},
185 /* Stampit It disable the print cancel button of the shown progress dialog. */
186 { OUString("AllowPrintJobCancel"), HANDLE_ALLOW_PRINTJOB_CANCEL, cppu::UnoType<bool>::get(), 0},
187 { OUString("UseFormerLineSpacing"), HANDLE_USE_FORMER_LINE_SPACING, cppu::UnoType<bool>::get(), 0},
188 { OUString("AddParaSpacingToTableCells"), HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS, cppu::UnoType<bool>::get(), 0},
189 { OUString("AddParaLineSpacingToTableCells"), HANDLE_ADD_PARA_LINE_SPACING_TO_TABLE_CELLS, cppu::UnoType<bool>::get(), 0},
190 { OUString("UseFormerObjectPositioning"), HANDLE_USE_FORMER_OBJECT_POSITIONING, cppu::UnoType<bool>::get(), 0},
191 { OUString("UseFormerTextWrapping"), HANDLE_USE_FORMER_TEXT_WRAPPING, cppu::UnoType<bool>::get(), 0},
192 { OUString("RedlineProtectionKey"), HANDLE_CHANGES_PASSWORD, cppu::UnoType< cppu::UnoSequenceType<sal_Int8> >::get(), 0},
193 { OUString("ConsiderTextWrapOnObjPos"), HANDLE_CONSIDER_WRAP_ON_OBJPOS, cppu::UnoType<bool>::get(), 0},
194 { OUString("IgnoreFirstLineIndentInNumbering"), HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, cppu::UnoType<bool>::get(), 0},
195 { OUString("DoNotJustifyLinesWithManualBreak"), HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, cppu::UnoType<bool>::get(), 0},
196 { OUString("DoNotResetParaAttrsForNumFont"), HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, cppu::UnoType<bool>::get(), 0},
197 { OUString("TableRowKeep"), HANDLE_TABLE_ROW_KEEP, cppu::UnoType<bool>::get(), 0},
198 { OUString("IgnoreTabsAndBlanksForLineCalculation"), HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, cppu::UnoType<bool>::get(), 0},
199 { OUString("LoadReadonly"), HANDLE_LOAD_READONLY, cppu::UnoType<bool>::get(), 0},
200 { OUString("DoNotCaptureDrawObjsOnPage"), HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, cppu::UnoType<bool>::get(), 0},
201 { OUString("ClipAsCharacterAnchoredWriterFlyFrames"), HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES, cppu::UnoType<bool>::get(), 0},
202 { OUString("UnxForceZeroExtLeading"), HANDLE_UNIX_FORCE_ZERO_EXT_LEADING, cppu::UnoType<bool>::get(), 0},
203 { OUString("UseOldPrinterMetrics"), HANDLE_USE_OLD_PRINTER_METRICS, cppu::UnoType<bool>::get(), 0},
204 { OUString("TabsRelativeToIndent"), HANDLE_TABS_RELATIVE_TO_INDENT, cppu::UnoType<bool>::get(), 0},
205 { OUString("Rsid"), HANDLE_RSID, cppu::UnoType<sal_Int32>::get(), 0},
206 { OUString("RsidRoot"), HANDLE_RSID_ROOT, cppu::UnoType<sal_Int32>::get(), 0},
207 { OUString("ProtectForm"), HANDLE_PROTECT_FORM, cppu::UnoType<bool>::get(), 0},
208 { OUString("MsWordCompTrailingBlanks"), HANDLE_MS_WORD_COMP_TRAILING_BLANKS, cppu::UnoType<bool>::get(), 0 },
209 { OUString("MsWordCompMinLineHeightByFly"), HANDLE_MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY, cppu::UnoType<bool>::get(), 0 },
210 { OUString("TabAtLeftIndentForParagraphsInList"), HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, cppu::UnoType<bool>::get(), 0},
211 { OUString("ModifyPasswordInfo"), HANDLE_MODIFYPASSWORDINFO, cppu::UnoType< cppu::UnoSequenceType<css::beans::PropertyValue> >::get(), 0},
212 { OUString("MathBaselineAlignment"), HANDLE_MATH_BASELINE_ALIGNMENT, cppu::UnoType<bool>::get(), 0},
213 { OUString("InvertBorderSpacing"), HANDLE_INVERT_BORDER_SPACING, cppu::UnoType<bool>::get(), 0},
214 { OUString("CollapseEmptyCellPara"), HANDLE_COLLAPSE_EMPTY_CELL_PARA, cppu::UnoType<bool>::get(), 0},
215 { OUString("SmallCapsPercentage66"), HANDLE_SMALL_CAPS_PERCENTAGE_66, cppu::UnoType<bool>::get(), 0},
216 { OUString("TabOverflow"), HANDLE_TAB_OVERFLOW, cppu::UnoType<bool>::get(), 0},
217 { OUString("UnbreakableNumberings"), HANDLE_UNBREAKABLE_NUMBERINGS, cppu::UnoType<bool>::get(), 0},
218 { OUString("StylesNoDefault"), HANDLE_STYLES_NODEFAULT, cppu::UnoType<bool>::get(), 0},
219 { OUString("FloattableNomargins"), HANDLE_FLOATTABLE_NOMARGINS, cppu::UnoType<bool>::get(), 0},
220 { OUString("ClippedPictures"), HANDLE_CLIPPED_PICTURES, cppu::UnoType<bool>::get(), 0},
221 { OUString("BackgroundParaOverDrawings"), HANDLE_BACKGROUND_PARA_OVER_DRAWINGS, cppu::UnoType<bool>::get(), 0},
222 { OUString("EmbedFonts"), HANDLE_EMBED_FONTS, cppu::UnoType<bool>::get(), 0},
223 { OUString("EmbedOnlyUsedFonts"), HANDLE_EMBED_USED_FONTS, cppu::UnoType<bool>::get(), 0},
224 { OUString("EmbedLatinScriptFonts"), HANDLE_EMBED_LATIN_SCRIPT_FONTS, cppu::UnoType<bool>::get(), 0},
225 { OUString("EmbedAsianScriptFonts"), HANDLE_EMBED_ASIAN_SCRIPT_FONTS, cppu::UnoType<bool>::get(), 0},
226 { OUString("EmbedComplexScriptFonts"), HANDLE_EMBED_COMPLEX_SCRIPT_FONTS, cppu::UnoType<bool>::get(), 0},
227 { OUString("EmbedSystemFonts"), HANDLE_EMBED_SYSTEM_FONTS, cppu::UnoType<bool>::get(), 0},
228 { OUString("TabOverMargin"), HANDLE_TAB_OVER_MARGIN, cppu::UnoType<bool>::get(), 0},
229 { OUString("TreatSingleColumnBreakAsPageBreak"), HANDLE_TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK, cppu::UnoType<bool>::get(), 0},
230 { OUString("SurroundTextWrapSmall"), HANDLE_SURROUND_TEXT_WRAP_SMALL, cppu::UnoType<bool>::get(), 0},
231 { OUString("ApplyParagraphMarkFormatToNumbering"), HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, cppu::UnoType<bool>::get(), 0},
232 { OUString("PropLineSpacingShrinksFirstLine"), HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE, cppu::UnoType<bool>::get(), 0},
233 { OUString("SubtractFlysAnchoredAtFlys"), HANDLE_SUBTRACT_FLYS, cppu::UnoType<bool>::get(), 0},
234 { OUString("DisableOffPagePositioning"), HANDLE_DISABLE_OFF_PAGE_POSITIONING, cppu::UnoType<bool>::get(), 0},
235 { OUString("EmptyDbFieldHidesPara"), HANDLE_EMPTY_DB_FIELD_HIDES_PARA, cppu::UnoType<bool>::get(), 0 },
236 { OUString("ContinuousEndnotes"), HANDLE_CONTINUOUS_ENDNOTES, cppu::UnoType<bool>::get(), 0 },
237 { OUString("HeaderSpacingBelowLastPara"), HANDLE_HEADER_SPACING_BELOW_LAST_PARA, cppu::UnoType<bool>::get(), 0 },
238
239 /*
240 * As OS said, we don't have a view when we need to set this, so I have to
241 * find another solution before adding them to this property set - MTG
242 { OUString("IsGridVisible"), HANDLE_IS_GRID_VISIBLE, cppu::UnoType<bool>::get(), 0, 0},
243 { OUString("IsSnapToGrid"), HANDLE_IS_SNAP_TO_GRID, cppu::UnoType<bool>::get(), 0, 0},
244 { OUString("IsSynchroniseAxes"), HANDLE_IS_SYNCHRONISE_AXES, cppu::UnoType<bool>::get(), 0, 0},
245 { OUString("HorizontalGridResolution"), HANDLE_HORIZONTAL_GRID_RESOLUTION, cppu::UnoType<sal_Int32>::get(), 0, 0},
246 { OUString("HorizontalGridSubdivision"), HANDLE_HORIZONTAL_GRID_SUBDIVISION, cppu::UnoType<sal_Int16>::get(), 0, 0},
247 { OUString("VerticalGridResolution"), HANDLE_VERTICAL_GRID_RESOLUTION, cppu::UnoType<sal_Int32>::get(), 0, 0},
248 { OUString("VerticalGridSubdivision"), HANDLE_VERTICAL_GRID_SUBDIVISION, cppu::UnoType<sal_Int16>::get(), 0, 0},
249
250 { OUString("ShowParagraphEnd"), HANDLE_SHOW_PARAGRAPH_END, cppu::UnoType<bool>::get(), 0, 0},
251 { OUString("ShowOptionalHyphens"), HANDLE_SHOW_OPTIONAL_HYPHENS, cppu::UnoType<bool>::get(), 0, 0},
252 { OUString("ShowSpaces"), HANDLE_SHOW_SPACES, cppu::UnoType<bool>::get(), 0, 0},
253 { OUString("ShowTabs"), HANDLE_SHOW_TABS, cppu::UnoType<bool>::get(), 0, 0},
254 { OUString("ShowBreaks"), HANDLE_SHOW_BREAKS, cppu::UnoType<bool>::get(), 0, 0},
255 { OUString("ShowHiddenText"), HANDLE_SHOW_HIDDEN_TEXT, cppu::UnoType<bool>::get(), 0, 0},
256 { OUString("ShowHiddenParagraphs"), HANDLE_SHOW_HIDDEN_PARAGRAPHS, cppu::UnoType<bool>::get(), 0, 0},
257
258 { OUString("ShowTextLimitGuide"), HANDLE_SHOW_TEXT_LIMIT_GUIDE, cppu::UnoType<bool>::get(), 0, 0},
259 { OUString("ShowTableLimitGuide"), HANDLE_SHOW_TABLE_LIMIT_GUIDE, cppu::UnoType<bool>::get(), 0, 0},
260 { OUString("ShowSectionLimitGuide"), HANDLE_SHOW_SECTION_LIMIT_GUIDE, cppu::UnoType<bool>::get(), 0, 0},
261 { OUString("ShowGuidesWhileMoving"), HANDLE_SHOW_GUIDES_WHILE_MOVING, cppu::UnoType<bool>::get(), 0, 0},
262 */
263 { OUString(), 0, css::uno::Type(), 0}
264 };
265 return new MasterPropertySetInfo ( aWriterSettingsInfoMap );
266 }
267
SwXDocumentSettings(SwXTextDocument * pModel)268 SwXDocumentSettings::SwXDocumentSettings ( SwXTextDocument * pModel )
269 : MasterPropertySet ( lcl_createSettingsInfo (),
270 &Application::GetSolarMutex () )
271 , mpModel ( pModel )
272 , mpDocSh ( nullptr )
273 , mpDoc ( nullptr )
274 , mpPrinter( nullptr )
275 , mbPreferPrinterPapersize( false )
276 {
277 registerSlave ( new SwXPrintSettings ( SwXPrintSettingsType::Document, mpModel->GetDocShell()->GetDoc() ) );
278 }
279
~SwXDocumentSettings()280 SwXDocumentSettings::~SwXDocumentSettings()
281 throw()
282 {
283 }
284
queryInterface(const Type & rType)285 Any SAL_CALL SwXDocumentSettings::queryInterface( const Type& rType )
286 {
287 return ::cppu::queryInterface(rType,
288 // OWeakObject interfaces
289 &dynamic_cast<XInterface&>(dynamic_cast<OWeakObject&>(*this)),
290 &dynamic_cast<XWeak&>(*this),
291 // my own interfaces
292 &dynamic_cast<XPropertySet&>(*this),
293 &dynamic_cast<XPropertyState&>(*this),
294 &dynamic_cast<XMultiPropertySet&>(*this),
295 &dynamic_cast<XServiceInfo&>(*this),
296 &dynamic_cast<XTypeProvider&>(*this));
297 }
acquire()298 void SwXDocumentSettings::acquire ()
299 throw ()
300 {
301 OWeakObject::acquire();
302 }
release()303 void SwXDocumentSettings::release ()
304 throw ()
305 {
306 OWeakObject::release();
307 }
308
getTypes()309 uno::Sequence< uno::Type > SAL_CALL SwXDocumentSettings::getTypes( )
310 {
311 static const uno::Sequence< uno::Type > aTypes {
312 // from MasterPropertySet
313 cppu::UnoType<XPropertySet>::get(),
314 cppu::UnoType<XPropertyState>::get(),
315 cppu::UnoType<XMultiPropertySet>::get(),
316 cppu::UnoType<XServiceInfo>::get(),
317 cppu::UnoType<XTypeProvider>::get(),
318 };
319 return aTypes;
320 }
321
getImplementationId()322 uno::Sequence< sal_Int8 > SAL_CALL SwXDocumentSettings::getImplementationId( )
323 {
324 return css::uno::Sequence<sal_Int8>();
325 }
326
_preSetValues()327 void SwXDocumentSettings::_preSetValues ()
328 {
329 mpDocSh = mpModel->GetDocShell();
330 if (nullptr == mpDocSh)
331 throw UnknownPropertyException();
332
333 mpDoc = mpDocSh->GetDoc();
334 if (nullptr == mpDoc)
335 throw UnknownPropertyException();
336 }
337
_setSingleValue(const comphelper::PropertyInfo & rInfo,const uno::Any & rValue)338 void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
339 {
340 if (rInfo.mnAttributes & PropertyAttribute::READONLY)
341 throw PropertyVetoException ("Property is read-only: " + rInfo.maName, static_cast < cppu::OWeakObject * > ( nullptr ) );
342
343 switch( rInfo.mnHandle )
344 {
345 case HANDLE_FORBIDDEN_CHARS:
346 break;
347 case HANDLE_LINK_UPDATE_MODE:
348 {
349 sal_Int16 nMode = 0;
350 rValue >>= nMode;
351 switch (nMode)
352 {
353 case NEVER:
354 case MANUAL:
355 case AUTOMATIC:
356 case GLOBALSETTING:
357 break;
358 default:
359 throw IllegalArgumentException();
360 }
361 mpDoc->getIDocumentSettingAccess().setLinkUpdateMode(nMode);
362 }
363 break;
364 case HANDLE_FIELD_AUTO_UPDATE:
365 {
366 bool bUpdateField = *o3tl::doAccess<bool>(rValue);
367 SwFieldUpdateFlags nFlag = mpDoc->getIDocumentSettingAccess().getFieldUpdateFlags(true);
368 mpDoc->getIDocumentSettingAccess().setFieldUpdateFlags( bUpdateField ?
369 nFlag == AUTOUPD_FIELD_AND_CHARTS ?
370 AUTOUPD_FIELD_AND_CHARTS :
371 AUTOUPD_FIELD_ONLY :
372 AUTOUPD_OFF );
373 }
374 break;
375 case HANDLE_CHART_AUTO_UPDATE:
376 {
377 bool bUpdateChart = *o3tl::doAccess<bool>(rValue);
378 SwFieldUpdateFlags nFlag = mpDoc->getIDocumentSettingAccess().getFieldUpdateFlags(true);
379 mpDoc->getIDocumentSettingAccess().setFieldUpdateFlags( (nFlag == AUTOUPD_FIELD_ONLY || nFlag == AUTOUPD_FIELD_AND_CHARTS ) ?
380 bUpdateChart ?
381 AUTOUPD_FIELD_AND_CHARTS :
382 AUTOUPD_FIELD_ONLY :
383 AUTOUPD_OFF );
384 }
385 break;
386 case HANDLE_ADD_PARA_TABLE_SPACING:
387 {
388 bool bParaSpace = false;
389 rValue >>= bParaSpace;
390 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::PARA_SPACE_MAX, bParaSpace );
391 }
392 break;
393 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
394 {
395 bool bParaSpacePage = false;
396 rValue >>= bParaSpacePage;
397 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::PARA_SPACE_MAX_AT_PAGES, bParaSpacePage );
398 }
399 break;
400 case HANDLE_ALIGN_TAB_STOP_POSITION:
401 {
402 bool bAlignTab = *o3tl::doAccess<bool>(rValue);
403 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TAB_COMPAT, bAlignTab);
404 }
405 break;
406 case HANDLE_PRINTER_NAME:
407 {
408 //the printer must be created
409 OUString sPrinterName;
410 if( !(rValue >>= sPrinterName) )
411 throw IllegalArgumentException();
412
413 if( !mpPrinter && !sPrinterName.isEmpty() && mpDocSh->GetCreateMode() != SfxObjectCreateMode::EMBEDDED )
414 {
415 SfxPrinter* pPrinter = mpDoc->getIDocumentDeviceAccess().getPrinter( true );
416 if ( pPrinter->GetName() != sPrinterName )
417 {
418 VclPtrInstance<SfxPrinter> pNewPrinter( pPrinter->GetOptions().Clone(), sPrinterName );
419 assert (! pNewPrinter->isDisposed() );
420 if( pNewPrinter->IsKnown() )
421 {
422 // set printer only once; in _postSetValues
423 mpPrinter = pNewPrinter;
424 }
425 else
426 {
427 pNewPrinter.disposeAndClear();
428 }
429 }
430 }
431
432 }
433 break;
434 case HANDLE_PRINTER_SETUP:
435 {
436 Sequence < sal_Int8 > aSequence;
437 if ( !(rValue >>= aSequence) )
438 throw IllegalArgumentException();
439
440 sal_uInt32 nSize = aSequence.getLength();
441 if( nSize > 0 )
442 {
443 SvMemoryStream aStream (aSequence.getArray(), nSize,
444 StreamMode::READ );
445 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
446 static sal_uInt16 const nRange[] =
447 {
448 FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
449 SID_HTML_MODE, SID_HTML_MODE,
450 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
451 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
452 0
453 };
454 auto pItemSet = std::make_unique<SfxItemSet>( mpDoc->GetAttrPool(), nRange );
455 VclPtr<SfxPrinter> pPrinter = SfxPrinter::Create ( aStream, std::move(pItemSet) );
456 assert (! pPrinter->isDisposed() );
457 // set printer only once; in _postSetValues
458 mpPrinter.disposeAndClear();
459 mpPrinter = pPrinter;
460 }
461
462 }
463 break;
464 case HANDLE_PRINTER_PAPER:
465 {
466 bool bPreferPrinterPapersize;
467 if(!(rValue >>= bPreferPrinterPapersize))
468 throw IllegalArgumentException();
469 mbPreferPrinterPapersize = bPreferPrinterPapersize;
470 }
471 break;
472 case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
473 {
474 bool bIsKern = *o3tl::doAccess<bool>(rValue);
475 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::KERN_ASIAN_PUNCTUATION, bIsKern);
476 SwEditShell* pEditSh = mpDoc->GetEditShell();
477 if(pEditSh)
478 pEditSh->ChgHyphenation();
479 }
480 break;
481 case HANDLE_CHARACTER_COMPRESSION_TYPE:
482 {
483 sal_Int16 nMode = 0;
484 rValue >>= nMode;
485 switch (static_cast<CharCompressType>(nMode))
486 {
487 case CharCompressType::NONE:
488 case CharCompressType::PunctuationOnly:
489 case CharCompressType::PunctuationAndKana:
490 break;
491 default:
492 throw IllegalArgumentException();
493 }
494 mpDoc->getIDocumentSettingAccess().setCharacterCompressionType(static_cast<CharCompressType>(nMode));
495 }
496 break;
497 case HANDLE_APPLY_USER_DATA:
498 {
499 mpDocSh->SetUseUserData(*o3tl::doAccess<bool>(rValue));
500 }
501 break;
502 case HANDLE_SAVE_THUMBNAIL:
503 {
504 mpDocSh->SetUseThumbnailSave(*o3tl::doAccess<bool>(rValue));
505 }
506 break;
507 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
508 {
509 bool bSaveGlobal = *o3tl::doAccess<bool>(rValue);
510 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::GLOBAL_DOCUMENT_SAVE_LINKS, bSaveGlobal );
511 }
512 break;
513 case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
514 {
515 SwDBData aData = mpDoc->GetDBData();
516 if ( rValue >>= aData.sDataSource )
517 mpDoc->ChgDBData( aData );
518 }
519 break;
520 case HANDLE_CURRENT_DATABASE_COMMAND:
521 {
522 SwDBData aData = mpDoc->GetDBData();
523
524 if ( rValue >>= aData.sCommand )
525 mpDoc->ChgDBData( aData );
526
527 SAL_WARN_IF( aData.sDataSource.isEmpty() && !aData.sCommand.isEmpty(), "sw.uno",
528 "\"CurrentDatabaseCommand\" property possibly set before \"CurrentDatabaseDataSource\"" );
529 }
530 break;
531 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
532 {
533 SwDBData aData = mpDoc->GetDBData();
534 if ( rValue >>= aData.nCommandType )
535 mpDoc->ChgDBData( aData );
536 SAL_WARN_IF( aData.nCommandType && aData.sDataSource.isEmpty(), "sw.uno",
537 "\"CurrentDatabaseCommandType\" property possibly set before \"CurrentDatabaseDataSource\"" );
538 SAL_WARN_IF( aData.nCommandType && aData.sCommand.isEmpty(), "sw.uno",
539 "\"CurrentDatabaseCommandType\" property possibly set before \"CurrentDatabaseCommand\"" );
540 }
541 break;
542 case HANDLE_EMBEDDED_DATABASE_NAME:
543 {
544 #if HAVE_FEATURE_DBCONNECTIVITY
545 OUString sEmbeddedName;
546 if (rValue >>= sEmbeddedName)
547 mpDoc->GetDBManager()->setEmbeddedName(sEmbeddedName, *mpDocSh);
548 #endif
549 }
550 break;
551 case HANDLE_SAVE_VERSION_ON_CLOSE:
552 {
553 mpDocSh->SetSaveVersionOnClose( *o3tl::doAccess<bool>(rValue) );
554 }
555 break;
556 case HANDLE_UPDATE_FROM_TEMPLATE:
557 {
558 mpDocSh->SetQueryLoadTemplate( *o3tl::doAccess<bool>(rValue) );
559 }
560 break;
561 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
562 {
563 sal_Int16 nTmp = 0;
564 rValue >>= nTmp;
565
566 bool bUseVirDev = true;
567 bool bHiResVirDev = true;
568 if( nTmp == document::PrinterIndependentLayout::DISABLED )
569 bUseVirDev = false;
570 else if ( nTmp == document::PrinterIndependentLayout::LOW_RESOLUTION )
571 bHiResVirDev = false;
572 else if ( nTmp != document::PrinterIndependentLayout::HIGH_RESOLUTION )
573 throw IllegalArgumentException();
574
575 mpDoc->getIDocumentDeviceAccess().setReferenceDeviceType( bUseVirDev, bHiResVirDev );
576 }
577 break;
578 case HANDLE_IS_LABEL_DOC :
579 {
580 bool bSet = false;
581 if(!(rValue >>= bSet))
582 throw IllegalArgumentException();
583 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::LABEL_DOCUMENT, bSet);
584 }
585 break;
586 case HANDLE_IS_ADD_FLY_OFFSET:
587 {
588 bool bTmp = *o3tl::doAccess<bool>(rValue);
589 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::ADD_FLY_OFFSETS, bTmp);
590 }
591 break;
592 case HANDLE_IS_ADD_VERTICAL_FLY_OFFSET:
593 {
594 bool bTmp = *o3tl::doAccess<bool>(rValue);
595 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::ADD_VERTICAL_FLY_OFFSETS, bTmp);
596 }
597 break;
598 case HANDLE_IS_ADD_EXTERNAL_LEADING:
599 {
600 bool bTmp = *o3tl::doAccess<bool>(rValue);
601 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::ADD_EXT_LEADING, bTmp);
602 }
603 break;
604 case HANDLE_OLD_NUMBERING:
605 {
606 bool bTmp = *o3tl::doAccess<bool>(rValue);
607 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::OLD_NUMBERING, bTmp);
608 }
609 break;
610 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING:
611 {
612 // ignore - this is a dead property
613 }
614 break;
615 case HANDLE_ALLOW_PRINTJOB_CANCEL:
616 {
617 bool bState = false;
618 if (!(rValue >>= bState))
619 throw IllegalArgumentException();
620 mpDocSh->Stamp_SetPrintCancelState(bState);
621 }
622 break;
623 case HANDLE_USE_FORMER_LINE_SPACING:
624 {
625 bool bTmp = *o3tl::doAccess<bool>(rValue);
626 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::OLD_LINE_SPACING, bTmp);
627 }
628 break;
629 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
630 {
631 bool bTmp = *o3tl::doAccess<bool>(rValue);
632 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::ADD_PARA_SPACING_TO_TABLE_CELLS, bTmp);
633 }
634 break;
635 case HANDLE_ADD_PARA_LINE_SPACING_TO_TABLE_CELLS:
636 {
637 bool bTmp = *o3tl::doAccess<bool>(rValue);
638 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::ADD_PARA_LINE_SPACING_TO_TABLE_CELLS, bTmp);
639 }
640 break;
641 case HANDLE_USE_FORMER_OBJECT_POSITIONING:
642 {
643 bool bTmp = *o3tl::doAccess<bool>(rValue);
644 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::USE_FORMER_OBJECT_POS, bTmp);
645 }
646 break;
647 case HANDLE_USE_FORMER_TEXT_WRAPPING:
648 {
649 bool bTmp = *o3tl::doAccess<bool>(rValue);
650 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::USE_FORMER_TEXT_WRAPPING, bTmp);
651 }
652 break;
653 case HANDLE_CHANGES_PASSWORD:
654 {
655 Sequence <sal_Int8> aNew;
656 if(rValue >>= aNew)
657 {
658 mpDoc->getIDocumentRedlineAccess().SetRedlinePassword(aNew);
659 if(aNew.hasElements())
660 {
661 RedlineFlags eMode = mpDoc->getIDocumentRedlineAccess().GetRedlineFlags();
662 eMode |= RedlineFlags::On;
663 mpDoc->getIDocumentRedlineAccess().SetRedlineFlags( eMode );
664 }
665 }
666 }
667 break;
668 case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
669 {
670 bool bTmp = *o3tl::doAccess<bool>(rValue);
671 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION, bTmp );
672 }
673 break;
674 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
675 {
676 bool bTmp = *o3tl::doAccess<bool>(rValue);
677 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, bTmp);
678 }
679 break;
680 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
681 {
682 bool bTmp = *o3tl::doAccess<bool>(rValue);
683 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, bTmp);
684 }
685 break;
686 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
687 {
688 bool bTmp = *o3tl::doAccess<bool>(rValue);
689 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, bTmp);
690 }
691 break;
692 case HANDLE_TABLE_ROW_KEEP:
693 {
694 bool bTmp = *o3tl::doAccess<bool>(rValue);
695 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TABLE_ROW_KEEP, bTmp);
696 }
697 break;
698 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
699 {
700 bool bTmp = *o3tl::doAccess<bool>(rValue);
701 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, bTmp);
702 }
703 break;
704 case HANDLE_LOAD_READONLY:
705 {
706 mpDocSh->SetLoadReadonly( *o3tl::doAccess<bool>(rValue) );
707 }
708 break;
709 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
710 {
711 bool bTmp = *o3tl::doAccess<bool>(rValue);
712 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, bTmp);
713 }
714 break;
715 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
716 {
717 bool bTmp = *o3tl::doAccess<bool>(rValue);
718 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME, bTmp);
719 }
720 break;
721 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
722 {
723 bool bTmp = *o3tl::doAccess<bool>(rValue);
724 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::UNIX_FORCE_ZERO_EXT_LEADING, bTmp);
725 }
726 break;
727 case HANDLE_USE_OLD_PRINTER_METRICS:
728 // ignore - this is a dead property
729 break;
730 case HANDLE_TABS_RELATIVE_TO_INDENT:
731 {
732 bool bTmp = *o3tl::doAccess<bool>(rValue);
733 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TABS_RELATIVE_TO_INDENT, bTmp);
734 }
735 break;
736 case HANDLE_RSID:
737 {
738 sal_uInt32 nTmp = 0;
739 rValue >>= nTmp;
740 mpDoc->setRsid( nTmp );
741 }
742 break;
743 case HANDLE_RSID_ROOT:
744 {
745 sal_uInt32 nTmp = 0;
746 rValue >>= nTmp;
747 mpDoc->setRsidRoot( nTmp );
748 }
749 break;
750 case HANDLE_PROTECT_FORM:
751 {
752 bool bTmp = *o3tl::doAccess<bool>(rValue);
753 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::PROTECT_FORM, bTmp);
754 }
755 break;
756 case HANDLE_MS_WORD_COMP_TRAILING_BLANKS:
757 {
758 bool bTmp = *o3tl::doAccess<bool>(rValue);
759 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS, bTmp);
760 }
761 break;
762 case HANDLE_MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY:
763 {
764 bool bTmp = *o3tl::doAccess<bool>(rValue);
765 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY, bTmp);
766 }
767 break;
768 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
769 {
770 bool bTmp = *o3tl::doAccess<bool>(rValue);
771 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, bTmp);
772 }
773 break;
774 case HANDLE_MODIFYPASSWORDINFO:
775 {
776 uno::Sequence< beans::PropertyValue > aInfo;
777 if ( !( rValue >>= aInfo ) )
778 throw lang::IllegalArgumentException(
779 "Value of type Sequence<PropertyValue> expected!",
780 uno::Reference< uno::XInterface >(),
781 2 );
782
783 if ( !mpDocSh->SetModifyPasswordInfo( aInfo ) )
784 throw beans::PropertyVetoException(
785 "The hash is not allowed to be changed now!",
786 uno::Reference< uno::XInterface >() );
787 }
788 break;
789 case HANDLE_MATH_BASELINE_ALIGNMENT:
790 {
791 bool bTmp = *o3tl::doAccess<bool>(rValue);
792 mpDoc->getIDocumentSettingAccess().set( DocumentSettingId::MATH_BASELINE_ALIGNMENT, bTmp );
793 }
794 break;
795 case HANDLE_INVERT_BORDER_SPACING:
796 {
797 bool bTmp = *o3tl::doAccess<bool>(rValue);
798 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::INVERT_BORDER_SPACING, bTmp);
799 }
800 break;
801 case HANDLE_COLLAPSE_EMPTY_CELL_PARA:
802 {
803 bool bTmp = *o3tl::doAccess<bool>(rValue);
804 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::COLLAPSE_EMPTY_CELL_PARA, bTmp);
805 }
806 break;
807 case HANDLE_SMALL_CAPS_PERCENTAGE_66:
808 {
809 bool bTmp = *o3tl::doAccess<bool>(rValue);
810 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::SMALL_CAPS_PERCENTAGE_66, bTmp);
811 }
812 break;
813 case HANDLE_TAB_OVERFLOW:
814 {
815 bool bTmp = *o3tl::doAccess<bool>(rValue);
816 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TAB_OVERFLOW, bTmp);
817 }
818 break;
819 case HANDLE_UNBREAKABLE_NUMBERINGS:
820 {
821 bool bTmp = *o3tl::doAccess<bool>(rValue);
822 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::UNBREAKABLE_NUMBERINGS, bTmp);
823 }
824 break;
825 case HANDLE_STYLES_NODEFAULT:
826 {
827 bool bTmp = *o3tl::doAccess<bool>(rValue);
828 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::STYLES_NODEFAULT, bTmp);
829 }
830 break;
831 case HANDLE_FLOATTABLE_NOMARGINS:
832 {
833 bool bTmp = *o3tl::doAccess<bool>(rValue);
834 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::FLOATTABLE_NOMARGINS, bTmp);
835 }
836 break;
837 case HANDLE_CLIPPED_PICTURES:
838 {
839 bool bTmp = *o3tl::doAccess<bool>(rValue);
840 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::CLIPPED_PICTURES, bTmp);
841 }
842 break;
843 case HANDLE_BACKGROUND_PARA_OVER_DRAWINGS:
844 {
845 bool bTmp = *o3tl::doAccess<bool>(rValue);
846 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::BACKGROUND_PARA_OVER_DRAWINGS, bTmp);
847 }
848 break;
849 case HANDLE_EMBED_FONTS:
850 {
851 bool bTmp = *o3tl::doAccess<bool>(rValue);
852 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_FONTS, bTmp);
853 }
854 break;
855 case HANDLE_EMBED_USED_FONTS:
856 {
857 bool bTmp = *o3tl::doAccess<bool>(rValue);
858 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_USED_FONTS, bTmp);
859 }
860 break;
861 case HANDLE_EMBED_LATIN_SCRIPT_FONTS:
862 {
863 bool bTmp = *o3tl::doAccess<bool>(rValue);
864 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_LATIN_SCRIPT_FONTS, bTmp);
865 }
866 break;
867 case HANDLE_EMBED_ASIAN_SCRIPT_FONTS:
868 {
869 bool bTmp = *o3tl::doAccess<bool>(rValue);
870 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_ASIAN_SCRIPT_FONTS, bTmp);
871 }
872 break;
873 case HANDLE_EMBED_COMPLEX_SCRIPT_FONTS:
874 {
875 bool bTmp = *o3tl::doAccess<bool>(rValue);
876 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_COMPLEX_SCRIPT_FONTS, bTmp);
877 }
878 break;
879 case HANDLE_EMBED_SYSTEM_FONTS:
880 {
881 bool bTmp = *o3tl::doAccess<bool>(rValue);
882 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMBED_SYSTEM_FONTS, bTmp);
883 }
884 break;
885 case HANDLE_TAB_OVER_MARGIN:
886 {
887 bool bTmp = *o3tl::doAccess<bool>(rValue);
888 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TAB_OVER_MARGIN, bTmp);
889 }
890 break;
891 case HANDLE_TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK:
892 {
893 bool bTmp = *o3tl::doAccess<bool>(rValue);
894 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK, bTmp);
895 }
896 break;
897 case HANDLE_SURROUND_TEXT_WRAP_SMALL:
898 {
899 bool bTmp = *o3tl::doAccess<bool>(rValue);
900 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::SURROUND_TEXT_WRAP_SMALL, bTmp);
901 }
902 break;
903 case HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING:
904 {
905 bool bTmp = *o3tl::doAccess<bool>(rValue);
906 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, bTmp);
907 }
908 break;
909 case HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE:
910 {
911 bool bTmp;
912 if (rValue >>= bTmp)
913 {
914 mpDoc->getIDocumentSettingAccess().set(
915 DocumentSettingId::PROP_LINE_SPACING_SHRINKS_FIRST_LINE, bTmp);
916 }
917 }
918 break;
919 case HANDLE_SUBTRACT_FLYS:
920 {
921 bool bTmp;
922 if (rValue >>= bTmp)
923 {
924 mpDoc->getIDocumentSettingAccess().set(
925 DocumentSettingId::SUBTRACT_FLYS, bTmp);
926 }
927 }
928 break;
929 case HANDLE_DISABLE_OFF_PAGE_POSITIONING:
930 {
931 bool bTmp;
932 if (rValue >>= bTmp)
933 {
934 mpDoc->getIDocumentSettingAccess().set(
935 DocumentSettingId::DISABLE_OFF_PAGE_POSITIONING, bTmp);
936 }
937 }
938 break;
939 case HANDLE_EMPTY_DB_FIELD_HIDES_PARA:
940 {
941 bool bTmp;
942 if (rValue >>= bTmp)
943 {
944 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::EMPTY_DB_FIELD_HIDES_PARA,
945 bTmp);
946 }
947 }
948 break;
949 case HANDLE_CONTINUOUS_ENDNOTES:
950 {
951 bool bTmp;
952 if (rValue >>= bTmp)
953 {
954 mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::CONTINUOUS_ENDNOTES,
955 bTmp);
956 }
957 }
958 break;
959 case HANDLE_HEADER_SPACING_BELOW_LAST_PARA:
960 {
961 bool bTmp;
962 if (rValue >>= bTmp)
963 {
964 mpDoc->getIDocumentSettingAccess().set(
965 DocumentSettingId::HEADER_SPACING_BELOW_LAST_PARA, bTmp);
966 }
967 }
968 break;
969 default:
970 throw UnknownPropertyException(OUString::number(rInfo.mnHandle));
971 }
972 }
973
_postSetValues()974 void SwXDocumentSettings::_postSetValues ()
975 {
976 // set printer only once, namely here!
977 if( mpPrinter != nullptr )
978 {
979 // #i86352# the printer is also used as container for options by sfx
980 // when setting a printer it should have decent default options
981 SfxItemSet aOptions( mpPrinter->GetOptions() );
982 SwPrintData aPrtData( mpDoc->getIDocumentDeviceAccess().getPrintData() );
983 SwAddPrinterItem aAddPrinterItem (aPrtData);
984 aOptions.Put(aAddPrinterItem);
985 mpPrinter->SetOptions( aOptions );
986 mpPrinter->SetPrinterSettingsPreferred( mbPreferPrinterPapersize );
987
988 mpDoc->getIDocumentDeviceAccess().setPrinter( mpPrinter, true, true );
989 }
990
991 mpPrinter = nullptr;
992 mpDocSh = nullptr;
993 mpDoc = nullptr;
994 }
995
_preGetValues()996 void SwXDocumentSettings::_preGetValues ()
997 {
998 mpDocSh = mpModel->GetDocShell();
999 if (nullptr == mpDocSh)
1000 throw UnknownPropertyException();
1001 mpDoc = mpDocSh->GetDoc();
1002 if (nullptr == mpDoc)
1003 throw UnknownPropertyException();
1004 }
1005
_getSingleValue(const comphelper::PropertyInfo & rInfo,uno::Any & rValue)1006 void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue )
1007 {
1008 switch( rInfo.mnHandle )
1009 {
1010 case HANDLE_FORBIDDEN_CHARS:
1011 {
1012 Reference<XForbiddenCharacters> xRet(*mpModel->GetPropertyHelper(), UNO_QUERY);
1013 rValue <<= xRet;
1014 }
1015 break;
1016 case HANDLE_LINK_UPDATE_MODE:
1017 {
1018 rValue <<= static_cast < sal_Int16 > ( mpDoc->getIDocumentSettingAccess().getLinkUpdateMode(true) );
1019 }
1020 break;
1021 case HANDLE_FIELD_AUTO_UPDATE:
1022 {
1023 SwFieldUpdateFlags nFlags = mpDoc->getIDocumentSettingAccess().getFieldUpdateFlags(true);
1024 rValue <<= nFlags == AUTOUPD_FIELD_ONLY || nFlags == AUTOUPD_FIELD_AND_CHARTS;
1025 }
1026 break;
1027 case HANDLE_CHART_AUTO_UPDATE:
1028 {
1029 SwFieldUpdateFlags nFlags = mpDoc->getIDocumentSettingAccess().getFieldUpdateFlags(true);
1030 rValue <<= nFlags == AUTOUPD_FIELD_AND_CHARTS;
1031 }
1032 break;
1033 case HANDLE_ADD_PARA_TABLE_SPACING:
1034 {
1035 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::PARA_SPACE_MAX);
1036 }
1037 break;
1038 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
1039 {
1040 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::PARA_SPACE_MAX_AT_PAGES);
1041 }
1042 break;
1043 case HANDLE_ALIGN_TAB_STOP_POSITION:
1044 {
1045 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::TAB_COMPAT);
1046 }
1047 break;
1048 case HANDLE_PRINTER_NAME:
1049 {
1050 SfxPrinter *pPrinter = mpDoc->getIDocumentDeviceAccess().getPrinter( false );
1051 rValue <<= pPrinter ? pPrinter->GetName() : OUString();
1052 }
1053 break;
1054 case HANDLE_PRINTER_SETUP:
1055 {
1056 SfxPrinter *pPrinter = mpDoc->getIDocumentDeviceAccess().getPrinter( false );
1057 if (pPrinter)
1058 {
1059 SvMemoryStream aStream;
1060 pPrinter->Store( aStream );
1061 sal_uInt32 nSize = aStream.TellEnd();
1062 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
1063 Sequence < sal_Int8 > aSequence( nSize );
1064 aStream.ReadBytes(aSequence.getArray(), nSize);
1065 rValue <<= aSequence;
1066 }
1067 else
1068 {
1069 Sequence < sal_Int8 > aSequence ( 0 );
1070 rValue <<= aSequence;
1071 }
1072 }
1073 break;
1074 case HANDLE_PRINTER_PAPER:
1075 {
1076 SfxPrinter *pTempPrinter = mpDoc->getIDocumentDeviceAccess().getPrinter( false );
1077 rValue <<= pTempPrinter && pTempPrinter->GetPrinterSettingsPreferred();
1078 }
1079 break;
1080 case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
1081 {
1082 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::KERN_ASIAN_PUNCTUATION);
1083 }
1084 break;
1085 case HANDLE_APPLY_USER_DATA:
1086 {
1087 rValue <<= mpDocSh->IsUseUserData();
1088 }
1089 break;
1090 case HANDLE_SAVE_THUMBNAIL:
1091 {
1092 rValue <<= mpDocSh->IsUseThumbnailSave();
1093 }
1094 break;
1095 case HANDLE_CHARACTER_COMPRESSION_TYPE:
1096 {
1097 rValue <<= static_cast < sal_Int16 > (mpDoc->getIDocumentSettingAccess().getCharacterCompressionType());
1098 }
1099 break;
1100 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
1101 {
1102 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT_SAVE_LINKS);
1103 }
1104 break;
1105 case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
1106 {
1107 const SwDBData& rData = mpDoc->GetDBDesc();
1108 rValue <<= rData.sDataSource;
1109 }
1110 break;
1111 case HANDLE_CURRENT_DATABASE_COMMAND:
1112 {
1113 const SwDBData& rData = mpDoc->GetDBDesc();
1114 rValue <<= rData.sCommand;
1115 }
1116 break;
1117 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
1118 {
1119 const SwDBData& rData = mpDoc->GetDBDesc();
1120 rValue <<= rData.nCommandType;
1121 }
1122 break;
1123 case HANDLE_EMBEDDED_DATABASE_NAME:
1124 {
1125 #if HAVE_FEATURE_DBCONNECTIVITY
1126 rValue <<= mpDoc->GetDBManager()->getEmbeddedName();
1127 #else
1128 rValue = uno::Any();
1129 #endif
1130 }
1131 break;
1132 case HANDLE_SAVE_VERSION_ON_CLOSE:
1133 {
1134 rValue <<= mpDocSh->IsSaveVersionOnClose();
1135 }
1136 break;
1137 case HANDLE_UPDATE_FROM_TEMPLATE:
1138 {
1139 rValue <<= mpDocSh->IsQueryLoadTemplate();
1140 }
1141 break;
1142 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
1143 {
1144 // returns short (see css.document.PrinterIndependentLayout)
1145 sal_Int16 nVirDevType = mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::USE_VIRTUAL_DEVICE) ?
1146 ( mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::USE_HIRES_VIRTUAL_DEVICE) ?
1147 document::PrinterIndependentLayout::HIGH_RESOLUTION :
1148 document::PrinterIndependentLayout::LOW_RESOLUTION ) :
1149 document::PrinterIndependentLayout::DISABLED;
1150 rValue <<= nVirDevType;
1151 }
1152 break;
1153 case HANDLE_IS_LABEL_DOC:
1154 {
1155 bool bLabel = mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::LABEL_DOCUMENT);
1156 rValue <<= bLabel;
1157 }
1158 break;
1159 case HANDLE_IS_ADD_FLY_OFFSET:
1160 {
1161 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::ADD_FLY_OFFSETS);
1162 }
1163 break;
1164 case HANDLE_IS_ADD_VERTICAL_FLY_OFFSET:
1165 {
1166 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::ADD_VERTICAL_FLY_OFFSETS);
1167 }
1168 break;
1169 case HANDLE_IS_ADD_EXTERNAL_LEADING:
1170 {
1171 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::ADD_EXT_LEADING);
1172 }
1173 break;
1174 case HANDLE_OLD_NUMBERING:
1175 {
1176 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::OLD_NUMBERING);
1177 }
1178 break;
1179 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING:
1180 {
1181 rValue <<= false;
1182 }
1183 break;
1184 case HANDLE_ALLOW_PRINTJOB_CANCEL:
1185 {
1186 rValue <<= mpDocSh->Stamp_GetPrintCancelState();
1187 }
1188 break;
1189 case HANDLE_USE_FORMER_LINE_SPACING:
1190 {
1191 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::OLD_LINE_SPACING);
1192 }
1193 break;
1194 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
1195 {
1196 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::ADD_PARA_SPACING_TO_TABLE_CELLS);
1197 }
1198 break;
1199 case HANDLE_ADD_PARA_LINE_SPACING_TO_TABLE_CELLS:
1200 {
1201 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::ADD_PARA_LINE_SPACING_TO_TABLE_CELLS);
1202 }
1203 break;
1204 case HANDLE_USE_FORMER_OBJECT_POSITIONING:
1205 {
1206 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::USE_FORMER_OBJECT_POS);
1207 }
1208 break;
1209 case HANDLE_USE_FORMER_TEXT_WRAPPING:
1210 {
1211 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::USE_FORMER_TEXT_WRAPPING);
1212 }
1213 break;
1214 case HANDLE_CHANGES_PASSWORD:
1215 {
1216 rValue <<= mpDoc->getIDocumentRedlineAccess().GetRedlinePassword();
1217 }
1218 break;
1219 case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
1220 {
1221 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION);
1222 }
1223 break;
1224 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
1225 {
1226 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING);
1227 }
1228 break;
1229 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
1230 {
1231 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK);
1232 }
1233 break;
1234 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
1235 {
1236 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT);
1237 }
1238 break;
1239 case HANDLE_TABLE_ROW_KEEP :
1240 {
1241 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::TABLE_ROW_KEEP);
1242 }
1243 break;
1244 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
1245 {
1246 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION);
1247 }
1248 break;
1249 case HANDLE_LOAD_READONLY:
1250 {
1251 rValue <<= mpDocSh->IsLoadReadonly();
1252 }
1253 break;
1254 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
1255 {
1256 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE);
1257 }
1258 break;
1259 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
1260 {
1261 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME);
1262 }
1263 break;
1264 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
1265 {
1266 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::UNIX_FORCE_ZERO_EXT_LEADING);
1267 }
1268 break;
1269 case HANDLE_USE_OLD_PRINTER_METRICS:
1270 {
1271 rValue <<= false;
1272 }
1273 break;
1274 case HANDLE_TABS_RELATIVE_TO_INDENT:
1275 {
1276 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::TABS_RELATIVE_TO_INDENT);
1277 }
1278 break;
1279 case HANDLE_RSID:
1280 {
1281 rValue <<= static_cast < sal_Int32 > ( mpDoc->getRsid() );
1282 }
1283 break;
1284 case HANDLE_RSID_ROOT:
1285 {
1286 rValue <<= static_cast < sal_Int32 > ( mpDoc->getRsidRoot() );
1287 }
1288 break;
1289 case HANDLE_PROTECT_FORM:
1290 {
1291 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::PROTECT_FORM);
1292 }
1293 break;
1294 case HANDLE_MS_WORD_COMP_TRAILING_BLANKS:
1295 {
1296 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS);
1297 }
1298 break;
1299 case HANDLE_MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY:
1300 {
1301 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY);
1302 }
1303 break;
1304 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
1305 {
1306 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST);
1307 }
1308 break;
1309 case HANDLE_MODIFYPASSWORDINFO:
1310 {
1311 rValue <<= mpDocSh->GetModifyPasswordInfo();
1312 }
1313 break;
1314 case HANDLE_MATH_BASELINE_ALIGNMENT:
1315 {
1316 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT );
1317 }
1318 break;
1319 case HANDLE_INVERT_BORDER_SPACING:
1320 {
1321 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::INVERT_BORDER_SPACING);
1322 }
1323 break;
1324 case HANDLE_COLLAPSE_EMPTY_CELL_PARA:
1325 {
1326 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::COLLAPSE_EMPTY_CELL_PARA );
1327 }
1328 break;
1329 case HANDLE_SMALL_CAPS_PERCENTAGE_66:
1330 {
1331 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::SMALL_CAPS_PERCENTAGE_66 );
1332 }
1333 break;
1334 case HANDLE_TAB_OVERFLOW:
1335 {
1336 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::TAB_OVERFLOW );
1337 }
1338 break;
1339 case HANDLE_UNBREAKABLE_NUMBERINGS:
1340 {
1341 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::UNBREAKABLE_NUMBERINGS );
1342 }
1343 break;
1344 case HANDLE_STYLES_NODEFAULT:
1345 {
1346 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::STYLES_NODEFAULT );
1347 }
1348 break;
1349 case HANDLE_FLOATTABLE_NOMARGINS:
1350 {
1351 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::FLOATTABLE_NOMARGINS );
1352 }
1353 break;
1354 case HANDLE_CLIPPED_PICTURES:
1355 {
1356 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::CLIPPED_PICTURES );
1357 }
1358 break;
1359 case HANDLE_BACKGROUND_PARA_OVER_DRAWINGS:
1360 {
1361 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::BACKGROUND_PARA_OVER_DRAWINGS );
1362 }
1363 break;
1364 case HANDLE_EMBED_FONTS:
1365 {
1366 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_FONTS );
1367 }
1368 break;
1369 case HANDLE_EMBED_USED_FONTS:
1370 {
1371 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_USED_FONTS );
1372 }
1373 break;
1374 case HANDLE_EMBED_LATIN_SCRIPT_FONTS:
1375 {
1376 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_LATIN_SCRIPT_FONTS );
1377 }
1378 break;
1379 case HANDLE_EMBED_ASIAN_SCRIPT_FONTS:
1380 {
1381 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_ASIAN_SCRIPT_FONTS );
1382 }
1383 break;
1384 case HANDLE_EMBED_COMPLEX_SCRIPT_FONTS:
1385 {
1386 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_COMPLEX_SCRIPT_FONTS );
1387 }
1388 break;
1389 case HANDLE_EMBED_SYSTEM_FONTS:
1390 {
1391 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::EMBED_SYSTEM_FONTS );
1392 }
1393 break;
1394 case HANDLE_TAB_OVER_MARGIN:
1395 {
1396 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::TAB_OVER_MARGIN );
1397 }
1398 break;
1399 case HANDLE_TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK:
1400 {
1401 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK );
1402 }
1403 break;
1404 case HANDLE_SURROUND_TEXT_WRAP_SMALL:
1405 {
1406 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::SURROUND_TEXT_WRAP_SMALL );
1407 }
1408 break;
1409 case HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING:
1410 {
1411 rValue <<= mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING );
1412 }
1413 break;
1414 case HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE:
1415 {
1416 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::PROP_LINE_SPACING_SHRINKS_FIRST_LINE);
1417 }
1418 break;
1419 case HANDLE_SUBTRACT_FLYS:
1420 {
1421 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::SUBTRACT_FLYS);
1422 }
1423 break;
1424 case HANDLE_DISABLE_OFF_PAGE_POSITIONING:
1425 {
1426 rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::DISABLE_OFF_PAGE_POSITIONING);
1427 }
1428 break;
1429 case HANDLE_EMPTY_DB_FIELD_HIDES_PARA:
1430 {
1431 rValue <<= mpDoc->getIDocumentSettingAccess().get(
1432 DocumentSettingId::EMPTY_DB_FIELD_HIDES_PARA);
1433 }
1434 break;
1435 case HANDLE_CONTINUOUS_ENDNOTES:
1436 {
1437 rValue
1438 <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::CONTINUOUS_ENDNOTES);
1439 }
1440 break;
1441 case HANDLE_HEADER_SPACING_BELOW_LAST_PARA:
1442 {
1443 rValue <<= mpDoc->getIDocumentSettingAccess().get(
1444 DocumentSettingId::HEADER_SPACING_BELOW_LAST_PARA);
1445 }
1446 break;
1447 default:
1448 throw UnknownPropertyException(OUString::number(rInfo.mnHandle));
1449 }
1450 }
1451
_postGetValues()1452 void SwXDocumentSettings::_postGetValues ()
1453 {
1454 mpDocSh = nullptr;
1455 mpDoc = nullptr;
1456 }
1457
1458 // XServiceInfo
getImplementationName()1459 OUString SAL_CALL SwXDocumentSettings::getImplementationName( )
1460 {
1461 return "SwXDocumentSettings";
1462 }
1463
supportsService(const OUString & ServiceName)1464 sal_Bool SAL_CALL SwXDocumentSettings::supportsService( const OUString& ServiceName )
1465 {
1466 return cppu::supportsService(this, ServiceName);
1467 }
1468
getSupportedServiceNames()1469 Sequence< OUString > SAL_CALL SwXDocumentSettings::getSupportedServiceNames( )
1470 {
1471 return { "com.sun.star.document.Settings", "com.sun.star.text.DocumentSettings", "com.sun.star.text.PrintSettings" };
1472 }
1473
1474 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
1475