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 // MARKER(update_precomp.py): autogen include statement, do not remove 23 #include "precompiled_sdext.hxx" 24 25 #include "configurationaccess.hxx" 26 #include <com/sun/star/frame/XComponentLoader.hpp> 27 #include <com/sun/star/container/XHierarchicalNameAccess.hpp> 28 #include <com/sun/star/util/XChangesBatch.hpp> 29 #include <com/sun/star/container/XNameContainer.hpp> 30 #include <com/sun/star/util/XMacroExpander.hpp> 31 #include <com/sun/star/lang/XSingleServiceFactory.hpp> 32 #include <com/sun/star/resource/XResourceBundleLoader.hpp> 33 34 #include <rtl/ustrbuf.hxx> 35 36 #include "minimizer.hrc" 37 38 using namespace ::com::sun::star; 39 using namespace ::com::sun::star::uno; 40 using namespace ::com::sun::star::beans; 41 using namespace ::com::sun::star::container; 42 43 using rtl::OUString; 44 using rtl::OUStringBuffer; 45 46 #include <rtl/instance.hxx> 47 48 typedef std::map < sal_Int32, rtl::OUString > StringResourceMap; 49 50 struct StaticResourceMap 51 : public rtl::StaticWithInit< StringResourceMap, StaticResourceMap > 52 { 53 StringResourceMap & 54 operator()() const; 55 }; 56 57 StringResourceMap & 58 StaticResourceMap::operator()() const 59 { 60 static StringResourceMap aMap; 61 return aMap; 62 } 63 64 static const OUString& GetConfigurationProviderServiceName (void) 65 { 66 static const OUString sConfigurationProviderServiceName ( 67 RTL_CONSTASCII_USTRINGPARAM( 68 "com.sun.star.configuration.ConfigurationProvider")); 69 return sConfigurationProviderServiceName; 70 } 71 static const OUString& GetPathToConfigurationRoot (void) 72 { 73 static const OUString sPathToConfigurationRoot ( 74 RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Impress/PresentationMinimizer")); 75 return sPathToConfigurationRoot; 76 } 77 78 static OUString lcl_loadString( 79 const Reference< resource::XResourceBundle > xResourceBundle, 80 sal_Int32 nResourceId ) 81 { 82 OUString sString; 83 OUStringBuffer sKey; 84 sKey.appendAscii( RTL_CONSTASCII_STRINGPARAM( "string:" ) ); 85 sKey.append( nResourceId ); 86 87 try 88 { 89 OSL_VERIFY( xResourceBundle->getByName( sKey.makeStringAndClear() ) >>= sString ); 90 } 91 catch( const uno::Exception& ) 92 { 93 OSL_ENSURE( false, "OptimizerSettings: missing resource!" ); 94 } 95 96 return sString; 97 } 98 99 void OptimizerSettings::LoadSettingsFromConfiguration( const Reference< XNameAccess >& rSettings ) 100 { 101 if ( rSettings.is() ) 102 { 103 const Sequence< OUString > aElements( rSettings->getElementNames() ); 104 for ( int i = 0; i < aElements.getLength(); i++ ) 105 { 106 try 107 { 108 const OUString aPropertyName( aElements[ i ] ); 109 Any aValue( rSettings->getByName( aPropertyName ) ); 110 switch( TKGet( aPropertyName ) ) 111 { 112 case TK_Name : aValue >>= maName; break; 113 case TK_JPEGCompression : aValue >>= mbJPEGCompression; break; 114 case TK_JPEGQuality : aValue >>= mnJPEGQuality; break; 115 case TK_RemoveCropArea : aValue >>= mbRemoveCropArea; break; 116 case TK_ImageResolution : aValue >>= mnImageResolution; break; 117 case TK_EmbedLinkedGraphics : aValue >>= mbEmbedLinkedGraphics; break; 118 case TK_OLEOptimization : aValue >>= mbOLEOptimization; break; 119 case TK_OLEOptimizationType : aValue >>= mnOLEOptimizationType; break; 120 case TK_DeleteUnusedMasterPages : aValue >>= mbDeleteUnusedMasterPages; break; 121 case TK_DeleteHiddenSlides : aValue >>= mbDeleteHiddenSlides; break; 122 case TK_DeleteNotesPages : aValue >>= mbDeleteNotesPages ;break; 123 case TK_SaveAs : aValue >>= mbSaveAs; break; 124 // case TK_SaveAsURL : aValue >>= maSaveAsURL; break; // URL is not saved to configuration 125 // case TK_FilterName : aValue >>= maFilterName; break; // URL is not saved to configuration 126 case TK_OpenNewDocument : aValue >>= mbOpenNewDocument; break; 127 default: break; 128 } 129 } 130 catch( Exception& ) 131 { 132 } 133 } 134 } 135 } 136 137 void OptimizerSettings::SaveSettingsToConfiguration( const Reference< XNameReplace >& rSettings ) 138 { 139 if ( rSettings.is() ) 140 { 141 OUString pNames[] = { 142 TKGet( TK_Name ), 143 TKGet( TK_JPEGCompression ), 144 TKGet( TK_JPEGQuality ), 145 TKGet( TK_RemoveCropArea ), 146 TKGet( TK_ImageResolution ), 147 TKGet( TK_EmbedLinkedGraphics ), 148 TKGet( TK_OLEOptimization ), 149 TKGet( TK_OLEOptimizationType ), 150 TKGet( TK_DeleteUnusedMasterPages ), 151 TKGet( TK_DeleteHiddenSlides ), 152 TKGet( TK_DeleteNotesPages ), 153 TKGet( TK_SaveAs ), 154 // TKGet( TK_SaveAsURL ), 155 // TKGet( TK_FilterName ), 156 TKGet( TK_OpenNewDocument ) }; 157 158 Any pValues[] = { 159 Any( maName ), 160 Any( mbJPEGCompression ), 161 Any( mnJPEGQuality ), 162 Any( mbRemoveCropArea ), 163 Any( mnImageResolution ), 164 Any( mbEmbedLinkedGraphics ), 165 Any( mbOLEOptimization ), 166 Any( mnOLEOptimizationType ), 167 Any( mbDeleteUnusedMasterPages ), 168 Any( mbDeleteHiddenSlides ), 169 Any( mbDeleteNotesPages ), 170 Any( mbSaveAs ), 171 // Any( maSaveAsURL ), 172 // Any( maFilterName ), 173 Any( mbOpenNewDocument ) }; 174 175 sal_Int32 i, nCount = sizeof( pNames ) / sizeof( OUString ); 176 177 for ( i = 0; i < nCount; i++ ) 178 { 179 try 180 { 181 rSettings->replaceByName( pNames[ i ], pValues[ i ] ); 182 } 183 catch( Exception& /* rException */ ) 184 { 185 } 186 } 187 } 188 } 189 190 sal_Bool OptimizerSettings::operator==( const OptimizerSettings& rOptimizerSettings ) const 191 { 192 return ( rOptimizerSettings.mbJPEGCompression == mbJPEGCompression ) 193 && ( rOptimizerSettings.mnJPEGQuality == mnJPEGQuality ) 194 && ( rOptimizerSettings.mbRemoveCropArea == mbRemoveCropArea ) 195 && ( rOptimizerSettings.mnImageResolution == mnImageResolution ) 196 && ( rOptimizerSettings.mbEmbedLinkedGraphics == mbEmbedLinkedGraphics ) 197 && ( rOptimizerSettings.mbOLEOptimization == mbOLEOptimization ) 198 && ( rOptimizerSettings.mnOLEOptimizationType == mnOLEOptimizationType ) 199 && ( rOptimizerSettings.mbDeleteUnusedMasterPages == mbDeleteUnusedMasterPages ) 200 && ( rOptimizerSettings.mbDeleteHiddenSlides == mbDeleteHiddenSlides ) 201 && ( rOptimizerSettings.mbDeleteNotesPages == mbDeleteNotesPages ); 202 // && ( rOptimizerSettings.mbOpenNewDocument == mbOpenNewDocument ); 203 } 204 205 206 ConfigurationAccess::ConfigurationAccess( const Reference< uno::XComponentContext >& rxContext, OptimizerSettings* pDefaultSettings ) : 207 m_xContext( rxContext ) 208 { 209 LoadStrings(); 210 maSettings.push_back( pDefaultSettings ? 211 *pDefaultSettings : OptimizerSettings() ); 212 maSettings.back().maName = TKGet( TK_LastUsedSettings ); 213 LoadConfiguration(); 214 maInitialSettings = maSettings; 215 }; 216 217 ConfigurationAccess::~ConfigurationAccess() 218 { 219 } 220 221 rtl::OUString ConfigurationAccess::getString( sal_Int32 nResId ) 222 { 223 const StringResourceMap &aStrings = StaticResourceMap::get(); 224 StringResourceMap::const_iterator aIter( aStrings.find( nResId ) ); 225 return aIter != aStrings.end() ? ((*aIter).second) : rtl::OUString(); 226 } 227 228 void ConfigurationAccess::LoadStrings() 229 { 230 static bool bLoaded = false; 231 if ( bLoaded ) 232 return; 233 else 234 bLoaded = true; 235 try 236 { 237 238 Reference< resource::XResourceBundleLoader > xResourceBundleLoader( 239 m_xContext->getValueByName( 240 OUString( RTL_CONSTASCII_USTRINGPARAM( 241 "/singletons/com.sun.star.resource.OfficeResourceLoader" ) ) ), 242 UNO_QUERY_THROW ); 243 244 Reference< resource::XResourceBundle > xResourceBundle( 245 xResourceBundleLoader->loadBundle_Default( 246 OUString( RTL_CONSTASCII_USTRINGPARAM( "minimizer" ) ) ), 247 UNO_SET_THROW ); 248 249 StringResourceMap &aStrings = StaticResourceMap::get(); 250 aStrings[ STR_PRESENTATION_MINIMIZER ] = lcl_loadString( xResourceBundle, STR_PRESENTATION_MINIMIZER ); 251 aStrings[ STR_STEPS ] = lcl_loadString( xResourceBundle, STR_STEPS ); 252 aStrings[ STR_HELP ] = lcl_loadString( xResourceBundle, STR_HELP ); 253 aStrings[ STR_BACK ] = lcl_loadString( xResourceBundle, STR_BACK ); 254 aStrings[ STR_NEXT ] = lcl_loadString( xResourceBundle, STR_NEXT ); 255 aStrings[ STR_FINISH ] = lcl_loadString( xResourceBundle, STR_FINISH ); 256 aStrings[ STR_CANCEL ] = lcl_loadString( xResourceBundle, STR_CANCEL ); 257 aStrings[ STR_INTRODUCTION ] = lcl_loadString( xResourceBundle, STR_INTRODUCTION ); 258 aStrings[ STR_INTRODUCTION_T ] = lcl_loadString( xResourceBundle, STR_INTRODUCTION_T ); 259 aStrings[ STR_CHOOSE_SETTINGS ] = lcl_loadString( xResourceBundle, STR_CHOOSE_SETTINGS ); 260 aStrings[ STR_REMOVE ] = lcl_loadString( xResourceBundle, STR_REMOVE ); 261 aStrings[ STR_GRAPHIC_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_GRAPHIC_OPTIMIZATION ); 262 aStrings[ STR_IMAGE_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_IMAGE_OPTIMIZATION ); 263 aStrings[ STR_LOSSLESS_COMPRESSION ] = lcl_loadString( xResourceBundle, STR_LOSSLESS_COMPRESSION ); 264 aStrings[ STR_JPEG_COMPRESSION ] = lcl_loadString( xResourceBundle, STR_JPEG_COMPRESSION ); 265 aStrings[ STR_QUALITY ] = lcl_loadString( xResourceBundle, STR_QUALITY ); 266 aStrings[ STR_REMOVE_CROP_AREA ] = lcl_loadString( xResourceBundle, STR_REMOVE_CROP_AREA ); 267 aStrings[ STR_IMAGE_RESOLUTION ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION ); 268 aStrings[ STR_IMAGE_RESOLUTION_0 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_0 ); 269 aStrings[ STR_IMAGE_RESOLUTION_1 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_1 ); 270 aStrings[ STR_IMAGE_RESOLUTION_2 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_2 ); 271 aStrings[ STR_IMAGE_RESOLUTION_3 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_3 ); 272 aStrings[ STR_EMBED_LINKED_GRAPHICS ] = lcl_loadString( xResourceBundle, STR_EMBED_LINKED_GRAPHICS ); 273 aStrings[ STR_OLE_OBJECTS ] = lcl_loadString( xResourceBundle, STR_OLE_OBJECTS ); 274 aStrings[ STR_OLE_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_OLE_OPTIMIZATION ); 275 aStrings[ STR_OLE_REPLACE ] = lcl_loadString( xResourceBundle, STR_OLE_REPLACE ); 276 aStrings[ STR_ALL_OLE_OBJECTS ] = lcl_loadString( xResourceBundle, STR_ALL_OLE_OBJECTS ); 277 aStrings[ STR_ALIEN_OLE_OBJECTS_ONLY ] = lcl_loadString( xResourceBundle, STR_ALIEN_OLE_OBJECTS_ONLY ); 278 aStrings[ STR_OLE_OBJECTS_DESC ] = lcl_loadString( xResourceBundle, STR_OLE_OBJECTS_DESC ); 279 aStrings[ STR_NO_OLE_OBJECTS_DESC ] = lcl_loadString( xResourceBundle, STR_NO_OLE_OBJECTS_DESC ); 280 aStrings[ STR_SLIDES ] = lcl_loadString( xResourceBundle, STR_SLIDES ); 281 aStrings[ STR_CHOOSE_SLIDES ] = lcl_loadString( xResourceBundle, STR_CHOOSE_SLIDES ); 282 aStrings[ STR_MASTER_PAGES ] = lcl_loadString( xResourceBundle, STR_MASTER_PAGES ); 283 aStrings[ STR_DELETE_MASTER_PAGES ] = lcl_loadString( xResourceBundle, STR_DELETE_MASTER_PAGES ); 284 aStrings[ STR_DELETE_NOTES_PAGES ] = lcl_loadString( xResourceBundle, STR_DELETE_NOTES_PAGES ); 285 aStrings[ STR_DELETE_HIDDEN_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETE_HIDDEN_SLIDES ); 286 aStrings[ STR_CUSTOM_SHOW ] = lcl_loadString( xResourceBundle, STR_CUSTOM_SHOW ); 287 aStrings[ STR_SUMMARY ] = lcl_loadString( xResourceBundle, STR_SUMMARY ); 288 aStrings[ STR_SUMMARY_TITLE ] = lcl_loadString( xResourceBundle, STR_SUMMARY_TITLE ); 289 aStrings[ STR_PROGRESS ] = lcl_loadString( xResourceBundle, STR_PROGRESS ); 290 aStrings[ STR_OBJECTS_OPTIMIZED ] = lcl_loadString( xResourceBundle, STR_OBJECTS_OPTIMIZED ); 291 aStrings[ STR_APPLY_TO_CURRENT ] = lcl_loadString( xResourceBundle, STR_APPLY_TO_CURRENT ); 292 aStrings[ STR_AUTOMATICALLY_OPEN ] = lcl_loadString( xResourceBundle, STR_AUTOMATICALLY_OPEN ); 293 aStrings[ STR_SAVE_SETTINGS ] = lcl_loadString( xResourceBundle, STR_SAVE_SETTINGS ); 294 aStrings[ STR_SAVE_AS ] = lcl_loadString( xResourceBundle, STR_SAVE_AS ); 295 aStrings[ STR_DELETE_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETE_SLIDES ); 296 aStrings[ STR_OPTIMIZE_IMAGES ] = lcl_loadString( xResourceBundle, STR_OPTIMIZE_IMAGES ); 297 aStrings[ STR_CREATE_REPLACEMENT ] = lcl_loadString( xResourceBundle, STR_CREATE_REPLACEMENT ); 298 aStrings[ STR_CURRENT_FILESIZE ] = lcl_loadString( xResourceBundle, STR_CURRENT_FILESIZE ); 299 aStrings[ STR_ESTIMATED_FILESIZE ] = lcl_loadString( xResourceBundle, STR_ESTIMATED_FILESIZE ); 300 aStrings[ STR_MB ] = lcl_loadString( xResourceBundle, STR_MB ); 301 aStrings[ STR_MY_SETTINGS ] = lcl_loadString( xResourceBundle, STR_MY_SETTINGS ); 302 aStrings[ STR_DEFAULT_SESSION ] = lcl_loadString( xResourceBundle, STR_DEFAULT_SESSION ); 303 aStrings[ STR_MODIFY_WARNING ] = lcl_loadString( xResourceBundle, STR_MODIFY_WARNING ); 304 aStrings[ STR_YES ] = lcl_loadString( xResourceBundle, STR_YES ); 305 aStrings[ STR_OK ] = lcl_loadString( xResourceBundle, STR_OK ); 306 aStrings[ STR_INFO_1 ] = lcl_loadString( xResourceBundle, STR_INFO_1 ); 307 aStrings[ STR_INFO_2 ] = lcl_loadString( xResourceBundle, STR_INFO_2 ); 308 aStrings[ STR_INFO_3 ] = lcl_loadString( xResourceBundle, STR_INFO_3 ); 309 aStrings[ STR_INFO_4 ] = lcl_loadString( xResourceBundle, STR_INFO_4 ); 310 aStrings[ STR_DUPLICATING_PRESENTATION ] = lcl_loadString( xResourceBundle, STR_DUPLICATING_PRESENTATION ); 311 aStrings[ STR_DELETING_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETING_SLIDES ); 312 aStrings[ STR_OPTIMIZING_GRAPHICS ] = lcl_loadString( xResourceBundle, STR_OPTIMIZING_GRAPHICS ); 313 aStrings[ STR_CREATING_OLE_REPLACEMENTS] = lcl_loadString( xResourceBundle, STR_CREATING_OLE_REPLACEMENTS ); 314 aStrings[ STR_FILESIZESEPARATOR ] = lcl_loadString( xResourceBundle, STR_FILESIZESEPARATOR ); 315 aStrings[ STR_INFO_DIALOG ] = lcl_loadString( xResourceBundle, STR_INFO_DIALOG ); 316 } 317 catch( Exception& ) 318 { 319 } 320 } 321 322 void ConfigurationAccess::LoadConfiguration() 323 { 324 try 325 { 326 do 327 { 328 Reference< XInterface > xRoot( OpenConfiguration( true ) ); 329 if ( !xRoot.is() ) 330 break; 331 Reference< container::XNameAccess > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY ); 332 if ( xSet.is() ) 333 { 334 OptimizerSettings& rCurrent( maSettings.front() ); 335 rCurrent.LoadSettingsFromConfiguration( xSet ); 336 } 337 xSet = Reference< container::XNameAccess >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY ); 338 if ( xSet.is() ) 339 { 340 const Sequence< OUString > aElements( xSet->getElementNames() ); 341 for ( int i = 0; i < aElements.getLength(); i++ ) 342 { 343 try 344 { 345 OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElements[ i ] ) ); 346 Reference< container::XNameAccess > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY ); 347 if ( xTemplates.is() ) 348 { 349 maSettings.push_back( OptimizerSettings() ); 350 maSettings.back().LoadSettingsFromConfiguration( xTemplates ); 351 } 352 } 353 catch( Exception& /* rException */ ) 354 { 355 } 356 } 357 } 358 } 359 while( false ); 360 } 361 catch( Exception& ) 362 { 363 } 364 } 365 366 void ConfigurationAccess::SaveConfiguration() 367 { 368 try 369 { 370 do 371 { 372 int i; 373 unsigned int k; 374 Reference<util::XChangesBatch> xRoot( OpenConfiguration( false ), UNO_QUERY_THROW ); 375 376 // storing the last used settings 377 Reference< container::XNameReplace > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY_THROW ); 378 OptimizerSettings& rCurrent( maSettings.front() ); 379 rCurrent.SaveSettingsToConfiguration( xSet ); 380 381 // updating template elements 382 xSet = Reference< container::XNameReplace >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY_THROW ); 383 Reference< container::XNameContainer > xNameContainer( xSet, UNO_QUERY_THROW ); 384 385 const Sequence< OUString > aElements( xSet->getElementNames() ); 386 for( i = 0; i < aElements.getLength(); i++ ) 387 xNameContainer->removeByName( aElements[ i ] ); 388 389 for( k = 1; k < maSettings.size(); k++ ) 390 { 391 OptimizerSettings& rSettings( maSettings[ k ] ); 392 OUString aElementName( TKGet( TK_Template ).concat( OUString::valueOf( static_cast< sal_Int32 >( k ) ) ) ); 393 Reference< lang::XSingleServiceFactory > xChildFactory ( xSet, UNO_QUERY_THROW ); 394 Reference< container::XNameReplace > xChild( xChildFactory->createInstance(), UNO_QUERY_THROW ); 395 xNameContainer->insertByName( aElementName, Any( xChild ) ); 396 397 OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElementName ) ); 398 Reference< container::XNameReplace > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY ); 399 rSettings.SaveSettingsToConfiguration( xTemplates ); 400 } 401 xRoot->commitChanges(); 402 } 403 while( false ); 404 } 405 catch( Exception& /* rException */ ) 406 { 407 408 } 409 } 410 411 Reference< XInterface > ConfigurationAccess::OpenConfiguration( bool bReadOnly ) 412 { 413 Reference< XInterface > xRoot; 414 try 415 { 416 Reference< lang::XMultiServiceFactory > xProvider( m_xContext->getServiceManager()->createInstanceWithContext( GetConfigurationProviderServiceName(), m_xContext ), UNO_QUERY ); 417 if ( xProvider.is() ) 418 { 419 Sequence< Any > aCreationArguments( 2 ); 420 aCreationArguments[0] = makeAny( PropertyValue( 421 OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ), 0, 422 makeAny( GetPathToConfigurationRoot() ), 423 PropertyState_DIRECT_VALUE ) ); 424 aCreationArguments[1] = makeAny(beans::PropertyValue( 425 OUString( RTL_CONSTASCII_USTRINGPARAM( "lazywrite" ) ), 0, makeAny( true ), 426 PropertyState_DIRECT_VALUE ) ); 427 OUString sAccessService; 428 if ( bReadOnly ) 429 sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM( 430 "com.sun.star.configuration.ConfigurationAccess" ) ); 431 else 432 sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM( 433 "com.sun.star.configuration.ConfigurationUpdateAccess" ) ); 434 435 xRoot = xProvider->createInstanceWithArguments( 436 sAccessService, aCreationArguments ); 437 } 438 } 439 catch ( Exception& /* rException */ ) 440 { 441 } 442 return xRoot; 443 } 444 445 Reference< XInterface > ConfigurationAccess::GetConfigurationNode( 446 const Reference< XInterface >& xRoot, 447 const OUString& sPathToNode ) 448 { 449 Reference< XInterface > xNode; 450 try 451 { 452 if ( !sPathToNode.getLength() ) 453 xNode = xRoot; 454 else 455 { 456 Reference< XHierarchicalNameAccess > xHierarchy( xRoot, UNO_QUERY ); 457 if ( xHierarchy.is() ) 458 { 459 xHierarchy->getByHierarchicalName( sPathToNode ) >>= xNode; 460 } 461 } 462 } 463 catch ( Exception& rException ) 464 { 465 OSL_TRACE ("caught exception while getting configuration node %s: %s", 466 ::rtl::OUStringToOString(sPathToNode, 467 RTL_TEXTENCODING_UTF8).getStr(), 468 ::rtl::OUStringToOString(rException.Message, 469 RTL_TEXTENCODING_UTF8).getStr()); 470 } 471 return xNode; 472 } 473 474 com::sun::star::uno::Any ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken ) const 475 { 476 Any aRetValue; 477 const OptimizerSettings& rSettings( maSettings.front() ); 478 try 479 { 480 switch( ePropertyToken ) 481 { 482 case TK_Name : aRetValue <<= rSettings.maName; break; 483 case TK_JPEGCompression : aRetValue <<= rSettings.mbJPEGCompression; break; 484 case TK_JPEGQuality : aRetValue <<= rSettings.mnJPEGQuality; break; 485 case TK_RemoveCropArea : aRetValue <<= rSettings.mbRemoveCropArea; break; 486 case TK_ImageResolution : aRetValue <<= rSettings.mnImageResolution; break; 487 case TK_EmbedLinkedGraphics : aRetValue <<= rSettings.mbEmbedLinkedGraphics; break; 488 case TK_OLEOptimization : aRetValue <<= rSettings.mbOLEOptimization; break; 489 case TK_OLEOptimizationType : aRetValue <<= rSettings.mnOLEOptimizationType; break; 490 case TK_DeleteUnusedMasterPages : aRetValue <<= rSettings.mbDeleteUnusedMasterPages; break; 491 case TK_DeleteHiddenSlides : aRetValue <<= rSettings.mbDeleteHiddenSlides; break; 492 case TK_DeleteNotesPages : aRetValue <<= rSettings.mbDeleteNotesPages; break; 493 case TK_SaveAs : aRetValue <<= rSettings.mbSaveAs; break; 494 case TK_SaveAsURL : aRetValue <<= rSettings.maSaveAsURL; break; 495 case TK_FilterName : aRetValue <<= rSettings.maFilterName; break; 496 case TK_OpenNewDocument : aRetValue <<= rSettings.mbOpenNewDocument; break; 497 case TK_EstimatedFileSize : aRetValue <<= rSettings.mnEstimatedFileSize; break; 498 default: 499 break; 500 } 501 } 502 catch( Exception& /* rException */ ) 503 { 504 } 505 return aRetValue; 506 } 507 508 void ConfigurationAccess::SetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const com::sun::star::uno::Any& rValue ) 509 { 510 OptimizerSettings& rSettings( maSettings.front() ); 511 try 512 { 513 switch( ePropertyToken ) 514 { 515 case TK_Name : rValue >>= rSettings.maName; break; 516 case TK_JPEGCompression : rValue >>= rSettings.mbJPEGCompression; break; 517 case TK_JPEGQuality : rValue >>= rSettings.mnJPEGQuality; break; 518 case TK_RemoveCropArea : rValue >>= rSettings.mbRemoveCropArea; break; 519 case TK_ImageResolution : rValue >>= rSettings.mnImageResolution; break; 520 case TK_EmbedLinkedGraphics : rValue >>= rSettings.mbEmbedLinkedGraphics; break; 521 case TK_OLEOptimization : rValue >>= rSettings.mbOLEOptimization; break; 522 case TK_OLEOptimizationType : rValue >>= rSettings.mnOLEOptimizationType; break; 523 case TK_DeleteUnusedMasterPages : rValue >>= rSettings.mbDeleteUnusedMasterPages; break; 524 case TK_DeleteHiddenSlides : rValue >>= rSettings.mbDeleteHiddenSlides; break; 525 case TK_DeleteNotesPages : rValue >>= rSettings.mbDeleteNotesPages; break; 526 case TK_CustomShowName : rValue >>= rSettings.maCustomShowName; break; 527 case TK_SaveAs : rValue >>= rSettings.mbSaveAs; break; 528 case TK_SaveAsURL : rValue >>= rSettings.maSaveAsURL; break; 529 case TK_FilterName : rValue >>= rSettings.maFilterName; break; 530 case TK_OpenNewDocument : rValue >>= rSettings.mbOpenNewDocument; break; 531 case TK_EstimatedFileSize : rValue >>= rSettings.mnEstimatedFileSize; break; 532 default: 533 break; 534 } 535 } 536 catch( Exception& /* rException */ ) 537 { 538 } 539 } 540 541 sal_Bool ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Bool bDefault ) const 542 { 543 sal_Bool bRetValue = bDefault; 544 if ( ! ( GetConfigProperty( ePropertyToken ) >>= bRetValue ) ) 545 bRetValue = bDefault; 546 return bRetValue; 547 } 548 549 sal_Int16 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int16 nDefault ) const 550 { 551 sal_Int16 nRetValue = nDefault; 552 if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) ) 553 nRetValue = nDefault; 554 return nRetValue; 555 } 556 557 sal_Int32 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int32 nDefault ) const 558 { 559 sal_Int32 nRetValue = nDefault; 560 if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) ) 561 nRetValue = nDefault; 562 return nRetValue; 563 } 564 565 Sequence< PropertyValue > ConfigurationAccess::GetConfigurationSequence() 566 { 567 Sequence< PropertyValue > aRet( 15 ); 568 OptimizerSettings& rSettings( maSettings.front() ); 569 aRet[ 0 ].Name = TKGet( TK_JPEGCompression ); 570 aRet[ 0 ].Value= Any( rSettings.mbJPEGCompression ); 571 aRet[ 1 ].Name = TKGet( TK_JPEGQuality ); 572 aRet[ 1 ].Value= Any( rSettings.mnJPEGQuality ); 573 aRet[ 2 ].Name = TKGet( TK_RemoveCropArea ); 574 aRet[ 2 ].Value= Any( rSettings.mbRemoveCropArea ); 575 aRet[ 3 ].Name = TKGet( TK_ImageResolution ); 576 aRet[ 3 ].Value= Any( rSettings.mnImageResolution ); 577 aRet[ 4 ].Name = TKGet( TK_EmbedLinkedGraphics ); 578 aRet[ 4 ].Value= Any( rSettings.mbEmbedLinkedGraphics ); 579 aRet[ 5 ].Name = TKGet( TK_OLEOptimization ); 580 aRet[ 5 ].Value= Any( rSettings.mbOLEOptimization ); 581 aRet[ 6 ].Name = TKGet( TK_OLEOptimizationType ); 582 aRet[ 6 ].Value= Any( rSettings.mnOLEOptimizationType ); 583 aRet[ 7 ].Name = TKGet( TK_DeleteUnusedMasterPages ); 584 aRet[ 7 ].Value= Any( rSettings.mbDeleteUnusedMasterPages ); 585 aRet[ 8 ].Name = TKGet( TK_DeleteHiddenSlides ); 586 aRet[ 8 ].Value= Any( rSettings.mbDeleteHiddenSlides ); 587 aRet[ 9 ].Name = TKGet( TK_DeleteNotesPages ); 588 aRet[ 9 ].Value= Any( rSettings.mbDeleteNotesPages ); 589 aRet[ 10].Name = TKGet( TK_CustomShowName ); 590 aRet[ 10].Value= Any( rSettings.maCustomShowName ); 591 aRet[ 11].Name = TKGet( TK_SaveAsURL ); 592 aRet[ 11].Value= Any( rSettings.maSaveAsURL ); 593 aRet[ 12].Name = TKGet( TK_FilterName ); 594 aRet[ 12].Value= Any( rSettings.maFilterName ); 595 aRet[ 13].Name = TKGet( TK_OpenNewDocument ); 596 aRet[ 13].Value= Any( rSettings.mbOpenNewDocument ); 597 aRet[ 14].Name = TKGet( TK_EstimatedFileSize ); 598 aRet[ 14].Value= Any( rSettings.mnEstimatedFileSize ); 599 return aRet; 600 } 601 602 std::vector< OptimizerSettings >::iterator ConfigurationAccess::GetOptimizerSettingsByName( const rtl::OUString& rName ) 603 { 604 std::vector< OptimizerSettings >::iterator aIter( maSettings.begin() + 1 ); 605 while ( aIter != maSettings.end() ) 606 { 607 if ( aIter->maName == rName ) 608 break; 609 aIter++; 610 } 611 return aIter; 612 } 613 614 /* vim: set noet sw=4 ts=4: */ 615