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 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 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 223 SwXDocumentSettings::~SwXDocumentSettings() 224 throw() 225 { 226 } 227 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 } 241 void SwXDocumentSettings::acquire () 242 throw () 243 { 244 OWeakObject::acquire(); 245 } 246 void SwXDocumentSettings::release () 247 throw () 248 { 249 OWeakObject::release(); 250 } 251 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 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 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 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 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 714 void SwXDocumentSettings::_preGetValues () 715 { 716 mpDocSh = mpModel->GetDocShell(); 717 mpDoc = mpDocSh->GetDoc(); 718 if( NULL == mpDoc || NULL == mpDocSh ) 719 throw UnknownPropertyException(); 720 } 721 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 1025 void SwXDocumentSettings::_postGetValues () 1026 { 1027 mpDocSh = 0; 1028 mpDoc = 0; 1029 } 1030 1031 // XServiceInfo 1032 OUString SAL_CALL SwXDocumentSettings::getImplementationName( ) 1033 { 1034 return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Writer.DocumentSettings")); 1035 } 1036 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 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