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 throw(RuntimeException) 230 { 231 return ::cppu::queryInterface ( rType, 232 // OWeakObject interfaces 233 dynamic_cast< XInterface* > ( dynamic_cast< OWeakObject* >(this) ), 234 dynamic_cast< XWeak* > ( this ), 235 // my own interfaces 236 dynamic_cast< XPropertySet* > ( this ), 237 dynamic_cast< XPropertyState* > ( this ), 238 dynamic_cast< XMultiPropertySet* > ( this ), 239 dynamic_cast< XServiceInfo* > ( this ), 240 dynamic_cast< XTypeProvider* > ( this ) ); 241 } 242 void SwXDocumentSettings::acquire () 243 throw () 244 { 245 OWeakObject::acquire(); 246 } 247 void SwXDocumentSettings::release () 248 throw () 249 { 250 OWeakObject::release(); 251 } 252 253 uno::Sequence< uno::Type > SAL_CALL SwXDocumentSettings::getTypes( ) 254 throw (RuntimeException) 255 { 256 vos::OGuard aGuard(Application::GetSolarMutex()); 257 258 uno::Sequence< uno::Type > aBaseTypes( 5 ); 259 uno::Type* pBaseTypes = aBaseTypes.getArray(); 260 261 // from MasterPropertySet 262 pBaseTypes[0] = ::getCppuType((Reference< XPropertySet >*)0); 263 pBaseTypes[1] = ::getCppuType((Reference< XPropertyState >*)0); 264 pBaseTypes[2] = ::getCppuType((Reference< XMultiPropertySet >*)0); 265 // 266 pBaseTypes[3] = ::getCppuType((Reference< XServiceInfo >*)0); 267 pBaseTypes[4] = ::getCppuType((Reference< XTypeProvider >*)0); 268 269 return aBaseTypes; 270 } 271 272 uno::Sequence< sal_Int8 > SAL_CALL SwXDocumentSettings::getImplementationId( ) 273 throw (RuntimeException) 274 { 275 vos::OGuard aGuard(Application::GetSolarMutex()); 276 static Sequence< sal_Int8 > aId( 16 ); 277 static sal_Bool bInit = sal_False; 278 if(!bInit) 279 { 280 rtl_createUuid( (sal_uInt8 *)(aId.getArray() ), 0, sal_True ); 281 bInit = sal_True; 282 } 283 return aId; 284 } 285 286 void SwXDocumentSettings::_preSetValues () 287 throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException ) 288 { 289 mpDocSh = mpModel->GetDocShell(); 290 mpDoc = mpDocSh->GetDoc(); 291 292 if( NULL == mpDoc || NULL == mpDocSh ) 293 throw UnknownPropertyException(); 294 } 295 296 297 void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue ) 298 throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException ) 299 { 300 if (rInfo.mnAttributes & PropertyAttribute::READONLY) 301 throw PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + C2U(rInfo.mpName), static_cast < cppu::OWeakObject * > ( 0 ) ); 302 303 switch( rInfo.mnHandle ) 304 { 305 case HANDLE_FORBIDDEN_CHARS: 306 break; 307 case HANDLE_LINK_UPDATE_MODE: 308 { 309 sal_Int16 nMode = 0; 310 rValue >>= nMode; 311 switch (nMode) 312 { 313 case NEVER: 314 case MANUAL: 315 case AUTOMATIC: 316 case GLOBALSETTING: 317 break; 318 default: 319 throw IllegalArgumentException(); 320 } 321 mpDoc->setLinkUpdateMode(nMode); 322 } 323 break; 324 case HANDLE_FIELD_AUTO_UPDATE: 325 { 326 sal_Bool bUpdateField = *(sal_Bool*)rValue.getValue(); 327 SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true); 328 mpDoc->setFieldUpdateFlags( bUpdateField ? 329 nFlag == AUTOUPD_FIELD_AND_CHARTS ? 330 AUTOUPD_FIELD_AND_CHARTS : 331 AUTOUPD_FIELD_ONLY : 332 AUTOUPD_OFF ); 333 } 334 break; 335 case HANDLE_CHART_AUTO_UPDATE: 336 { 337 sal_Bool bUpdateChart = *(sal_Bool*)rValue.getValue(); 338 SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true); 339 mpDoc->setFieldUpdateFlags( (nFlag == AUTOUPD_FIELD_ONLY || nFlag == AUTOUPD_FIELD_AND_CHARTS ) ? 340 bUpdateChart ? 341 AUTOUPD_FIELD_AND_CHARTS : 342 AUTOUPD_FIELD_ONLY : 343 AUTOUPD_OFF ); 344 } 345 break; 346 case HANDLE_ADD_PARA_TABLE_SPACING: 347 { 348 sal_Bool bParaSpace = sal_False; 349 rValue >>= bParaSpace; 350 mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX, bParaSpace ); 351 } 352 break; 353 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START: 354 { 355 sal_Bool bParaSpacePage = sal_False; 356 rValue >>= bParaSpacePage; 357 mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES, bParaSpacePage ); 358 } 359 break; 360 case HANDLE_ALIGN_TAB_STOP_POSITION: 361 { 362 sal_Bool bAlignTab = *(sal_Bool*)rValue.getValue(); 363 mpDoc->set(IDocumentSettingAccess::TAB_COMPAT, bAlignTab); 364 } 365 break; 366 case HANDLE_PRINTER_NAME: 367 { 368 //the printer must be created 369 OUString sPrinterName; 370 if( rValue >>= sPrinterName ) 371 { 372 if( !mpPrinter && sPrinterName.getLength() > 0 && mpDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED ) 373 { 374 SfxPrinter* pPrinter = mpDoc->getPrinter( true ); 375 if ( OUString ( pPrinter->GetName()) != sPrinterName ) 376 { 377 SfxPrinter *pNewPrinter = new SfxPrinter ( pPrinter->GetOptions().Clone(), sPrinterName ); 378 if( pNewPrinter->IsKnown() ) 379 { 380 // set printer only once; in _postSetValues 381 mpPrinter = pNewPrinter; 382 } 383 else 384 { 385 delete pNewPrinter; 386 } 387 } 388 } 389 } 390 else 391 throw IllegalArgumentException(); 392 } 393 break; 394 case HANDLE_PRINTER_SETUP: 395 { 396 Sequence < sal_Int8 > aSequence; 397 if ( rValue >>= aSequence ) 398 { 399 sal_uInt32 nSize = aSequence.getLength(); 400 if( nSize > 0 ) 401 { 402 SvMemoryStream aStream (aSequence.getArray(), nSize, 403 STREAM_READ ); 404 aStream.Seek ( STREAM_SEEK_TO_BEGIN ); 405 static sal_uInt16 __READONLY_DATA nRange[] = 406 { 407 FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER, 408 SID_HTML_MODE, SID_HTML_MODE, 409 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN, 410 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC, 411 0 412 }; 413 SfxItemSet *pItemSet = new SfxItemSet( mpDoc->GetAttrPool(), nRange ); 414 SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet ); 415 416 // set printer only once; in _postSetValues 417 delete mpPrinter; 418 mpPrinter = pPrinter; 419 } 420 } 421 else 422 throw IllegalArgumentException(); 423 } 424 break; 425 case HANDLE_IS_KERN_ASIAN_PUNCTUATION: 426 { 427 sal_Bool bIsKern = *(sal_Bool*)(rValue).getValue(); 428 mpDoc->set(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION, bIsKern); 429 SwEditShell* pEditSh = mpDoc->GetEditShell(); 430 if(pEditSh) 431 pEditSh->ChgHyphenation(); 432 } 433 break; 434 case HANDLE_CHARACTER_COMPRESSION_TYPE: 435 { 436 sal_Int16 nMode = 0; 437 rValue >>= nMode; 438 switch (nMode) 439 { 440 case CHARCOMPRESS_NONE: 441 case CHARCOMPRESS_PUNCTUATION: 442 case CHARCOMPRESS_PUNCTUATION_KANA: 443 break; 444 default: 445 throw IllegalArgumentException(); 446 } 447 mpDoc->setCharacterCompressionType(static_cast < SwCharCompressType > (nMode) ); 448 } 449 break; 450 case HANDLE_APPLY_USER_DATA: 451 { 452 mpDocSh->SetUseUserData( *(sal_Bool*)rValue.getValue() ); 453 } 454 break; 455 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS: 456 { 457 sal_Bool bSaveGlobal = *(sal_Bool*)rValue.getValue(); 458 mpDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS, bSaveGlobal ); 459 } 460 break; 461 case HANDLE_CURRENT_DATABASE_DATA_SOURCE: 462 { 463 SwDBData aData = mpDoc->GetDBData(); 464 if ( rValue >>= aData.sDataSource ) 465 mpDoc->ChgDBData( aData ); 466 } 467 break; 468 case HANDLE_CURRENT_DATABASE_COMMAND: 469 { 470 SwDBData aData = mpDoc->GetDBData(); 471 if ( rValue >>= aData.sCommand ) 472 mpDoc->ChgDBData( aData ); 473 } 474 break; 475 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE: 476 { 477 SwDBData aData = mpDoc->GetDBData(); 478 if ( rValue >>= aData.nCommandType ) 479 mpDoc->ChgDBData( aData ); 480 } 481 break; 482 case HANDLE_SAVE_VERSION_ON_CLOSE: 483 { 484 mpDocSh->SetSaveVersionOnClose( *(sal_Bool*)rValue.getValue() ); 485 } 486 break; 487 case HANDLE_UPDATE_FROM_TEMPLATE: 488 { 489 mpDocSh->SetQueryLoadTemplate( *(sal_Bool*)rValue.getValue() ); 490 } 491 break; 492 case HANDLE_PRINTER_INDEPENDENT_LAYOUT: 493 { 494 sal_Int16 nTmp = 0; 495 rValue >>= nTmp; 496 497 bool bUseVirDev = true; 498 bool bHiResVirDev = true; 499 if( nTmp == document::PrinterIndependentLayout::DISABLED ) 500 bUseVirDev = false; 501 else if ( nTmp == document::PrinterIndependentLayout::LOW_RESOLUTION ) 502 bHiResVirDev = false; 503 else if ( nTmp != document::PrinterIndependentLayout::HIGH_RESOLUTION ) 504 throw IllegalArgumentException(); 505 506 mpDoc->setReferenceDeviceType( bUseVirDev, bHiResVirDev ); 507 } 508 break; 509 case HANDLE_IS_LABEL_DOC : 510 { 511 sal_Bool bSet = sal_False; 512 if(!(rValue >>= bSet)) 513 throw IllegalArgumentException(); 514 mpDoc->set(IDocumentSettingAccess::LABEL_DOCUMENT, bSet); 515 } 516 break; 517 case HANDLE_IS_ADD_FLY_OFFSET: 518 { 519 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 520 mpDoc->set(IDocumentSettingAccess::ADD_FLY_OFFSETS, bTmp); 521 } 522 break; 523 case HANDLE_IS_ADD_EXTERNAL_LEADING: 524 { 525 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 526 mpDoc->set(IDocumentSettingAccess::ADD_EXT_LEADING, bTmp); 527 } 528 break; 529 case HANDLE_OLD_NUMBERING: // #111955# 530 { 531 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 532 mpDoc->set(IDocumentSettingAccess::OLD_NUMBERING, bTmp); 533 } 534 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING: 535 { 536 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 537 mpDoc->set(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE, bTmp); 538 } 539 break; 540 case HANDLE_ALLOW_PRINTJOB_CANCEL: 541 { 542 sal_Bool bState = sal_False; 543 if (!(rValue >>= bState)) 544 throw IllegalArgumentException(); 545 mpDocSh->Stamp_SetPrintCancelState(bState); 546 } 547 break; 548 case HANDLE_USE_FORMER_LINE_SPACING: 549 { 550 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 551 mpDoc->set(IDocumentSettingAccess::OLD_LINE_SPACING, bTmp); 552 } 553 break; 554 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS: 555 { 556 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 557 mpDoc->set(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS, bTmp); 558 } 559 break; 560 case HANDLE_USE_FORMER_OBJECT_POSITIONING: 561 { 562 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 563 mpDoc->set(IDocumentSettingAccess::USE_FORMER_OBJECT_POS, bTmp); 564 } 565 break; 566 case HANDLE_USE_FORMER_TEXT_WRAPPING: 567 { 568 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 569 mpDoc->set(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING, bTmp); 570 } 571 break; 572 case HANDLE_CHANGES_PASSWORD: 573 { 574 Sequence <sal_Int8> aNew; 575 if(rValue >>= aNew) 576 { 577 mpDoc->SetRedlinePassword(aNew); 578 if(aNew.getLength()) 579 { 580 sal_uInt16 eMode = mpDoc->GetRedlineMode(); 581 eMode = eMode|nsRedlineMode_t::REDLINE_ON; 582 mpDoc->SetRedlineMode((RedlineMode_t)( eMode )); 583 } 584 } 585 } 586 break; 587 case HANDLE_CONSIDER_WRAP_ON_OBJPOS: 588 { 589 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 590 mpDoc->set(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION, bTmp ); 591 } 592 break; 593 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING: 594 { 595 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 596 mpDoc->set(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, bTmp); 597 } 598 break; 599 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK: 600 { 601 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 602 mpDoc->set(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, bTmp); 603 } 604 break; 605 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT: 606 { 607 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 608 mpDoc->set(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, bTmp); 609 } 610 break; 611 case HANDLE_TABLE_ROW_KEEP: 612 { 613 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 614 mpDoc->set(IDocumentSettingAccess::TABLE_ROW_KEEP, bTmp); 615 } 616 break; 617 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION: 618 { 619 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 620 mpDoc->set(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, bTmp); 621 } 622 break; 623 case HANDLE_LOAD_READONLY: 624 { 625 mpDocSh->SetLoadReadonly( *(sal_Bool*)rValue.getValue() ); 626 } 627 break; 628 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE: 629 { 630 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 631 mpDoc->set(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, bTmp); 632 } 633 break; 634 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES: 635 { 636 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 637 mpDoc->set(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME, bTmp); 638 } 639 break; 640 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING: 641 { 642 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 643 mpDoc->set(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING, bTmp); 644 } 645 break; 646 case HANDLE_USE_OLD_PRINTER_METRICS: 647 { 648 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 649 mpDoc->set(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS, bTmp); 650 } 651 break; 652 case HANDLE_TABS_RELATIVE_TO_INDENT: 653 { 654 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 655 mpDoc->set(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT, bTmp); 656 } 657 break; 658 case HANDLE_PROTECT_FORM: 659 { 660 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 661 mpDoc->set(IDocumentSettingAccess::PROTECT_FORM, bTmp); 662 } 663 break; 664 // --> OD 2008-06-05 #i89181# 665 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST: 666 { 667 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 668 mpDoc->set(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, bTmp); 669 } 670 break; 671 // <-- 672 case HANDLE_MODIFYPASSWORDINFO: 673 { 674 uno::Sequence< beans::PropertyValue > aInfo; 675 if ( !( rValue >>= aInfo ) ) 676 throw lang::IllegalArgumentException( 677 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Value of type Sequence<PropertyValue> expected!" ) ), 678 uno::Reference< uno::XInterface >(), 679 2 ); 680 681 if ( !mpDocSh->SetModifyPasswordInfo( aInfo ) ) 682 throw beans::PropertyVetoException( 683 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The hash is not allowed to be changed now!" ) ), 684 uno::Reference< uno::XInterface >() ); 685 } 686 break; 687 case HANDLE_MATH_BASELINE_ALIGNMENT: 688 { 689 sal_Bool bTmp = *(sal_Bool*)rValue.getValue(); 690 mpDoc->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT, bTmp ); 691 } 692 break; 693 default: 694 throw UnknownPropertyException(); 695 } 696 } 697 698 void SwXDocumentSettings::_postSetValues () 699 throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException ) 700 { 701 // set printer only once, namely here! 702 if( mpPrinter != NULL ) 703 { 704 // #i86352# the printer is also used as container for options by sfx 705 // when setting a printer it should have decent default options 706 SfxItemSet aOptions( mpPrinter->GetOptions() ); 707 SwPrintData aPrtData( mpDoc->getPrintData() ); 708 SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, aPrtData); 709 aOptions.Put(aAddPrinterItem); 710 mpPrinter->SetOptions( aOptions ); 711 712 mpDoc->setPrinter( mpPrinter, true, true ); 713 } 714 715 mpPrinter = 0; 716 mpDocSh = 0; 717 mpDoc = 0; 718 } 719 720 void SwXDocumentSettings::_preGetValues () 721 throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException ) 722 { 723 mpDocSh = mpModel->GetDocShell(); 724 mpDoc = mpDocSh->GetDoc(); 725 if( NULL == mpDoc || NULL == mpDocSh ) 726 throw UnknownPropertyException(); 727 } 728 729 void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue ) 730 throw(beans::UnknownPropertyException, lang::WrappedTargetException ) 731 { 732 switch( rInfo.mnHandle ) 733 { 734 case HANDLE_FORBIDDEN_CHARS: 735 { 736 Reference<XForbiddenCharacters> xRet(*mpModel->GetPropertyHelper(), UNO_QUERY); 737 rValue <<= xRet; 738 } 739 break; 740 case HANDLE_LINK_UPDATE_MODE: 741 { 742 rValue <<= static_cast < sal_Int16 > ( mpDoc->getLinkUpdateMode(true) ); 743 } 744 break; 745 case HANDLE_FIELD_AUTO_UPDATE: 746 { 747 SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true); 748 sal_Bool bFieldUpd = (nFlags == AUTOUPD_FIELD_ONLY || nFlags == AUTOUPD_FIELD_AND_CHARTS ); 749 rValue.setValue(&bFieldUpd, ::getBooleanCppuType()); 750 } 751 break; 752 case HANDLE_CHART_AUTO_UPDATE: 753 { 754 SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true); 755 sal_Bool bChartUpd = nFlags == AUTOUPD_FIELD_AND_CHARTS; 756 rValue.setValue(&bChartUpd, ::getBooleanCppuType()); 757 } 758 break; 759 case HANDLE_ADD_PARA_TABLE_SPACING: 760 { 761 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX); 762 rValue.setValue(&bParaSpace, ::getBooleanCppuType()); 763 } 764 break; 765 case HANDLE_ADD_PARA_TABLE_SPACING_AT_START: 766 { 767 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES); 768 rValue.setValue(&bParaSpace, ::getBooleanCppuType()); 769 } 770 break; 771 case HANDLE_ALIGN_TAB_STOP_POSITION: 772 { 773 sal_Bool bAlignTab = mpDoc->get(IDocumentSettingAccess::TAB_COMPAT); 774 rValue.setValue(&bAlignTab, ::getBooleanCppuType()); 775 } 776 break; 777 case HANDLE_PRINTER_NAME: 778 { 779 SfxPrinter *pPrinter = mpDoc->getPrinter( sal_False ); 780 rValue <<= pPrinter ? OUString ( pPrinter->GetName()) : OUString(); 781 } 782 break; 783 case HANDLE_PRINTER_SETUP: 784 { 785 SfxPrinter *pPrinter = mpDocSh->GetDoc()->getPrinter( sal_False ); 786 if (pPrinter) 787 { 788 SvMemoryStream aStream; 789 pPrinter->Store( aStream ); 790 aStream.Seek ( STREAM_SEEK_TO_END ); 791 sal_uInt32 nSize = aStream.Tell(); 792 aStream.Seek ( STREAM_SEEK_TO_BEGIN ); 793 Sequence < sal_Int8 > aSequence( nSize ); 794 aStream.Read ( aSequence.getArray(), nSize ); 795 rValue <<= aSequence; 796 } 797 else 798 { 799 Sequence < sal_Int8 > aSequence ( 0 ); 800 rValue <<= aSequence; 801 } 802 } 803 break; 804 case HANDLE_IS_KERN_ASIAN_PUNCTUATION: 805 { 806 //sal_Bool bParaSpace = mpDoc->IsKernAsianPunctuation(); 807 sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION); 808 rValue.setValue(&bParaSpace, ::getBooleanCppuType()); 809 } 810 break; 811 case HANDLE_APPLY_USER_DATA: 812 { 813 rValue <<= mpDocSh->IsUseUserData(); 814 } 815 break; 816 case HANDLE_CHARACTER_COMPRESSION_TYPE: 817 { 818 rValue <<= static_cast < sal_Int16 > (mpDoc->getCharacterCompressionType()); 819 } 820 break; 821 case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS: 822 { 823 sal_Bool bSaveGlobal = mpDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS); 824 rValue.setValue(&bSaveGlobal, ::getBooleanCppuType()); 825 } 826 break; 827 case HANDLE_CURRENT_DATABASE_DATA_SOURCE: 828 { 829 const SwDBData& rData = mpDoc->GetDBDesc(); 830 rValue <<= rData.sDataSource; 831 } 832 break; 833 case HANDLE_CURRENT_DATABASE_COMMAND: 834 { 835 const SwDBData& rData = mpDoc->GetDBDesc(); 836 rValue <<= rData.sCommand; 837 } 838 break; 839 case HANDLE_CURRENT_DATABASE_COMMAND_TYPE: 840 { 841 const SwDBData& rData = mpDoc->GetDBDesc(); 842 rValue <<= rData.nCommandType; 843 } 844 break; 845 case HANDLE_SAVE_VERSION_ON_CLOSE: 846 { 847 rValue <<= mpDocSh->IsSaveVersionOnClose(); 848 } 849 break; 850 case HANDLE_UPDATE_FROM_TEMPLATE: 851 { 852 rValue <<= mpDocSh->IsQueryLoadTemplate(); 853 } 854 break; 855 case HANDLE_PRINTER_INDEPENDENT_LAYOUT: 856 { 857 // returns short (see css.document.PrinterIndependentLayout) 858 sal_Int16 nVirDevType = mpDoc->get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ? 859 ( mpDoc->get(IDocumentSettingAccess::USE_HIRES_VIRTUAL_DEVICE) ? 860 document::PrinterIndependentLayout::HIGH_RESOLUTION : 861 document::PrinterIndependentLayout::LOW_RESOLUTION ) : 862 document::PrinterIndependentLayout::DISABLED; 863 rValue <<= nVirDevType; 864 } 865 break; 866 case HANDLE_IS_LABEL_DOC: 867 { 868 sal_Bool bLabel = mpDoc->get(IDocumentSettingAccess::LABEL_DOCUMENT); 869 rValue <<= bLabel; 870 } 871 break; 872 case HANDLE_IS_ADD_FLY_OFFSET: 873 { 874 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_FLY_OFFSETS); 875 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 876 } 877 break; 878 case HANDLE_IS_ADD_EXTERNAL_LEADING: 879 { 880 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_EXT_LEADING); 881 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 882 } 883 break; 884 case HANDLE_OLD_NUMBERING: // #111955# 885 { 886 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_NUMBERING); 887 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 888 } 889 break; 890 case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING: // #111955# 891 { 892 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE); 893 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 894 } 895 break; 896 case HANDLE_ALLOW_PRINTJOB_CANCEL: 897 { 898 sal_Bool bPrintCancelState = mpDocSh->Stamp_GetPrintCancelState(); 899 rValue.setValue(&bPrintCancelState, ::getBooleanCppuType()); 900 } 901 break; 902 case HANDLE_USE_FORMER_LINE_SPACING: 903 { 904 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_LINE_SPACING); 905 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 906 } 907 break; 908 case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS: 909 { 910 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS); 911 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 912 } 913 break; 914 case HANDLE_USE_FORMER_OBJECT_POSITIONING: 915 { 916 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_OBJECT_POS); 917 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 918 } 919 break; 920 case HANDLE_USE_FORMER_TEXT_WRAPPING: 921 { 922 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING); 923 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 924 } 925 break; 926 case HANDLE_CHANGES_PASSWORD: 927 { 928 rValue <<= mpDoc->GetRedlinePassword(); 929 } 930 break; 931 case HANDLE_CONSIDER_WRAP_ON_OBJPOS: 932 { 933 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION); 934 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 935 } 936 break; 937 case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING: 938 { 939 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING); 940 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 941 } 942 break; 943 case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK: 944 { 945 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK); 946 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 947 } 948 break; 949 case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT: 950 { 951 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT); 952 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 953 } 954 break; 955 case HANDLE_TABLE_ROW_KEEP : 956 { 957 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABLE_ROW_KEEP); 958 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 959 } 960 break; 961 case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION: 962 { 963 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION); 964 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 965 } 966 break; 967 case HANDLE_LOAD_READONLY: 968 { 969 rValue <<= mpDocSh->IsLoadReadonly(); 970 } 971 break; 972 case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE: 973 { 974 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE); 975 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 976 } 977 break; 978 case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES: 979 { 980 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME); 981 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 982 } 983 break; 984 case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING: 985 { 986 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING); 987 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 988 } 989 break; 990 case HANDLE_USE_OLD_PRINTER_METRICS: 991 { 992 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS); 993 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 994 } 995 break; 996 case HANDLE_TABS_RELATIVE_TO_INDENT: 997 { 998 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT); 999 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 1000 } 1001 break; 1002 case HANDLE_PROTECT_FORM: 1003 { 1004 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::PROTECT_FORM); 1005 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 1006 } 1007 break; 1008 // --> OD 2008-06-05 #i89181# 1009 case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST: 1010 { 1011 sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST); 1012 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 1013 } 1014 break; 1015 // <-- 1016 case HANDLE_MODIFYPASSWORDINFO: 1017 { 1018 rValue <<= mpDocSh->GetModifyPasswordInfo(); 1019 } 1020 break; 1021 case HANDLE_MATH_BASELINE_ALIGNMENT: 1022 { 1023 sal_Bool bTmp = mpDoc->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ); 1024 rValue.setValue( &bTmp, ::getBooleanCppuType() ); 1025 } 1026 break; 1027 1028 default: 1029 throw UnknownPropertyException(); 1030 } 1031 } 1032 1033 void SwXDocumentSettings::_postGetValues () 1034 throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException ) 1035 { 1036 mpDocSh = 0; 1037 mpDoc = 0; 1038 } 1039 1040 // XServiceInfo 1041 OUString SAL_CALL SwXDocumentSettings::getImplementationName( ) 1042 throw(RuntimeException) 1043 { 1044 return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Writer.DocumentSettings")); 1045 } 1046 1047 sal_Bool SAL_CALL SwXDocumentSettings::supportsService( const OUString& ServiceName ) 1048 throw(RuntimeException) 1049 { 1050 const Sequence< OUString > aSeq( getSupportedServiceNames() ); 1051 sal_Int32 nCount = aSeq.getLength(); 1052 const OUString* pServices = aSeq.getConstArray(); 1053 while( nCount-- ) 1054 { 1055 if( *pServices++ == ServiceName ) 1056 return sal_True; 1057 } 1058 return sal_True; 1059 } 1060 1061 Sequence< OUString > SAL_CALL SwXDocumentSettings::getSupportedServiceNames( ) 1062 throw(RuntimeException) 1063 { 1064 Sequence< OUString > aSeq( 4 ); 1065 aSeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings") ); 1066 aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.DocumentSettings") ); 1067 aSeq[2] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintSettings") ); 1068 aSeq[3] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintPreviewSettings") ); 1069 return aSeq; 1070 } 1071 1072 1073