blob: 1783708a1c02f8dc36d555a48736c46d994fb75f [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sdext.hxx"
#include "configurationaccess.hxx"
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
#include <com/sun/star/util/XChangesBatch.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/util/XMacroExpander.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <com/sun/star/resource/XResourceBundleLoader.hpp>
#include <rtl/ustrbuf.hxx>
#include "minimizer.hrc"
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::container;
using rtl::OUString;
using rtl::OUStringBuffer;
#include <rtl/instance.hxx>
typedef std::map < sal_Int32, rtl::OUString > StringResourceMap;
struct StaticResourceMap
: public rtl::StaticWithInit< StringResourceMap, StaticResourceMap >
{
StringResourceMap &
operator()() const;
};
StringResourceMap &
StaticResourceMap::operator()() const
{
static StringResourceMap aMap;
return aMap;
}
static const OUString& GetConfigurationProviderServiceName (void)
{
static const OUString sConfigurationProviderServiceName (
RTL_CONSTASCII_USTRINGPARAM(
"com.sun.star.configuration.ConfigurationProvider"));
return sConfigurationProviderServiceName;
}
static const OUString& GetPathToConfigurationRoot (void)
{
static const OUString sPathToConfigurationRoot (
RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Impress/PresentationMinimizer"));
return sPathToConfigurationRoot;
}
static OUString lcl_loadString(
const Reference< resource::XResourceBundle > xResourceBundle,
sal_Int32 nResourceId )
{
OUString sString;
OUStringBuffer sKey;
sKey.appendAscii( RTL_CONSTASCII_STRINGPARAM( "string:" ) );
sKey.append( nResourceId );
try
{
OSL_VERIFY( xResourceBundle->getByName( sKey.makeStringAndClear() ) >>= sString );
}
catch( const uno::Exception& )
{
OSL_ENSURE( false, "OptimizerSettings: missing resource!" );
}
return sString;
}
void OptimizerSettings::LoadSettingsFromConfiguration( const Reference< XNameAccess >& rSettings )
{
if ( rSettings.is() )
{
const Sequence< OUString > aElements( rSettings->getElementNames() );
for ( int i = 0; i < aElements.getLength(); i++ )
{
try
{
const OUString aPropertyName( aElements[ i ] );
Any aValue( rSettings->getByName( aPropertyName ) );
switch( TKGet( aPropertyName ) )
{
case TK_Name : aValue >>= maName; break;
case TK_JPEGCompression : aValue >>= mbJPEGCompression; break;
case TK_JPEGQuality : aValue >>= mnJPEGQuality; break;
case TK_RemoveCropArea : aValue >>= mbRemoveCropArea; break;
case TK_ImageResolution : aValue >>= mnImageResolution; break;
case TK_EmbedLinkedGraphics : aValue >>= mbEmbedLinkedGraphics; break;
case TK_OLEOptimization : aValue >>= mbOLEOptimization; break;
case TK_OLEOptimizationType : aValue >>= mnOLEOptimizationType; break;
case TK_DeleteUnusedMasterPages : aValue >>= mbDeleteUnusedMasterPages; break;
case TK_DeleteHiddenSlides : aValue >>= mbDeleteHiddenSlides; break;
case TK_DeleteNotesPages : aValue >>= mbDeleteNotesPages ;break;
case TK_SaveAs : aValue >>= mbSaveAs; break;
// case TK_SaveAsURL : aValue >>= maSaveAsURL; break; // URL is not saved to configuration
// case TK_FilterName : aValue >>= maFilterName; break; // URL is not saved to configuration
case TK_OpenNewDocument : aValue >>= mbOpenNewDocument; break;
default: break;
}
}
catch( Exception& )
{
}
}
}
}
void OptimizerSettings::SaveSettingsToConfiguration( const Reference< XNameReplace >& rSettings )
{
if ( rSettings.is() )
{
OUString pNames[] = {
TKGet( TK_Name ),
TKGet( TK_JPEGCompression ),
TKGet( TK_JPEGQuality ),
TKGet( TK_RemoveCropArea ),
TKGet( TK_ImageResolution ),
TKGet( TK_EmbedLinkedGraphics ),
TKGet( TK_OLEOptimization ),
TKGet( TK_OLEOptimizationType ),
TKGet( TK_DeleteUnusedMasterPages ),
TKGet( TK_DeleteHiddenSlides ),
TKGet( TK_DeleteNotesPages ),
TKGet( TK_SaveAs ),
// TKGet( TK_SaveAsURL ),
// TKGet( TK_FilterName ),
TKGet( TK_OpenNewDocument ) };
Any pValues[] = {
Any( maName ),
Any( mbJPEGCompression ),
Any( mnJPEGQuality ),
Any( mbRemoveCropArea ),
Any( mnImageResolution ),
Any( mbEmbedLinkedGraphics ),
Any( mbOLEOptimization ),
Any( mnOLEOptimizationType ),
Any( mbDeleteUnusedMasterPages ),
Any( mbDeleteHiddenSlides ),
Any( mbDeleteNotesPages ),
Any( mbSaveAs ),
// Any( maSaveAsURL ),
// Any( maFilterName ),
Any( mbOpenNewDocument ) };
sal_Int32 i, nCount = sizeof( pNames ) / sizeof( OUString );
for ( i = 0; i < nCount; i++ )
{
try
{
rSettings->replaceByName( pNames[ i ], pValues[ i ] );
}
catch( Exception& /* rException */ )
{
}
}
}
}
sal_Bool OptimizerSettings::operator==( const OptimizerSettings& rOptimizerSettings ) const
{
return ( rOptimizerSettings.mbJPEGCompression == mbJPEGCompression )
&& ( rOptimizerSettings.mnJPEGQuality == mnJPEGQuality )
&& ( rOptimizerSettings.mbRemoveCropArea == mbRemoveCropArea )
&& ( rOptimizerSettings.mnImageResolution == mnImageResolution )
&& ( rOptimizerSettings.mbEmbedLinkedGraphics == mbEmbedLinkedGraphics )
&& ( rOptimizerSettings.mbOLEOptimization == mbOLEOptimization )
&& ( rOptimizerSettings.mnOLEOptimizationType == mnOLEOptimizationType )
&& ( rOptimizerSettings.mbDeleteUnusedMasterPages == mbDeleteUnusedMasterPages )
&& ( rOptimizerSettings.mbDeleteHiddenSlides == mbDeleteHiddenSlides )
&& ( rOptimizerSettings.mbDeleteNotesPages == mbDeleteNotesPages );
// && ( rOptimizerSettings.mbOpenNewDocument == mbOpenNewDocument );
}
ConfigurationAccess::ConfigurationAccess( const Reference< uno::XComponentContext >& rxContext, OptimizerSettings* pDefaultSettings ) :
m_xContext( rxContext )
{
LoadStrings();
maSettings.push_back( pDefaultSettings ?
*pDefaultSettings : OptimizerSettings() );
maSettings.back().maName = TKGet( TK_LastUsedSettings );
LoadConfiguration();
maInitialSettings = maSettings;
};
ConfigurationAccess::~ConfigurationAccess()
{
}
rtl::OUString ConfigurationAccess::getString( sal_Int32 nResId )
{
const StringResourceMap &aStrings = StaticResourceMap::get();
StringResourceMap::const_iterator aIter( aStrings.find( nResId ) );
return aIter != aStrings.end() ? ((*aIter).second) : rtl::OUString();
}
void ConfigurationAccess::LoadStrings()
{
static bool bLoaded = false;
if ( bLoaded )
return;
else
bLoaded = true;
try
{
Reference< resource::XResourceBundleLoader > xResourceBundleLoader(
m_xContext->getValueByName(
OUString( RTL_CONSTASCII_USTRINGPARAM(
"/singletons/com.sun.star.resource.OfficeResourceLoader" ) ) ),
UNO_QUERY_THROW );
Reference< resource::XResourceBundle > xResourceBundle(
xResourceBundleLoader->loadBundle_Default(
OUString( RTL_CONSTASCII_USTRINGPARAM( "minimizer" ) ) ),
UNO_SET_THROW );
StringResourceMap &aStrings = StaticResourceMap::get();
aStrings[ STR_PRESENTATION_MINIMIZER ] = lcl_loadString( xResourceBundle, STR_PRESENTATION_MINIMIZER );
aStrings[ STR_STEPS ] = lcl_loadString( xResourceBundle, STR_STEPS );
aStrings[ STR_HELP ] = lcl_loadString( xResourceBundle, STR_HELP );
aStrings[ STR_BACK ] = lcl_loadString( xResourceBundle, STR_BACK );
aStrings[ STR_NEXT ] = lcl_loadString( xResourceBundle, STR_NEXT );
aStrings[ STR_FINISH ] = lcl_loadString( xResourceBundle, STR_FINISH );
aStrings[ STR_CANCEL ] = lcl_loadString( xResourceBundle, STR_CANCEL );
aStrings[ STR_INTRODUCTION ] = lcl_loadString( xResourceBundle, STR_INTRODUCTION );
aStrings[ STR_INTRODUCTION_T ] = lcl_loadString( xResourceBundle, STR_INTRODUCTION_T );
aStrings[ STR_CHOSE_SETTINGS ] = lcl_loadString( xResourceBundle, STR_CHOSE_SETTINGS );
aStrings[ STR_REMOVE ] = lcl_loadString( xResourceBundle, STR_REMOVE );
aStrings[ STR_GRAPHIC_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_GRAPHIC_OPTIMIZATION );
aStrings[ STR_IMAGE_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_IMAGE_OPTIMIZATION );
aStrings[ STR_LOSSLESS_COMPRESSION ] = lcl_loadString( xResourceBundle, STR_LOSSLESS_COMPRESSION );
aStrings[ STR_JPEG_COMPRESSION ] = lcl_loadString( xResourceBundle, STR_JPEG_COMPRESSION );
aStrings[ STR_QUALITY ] = lcl_loadString( xResourceBundle, STR_QUALITY );
aStrings[ STR_REMOVE_CROP_AREA ] = lcl_loadString( xResourceBundle, STR_REMOVE_CROP_AREA );
aStrings[ STR_IMAGE_RESOLUTION ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION );
aStrings[ STR_IMAGE_RESOLUTION_0 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_0 );
aStrings[ STR_IMAGE_RESOLUTION_1 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_1 );
aStrings[ STR_IMAGE_RESOLUTION_2 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_2 );
aStrings[ STR_IMAGE_RESOLUTION_3 ] = lcl_loadString( xResourceBundle, STR_IMAGE_RESOLUTION_3 );
aStrings[ STR_EMBED_LINKED_GRAPHICS ] = lcl_loadString( xResourceBundle, STR_EMBED_LINKED_GRAPHICS );
aStrings[ STR_OLE_OBJECTS ] = lcl_loadString( xResourceBundle, STR_OLE_OBJECTS );
aStrings[ STR_OLE_OPTIMIZATION ] = lcl_loadString( xResourceBundle, STR_OLE_OPTIMIZATION );
aStrings[ STR_OLE_REPLACE ] = lcl_loadString( xResourceBundle, STR_OLE_REPLACE );
aStrings[ STR_ALL_OLE_OBJECTS ] = lcl_loadString( xResourceBundle, STR_ALL_OLE_OBJECTS );
aStrings[ STR_ALIEN_OLE_OBJECTS_ONLY ] = lcl_loadString( xResourceBundle, STR_ALIEN_OLE_OBJECTS_ONLY );
aStrings[ STR_OLE_OBJECTS_DESC ] = lcl_loadString( xResourceBundle, STR_OLE_OBJECTS_DESC );
aStrings[ STR_NO_OLE_OBJECTS_DESC ] = lcl_loadString( xResourceBundle, STR_NO_OLE_OBJECTS_DESC );
aStrings[ STR_SLIDES ] = lcl_loadString( xResourceBundle, STR_SLIDES );
aStrings[ STR_CHOOSE_SLIDES ] = lcl_loadString( xResourceBundle, STR_CHOOSE_SLIDES );
aStrings[ STR_MASTER_PAGES ] = lcl_loadString( xResourceBundle, STR_MASTER_PAGES );
aStrings[ STR_DELETE_MASTER_PAGES ] = lcl_loadString( xResourceBundle, STR_DELETE_MASTER_PAGES );
aStrings[ STR_DELETE_NOTES_PAGES ] = lcl_loadString( xResourceBundle, STR_DELETE_NOTES_PAGES );
aStrings[ STR_DELETE_HIDDEN_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETE_HIDDEN_SLIDES );
aStrings[ STR_CUSTOM_SHOW ] = lcl_loadString( xResourceBundle, STR_CUSTOM_SHOW );
aStrings[ STR_SUMMARY ] = lcl_loadString( xResourceBundle, STR_SUMMARY );
aStrings[ STR_SUMMARY_TITLE ] = lcl_loadString( xResourceBundle, STR_SUMMARY_TITLE );
aStrings[ STR_PROGRESS ] = lcl_loadString( xResourceBundle, STR_PROGRESS );
aStrings[ STR_OBJECTS_OPTIMIZED ] = lcl_loadString( xResourceBundle, STR_OBJECTS_OPTIMIZED );
aStrings[ STR_APPLY_TO_CURRENT ] = lcl_loadString( xResourceBundle, STR_APPLY_TO_CURRENT );
aStrings[ STR_AUTOMATICALLY_OPEN ] = lcl_loadString( xResourceBundle, STR_AUTOMATICALLY_OPEN );
aStrings[ STR_SAVE_SETTINGS ] = lcl_loadString( xResourceBundle, STR_SAVE_SETTINGS );
aStrings[ STR_SAVE_AS ] = lcl_loadString( xResourceBundle, STR_SAVE_AS );
aStrings[ STR_DELETE_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETE_SLIDES );
aStrings[ STR_OPTIMIZE_IMAGES ] = lcl_loadString( xResourceBundle, STR_OPTIMIZE_IMAGES );
aStrings[ STR_CREATE_REPLACEMENT ] = lcl_loadString( xResourceBundle, STR_CREATE_REPLACEMENT );
aStrings[ STR_CURRENT_FILESIZE ] = lcl_loadString( xResourceBundle, STR_CURRENT_FILESIZE );
aStrings[ STR_ESTIMATED_FILESIZE ] = lcl_loadString( xResourceBundle, STR_ESTIMATED_FILESIZE );
aStrings[ STR_MB ] = lcl_loadString( xResourceBundle, STR_MB );
aStrings[ STR_MY_SETTINGS ] = lcl_loadString( xResourceBundle, STR_MY_SETTINGS );
aStrings[ STR_DEFAULT_SESSION ] = lcl_loadString( xResourceBundle, STR_DEFAULT_SESSION );
aStrings[ STR_MODIFY_WARNING ] = lcl_loadString( xResourceBundle, STR_MODIFY_WARNING );
aStrings[ STR_YES ] = lcl_loadString( xResourceBundle, STR_YES );
aStrings[ STR_OK ] = lcl_loadString( xResourceBundle, STR_OK );
aStrings[ STR_INFO_1 ] = lcl_loadString( xResourceBundle, STR_INFO_1 );
aStrings[ STR_INFO_2 ] = lcl_loadString( xResourceBundle, STR_INFO_2 );
aStrings[ STR_INFO_3 ] = lcl_loadString( xResourceBundle, STR_INFO_3 );
aStrings[ STR_INFO_4 ] = lcl_loadString( xResourceBundle, STR_INFO_4 );
aStrings[ STR_DUPLICATING_PRESENTATION ] = lcl_loadString( xResourceBundle, STR_DUPLICATING_PRESENTATION );
aStrings[ STR_DELETING_SLIDES ] = lcl_loadString( xResourceBundle, STR_DELETING_SLIDES );
aStrings[ STR_OPTIMIZING_GRAPHICS ] = lcl_loadString( xResourceBundle, STR_OPTIMIZING_GRAPHICS );
aStrings[ STR_CREATING_OLE_REPLACEMENTS] = lcl_loadString( xResourceBundle, STR_CREATING_OLE_REPLACEMENTS );
aStrings[ STR_FILESIZESEPARATOR ] = lcl_loadString( xResourceBundle, STR_FILESIZESEPARATOR );
aStrings[ STR_INFO_DIALOG ] = lcl_loadString( xResourceBundle, STR_INFO_DIALOG );
}
catch( Exception& )
{
}
}
void ConfigurationAccess::LoadConfiguration()
{
try
{
do
{
Reference< XInterface > xRoot( OpenConfiguration( true ) );
if ( !xRoot.is() )
break;
Reference< container::XNameAccess > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY );
if ( xSet.is() )
{
OptimizerSettings& rCurrent( maSettings.front() );
rCurrent.LoadSettingsFromConfiguration( xSet );
}
xSet = Reference< container::XNameAccess >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY );
if ( xSet.is() )
{
const Sequence< OUString > aElements( xSet->getElementNames() );
for ( int i = 0; i < aElements.getLength(); i++ )
{
try
{
OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElements[ i ] ) );
Reference< container::XNameAccess > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY );
if ( xTemplates.is() )
{
maSettings.push_back( OptimizerSettings() );
maSettings.back().LoadSettingsFromConfiguration( xTemplates );
}
}
catch( Exception& /* rException */ )
{
}
}
}
}
while( false );
}
catch( Exception& )
{
}
}
void ConfigurationAccess::SaveConfiguration()
{
try
{
do
{
int i;
unsigned int k;
Reference<util::XChangesBatch> xRoot( OpenConfiguration( false ), UNO_QUERY_THROW );
// storing the last used settings
Reference< container::XNameReplace > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY_THROW );
OptimizerSettings& rCurrent( maSettings.front() );
rCurrent.SaveSettingsToConfiguration( xSet );
// updating template elements
xSet = Reference< container::XNameReplace >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY_THROW );
Reference< container::XNameContainer > xNameContainer( xSet, UNO_QUERY_THROW );
const Sequence< OUString > aElements( xSet->getElementNames() );
for( i = 0; i < aElements.getLength(); i++ )
xNameContainer->removeByName( aElements[ i ] );
for( k = 1; k < maSettings.size(); k++ )
{
OptimizerSettings& rSettings( maSettings[ k ] );
OUString aElementName( TKGet( TK_Template ).concat( OUString::valueOf( static_cast< sal_Int32 >( k ) ) ) );
Reference< lang::XSingleServiceFactory > xChildFactory ( xSet, UNO_QUERY_THROW );
Reference< container::XNameReplace > xChild( xChildFactory->createInstance(), UNO_QUERY_THROW );
xNameContainer->insertByName( aElementName, Any( xChild ) );
OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElementName ) );
Reference< container::XNameReplace > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY );
rSettings.SaveSettingsToConfiguration( xTemplates );
}
xRoot->commitChanges();
}
while( false );
}
catch( Exception& /* rException */ )
{
}
}
Reference< XInterface > ConfigurationAccess::OpenConfiguration( bool bReadOnly )
{
Reference< XInterface > xRoot;
try
{
Reference< lang::XMultiServiceFactory > xProvider( m_xContext->getServiceManager()->createInstanceWithContext( GetConfigurationProviderServiceName(), m_xContext ), UNO_QUERY );
if ( xProvider.is() )
{
Sequence< Any > aCreationArguments( 2 );
aCreationArguments[0] = makeAny( PropertyValue(
OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ), 0,
makeAny( GetPathToConfigurationRoot() ),
PropertyState_DIRECT_VALUE ) );
aCreationArguments[1] = makeAny(beans::PropertyValue(
OUString( RTL_CONSTASCII_USTRINGPARAM( "lazywrite" ) ), 0, makeAny( true ),
PropertyState_DIRECT_VALUE ) );
OUString sAccessService;
if ( bReadOnly )
sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM(
"com.sun.star.configuration.ConfigurationAccess" ) );
else
sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM(
"com.sun.star.configuration.ConfigurationUpdateAccess" ) );
xRoot = xProvider->createInstanceWithArguments(
sAccessService, aCreationArguments );
}
}
catch ( Exception& /* rException */ )
{
}
return xRoot;
}
Reference< XInterface > ConfigurationAccess::GetConfigurationNode(
const Reference< XInterface >& xRoot,
const OUString& sPathToNode )
{
Reference< XInterface > xNode;
try
{
if ( !sPathToNode.getLength() )
xNode = xRoot;
else
{
Reference< XHierarchicalNameAccess > xHierarchy( xRoot, UNO_QUERY );
if ( xHierarchy.is() )
{
xHierarchy->getByHierarchicalName( sPathToNode ) >>= xNode;
}
}
}
catch ( Exception& rException )
{
OSL_TRACE ("caught exception while getting configuration node %s: %s",
::rtl::OUStringToOString(sPathToNode,
RTL_TEXTENCODING_UTF8).getStr(),
::rtl::OUStringToOString(rException.Message,
RTL_TEXTENCODING_UTF8).getStr());
}
return xNode;
}
com::sun::star::uno::Any ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken ) const
{
Any aRetValue;
const OptimizerSettings& rSettings( maSettings.front() );
try
{
switch( ePropertyToken )
{
case TK_Name : aRetValue <<= rSettings.maName; break;
case TK_JPEGCompression : aRetValue <<= rSettings.mbJPEGCompression; break;
case TK_JPEGQuality : aRetValue <<= rSettings.mnJPEGQuality; break;
case TK_RemoveCropArea : aRetValue <<= rSettings.mbRemoveCropArea; break;
case TK_ImageResolution : aRetValue <<= rSettings.mnImageResolution; break;
case TK_EmbedLinkedGraphics : aRetValue <<= rSettings.mbEmbedLinkedGraphics; break;
case TK_OLEOptimization : aRetValue <<= rSettings.mbOLEOptimization; break;
case TK_OLEOptimizationType : aRetValue <<= rSettings.mnOLEOptimizationType; break;
case TK_DeleteUnusedMasterPages : aRetValue <<= rSettings.mbDeleteUnusedMasterPages; break;
case TK_DeleteHiddenSlides : aRetValue <<= rSettings.mbDeleteHiddenSlides; break;
case TK_DeleteNotesPages : aRetValue <<= rSettings.mbDeleteNotesPages; break;
case TK_SaveAs : aRetValue <<= rSettings.mbSaveAs; break;
case TK_SaveAsURL : aRetValue <<= rSettings.maSaveAsURL; break;
case TK_FilterName : aRetValue <<= rSettings.maFilterName; break;
case TK_OpenNewDocument : aRetValue <<= rSettings.mbOpenNewDocument; break;
case TK_EstimatedFileSize : aRetValue <<= rSettings.mnEstimatedFileSize; break;
default:
break;
}
}
catch( Exception& /* rException */ )
{
}
return aRetValue;
}
void ConfigurationAccess::SetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const com::sun::star::uno::Any& rValue )
{
OptimizerSettings& rSettings( maSettings.front() );
try
{
switch( ePropertyToken )
{
case TK_Name : rValue >>= rSettings.maName; break;
case TK_JPEGCompression : rValue >>= rSettings.mbJPEGCompression; break;
case TK_JPEGQuality : rValue >>= rSettings.mnJPEGQuality; break;
case TK_RemoveCropArea : rValue >>= rSettings.mbRemoveCropArea; break;
case TK_ImageResolution : rValue >>= rSettings.mnImageResolution; break;
case TK_EmbedLinkedGraphics : rValue >>= rSettings.mbEmbedLinkedGraphics; break;
case TK_OLEOptimization : rValue >>= rSettings.mbOLEOptimization; break;
case TK_OLEOptimizationType : rValue >>= rSettings.mnOLEOptimizationType; break;
case TK_DeleteUnusedMasterPages : rValue >>= rSettings.mbDeleteUnusedMasterPages; break;
case TK_DeleteHiddenSlides : rValue >>= rSettings.mbDeleteHiddenSlides; break;
case TK_DeleteNotesPages : rValue >>= rSettings.mbDeleteNotesPages; break;
case TK_CustomShowName : rValue >>= rSettings.maCustomShowName; break;
case TK_SaveAs : rValue >>= rSettings.mbSaveAs; break;
case TK_SaveAsURL : rValue >>= rSettings.maSaveAsURL; break;
case TK_FilterName : rValue >>= rSettings.maFilterName; break;
case TK_OpenNewDocument : rValue >>= rSettings.mbOpenNewDocument; break;
case TK_EstimatedFileSize : rValue >>= rSettings.mnEstimatedFileSize; break;
default:
break;
}
}
catch( Exception& /* rException */ )
{
}
}
sal_Bool ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Bool bDefault ) const
{
sal_Bool bRetValue = bDefault;
if ( ! ( GetConfigProperty( ePropertyToken ) >>= bRetValue ) )
bRetValue = bDefault;
return bRetValue;
}
sal_Int16 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int16 nDefault ) const
{
sal_Int16 nRetValue = nDefault;
if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) )
nRetValue = nDefault;
return nRetValue;
}
sal_Int32 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int32 nDefault ) const
{
sal_Int32 nRetValue = nDefault;
if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) )
nRetValue = nDefault;
return nRetValue;
}
Sequence< PropertyValue > ConfigurationAccess::GetConfigurationSequence()
{
Sequence< PropertyValue > aRet( 15 );
OptimizerSettings& rSettings( maSettings.front() );
aRet[ 0 ].Name = TKGet( TK_JPEGCompression );
aRet[ 0 ].Value= Any( rSettings.mbJPEGCompression );
aRet[ 1 ].Name = TKGet( TK_JPEGQuality );
aRet[ 1 ].Value= Any( rSettings.mnJPEGQuality );
aRet[ 2 ].Name = TKGet( TK_RemoveCropArea );
aRet[ 2 ].Value= Any( rSettings.mbRemoveCropArea );
aRet[ 3 ].Name = TKGet( TK_ImageResolution );
aRet[ 3 ].Value= Any( rSettings.mnImageResolution );
aRet[ 4 ].Name = TKGet( TK_EmbedLinkedGraphics );
aRet[ 4 ].Value= Any( rSettings.mbEmbedLinkedGraphics );
aRet[ 5 ].Name = TKGet( TK_OLEOptimization );
aRet[ 5 ].Value= Any( rSettings.mbOLEOptimization );
aRet[ 6 ].Name = TKGet( TK_OLEOptimizationType );
aRet[ 6 ].Value= Any( rSettings.mnOLEOptimizationType );
aRet[ 7 ].Name = TKGet( TK_DeleteUnusedMasterPages );
aRet[ 7 ].Value= Any( rSettings.mbDeleteUnusedMasterPages );
aRet[ 8 ].Name = TKGet( TK_DeleteHiddenSlides );
aRet[ 8 ].Value= Any( rSettings.mbDeleteHiddenSlides );
aRet[ 9 ].Name = TKGet( TK_DeleteNotesPages );
aRet[ 9 ].Value= Any( rSettings.mbDeleteNotesPages );
aRet[ 10].Name = TKGet( TK_CustomShowName );
aRet[ 10].Value= Any( rSettings.maCustomShowName );
aRet[ 11].Name = TKGet( TK_SaveAsURL );
aRet[ 11].Value= Any( rSettings.maSaveAsURL );
aRet[ 12].Name = TKGet( TK_FilterName );
aRet[ 12].Value= Any( rSettings.maFilterName );
aRet[ 13].Name = TKGet( TK_OpenNewDocument );
aRet[ 13].Value= Any( rSettings.mbOpenNewDocument );
aRet[ 14].Name = TKGet( TK_EstimatedFileSize );
aRet[ 14].Value= Any( rSettings.mnEstimatedFileSize );
return aRet;
}
std::vector< OptimizerSettings >::iterator ConfigurationAccess::GetOptimizerSettingsByName( const rtl::OUString& rName )
{
std::vector< OptimizerSettings >::iterator aIter( maSettings.begin() + 1 );
while ( aIter != maSettings.end() )
{
if ( aIter->maName == rName )
break;
aIter++;
}
return aIter;
}