| /************************************************************** |
| * |
| * 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 <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> |
| #include <com/sun/star/ucb/XSimpleFileAccess.hpp> |
| #include <com/sun/star/io/XInputStream.hpp> |
| #ifndef _COM_SUN_STAR_UTIL_XCloseBroadcaster_HPP_ |
| #include <com/sun/star/util/XCloseBroadcaster.hpp> |
| #endif |
| #include <com/sun/star/frame/XComponentLoader.hpp> |
| #include <com/sun/star/frame/XLayoutManager.hpp> |
| #include <com/sun/star/graphic/XGraphicProvider.hpp> |
| #include <osl/time.h> |
| |
| #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( RTL_CONSTASCII_USTRINGPARAM( |
| "com.sun.star.presentation.PresentationOptimizer" ) ), |
| aArgs, mxContext ), |
| UNO_QUERY ); |
| |
| URL aURL; |
| aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.presentation.PresentationOptimizer:" ) ); |
| 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 ) ); |
| } |
| |