/************************************************************** * * 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 "optimizerdialog.hxx" #include "fileopendialog.hxx" #include #include #include #ifndef _COM_SUN_STAR_UTIL_XCloseBroadcaster_HPP_ #include #endif #include #include #include #include #include "minimizer.hrc" #include "helpid.hrc" #define URL_GRAPHIC_REPO "private:graphicrepository" #define IMAGE_ROADMAP URL_GRAPHIC_REPO "/minimizer/minimizepresi_80.png" #define IMAGE_ROADMAP_HC URL_GRAPHIC_REPO "/minimizer/minimizepresi_80.png" // ------------------- // - OPTIMIZERDIALOG - // ------------------- using namespace ::com::sun::star::io; using namespace ::com::sun::star::graphic; using namespace ::com::sun::star::ui; using namespace ::com::sun::star::awt; using namespace ::com::sun::star::ucb; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::util; using namespace ::com::sun::star::lang; using namespace ::com::sun::star::frame; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::script; using namespace ::com::sun::star::container; using ::rtl::OUString; // ----------------------------------------------------------------------------- void OptimizerDialog::InitDialog() { // setting the dialog properties OUString pNames[] = { TKGet( TK_Closeable ), TKGet( TK_Height ), TKGet( TK_HelpURL ), TKGet( TK_Moveable ), TKGet( TK_PositionX ), TKGet( TK_PositionY ), TKGet( TK_Title ), TKGet( TK_Width ) }; Any pValues[] = { Any( sal_True ), Any( sal_Int32( DIALOG_HEIGHT ) ), Any( HID( HID_SDEXT_MINIMIZER_WIZ_DLG ) ), Any( sal_True ), Any( sal_Int32( 200 ) ), Any( sal_Int32( 52 ) ), Any( getString( STR_PRESENTATION_MINIMIZER ) ), Any( sal_Int32( OD_DIALOG_WIDTH ) ) }; sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString ); Sequence< rtl::OUString > aNames( pNames, nCount ); Sequence< Any > aValues( pValues, nCount ); mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues ); } // ----------------------------------------------------------------------------- void OptimizerDialog::InitRoadmap() { try { OUString pNames[] = { TKGet( TK_Height ), TKGet( TK_PositionX ), TKGet( TK_PositionY ), TKGet( TK_Step ), TKGet( TK_TabIndex ), TKGet( TK_Width ) }; Any pValues[] = { Any( sal_Int32( DIALOG_HEIGHT - 26 ) ), Any( sal_Int32( 0 ) ), Any( sal_Int32( 0 ) ), Any( sal_Int32( 0 ) ), Any( mnTabIndex++ ), Any( sal_Int32( 85 ) ) }; sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString ); Sequence< rtl::OUString > aNames( pNames, nCount ); Sequence< Any > aValues( pValues, nCount ); mxRoadmapControlModel = insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRoadmapModel" ) ), TKGet( TK_rdmNavi ), aNames, aValues ); Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW ); xPropertySet->setPropertyValue( TKGet( TK_Name ), Any( TKGet( TK_rdmNavi ) ) ); mxRoadmapControl = mxDialogControlContainer->getControl( TKGet( TK_rdmNavi ) ); InsertRoadmapItem( 0, sal_True, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION ); InsertRoadmapItem( 1, sal_True, getString( STR_SLIDES ), ITEM_ID_SLIDES ); InsertRoadmapItem( 2, sal_True, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION ); InsertRoadmapItem( 3, sal_True, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION ); InsertRoadmapItem( 4, sal_True, getString( STR_SUMMARY ), ITEM_ID_SUMMARY ); rtl::OUString sBitmap( isHighContrast() ? rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP_HC ) ) : rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP ) ) ); xPropertySet->setPropertyValue( TKGet( TK_ImageURL ), Any( sBitmap ) ); xPropertySet->setPropertyValue( TKGet( TK_Activated ), Any( (sal_Bool)sal_True ) ); xPropertySet->setPropertyValue( TKGet( TK_Complete ), Any( (sal_Bool)sal_True ) ); xPropertySet->setPropertyValue( TKGet( TK_CurrentItemID ), Any( (sal_Int16)ITEM_ID_INTRODUCTION ) ); xPropertySet->setPropertyValue( TKGet( TK_Text ), Any( getString( STR_STEPS ) ) ); } catch( Exception& ) { } } // ----------------------------------------------------------------------------- void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID ) { try { Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW ); Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW ); Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_QUERY_THROW ); Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW ); xPropertySet->setPropertyValue( TKGet( TK_Label ), Any( rLabel ) ); xPropertySet->setPropertyValue( TKGet( TK_Enabled ), Any( bEnabled ) ); xPropertySet->setPropertyValue( TKGet( TK_ID ), Any( nItemID ) ); aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) ); } catch( Exception& ) { } } // ----------------------------------------------------------------------------- void OptimizerDialog::UpdateConfiguration() { sal_Int16 nInt16 = 0; OUString aString; Any aAny; Sequence< sal_Int16 > aSelectedItems; Sequence< OUString > aStringItemList; // page0 aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ) ); if ( aAny >>= aSelectedItems ) { if ( aSelectedItems.getLength() ) { sal_Int16 nSelectedItem = aSelectedItems[ 0 ]; aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ) ); if ( aAny >>= aStringItemList ) { if ( aStringItemList.getLength() > nSelectedItem ) SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) ); } } } aAny = getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) ); if ( aAny >>= nInt16 ) { if ( nInt16 ) { aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) ); if ( aAny >>= aSelectedItems ) { if ( aSelectedItems.getLength() ) { sal_Int16 nSelectedItem = aSelectedItems[ 0 ]; aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) ); if ( aAny >>= aStringItemList ) { if ( aStringItemList.getLength() > nSelectedItem ) SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) ); } } } } } } // ----------------------------------------------------------------------------- OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxContext, const Reference< XFrame > &rxFrame, const Reference< XWindowPeer >& rxParent ) : UnoDialog( rxContext, rxParent ) , ConfigurationAccess( rxContext, NULL ) , mxFrame( rxFrame ) , mnCurrentStep( 0 ) , mnTabIndex( 0 ) { OSL_TRACE("OptimizerDialog::OptimizerDialog"); OSL_ENSURE( mxFrame.is(), "OptimizerDialog: no XFrame!" ); Reference< XController > xController( mxFrame->getController() ); mxModel = xController->getModel(); Reference< XStorable> xStorable( mxModel, UNO_QUERY_THROW ); mbIsReadonly = xStorable->isReadonly(); InitDialog(); InitRoadmap(); InitNavigationBar(); InitPage0(); InitPage1(); InitPage2(); InitPage3(); InitPage4(); ActivatePage( 0 ); OptimizationStats aStats; aStats.InitializeStatusValuesFromDocument( mxModel ); Sequence< PropertyValue > aStatusSequence( aStats.GetStatusSequence() ); UpdateStatus( aStatusSequence ); centerDialog(); } // ----------------------------------------------------------------------------- OptimizerDialog::~OptimizerDialog() { OSL_TRACE("OptimizerDialog::~OptimizerDialog"); // not saving configuration if the dialog has been finished via cancel or close window if ( mbStatus ) SaveConfiguration(); Reference< XComponent > xComponent( mxDialog, UNO_QUERY ); if ( xComponent.is() ) { OSL_TRACE("OptimizerDialog::~OptimizerDialog - disposing dialog!"); xComponent->dispose(); } } void SAL_CALL OptimizerDialog::statusChanged( const ::com::sun::star::frame::FeatureStateEvent& aState ) throw (::com::sun::star::uno::RuntimeException) { Sequence< PropertyValue > aArguments; if ( ( aState.State >>= aArguments ) && aArguments.getLength() ) UpdateStatus( aArguments ); } void SAL_CALL OptimizerDialog::disposing( const ::com::sun::star::lang::EventObject& /*aSource*/ ) throw (::com::sun::star::uno::RuntimeException) {} // ----------------------------------------------------------------------------- sal_Bool OptimizerDialog::execute() { Reference< XItemEventBroadcaster > maRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW ); maRoadmapBroadcaster->addItemListener( this ); UnoDialog::execute(); UpdateConfiguration(); // taking actual control settings for the configuration maRoadmapBroadcaster->removeItemListener( this ); return mbStatus; } // ----------------------------------------------------------------------------- void OptimizerDialog::SwitchPage( sal_Int16 nNewStep ) { if ( ( nNewStep != mnCurrentStep ) && ( ( nNewStep <= MAX_STEP ) || ( nNewStep >= 0 ) ) ) { sal_Int16 nOldStep = mnCurrentStep; if ( nNewStep == 0 ) disableControl( TKGet( TK_btnNavBack ) ); else if ( nOldStep == 0 ) enableControl( TKGet( TK_btnNavBack ) ); if ( nNewStep == MAX_STEP ) disableControl( TKGet( TK_btnNavNext ) ); else if ( nOldStep == MAX_STEP ) enableControl( TKGet( TK_btnNavNext ) ); setControlProperty( TKGet( TK_rdmNavi ), TKGet( TK_CurrentItemID ), Any( nNewStep ) ); DeactivatePage( nOldStep ); UpdateControlStates( nNewStep ); ActivatePage( nNewStep ); mnCurrentStep = nNewStep; } } void OptimizerDialog::UpdateControlStates( sal_Int16 nPage ) { switch( nPage ) { case 0 : UpdateControlStatesPage0(); break; case 1 : UpdateControlStatesPage1(); break; case 2 : UpdateControlStatesPage2(); break; case 3 : UpdateControlStatesPage3(); break; case 4 : UpdateControlStatesPage4(); break; default: { UpdateControlStatesPage0(); UpdateControlStatesPage1(); UpdateControlStatesPage2(); UpdateControlStatesPage3(); UpdateControlStatesPage4(); } } } // ----------------------------------------------------------------------------- rtl::OUString OptimizerDialog::GetSelectedString( const PPPOptimizerTokenEnum eToken ) { OUString aSelectedItem; Sequence< sal_Int16 > sSelectedItems; Sequence< OUString > sItemList; if ( ( getControlProperty( TKGet( eToken ), TKGet( TK_SelectedItems ) ) >>= sSelectedItems ) && ( getControlProperty( TKGet( eToken ), TKGet( TK_StringItemList ) ) >>= sItemList ) ) { if ( sSelectedItems.getLength() == 1 ) { sal_Int16 nSelectedItem = sSelectedItems[ 0 ]; if ( nSelectedItem < sItemList.getLength() ) aSelectedItem = sItemList[ nSelectedItem ]; } } return aSelectedItem; } // ----------------------------------------------------------------------------- void OptimizerDialog::UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus ) { if ( mxReschedule.is() ) { maStats.InitializeStatusValues( rStatus ); const Any* pVal( maStats.GetStatusValue( TK_Status ) ); if ( pVal ) { rtl::OUString sStatus; if ( *pVal >>= sStatus ) { setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) ); setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Label ), Any( sStatus ) ); } } pVal = maStats.GetStatusValue( TK_Progress ); if ( pVal ) { sal_Int32 nProgress = 0; if ( *pVal >>= nProgress ) setControlProperty( TKGet( TK_Progress ), TKGet( TK_ProgressValue ), Any( nProgress ) ); } pVal = maStats.GetStatusValue( TK_OpenNewDocument ); if ( pVal ) SetConfigProperty( TK_OpenNewDocument, *pVal ); mxReschedule->reschedule(); } } // ----------------------------------------------------------------------------- void OptimizerDialog::itemStateChanged( const ItemEvent& Event ) throw ( RuntimeException ) { try { sal_Int16 nState; OUString aControlName; Reference< XControl > xControl; Any aSource( Event.Source ); if ( aSource >>= xControl ) { Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW ); xPropertySet->getPropertyValue( TKGet( TK_Name ) ) >>= aControlName; PPPOptimizerTokenEnum eControl( TKGet( aControlName ) ); switch( eControl ) { case TK_rdmNavi : { SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) ); } break; case TK_CheckBox1Pg1 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) ); } break; case TK_CheckBox2Pg1 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) ); } break; case TK_CheckBox0Pg2 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) { SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) ); setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); } } break; case TK_RadioButton0Pg1 : { sal_Int16 nInt16 = 0; if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 ) { nInt16 ^= 1; SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) ); setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) ); setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) ); } } break; case TK_RadioButton1Pg1 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) { SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) ); setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); } } break; case TK_RadioButton0Pg2 : { sal_Int16 nInt16; if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 ) { nInt16 ^= 1; SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) ); } } break; case TK_RadioButton1Pg2 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_OLEOptimizationType, Any( nState ) ); } break; case TK_CheckBox0Pg3 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) ); } break; case TK_CheckBox1Pg3 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) ); } break; case TK_CheckBox2Pg3 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) ); } break; case TK_CheckBox3Pg3 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); } break; case TK_CheckBox1Pg4 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( nState != 0 ) ); } break; case TK_RadioButton0Pg4 : case TK_RadioButton1Pg4 : { if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState ) SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) ); } break; default: break; } } } catch ( Exception& ) { } } // ----------------------------------------------------------------------------- void OptimizerDialog::actionPerformed( const ActionEvent& rEvent ) throw ( com::sun::star::uno::RuntimeException ) { switch( TKGet( rEvent.ActionCommand ) ) { case TK_btnNavBack : SwitchPage( mnCurrentStep - 1 ); break; case TK_btnNavNext : SwitchPage( mnCurrentStep + 1 ); break; case TK_btnNavFinish : { UpdateConfiguration(); SwitchPage( ITEM_ID_SUMMARY ); DisablePage( ITEM_ID_SUMMARY ); setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_FixedText0Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) ); // check if we have to open the FileDialog sal_Bool bSuccessfullyExecuted = sal_True; sal_Int16 nInt16 = 0; getControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ) ) >>= nInt16; if ( nInt16 ) { rtl::OUString aSaveAsURL; FileOpenDialog aFileOpenDialog( mxContext, Reference< XWindow >( mxParent, UNO_QUERY ) ); // generating default file name Reference< XStorable > xStorable( mxModel, UNO_QUERY ); if ( xStorable.is() && xStorable->hasLocation() ) { rtl::OUString aLocation( xStorable->getLocation() ); if ( aLocation.getLength() ) { sal_Int32 nIndex = aLocation.lastIndexOf( '/', aLocation.getLength() - 1 ); if ( nIndex >= 0 ) { if ( nIndex < aLocation.getLength() - 1 ) aLocation = aLocation.copy( nIndex + 1 ); // remove extension nIndex = aLocation.lastIndexOf( '.', aLocation.getLength() - 1 ); if ( nIndex >= 0 ) aLocation = aLocation.copy( 0, nIndex ); // adding .mini aLocation = aLocation.concat( OUString::createFromAscii( ".mini" ) ); aFileOpenDialog.setDefaultName( aLocation ); } } } sal_Bool bDialogExecuted = aFileOpenDialog.execute() == dialogs::ExecutableDialogResults::OK; if ( bDialogExecuted ) { aSaveAsURL = aFileOpenDialog.getURL(); SetConfigProperty( TK_SaveAsURL, Any( aSaveAsURL ) ); SetConfigProperty( TK_FilterName, Any( aFileOpenDialog.getFilterName() ) ); } if ( !aSaveAsURL.getLength() ) { // something goes wrong... bSuccessfullyExecuted = sal_False; } // waiting for 500ms if ( mxReschedule.is() ) { mxReschedule->reschedule(); for ( sal_uInt32 i = osl_getGlobalTimer(); ( i + 500 ) > ( osl_getGlobalTimer() ); ) mxReschedule->reschedule(); } } if ( bSuccessfullyExecuted ) { // now check if we have to store a session template nInt16 = 0; OUString aSettingsName; getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16; getControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ) ) >>= aSettingsName; if ( nInt16 && aSettingsName.getLength() ) { std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSettingsName ) ); std::vector< OptimizerSettings >& rSettings( GetOptimizerSettings() ); OptimizerSettings aNewSettings( rSettings[ 0 ] ); aNewSettings.maName = aSettingsName; if ( aIter == rSettings.end() ) rSettings.push_back( aNewSettings ); else *aIter = aNewSettings; } } if ( bSuccessfullyExecuted ) { Sequence< Any > aArgs( 1 ); aArgs[ 0 ] <<= mxFrame; Reference < XDispatch > xDispatch( mxContext->getServiceManager()->createInstanceWithArgumentsAndContext( OUString::createFromAscii( "com.sun.star.comp.PPPOptimizer" ), aArgs, mxContext ), UNO_QUERY ); URL aURL; aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.comp.PPPOptimizer:" ) ); aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "optimize" ) ); Sequence< PropertyValue > lArguments( 3 ); lArguments[ 0 ].Name = TKGet( TK_Settings ); lArguments[ 0 ].Value <<= GetConfigurationSequence(); lArguments[ 1 ].Name = TKGet( TK_StatusListener ); lArguments[ 1 ].Value <<= Reference< XStatusListener >( this ); lArguments[ 2 ].Name = TKGet( TK_ParentWindow ); lArguments[ 2 ].Value <<= mxDialogWindowPeer; if( xDispatch.is() ) xDispatch->dispatch( aURL, lArguments ); endExecute( bSuccessfullyExecuted ); } else { setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_True ) ); setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_True ) ); setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) ); setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_True ) ); setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_True ) ); EnablePage( ITEM_ID_SUMMARY ); } } break; case TK_btnNavCancel : endExecute( sal_False ); break; case TK_Button0Pg0 : // delete configuration { OUString aSelectedItem( GetSelectedString( TK_ListBox0Pg0 ) ); if ( aSelectedItem.getLength() ) { std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSelectedItem ) ); std::vector< OptimizerSettings >& rList( GetOptimizerSettings() ); if ( aIter != rList.end() ) { rList.erase( aIter ); UpdateControlStates(); } } } break; default: { Reference< XControl > xControl( rEvent.Source, UNO_QUERY ); if ( xControl.is() ) { OUString aName; Reference< XPropertySet > xProps( xControl->getModel(), UNO_QUERY ); xProps->getPropertyValue( TKGet( TK_Name ) ) >>= aName; if ( TKGet( aName ) == TK_ListBox0Pg0 ) { if ( rEvent.ActionCommand.getLength() ) { std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( rEvent.ActionCommand ) ); std::vector< OptimizerSettings >& rList( GetOptimizerSettings() ); if ( aIter != rList.end() ) rList[ 0 ] = *aIter; } UpdateControlStates(); } } } break; } } // ----------------------------------------------------------------------------- void OptimizerDialog::textChanged( const TextEvent& rEvent ) throw ( com::sun::star::uno::RuntimeException ) { Reference< XSpinField > xFormattedField( rEvent.Source, UNO_QUERY ); if ( xFormattedField.is() ) { double fDouble = 0; Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) ); if ( aAny >>= fDouble ) SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) ); return; } Reference< XComboBox > xComboBox( rEvent.Source, UNO_QUERY ); if ( xComboBox.is() ) { rtl::OUString aString; Any aAny = getControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ) ); if ( aAny >>= aString ) { sal_Int32 nI0, nI1, nI2, nI3, nI4; nI0 = nI1 = nI2 = nI3 = nI4 = 0; if ( getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 ) == aString ) aString = getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI4 ); else if ( getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 ) == aString ) aString = getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI4 ); else if ( getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 ) == aString ) aString = getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI4 ); else if ( getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 ) == aString ) aString = getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI4 ); SetConfigProperty( TK_ImageResolution, Any( aString.toInt32() ) ); } } } // ----------------------------------------------------------------------------- void OptimizerDialog::up( const SpinEvent& /* rEvent */ ) throw ( com::sun::star::uno::RuntimeException ) { double fDouble; Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) ); if ( aAny >>= fDouble ) { fDouble += 9; if ( fDouble > 100 ) fDouble = 100; setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) ); SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) ); } } void OptimizerDialog::down( const SpinEvent& /* rEvent */ ) throw ( com::sun::star::uno::RuntimeException ) { double fDouble; Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) ); if ( aAny >>= fDouble ) { fDouble -= 9; if ( fDouble < 0 ) fDouble = 0; setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) ); SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) ); } } void OptimizerDialog::first( const SpinEvent& /* rEvent */ ) throw ( com::sun::star::uno::RuntimeException ) { setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 0 ) ) ); SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)0 ) ); } void OptimizerDialog::last( const SpinEvent& /* rEvent */ ) throw ( com::sun::star::uno::RuntimeException ) { setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 100 ) ) ); SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)100 ) ); }