1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26
27 #include <vos/mutex.hxx>
28 #include <sfx2/sfxbasecontroller.hxx>
29 #include <SwXDocumentSettings.hxx>
30 #include <comphelper/MasterPropertySetInfo.hxx>
31 #include <com/sun/star/beans/PropertyAttribute.hpp>
32 #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
33 #include <com/sun/star/document/PrinterIndependentLayout.hpp>
34 #include <doc.hxx>
35 #include <docsh.hxx>
36 #include <fldupde.hxx>
37 #include <linkenum.hxx>
38 #include <sfx2/printer.hxx>
39 #include <editsh.hxx>
40 #include <drawdoc.hxx>
41 #include <svl/zforlist.hxx>
42 #include <unotxdoc.hxx>
43 #include <cmdid.h>
44 #include <svx/zoomitem.hxx>
45 #include <unomod.hxx>
46 #include <vcl/svapp.hxx>
47
48 #include "swmodule.hxx"
49 #include "cfgitems.hxx"
50 #include "prtopt.hxx"
51
52
53 #include "swmodule.hxx"
54 #include "cfgitems.hxx"
55 #include "prtopt.hxx"
56
57 using rtl::OUString;
58
59 using namespace comphelper;
60 using namespace ::com::sun::star;
61 using namespace ::com::sun::star::uno;
62 using namespace ::com::sun::star::beans;
63 using namespace ::com::sun::star::lang;
64 using namespace ::com::sun::star::i18n;
65
66 enum SwDocumentSettingsPropertyHandles
67 {
68 HANDLE_FORBIDDEN_CHARS,
69 HANDLE_LINK_UPDATE_MODE,
70 HANDLE_FIELD_AUTO_UPDATE,
71 HANDLE_CHART_AUTO_UPDATE,
72 HANDLE_ADD_PARA_TABLE_SPACING,
73 HANDLE_ADD_PARA_TABLE_SPACING_AT_START,
74 HANDLE_ALIGN_TAB_STOP_POSITION,
75 HANDLE_PRINTER_NAME,
76 HANDLE_PRINTER_SETUP,
77 HANDLE_IS_KERN_ASIAN_PUNCTUATION,
78 HANDLE_CHARACTER_COMPRESSION_TYPE,
79 HANDLE_APPLY_USER_DATA,
80 HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS,
81 HANDLE_CURRENT_DATABASE_DATA_SOURCE,
82 HANDLE_CURRENT_DATABASE_COMMAND,
83 HANDLE_CURRENT_DATABASE_COMMAND_TYPE,
84 HANDLE_SAVE_VERSION_ON_CLOSE,
85 HANDLE_IS_GRID_VISIBLE,
86 HANDLE_IS_SNAP_TO_GRID,
87 HANDLE_IS_SYNCHRONISE_AXES,
88 HANDLE_HORIZONTAL_GRID_RESOLUTION,
89 HANDLE_HORIZONTAL_GRID_SUBDIVISION,
90 HANDLE_VERTICAL_GRID_RESOLUTION,
91 HANDLE_VERTICAL_GRID_SUBDIVISION,
92 HANDLE_UPDATE_FROM_TEMPLATE,
93 HANDLE_PRINTER_INDEPENDENT_LAYOUT,
94 HANDLE_IS_LABEL_DOC,
95 HANDLE_IS_ADD_FLY_OFFSET,
96 HANDLE_IS_ADD_EXTERNAL_LEADING,
97 HANDLE_OLD_NUMBERING, // #111955#
98 HANDLE_OUTLINELEVEL_YIELDS_NUMBERING,
99 /* Stampit It disable the print cancel button of the shown progress dialog. */
100 HANDLE_ALLOW_PRINTJOB_CANCEL,
101 HANDLE_USE_FORMER_LINE_SPACING,
102 HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS,
103 HANDLE_USE_FORMER_OBJECT_POSITIONING,
104 HANDLE_USE_FORMER_TEXT_WRAPPING,
105 HANDLE_CHANGES_PASSWORD,
106 HANDLE_CONSIDER_WRAP_ON_OBJPOS,
107 HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
108 HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
109 HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
110 HANDLE_TABLE_ROW_KEEP,
111 HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,
112 HANDLE_LOAD_READONLY,
113 HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE,
114 HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES,
115 HANDLE_UNIX_FORCE_ZERO_EXT_LEADING,
116 HANDLE_USE_OLD_PRINTER_METRICS,
117 HANDLE_PROTECT_FORM,
118 HANDLE_TABS_RELATIVE_TO_INDENT,
119 // --> OD 2008-06-05 #i89181#
120 HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
121 // <--
122 HANDLE_MODIFYPASSWORDINFO,
123 HANDLE_MATH_BASELINE_ALIGNMENT
124 };
125
lcl_createSettingsInfo()126 MasterPropertySetInfo * lcl_createSettingsInfo()
127 {
128 static PropertyInfo aWriterSettingsInfoMap[] =
129 {
130 { RTL_CONSTASCII_STRINGPARAM("ForbiddenCharacters"), HANDLE_FORBIDDEN_CHARS, CPPUTYPE_REFFORBCHARS, 0, 0},
131 { RTL_CONSTASCII_STRINGPARAM("LinkUpdateMode"), HANDLE_LINK_UPDATE_MODE, CPPUTYPE_INT16, 0, 0},
132 { RTL_CONSTASCII_STRINGPARAM("FieldAutoUpdate"), HANDLE_FIELD_AUTO_UPDATE, CPPUTYPE_BOOLEAN, 0, 0},
133 { RTL_CONSTASCII_STRINGPARAM("ChartAutoUpdate"), HANDLE_CHART_AUTO_UPDATE, CPPUTYPE_BOOLEAN, 0, 0},
134 { RTL_CONSTASCII_STRINGPARAM("AddParaTableSpacing"), HANDLE_ADD_PARA_TABLE_SPACING, CPPUTYPE_BOOLEAN, 0, 0},
135 { RTL_CONSTASCII_STRINGPARAM("AddParaTableSpacingAtStart"), HANDLE_ADD_PARA_TABLE_SPACING_AT_START, CPPUTYPE_BOOLEAN, 0, 0},
136 { RTL_CONSTASCII_STRINGPARAM("AlignTabStopPosition"), HANDLE_ALIGN_TAB_STOP_POSITION, CPPUTYPE_BOOLEAN, 0, 0},
137 { RTL_CONSTASCII_STRINGPARAM("PrinterName"), HANDLE_PRINTER_NAME, CPPUTYPE_OUSTRING, 0, 0},
138 { RTL_CONSTASCII_STRINGPARAM("PrinterSetup"), HANDLE_PRINTER_SETUP, CPPUTYPE_SEQINT8, 0, 0},
139 { RTL_CONSTASCII_STRINGPARAM("IsKernAsianPunctuation"), HANDLE_IS_KERN_ASIAN_PUNCTUATION, CPPUTYPE_BOOLEAN, 0, 0},
140 { RTL_CONSTASCII_STRINGPARAM("CharacterCompressionType"), HANDLE_CHARACTER_COMPRESSION_TYPE, CPPUTYPE_INT16, 0, 0},
141 { RTL_CONSTASCII_STRINGPARAM("ApplyUserData"), HANDLE_APPLY_USER_DATA, CPPUTYPE_BOOLEAN, 0, 0},
142 { RTL_CONSTASCII_STRINGPARAM("SaveGlobalDocumentLinks"), HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS, CPPUTYPE_BOOLEAN, 0, 0},
143 { RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseDataSource"), HANDLE_CURRENT_DATABASE_DATA_SOURCE, CPPUTYPE_OUSTRING, 0, 0},
144 { RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseCommand"), HANDLE_CURRENT_DATABASE_COMMAND, CPPUTYPE_OUSTRING, 0, 0},
145 { RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseCommandType"), HANDLE_CURRENT_DATABASE_COMMAND_TYPE, CPPUTYPE_INT32, 0, 0},
146 { RTL_CONSTASCII_STRINGPARAM("SaveVersionOnClose"), HANDLE_SAVE_VERSION_ON_CLOSE, CPPUTYPE_BOOLEAN, 0, 0},
147 { RTL_CONSTASCII_STRINGPARAM("UpdateFromTemplate"), HANDLE_UPDATE_FROM_TEMPLATE, CPPUTYPE_BOOLEAN, 0, 0},
148
149 { RTL_CONSTASCII_STRINGPARAM("PrinterIndependentLayout"), HANDLE_PRINTER_INDEPENDENT_LAYOUT, CPPUTYPE_INT16, 0, 0},
150 { RTL_CONSTASCII_STRINGPARAM("IsLabelDocument"), HANDLE_IS_LABEL_DOC, CPPUTYPE_BOOLEAN, 0, 0},
151 { RTL_CONSTASCII_STRINGPARAM("AddFrameOffsets"), HANDLE_IS_ADD_FLY_OFFSET, CPPUTYPE_BOOLEAN, 0, 0},
152 { RTL_CONSTASCII_STRINGPARAM("AddExternalLeading"), HANDLE_IS_ADD_EXTERNAL_LEADING, CPPUTYPE_BOOLEAN, 0, 0},
153 { RTL_CONSTASCII_STRINGPARAM("UseOldNumbering"), HANDLE_OLD_NUMBERING, CPPUTYPE_BOOLEAN, 0, 0}, // #111955#
154 { RTL_CONSTASCII_STRINGPARAM("OutlineLevelYieldsNumbering"), HANDLE_OUTLINELEVEL_YIELDS_NUMBERING, CPPUTYPE_BOOLEAN, 0, 0},
155 /* Stampit It disable the print cancel button of the shown progress dialog. */
156 { RTL_CONSTASCII_STRINGPARAM("AllowPrintJobCancel"), HANDLE_ALLOW_PRINTJOB_CANCEL, CPPUTYPE_BOOLEAN, 0, 0},
157 { RTL_CONSTASCII_STRINGPARAM("UseFormerLineSpacing"), HANDLE_USE_FORMER_LINE_SPACING, CPPUTYPE_BOOLEAN, 0, 0},
158 { RTL_CONSTASCII_STRINGPARAM("AddParaSpacingToTableCells"), HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS, CPPUTYPE_BOOLEAN, 0, 0},
159 { RTL_CONSTASCII_STRINGPARAM("UseFormerObjectPositioning"), HANDLE_USE_FORMER_OBJECT_POSITIONING, CPPUTYPE_BOOLEAN, 0, 0},
160 { RTL_CONSTASCII_STRINGPARAM("UseFormerTextWrapping"), HANDLE_USE_FORMER_TEXT_WRAPPING, CPPUTYPE_BOOLEAN, 0, 0},
161 { RTL_CONSTASCII_STRINGPARAM("RedlineProtectionKey"), HANDLE_CHANGES_PASSWORD, CPPUTYPE_SEQINT8, 0, 0},
162 { RTL_CONSTASCII_STRINGPARAM("ConsiderTextWrapOnObjPos"), HANDLE_CONSIDER_WRAP_ON_OBJPOS, CPPUTYPE_BOOLEAN, 0, 0},
163 { RTL_CONSTASCII_STRINGPARAM("IgnoreFirstLineIndentInNumbering"), HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, CPPUTYPE_BOOLEAN, 0, 0},
164 { RTL_CONSTASCII_STRINGPARAM("DoNotJustifyLinesWithManualBreak"), HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, CPPUTYPE_BOOLEAN, 0, 0},
165 { RTL_CONSTASCII_STRINGPARAM("DoNotResetParaAttrsForNumFont"), HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, CPPUTYPE_BOOLEAN, 0, 0},
166 { RTL_CONSTASCII_STRINGPARAM("TableRowKeep"), HANDLE_TABLE_ROW_KEEP, CPPUTYPE_BOOLEAN, 0, 0},
167 { RTL_CONSTASCII_STRINGPARAM("IgnoreTabsAndBlanksForLineCalculation"), HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, CPPUTYPE_BOOLEAN, 0, 0},
168 { RTL_CONSTASCII_STRINGPARAM("LoadReadonly"), HANDLE_LOAD_READONLY, CPPUTYPE_BOOLEAN, 0, 0},
169 { RTL_CONSTASCII_STRINGPARAM("DoNotCaptureDrawObjsOnPage"), HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, CPPUTYPE_BOOLEAN, 0, 0},
170 { RTL_CONSTASCII_STRINGPARAM("ClipAsCharacterAnchoredWriterFlyFrames"), HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES, CPPUTYPE_BOOLEAN, 0, 0},
171 { RTL_CONSTASCII_STRINGPARAM("UnxForceZeroExtLeading"), HANDLE_UNIX_FORCE_ZERO_EXT_LEADING, CPPUTYPE_BOOLEAN, 0, 0},
172 { RTL_CONSTASCII_STRINGPARAM("UseOldPrinterMetrics"), HANDLE_USE_OLD_PRINTER_METRICS, CPPUTYPE_BOOLEAN, 0, 0},
173 { RTL_CONSTASCII_STRINGPARAM("TabsRelativeToIndent"), HANDLE_TABS_RELATIVE_TO_INDENT, CPPUTYPE_BOOLEAN, 0, 0},
174 { RTL_CONSTASCII_STRINGPARAM("ProtectForm"), HANDLE_PROTECT_FORM, CPPUTYPE_BOOLEAN, 0, 0},
175 // --> OD 2008-06-05 #i89181#
176 { RTL_CONSTASCII_STRINGPARAM("TabAtLeftIndentForParagraphsInList"), HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, CPPUTYPE_BOOLEAN, 0, 0},
177 { RTL_CONSTASCII_STRINGPARAM("ModifyPasswordInfo"), HANDLE_MODIFYPASSWORDINFO, CPPUTYPE_PROPERTYVALUE, 0, 0},
178 { RTL_CONSTASCII_STRINGPARAM("MathBaselineAlignment"), HANDLE_MATH_BASELINE_ALIGNMENT, CPPUTYPE_BOOLEAN, 0, 0},
179
180 /*
181 * As OS said, we don't have a view when we need to set this, so I have to
182 * find another solution before adding them to this property set - MTG
183 { RTL_CONSTASCII_STRINGPARAM("IsGridVisible"), HANDLE_IS_GRID_VISIBLE, CPPUTYPE_BOOLEAN, 0, 0},
184 { RTL_CONSTASCII_STRINGPARAM("IsSnapToGrid"), HANDLE_IS_SNAP_TO_GRID, CPPUTYPE_BOOLEAN, 0, 0},
185 { RTL_CONSTASCII_STRINGPARAM("IsSynchroniseAxes"), HANDLE_IS_SYNCHRONISE_AXES, CPPUTYPE_BOOLEAN, 0, 0},
186 { RTL_CONSTASCII_STRINGPARAM("HorizontalGridResolution"), HANDLE_HORIZONTAL_GRID_RESOLUTION, CPPUTYPE_INT32, 0, 0},
187 { RTL_CONSTASCII_STRINGPARAM("HorizontalGridSubdivision"), HANDLE_HORIZONTAL_GRID_SUBDIVISION, CPPUTYPE_INT16, 0, 0},
188 { RTL_CONSTASCII_STRINGPARAM("VerticalGridResolution"), HANDLE_VERTICAL_GRID_RESOLUTION, CPPUTYPE_INT32, 0, 0},
189 { RTL_CONSTASCII_STRINGPARAM("VerticalGridSubdivision"), HANDLE_VERTICAL_GRID_SUBDIVISION, CPPUTYPE_INT16, 0, 0},
190
191 { RTL_CONSTASCII_STRINGPARAM("ShowParagraphEnd"), HANDLE_SHOW_PARAGRAPH_END, CPPUTYPE_BOOLEAN, 0, 0},
192 { RTL_CONSTASCII_STRINGPARAM("ShowOptionalHyphens"), HANDLE_SHOW_OPTIONAL_HYPHENS, CPPUTYPE_BOOLEAN, 0, 0},
193 { RTL_CONSTASCII_STRINGPARAM("ShowSpaces"), HANDLE_SHOW_SPACES, CPPUTYPE_BOOLEAN, 0, 0},
194 { RTL_CONSTASCII_STRINGPARAM("ShowTabs"), HANDLE_SHOW_TABS, CPPUTYPE_BOOLEAN, 0, 0},
195 { RTL_CONSTASCII_STRINGPARAM("ShowBreaks"), HANDLE_SHOW_BREAKS, CPPUTYPE_BOOLEAN, 0, 0},
196 { RTL_CONSTASCII_STRINGPARAM("ShowHiddenText"), HANDLE_SHOW_HIDDEN_TEXT, CPPUTYPE_BOOLEAN, 0, 0},
197 { RTL_CONSTASCII_STRINGPARAM("ShowHiddenParagraphs"), HANDLE_SHOW_HIDDEN_PARAGRAPHS, CPPUTYPE_BOOLEAN, 0, 0},
198
199 { RTL_CONSTASCII_STRINGPARAM("ShowTextLimitGuide"), HANDLE_SHOW_TEXT_LIMIT_GUIDE, CPPUTYPE_BOOLEAN, 0, 0},
200 { RTL_CONSTASCII_STRINGPARAM("ShowTableLimitGuide"), HANDLE_SHOW_TABLE_LIMIT_GUIDE, CPPUTYPE_BOOLEAN, 0, 0},
201 { RTL_CONSTASCII_STRINGPARAM("ShowSectionLimitGuide"), HANDLE_SHOW_SECTION_LIMIT_GUIDE, CPPUTYPE_BOOLEAN, 0, 0},
202 { RTL_CONSTASCII_STRINGPARAM("ShowGuidesWhileMoving"), HANDLE_SHOW_GUIDES_WHILE_MOVING, CPPUTYPE_BOOLEAN, 0, 0},
203 { RTL_CONSTASCII_STRINGPARAM("ShowSimpleHandles"), HANDLE_SHOW_SIMPLE_HANDLES, CPPUTYPE_BOOLEAN, 0, 0},
204 { RTL_CONSTASCII_STRINGPARAM("ShowLargeHandles"), HANDLE_SHOW_LARGE_HANDLES, CPPUTYPE_BOOLEAN, 0, 0},
205 */
206 { NULL, 0, 0, CPPUTYPE_UNKNOWN, 0, 0 }
207 };
208 return new MasterPropertySetInfo ( aWriterSettingsInfoMap );
209 }
210
SwXDocumentSettings(SwXTextDocument * pModel)211 SwXDocumentSettings::SwXDocumentSettings ( SwXTextDocument * pModel )
212 : MasterPropertySet ( lcl_createSettingsInfo (),
213 &Application::GetSolarMutex () )
214 , mxModel ( pModel )
215 , mpModel ( pModel )
216 , mpDocSh ( NULL )
217 , mpDoc ( NULL )
218 , mpPrinter( NULL )
219 {
220 registerSlave ( new SwXPrintSettings ( PRINT_SETTINGS_DOCUMENT, mpModel->GetDocShell()->GetDoc() ) );
221 }
222
~SwXDocumentSettings()223 SwXDocumentSettings::~SwXDocumentSettings()
224 throw()
225 {
226 }
227
queryInterface(const Type & rType)228 Any SAL_CALL SwXDocumentSettings::queryInterface( const Type& rType )
229 {
230 return ::cppu::queryInterface ( rType,
231 // OWeakObject interfaces
232 dynamic_cast< XInterface* > ( dynamic_cast< OWeakObject* >(this) ),
233 dynamic_cast< XWeak* > ( this ),
234 // my own interfaces
235 dynamic_cast< XPropertySet* > ( this ),
236 dynamic_cast< XPropertyState* > ( this ),
237 dynamic_cast< XMultiPropertySet* > ( this ),
238 dynamic_cast< XServiceInfo* > ( this ),
239 dynamic_cast< XTypeProvider* > ( this ) );
240 }
acquire()241 void SwXDocumentSettings::acquire ()
242 throw ()
243 {
244 OWeakObject::acquire();
245 }
release()246 void SwXDocumentSettings::release ()
247 throw ()
248 {
249 OWeakObject::release();
250 }
251
getTypes()252 uno::Sequence< uno::Type > SAL_CALL SwXDocumentSettings::getTypes( )
253 {
254 vos::OGuard aGuard(Application::GetSolarMutex());
255
256 uno::Sequence< uno::Type > aBaseTypes( 5 );
257 uno::Type* pBaseTypes = aBaseTypes.getArray();
258
259 // from MasterPropertySet
260 pBaseTypes[0] = ::getCppuType((Reference< XPropertySet >*)0);
261 pBaseTypes[1] = ::getCppuType((Reference< XPropertyState >*)0);
262 pBaseTypes[2] = ::getCppuType((Reference< XMultiPropertySet >*)0);
263 //
264 pBaseTypes[3] = ::getCppuType((Reference< XServiceInfo >*)0);
265 pBaseTypes[4] = ::getCppuType((Reference< XTypeProvider >*)0);
266
267 return aBaseTypes;
268 }
269
getImplementationId()270 uno::Sequence< sal_Int8 > SAL_CALL SwXDocumentSettings::getImplementationId( )
271 {
272 vos::OGuard aGuard(Application::GetSolarMutex());
273 static Sequence< sal_Int8 > aId( 16 );
274 static sal_Bool bInit = sal_False;
275 if(!bInit)
276 {
277 rtl_createUuid( (sal_uInt8 *)(aId.getArray() ), 0, sal_True );
278 bInit = sal_True;
279 }
280 return aId;
281 }
282
_preSetValues()283 void SwXDocumentSettings::_preSetValues ()
284 {
285 mpDocSh = mpModel->GetDocShell();
286 mpDoc = mpDocSh->GetDoc();
287
288 if( NULL == mpDoc || NULL == mpDocSh )
289 throw UnknownPropertyException();
290 }
291
292
_setSingleValue(const comphelper::PropertyInfo & rInfo,const uno::Any & rValue)293 void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
294 {
295 if (rInfo.mnAttributes & PropertyAttribute::READONLY)
296 throw PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + C2U(rInfo.mpName), static_cast < cppu::OWeakObject * > ( 0 ) );
297
298 switch( rInfo.mnHandle )
299 {
300 case HANDLE_FORBIDDEN_CHARS:
301 break;
302 case HANDLE_LINK_UPDATE_MODE:
303 {
304 sal_Int16 nMode = 0;
305 rValue >>= nMode;
306 switch (nMode)
307 {
308 case NEVER:
309 case MANUAL:
310 case AUTOMATIC:
311 case GLOBALSETTING:
312 break;
313 default:
314 throw IllegalArgumentException();
315 }
316 mpDoc->setLinkUpdateMode(nMode);
317 }
318 break;
319 case HANDLE_FIELD_AUTO_UPDATE:
320 {
321 sal_Bool bUpdateField = *(sal_Bool*)rValue.getValue();
322 SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true);
323 mpDoc->setFieldUpdateFlags( bUpdateField ?
324 nFlag == AUTOUPD_FIELD_AND_CHARTS ?
325 AUTOUPD_FIELD_AND_CHARTS :
326 AUTOUPD_FIELD_ONLY :
327 AUTOUPD_OFF );
328 }
329 break;
330 case HANDLE_CHART_AUTO_UPDATE:
331 {
332 sal_Bool bUpdateChart = *(sal_Bool*)rValue.getValue();
333 SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true);
334 mpDoc->setFieldUpdateFlags( (nFlag == AUTOUPD_FIELD_ONLY || nFlag == AUTOUPD_FIELD_AND_CHARTS ) ?
335 bUpdateChart ?
336 AUTOUPD_FIELD_AND_CHARTS :
337 AUTOUPD_FIELD_ONLY :
338 AUTOUPD_OFF );
339 }
340 break;
341 case HANDLE_ADD_PARA_TABLE_SPACING:
342 {
343 sal_Bool bParaSpace = sal_False;
344 rValue >>= bParaSpace;
345 mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX, bParaSpace );
346 }
347 break;
348 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
349 {
350 sal_Bool bParaSpacePage = sal_False;
351 rValue >>= bParaSpacePage;
352 mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES, bParaSpacePage );
353 }
354 break;
355 case HANDLE_ALIGN_TAB_STOP_POSITION:
356 {
357 sal_Bool bAlignTab = *(sal_Bool*)rValue.getValue();
358 mpDoc->set(IDocumentSettingAccess::TAB_COMPAT, bAlignTab);
359 }
360 break;
361 case HANDLE_PRINTER_NAME:
362 {
363 //the printer must be created
364 OUString sPrinterName;
365 if( rValue >>= sPrinterName )
366 {
367 if( !mpPrinter && sPrinterName.getLength() > 0 && mpDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
368 {
369 SfxPrinter* pPrinter = mpDoc->getPrinter( true );
370 if ( OUString ( pPrinter->GetName()) != sPrinterName )
371 {
372 SfxPrinter *pNewPrinter = new SfxPrinter ( pPrinter->GetOptions().Clone(), sPrinterName );
373 if( pNewPrinter->IsKnown() )
374 {
375 // set printer only once; in _postSetValues
376 mpPrinter = pNewPrinter;
377 }
378 else
379 {
380 delete pNewPrinter;
381 }
382 }
383 }
384 }
385 else
386 throw IllegalArgumentException();
387 }
388 break;
389 case HANDLE_PRINTER_SETUP:
390 {
391 Sequence < sal_Int8 > aSequence;
392 if ( rValue >>= aSequence )
393 {
394 sal_uInt32 nSize = aSequence.getLength();
395 if( nSize > 0 )
396 {
397 SvMemoryStream aStream (aSequence.getArray(), nSize,
398 STREAM_READ );
399 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
400 static sal_uInt16 __READONLY_DATA nRange[] =
401 {
402 FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
403 SID_HTML_MODE, SID_HTML_MODE,
404 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
405 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
406 0
407 };
408 SfxItemSet *pItemSet = new SfxItemSet( mpDoc->GetAttrPool(), nRange );
409 SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet );
410
411 // set printer only once; in _postSetValues
412 delete mpPrinter;
413 mpPrinter = pPrinter;
414 }
415 }
416 else
417 throw IllegalArgumentException();
418 }
419 break;
420 case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
421 {
422 sal_Bool bIsKern = *(sal_Bool*)(rValue).getValue();
423 mpDoc->set(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION, bIsKern);
424 SwEditShell* pEditSh = mpDoc->GetEditShell();
425 if(pEditSh)
426 pEditSh->ChgHyphenation();
427 }
428 break;
429 case HANDLE_CHARACTER_COMPRESSION_TYPE:
430 {
431 sal_Int16 nMode = 0;
432 rValue >>= nMode;
433 switch (nMode)
434 {
435 case CHARCOMPRESS_NONE:
436 case CHARCOMPRESS_PUNCTUATION:
437 case CHARCOMPRESS_PUNCTUATION_KANA:
438 break;
439 default:
440 throw IllegalArgumentException();
441 }
442 mpDoc->setCharacterCompressionType(static_cast < SwCharCompressType > (nMode) );
443 }
444 break;
445 case HANDLE_APPLY_USER_DATA:
446 {
447 mpDocSh->SetUseUserData( *(sal_Bool*)rValue.getValue() );
448 }
449 break;
450 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
451 {
452 sal_Bool bSaveGlobal = *(sal_Bool*)rValue.getValue();
453 mpDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS, bSaveGlobal );
454 }
455 break;
456 case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
457 {
458 SwDBData aData = mpDoc->GetDBData();
459 if ( rValue >>= aData.sDataSource )
460 mpDoc->ChgDBData( aData );
461 }
462 break;
463 case HANDLE_CURRENT_DATABASE_COMMAND:
464 {
465 SwDBData aData = mpDoc->GetDBData();
466 if ( rValue >>= aData.sCommand )
467 mpDoc->ChgDBData( aData );
468 }
469 break;
470 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
471 {
472 SwDBData aData = mpDoc->GetDBData();
473 if ( rValue >>= aData.nCommandType )
474 mpDoc->ChgDBData( aData );
475 }
476 break;
477 case HANDLE_SAVE_VERSION_ON_CLOSE:
478 {
479 mpDocSh->SetSaveVersionOnClose( *(sal_Bool*)rValue.getValue() );
480 }
481 break;
482 case HANDLE_UPDATE_FROM_TEMPLATE:
483 {
484 mpDocSh->SetQueryLoadTemplate( *(sal_Bool*)rValue.getValue() );
485 }
486 break;
487 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
488 {
489 sal_Int16 nTmp = 0;
490 rValue >>= nTmp;
491
492 bool bUseVirDev = true;
493 bool bHiResVirDev = true;
494 if( nTmp == document::PrinterIndependentLayout::DISABLED )
495 bUseVirDev = false;
496 else if ( nTmp == document::PrinterIndependentLayout::LOW_RESOLUTION )
497 bHiResVirDev = false;
498 else if ( nTmp != document::PrinterIndependentLayout::HIGH_RESOLUTION )
499 throw IllegalArgumentException();
500
501 mpDoc->setReferenceDeviceType( bUseVirDev, bHiResVirDev );
502 }
503 break;
504 case HANDLE_IS_LABEL_DOC :
505 {
506 sal_Bool bSet = sal_False;
507 if(!(rValue >>= bSet))
508 throw IllegalArgumentException();
509 mpDoc->set(IDocumentSettingAccess::LABEL_DOCUMENT, bSet);
510 }
511 break;
512 case HANDLE_IS_ADD_FLY_OFFSET:
513 {
514 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
515 mpDoc->set(IDocumentSettingAccess::ADD_FLY_OFFSETS, bTmp);
516 }
517 break;
518 case HANDLE_IS_ADD_EXTERNAL_LEADING:
519 {
520 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
521 mpDoc->set(IDocumentSettingAccess::ADD_EXT_LEADING, bTmp);
522 }
523 break;
524 case HANDLE_OLD_NUMBERING: // #111955#
525 {
526 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
527 mpDoc->set(IDocumentSettingAccess::OLD_NUMBERING, bTmp);
528 }
529 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING:
530 {
531 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
532 mpDoc->set(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE, bTmp);
533 }
534 break;
535 case HANDLE_ALLOW_PRINTJOB_CANCEL:
536 {
537 sal_Bool bState = sal_False;
538 if (!(rValue >>= bState))
539 throw IllegalArgumentException();
540 mpDocSh->Stamp_SetPrintCancelState(bState);
541 }
542 break;
543 case HANDLE_USE_FORMER_LINE_SPACING:
544 {
545 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
546 mpDoc->set(IDocumentSettingAccess::OLD_LINE_SPACING, bTmp);
547 }
548 break;
549 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
550 {
551 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
552 mpDoc->set(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS, bTmp);
553 }
554 break;
555 case HANDLE_USE_FORMER_OBJECT_POSITIONING:
556 {
557 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
558 mpDoc->set(IDocumentSettingAccess::USE_FORMER_OBJECT_POS, bTmp);
559 }
560 break;
561 case HANDLE_USE_FORMER_TEXT_WRAPPING:
562 {
563 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
564 mpDoc->set(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING, bTmp);
565 }
566 break;
567 case HANDLE_CHANGES_PASSWORD:
568 {
569 Sequence <sal_Int8> aNew;
570 if(rValue >>= aNew)
571 {
572 mpDoc->SetRedlinePassword(aNew);
573 if(aNew.getLength())
574 {
575 sal_uInt16 eMode = mpDoc->GetRedlineMode();
576 eMode = eMode|nsRedlineMode_t::REDLINE_ON;
577 mpDoc->SetRedlineMode((RedlineMode_t)( eMode ));
578 }
579 }
580 }
581 break;
582 case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
583 {
584 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
585 mpDoc->set(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION, bTmp );
586 }
587 break;
588 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
589 {
590 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
591 mpDoc->set(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, bTmp);
592 }
593 break;
594 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
595 {
596 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
597 mpDoc->set(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, bTmp);
598 }
599 break;
600 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
601 {
602 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
603 mpDoc->set(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, bTmp);
604 }
605 break;
606 case HANDLE_TABLE_ROW_KEEP:
607 {
608 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
609 mpDoc->set(IDocumentSettingAccess::TABLE_ROW_KEEP, bTmp);
610 }
611 break;
612 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
613 {
614 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
615 mpDoc->set(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, bTmp);
616 }
617 break;
618 case HANDLE_LOAD_READONLY:
619 {
620 mpDocSh->SetLoadReadonly( *(sal_Bool*)rValue.getValue() );
621 }
622 break;
623 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
624 {
625 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
626 mpDoc->set(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, bTmp);
627 }
628 break;
629 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
630 {
631 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
632 mpDoc->set(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME, bTmp);
633 }
634 break;
635 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
636 {
637 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
638 mpDoc->set(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING, bTmp);
639 }
640 break;
641 case HANDLE_USE_OLD_PRINTER_METRICS:
642 {
643 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
644 mpDoc->set(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS, bTmp);
645 }
646 break;
647 case HANDLE_TABS_RELATIVE_TO_INDENT:
648 {
649 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
650 mpDoc->set(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT, bTmp);
651 }
652 break;
653 case HANDLE_PROTECT_FORM:
654 {
655 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
656 mpDoc->set(IDocumentSettingAccess::PROTECT_FORM, bTmp);
657 }
658 break;
659 // --> OD 2008-06-05 #i89181#
660 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
661 {
662 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
663 mpDoc->set(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, bTmp);
664 }
665 break;
666 // <--
667 case HANDLE_MODIFYPASSWORDINFO:
668 {
669 uno::Sequence< beans::PropertyValue > aInfo;
670 if ( !( rValue >>= aInfo ) )
671 throw lang::IllegalArgumentException(
672 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Value of type Sequence<PropertyValue> expected!" ) ),
673 uno::Reference< uno::XInterface >(),
674 2 );
675
676 if ( !mpDocSh->SetModifyPasswordInfo( aInfo ) )
677 throw beans::PropertyVetoException(
678 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The hash is not allowed to be changed now!" ) ),
679 uno::Reference< uno::XInterface >() );
680 }
681 break;
682 case HANDLE_MATH_BASELINE_ALIGNMENT:
683 {
684 sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
685 mpDoc->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT, bTmp );
686 }
687 break;
688 default:
689 throw UnknownPropertyException();
690 }
691 }
692
_postSetValues()693 void SwXDocumentSettings::_postSetValues ()
694 {
695 // set printer only once, namely here!
696 if( mpPrinter != NULL )
697 {
698 // #i86352# the printer is also used as container for options by sfx
699 // when setting a printer it should have decent default options
700 SfxItemSet aOptions( mpPrinter->GetOptions() );
701 SwPrintData aPrtData( mpDoc->getPrintData() );
702 SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, aPrtData);
703 aOptions.Put(aAddPrinterItem);
704 mpPrinter->SetOptions( aOptions );
705
706 mpDoc->setPrinter( mpPrinter, true, true );
707 }
708
709 mpPrinter = 0;
710 mpDocSh = 0;
711 mpDoc = 0;
712 }
713
_preGetValues()714 void SwXDocumentSettings::_preGetValues ()
715 {
716 mpDocSh = mpModel->GetDocShell();
717 mpDoc = mpDocSh->GetDoc();
718 if( NULL == mpDoc || NULL == mpDocSh )
719 throw UnknownPropertyException();
720 }
721
_getSingleValue(const comphelper::PropertyInfo & rInfo,uno::Any & rValue)722 void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue )
723 {
724 switch( rInfo.mnHandle )
725 {
726 case HANDLE_FORBIDDEN_CHARS:
727 {
728 Reference<XForbiddenCharacters> xRet(*mpModel->GetPropertyHelper(), UNO_QUERY);
729 rValue <<= xRet;
730 }
731 break;
732 case HANDLE_LINK_UPDATE_MODE:
733 {
734 rValue <<= static_cast < sal_Int16 > ( mpDoc->getLinkUpdateMode(true) );
735 }
736 break;
737 case HANDLE_FIELD_AUTO_UPDATE:
738 {
739 SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true);
740 sal_Bool bFieldUpd = (nFlags == AUTOUPD_FIELD_ONLY || nFlags == AUTOUPD_FIELD_AND_CHARTS );
741 rValue.setValue(&bFieldUpd, ::getBooleanCppuType());
742 }
743 break;
744 case HANDLE_CHART_AUTO_UPDATE:
745 {
746 SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true);
747 sal_Bool bChartUpd = nFlags == AUTOUPD_FIELD_AND_CHARTS;
748 rValue.setValue(&bChartUpd, ::getBooleanCppuType());
749 }
750 break;
751 case HANDLE_ADD_PARA_TABLE_SPACING:
752 {
753 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX);
754 rValue.setValue(&bParaSpace, ::getBooleanCppuType());
755 }
756 break;
757 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
758 {
759 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES);
760 rValue.setValue(&bParaSpace, ::getBooleanCppuType());
761 }
762 break;
763 case HANDLE_ALIGN_TAB_STOP_POSITION:
764 {
765 sal_Bool bAlignTab = mpDoc->get(IDocumentSettingAccess::TAB_COMPAT);
766 rValue.setValue(&bAlignTab, ::getBooleanCppuType());
767 }
768 break;
769 case HANDLE_PRINTER_NAME:
770 {
771 SfxPrinter *pPrinter = mpDoc->getPrinter( sal_False );
772 rValue <<= pPrinter ? OUString ( pPrinter->GetName()) : OUString();
773 }
774 break;
775 case HANDLE_PRINTER_SETUP:
776 {
777 SfxPrinter *pPrinter = mpDocSh->GetDoc()->getPrinter( sal_False );
778 if (pPrinter)
779 {
780 SvMemoryStream aStream;
781 pPrinter->Store( aStream );
782 aStream.Seek ( STREAM_SEEK_TO_END );
783 sal_uInt32 nSize = aStream.Tell();
784 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
785 Sequence < sal_Int8 > aSequence( nSize );
786 aStream.Read ( aSequence.getArray(), nSize );
787 rValue <<= aSequence;
788 }
789 else
790 {
791 Sequence < sal_Int8 > aSequence ( 0 );
792 rValue <<= aSequence;
793 }
794 }
795 break;
796 case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
797 {
798 //sal_Bool bParaSpace = mpDoc->IsKernAsianPunctuation();
799 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION);
800 rValue.setValue(&bParaSpace, ::getBooleanCppuType());
801 }
802 break;
803 case HANDLE_APPLY_USER_DATA:
804 {
805 rValue <<= mpDocSh->IsUseUserData();
806 }
807 break;
808 case HANDLE_CHARACTER_COMPRESSION_TYPE:
809 {
810 rValue <<= static_cast < sal_Int16 > (mpDoc->getCharacterCompressionType());
811 }
812 break;
813 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
814 {
815 sal_Bool bSaveGlobal = mpDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS);
816 rValue.setValue(&bSaveGlobal, ::getBooleanCppuType());
817 }
818 break;
819 case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
820 {
821 const SwDBData& rData = mpDoc->GetDBDesc();
822 rValue <<= rData.sDataSource;
823 }
824 break;
825 case HANDLE_CURRENT_DATABASE_COMMAND:
826 {
827 const SwDBData& rData = mpDoc->GetDBDesc();
828 rValue <<= rData.sCommand;
829 }
830 break;
831 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
832 {
833 const SwDBData& rData = mpDoc->GetDBDesc();
834 rValue <<= rData.nCommandType;
835 }
836 break;
837 case HANDLE_SAVE_VERSION_ON_CLOSE:
838 {
839 rValue <<= mpDocSh->IsSaveVersionOnClose();
840 }
841 break;
842 case HANDLE_UPDATE_FROM_TEMPLATE:
843 {
844 rValue <<= mpDocSh->IsQueryLoadTemplate();
845 }
846 break;
847 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
848 {
849 // returns short (see css.document.PrinterIndependentLayout)
850 sal_Int16 nVirDevType = mpDoc->get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ?
851 ( mpDoc->get(IDocumentSettingAccess::USE_HIRES_VIRTUAL_DEVICE) ?
852 document::PrinterIndependentLayout::HIGH_RESOLUTION :
853 document::PrinterIndependentLayout::LOW_RESOLUTION ) :
854 document::PrinterIndependentLayout::DISABLED;
855 rValue <<= nVirDevType;
856 }
857 break;
858 case HANDLE_IS_LABEL_DOC:
859 {
860 sal_Bool bLabel = mpDoc->get(IDocumentSettingAccess::LABEL_DOCUMENT);
861 rValue <<= bLabel;
862 }
863 break;
864 case HANDLE_IS_ADD_FLY_OFFSET:
865 {
866 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_FLY_OFFSETS);
867 rValue.setValue( &bTmp, ::getBooleanCppuType() );
868 }
869 break;
870 case HANDLE_IS_ADD_EXTERNAL_LEADING:
871 {
872 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_EXT_LEADING);
873 rValue.setValue( &bTmp, ::getBooleanCppuType() );
874 }
875 break;
876 case HANDLE_OLD_NUMBERING: // #111955#
877 {
878 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_NUMBERING);
879 rValue.setValue( &bTmp, ::getBooleanCppuType() );
880 }
881 break;
882 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING: // #111955#
883 {
884 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE);
885 rValue.setValue( &bTmp, ::getBooleanCppuType() );
886 }
887 break;
888 case HANDLE_ALLOW_PRINTJOB_CANCEL:
889 {
890 sal_Bool bPrintCancelState = mpDocSh->Stamp_GetPrintCancelState();
891 rValue.setValue(&bPrintCancelState, ::getBooleanCppuType());
892 }
893 break;
894 case HANDLE_USE_FORMER_LINE_SPACING:
895 {
896 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_LINE_SPACING);
897 rValue.setValue( &bTmp, ::getBooleanCppuType() );
898 }
899 break;
900 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
901 {
902 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS);
903 rValue.setValue( &bTmp, ::getBooleanCppuType() );
904 }
905 break;
906 case HANDLE_USE_FORMER_OBJECT_POSITIONING:
907 {
908 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_OBJECT_POS);
909 rValue.setValue( &bTmp, ::getBooleanCppuType() );
910 }
911 break;
912 case HANDLE_USE_FORMER_TEXT_WRAPPING:
913 {
914 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING);
915 rValue.setValue( &bTmp, ::getBooleanCppuType() );
916 }
917 break;
918 case HANDLE_CHANGES_PASSWORD:
919 {
920 rValue <<= mpDoc->GetRedlinePassword();
921 }
922 break;
923 case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
924 {
925 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION);
926 rValue.setValue( &bTmp, ::getBooleanCppuType() );
927 }
928 break;
929 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
930 {
931 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING);
932 rValue.setValue( &bTmp, ::getBooleanCppuType() );
933 }
934 break;
935 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
936 {
937 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK);
938 rValue.setValue( &bTmp, ::getBooleanCppuType() );
939 }
940 break;
941 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
942 {
943 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT);
944 rValue.setValue( &bTmp, ::getBooleanCppuType() );
945 }
946 break;
947 case HANDLE_TABLE_ROW_KEEP :
948 {
949 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABLE_ROW_KEEP);
950 rValue.setValue( &bTmp, ::getBooleanCppuType() );
951 }
952 break;
953 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
954 {
955 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION);
956 rValue.setValue( &bTmp, ::getBooleanCppuType() );
957 }
958 break;
959 case HANDLE_LOAD_READONLY:
960 {
961 rValue <<= mpDocSh->IsLoadReadonly();
962 }
963 break;
964 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
965 {
966 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE);
967 rValue.setValue( &bTmp, ::getBooleanCppuType() );
968 }
969 break;
970 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
971 {
972 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME);
973 rValue.setValue( &bTmp, ::getBooleanCppuType() );
974 }
975 break;
976 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
977 {
978 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING);
979 rValue.setValue( &bTmp, ::getBooleanCppuType() );
980 }
981 break;
982 case HANDLE_USE_OLD_PRINTER_METRICS:
983 {
984 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS);
985 rValue.setValue( &bTmp, ::getBooleanCppuType() );
986 }
987 break;
988 case HANDLE_TABS_RELATIVE_TO_INDENT:
989 {
990 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT);
991 rValue.setValue( &bTmp, ::getBooleanCppuType() );
992 }
993 break;
994 case HANDLE_PROTECT_FORM:
995 {
996 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::PROTECT_FORM);
997 rValue.setValue( &bTmp, ::getBooleanCppuType() );
998 }
999 break;
1000 // --> OD 2008-06-05 #i89181#
1001 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
1002 {
1003 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST);
1004 rValue.setValue( &bTmp, ::getBooleanCppuType() );
1005 }
1006 break;
1007 // <--
1008 case HANDLE_MODIFYPASSWORDINFO:
1009 {
1010 rValue <<= mpDocSh->GetModifyPasswordInfo();
1011 }
1012 break;
1013 case HANDLE_MATH_BASELINE_ALIGNMENT:
1014 {
1015 sal_Bool bTmp = mpDoc->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT );
1016 rValue.setValue( &bTmp, ::getBooleanCppuType() );
1017 }
1018 break;
1019
1020 default:
1021 throw UnknownPropertyException();
1022 }
1023 }
1024
_postGetValues()1025 void SwXDocumentSettings::_postGetValues ()
1026 {
1027 mpDocSh = 0;
1028 mpDoc = 0;
1029 }
1030
1031 // XServiceInfo
getImplementationName()1032 OUString SAL_CALL SwXDocumentSettings::getImplementationName( )
1033 {
1034 return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Writer.DocumentSettings"));
1035 }
1036
supportsService(const OUString & ServiceName)1037 sal_Bool SAL_CALL SwXDocumentSettings::supportsService( const OUString& ServiceName )
1038 {
1039 const Sequence< OUString > aSeq( getSupportedServiceNames() );
1040 sal_Int32 nCount = aSeq.getLength();
1041 const OUString* pServices = aSeq.getConstArray();
1042 while( nCount-- )
1043 {
1044 if( *pServices++ == ServiceName )
1045 return sal_True;
1046 }
1047 return sal_True;
1048 }
1049
getSupportedServiceNames()1050 Sequence< OUString > SAL_CALL SwXDocumentSettings::getSupportedServiceNames( )
1051 {
1052 Sequence< OUString > aSeq( 4 );
1053 aSeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings") );
1054 aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.DocumentSettings") );
1055 aSeq[2] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintSettings") );
1056 aSeq[3] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintPreviewSettings") );
1057 return aSeq;
1058 }
1059