xref: /trunk/main/sdext/source/minimizer/optimizerdialog.cxx (revision e1f21a75e902abd525fc1025e6a6b5d6bd46bd17)
1c142477cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3c142477cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4c142477cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5c142477cSAndrew Rist  * distributed with this work for additional information
6c142477cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7c142477cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8c142477cSAndrew Rist  * "License"); you may not use this file except in compliance
9c142477cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11c142477cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13c142477cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14c142477cSAndrew Rist  * software distributed under the License is distributed on an
15c142477cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16c142477cSAndrew Rist  * KIND, either express or implied.  See the License for the
17c142477cSAndrew Rist  * specific language governing permissions and limitations
18c142477cSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20c142477cSAndrew Rist  *************************************************************/
21c142477cSAndrew Rist 
22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
23cdf0e10cSrcweir #include "precompiled_sdext.hxx"
24cdf0e10cSrcweir 
25cdf0e10cSrcweir #include "optimizerdialog.hxx"
26cdf0e10cSrcweir #include "fileopendialog.hxx"
27cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
28cdf0e10cSrcweir #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
29cdf0e10cSrcweir #include <com/sun/star/io/XInputStream.hpp>
30cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_XCloseBroadcaster_HPP_
31cdf0e10cSrcweir #include <com/sun/star/util/XCloseBroadcaster.hpp>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #include <com/sun/star/frame/XComponentLoader.hpp>
34cdf0e10cSrcweir #include <com/sun/star/frame/XLayoutManager.hpp>
35597a4c59SAriel Constenla-Haile #include <com/sun/star/graphic/XGraphicProvider.hpp>
36cdf0e10cSrcweir #include <osl/time.h>
37cdf0e10cSrcweir 
38597a4c59SAriel Constenla-Haile #include "minimizer.hrc"
39597a4c59SAriel Constenla-Haile #include "helpid.hrc"
40597a4c59SAriel Constenla-Haile 
41597a4c59SAriel Constenla-Haile #define URL_GRAPHIC_REPO        "private:graphicrepository"
42597a4c59SAriel Constenla-Haile #define IMAGE_ROADMAP           URL_GRAPHIC_REPO "/minimizer/minimizepresi_80.png"
435e59ad6cSAriel Constenla-Haile #define IMAGE_ROADMAP_HC        URL_GRAPHIC_REPO "/minimizer/minimizepresi_80_h.png"
44597a4c59SAriel Constenla-Haile 
45cdf0e10cSrcweir // -------------------
46cdf0e10cSrcweir // - OPTIMIZERDIALOG -
47cdf0e10cSrcweir // -------------------
48cdf0e10cSrcweir 
49cdf0e10cSrcweir using namespace ::com::sun::star::io;
50597a4c59SAriel Constenla-Haile using namespace ::com::sun::star::graphic;
51cdf0e10cSrcweir using namespace ::com::sun::star::ui;
52cdf0e10cSrcweir using namespace ::com::sun::star::awt;
53cdf0e10cSrcweir using namespace ::com::sun::star::ucb;
54cdf0e10cSrcweir using namespace ::com::sun::star::uno;
55cdf0e10cSrcweir using namespace ::com::sun::star::util;
56cdf0e10cSrcweir using namespace ::com::sun::star::lang;
57cdf0e10cSrcweir using namespace ::com::sun::star::frame;
58cdf0e10cSrcweir using namespace ::com::sun::star::beans;
59cdf0e10cSrcweir using namespace ::com::sun::star::script;
60cdf0e10cSrcweir using namespace ::com::sun::star::container;
61cdf0e10cSrcweir 
62597a4c59SAriel Constenla-Haile using ::rtl::OUString;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir // -----------------------------------------------------------------------------
65cdf0e10cSrcweir 
InitDialog()66cdf0e10cSrcweir void OptimizerDialog::InitDialog()
67cdf0e10cSrcweir {
68cdf0e10cSrcweir    // setting the dialog properties
69cdf0e10cSrcweir     OUString pNames[] = {
70cdf0e10cSrcweir         TKGet( TK_Closeable ),
71cdf0e10cSrcweir         TKGet( TK_Height ),
72597a4c59SAriel Constenla-Haile         TKGet( TK_HelpURL ),
73cdf0e10cSrcweir         TKGet( TK_Moveable ),
74cdf0e10cSrcweir         TKGet( TK_PositionX ),
75cdf0e10cSrcweir         TKGet( TK_PositionY ),
76cdf0e10cSrcweir         TKGet( TK_Title ),
77cdf0e10cSrcweir         TKGet( TK_Width ) };
78cdf0e10cSrcweir 
79cdf0e10cSrcweir     Any pValues[] = {
80cdf0e10cSrcweir         Any( sal_True ),
81cdf0e10cSrcweir         Any( sal_Int32( DIALOG_HEIGHT ) ),
82597a4c59SAriel Constenla-Haile         Any( HID( HID_SDEXT_MINIMIZER_WIZ_DLG ) ),
83cdf0e10cSrcweir         Any( sal_True ),
84cdf0e10cSrcweir         Any( sal_Int32( 200 ) ),
85cdf0e10cSrcweir         Any( sal_Int32( 52 ) ),
86597a4c59SAriel Constenla-Haile         Any( getString( STR_PRESENTATION_MINIMIZER ) ),
87cdf0e10cSrcweir         Any( sal_Int32( OD_DIALOG_WIDTH ) ) };
88cdf0e10cSrcweir 
89cdf0e10cSrcweir     sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
90cdf0e10cSrcweir 
91cdf0e10cSrcweir     Sequence< rtl::OUString >   aNames( pNames, nCount );
92cdf0e10cSrcweir     Sequence< Any >             aValues( pValues, nCount );
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues );
95cdf0e10cSrcweir }
96cdf0e10cSrcweir 
97cdf0e10cSrcweir // -----------------------------------------------------------------------------
98cdf0e10cSrcweir 
InitRoadmap()99cdf0e10cSrcweir void OptimizerDialog::InitRoadmap()
100cdf0e10cSrcweir {
101cdf0e10cSrcweir     try
102cdf0e10cSrcweir     {
103cdf0e10cSrcweir         OUString pNames[] = {
104cdf0e10cSrcweir             TKGet( TK_Height ),
105cdf0e10cSrcweir             TKGet( TK_PositionX ),
106cdf0e10cSrcweir             TKGet( TK_PositionY ),
107cdf0e10cSrcweir             TKGet( TK_Step ),
108cdf0e10cSrcweir             TKGet( TK_TabIndex ),
109cdf0e10cSrcweir             TKGet( TK_Width ) };
110cdf0e10cSrcweir 
111cdf0e10cSrcweir         Any pValues[] = {
112cdf0e10cSrcweir             Any( sal_Int32( DIALOG_HEIGHT - 26 ) ),
113cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
114cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
115cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
116cdf0e10cSrcweir             Any( mnTabIndex++ ),
117cdf0e10cSrcweir             Any( sal_Int32( 85 ) ) };
118cdf0e10cSrcweir 
119cdf0e10cSrcweir         sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
120cdf0e10cSrcweir 
121cdf0e10cSrcweir         Sequence< rtl::OUString >   aNames( pNames, nCount );
122cdf0e10cSrcweir         Sequence< Any >             aValues( pValues, nCount );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir         mxRoadmapControlModel = insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRoadmapModel" ) ),
125cdf0e10cSrcweir                                                               TKGet( TK_rdmNavi ), aNames, aValues  );
126cdf0e10cSrcweir 
127cdf0e10cSrcweir         Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW );
128cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Name ), Any( TKGet( TK_rdmNavi ) ) );
129cdf0e10cSrcweir         mxRoadmapControl = mxDialogControlContainer->getControl( TKGet( TK_rdmNavi ) );
130cdf0e10cSrcweir         InsertRoadmapItem( 0, sal_True, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION );
131cdf0e10cSrcweir         InsertRoadmapItem( 1, sal_True, getString( STR_SLIDES ), ITEM_ID_SLIDES );
132cdf0e10cSrcweir         InsertRoadmapItem( 2, sal_True, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION );
133cdf0e10cSrcweir         InsertRoadmapItem( 3, sal_True, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION );
134cdf0e10cSrcweir         InsertRoadmapItem( 4, sal_True, getString( STR_SUMMARY ), ITEM_ID_SUMMARY );
135cdf0e10cSrcweir 
136597a4c59SAriel Constenla-Haile         rtl::OUString sBitmap(
137597a4c59SAriel Constenla-Haile             isHighContrast() ?
138597a4c59SAriel Constenla-Haile             rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP_HC ) ) :
139597a4c59SAriel Constenla-Haile             rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP ) ) );
140cdf0e10cSrcweir 
141597a4c59SAriel Constenla-Haile         xPropertySet->setPropertyValue( TKGet( TK_ImageURL ), Any( sBitmap ) );
142cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Activated ), Any( (sal_Bool)sal_True ) );
143cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Complete ), Any( (sal_Bool)sal_True ) );
144cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_CurrentItemID ), Any( (sal_Int16)ITEM_ID_INTRODUCTION ) );
145cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Text ), Any( getString( STR_STEPS ) ) );
146cdf0e10cSrcweir     }
147cdf0e10cSrcweir     catch( Exception& )
148cdf0e10cSrcweir     {
149cdf0e10cSrcweir     }
150cdf0e10cSrcweir }
151cdf0e10cSrcweir 
152cdf0e10cSrcweir // -----------------------------------------------------------------------------
153cdf0e10cSrcweir 
InsertRoadmapItem(const sal_Int32 nIndex,const sal_Bool bEnabled,const rtl::OUString & rLabel,const sal_Int32 nItemID)154cdf0e10cSrcweir void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID )
155cdf0e10cSrcweir {
156cdf0e10cSrcweir     try
157cdf0e10cSrcweir     {
158cdf0e10cSrcweir         Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
159cdf0e10cSrcweir         Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
160cdf0e10cSrcweir         Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_QUERY_THROW );
161cdf0e10cSrcweir         Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW );
162cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Label ), Any( rLabel ) );
163cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Enabled ), Any( bEnabled ) );
164cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_ID ), Any( nItemID ) );
165cdf0e10cSrcweir         aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) );
166cdf0e10cSrcweir     }
167cdf0e10cSrcweir     catch( Exception& )
168cdf0e10cSrcweir     {
169cdf0e10cSrcweir 
170cdf0e10cSrcweir     }
171cdf0e10cSrcweir }
172cdf0e10cSrcweir 
173cdf0e10cSrcweir // -----------------------------------------------------------------------------
174cdf0e10cSrcweir 
UpdateConfiguration()175cdf0e10cSrcweir void OptimizerDialog::UpdateConfiguration()
176cdf0e10cSrcweir {
177cdf0e10cSrcweir     sal_Int16   nInt16 = 0;
178cdf0e10cSrcweir     OUString    aString;
179cdf0e10cSrcweir     Any         aAny;
180cdf0e10cSrcweir 
181cdf0e10cSrcweir     Sequence< sal_Int16 > aSelectedItems;
182cdf0e10cSrcweir     Sequence< OUString > aStringItemList;
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     // page0
185cdf0e10cSrcweir     aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ) );
186cdf0e10cSrcweir     if ( aAny >>= aSelectedItems )
187cdf0e10cSrcweir     {
188cdf0e10cSrcweir         if ( aSelectedItems.getLength() )
189cdf0e10cSrcweir         {
190cdf0e10cSrcweir             sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
191cdf0e10cSrcweir             aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ) );
192cdf0e10cSrcweir             if ( aAny >>= aStringItemList )
193cdf0e10cSrcweir             {
194cdf0e10cSrcweir                 if ( aStringItemList.getLength() > nSelectedItem )
195cdf0e10cSrcweir                     SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) );
196cdf0e10cSrcweir             }
197cdf0e10cSrcweir         }
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir 
200cdf0e10cSrcweir     aAny = getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) );
201cdf0e10cSrcweir     if ( aAny >>= nInt16 )
202cdf0e10cSrcweir     {
203cdf0e10cSrcweir         if ( nInt16 )
204cdf0e10cSrcweir         {
205cdf0e10cSrcweir             aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) );
206cdf0e10cSrcweir             if ( aAny >>= aSelectedItems )
207cdf0e10cSrcweir             {
208cdf0e10cSrcweir                 if ( aSelectedItems.getLength() )
209cdf0e10cSrcweir                 {
210cdf0e10cSrcweir                     sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
211cdf0e10cSrcweir                     aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) );
212cdf0e10cSrcweir                     if ( aAny >>= aStringItemList )
213cdf0e10cSrcweir                     {
214cdf0e10cSrcweir                         if ( aStringItemList.getLength() > nSelectedItem )
215cdf0e10cSrcweir                             SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) );
216cdf0e10cSrcweir                     }
217cdf0e10cSrcweir                 }
218cdf0e10cSrcweir             }
219cdf0e10cSrcweir         }
220cdf0e10cSrcweir     }
221cdf0e10cSrcweir }
222cdf0e10cSrcweir 
223cdf0e10cSrcweir // -----------------------------------------------------------------------------
224cdf0e10cSrcweir 
OptimizerDialog(const Reference<XComponentContext> & rxContext,const Reference<XFrame> & rxFrame,const Reference<XWindowPeer> & rxParent)225597a4c59SAriel Constenla-Haile OptimizerDialog::OptimizerDialog(
226597a4c59SAriel Constenla-Haile     const Reference< XComponentContext > &rxContext,
227597a4c59SAriel Constenla-Haile     const Reference< XFrame > &rxFrame,
228597a4c59SAriel Constenla-Haile     const Reference< XWindowPeer >& rxParent )
229597a4c59SAriel Constenla-Haile     : UnoDialog( rxContext, rxParent )
230597a4c59SAriel Constenla-Haile     , ConfigurationAccess( rxContext, NULL )
231597a4c59SAriel Constenla-Haile     , mxFrame( rxFrame )
232597a4c59SAriel Constenla-Haile     , mnCurrentStep( 0 )
233597a4c59SAriel Constenla-Haile     , mnTabIndex( 0 )
234cdf0e10cSrcweir {
235597a4c59SAriel Constenla-Haile     OSL_TRACE("OptimizerDialog::OptimizerDialog");
236597a4c59SAriel Constenla-Haile     OSL_ENSURE( mxFrame.is(), "OptimizerDialog: no XFrame!" );
237597a4c59SAriel Constenla-Haile     Reference< XController > xController( mxFrame->getController() );
238597a4c59SAriel Constenla-Haile     mxModel = xController->getModel();
239597a4c59SAriel Constenla-Haile     Reference< XStorable> xStorable( mxModel, UNO_QUERY_THROW );
240cdf0e10cSrcweir     mbIsReadonly = xStorable->isReadonly();
241cdf0e10cSrcweir 
242cdf0e10cSrcweir     InitDialog();
243cdf0e10cSrcweir     InitRoadmap();
244cdf0e10cSrcweir     InitNavigationBar();
245cdf0e10cSrcweir     InitPage0();
246cdf0e10cSrcweir     InitPage1();
247cdf0e10cSrcweir     InitPage2();
248cdf0e10cSrcweir     InitPage3();
249cdf0e10cSrcweir     InitPage4();
250cdf0e10cSrcweir     ActivatePage( 0 );
251cdf0e10cSrcweir 
252cdf0e10cSrcweir     OptimizationStats aStats;
253597a4c59SAriel Constenla-Haile     aStats.InitializeStatusValuesFromDocument( mxModel );
254cdf0e10cSrcweir     Sequence< PropertyValue > aStatusSequence( aStats.GetStatusSequence() );
255cdf0e10cSrcweir     UpdateStatus( aStatusSequence );
256597a4c59SAriel Constenla-Haile 
257597a4c59SAriel Constenla-Haile     centerDialog();
258cdf0e10cSrcweir }
259cdf0e10cSrcweir 
260cdf0e10cSrcweir // -----------------------------------------------------------------------------
261cdf0e10cSrcweir 
~OptimizerDialog()262cdf0e10cSrcweir OptimizerDialog::~OptimizerDialog()
263cdf0e10cSrcweir {
264597a4c59SAriel Constenla-Haile     OSL_TRACE("OptimizerDialog::~OptimizerDialog");
265cdf0e10cSrcweir     // not saving configuration if the dialog has been finished via cancel or close window
266cdf0e10cSrcweir     if ( mbStatus )
267cdf0e10cSrcweir         SaveConfiguration();
268597a4c59SAriel Constenla-Haile 
269597a4c59SAriel Constenla-Haile     Reference< XComponent > xComponent( mxDialog, UNO_QUERY );
270597a4c59SAriel Constenla-Haile     if ( xComponent.is() )
271597a4c59SAriel Constenla-Haile     {
272597a4c59SAriel Constenla-Haile         OSL_TRACE("OptimizerDialog::~OptimizerDialog - disposing dialog!");
273597a4c59SAriel Constenla-Haile         xComponent->dispose();
274cdf0e10cSrcweir     }
275597a4c59SAriel Constenla-Haile }
276597a4c59SAriel Constenla-Haile 
277597a4c59SAriel Constenla-Haile 
statusChanged(const::com::sun::star::frame::FeatureStateEvent & aState)278597a4c59SAriel Constenla-Haile void SAL_CALL OptimizerDialog::statusChanged(
279597a4c59SAriel Constenla-Haile     const ::com::sun::star::frame::FeatureStateEvent& aState )
280597a4c59SAriel Constenla-Haile throw (::com::sun::star::uno::RuntimeException)
281597a4c59SAriel Constenla-Haile {
282597a4c59SAriel Constenla-Haile     Sequence< PropertyValue > aArguments;
283597a4c59SAriel Constenla-Haile     if ( ( aState.State >>= aArguments ) && aArguments.getLength() )
284597a4c59SAriel Constenla-Haile         UpdateStatus( aArguments );
285597a4c59SAriel Constenla-Haile }
286597a4c59SAriel Constenla-Haile 
disposing(const::com::sun::star::lang::EventObject &)287597a4c59SAriel Constenla-Haile void SAL_CALL OptimizerDialog::disposing(
288597a4c59SAriel Constenla-Haile     const ::com::sun::star::lang::EventObject& /*aSource*/ )
289597a4c59SAriel Constenla-Haile throw (::com::sun::star::uno::RuntimeException)
290597a4c59SAriel Constenla-Haile {}
291cdf0e10cSrcweir 
292cdf0e10cSrcweir // -----------------------------------------------------------------------------
293cdf0e10cSrcweir 
execute()294cdf0e10cSrcweir sal_Bool OptimizerDialog::execute()
295cdf0e10cSrcweir {
296cdf0e10cSrcweir     Reference< XItemEventBroadcaster > maRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW );
297597a4c59SAriel Constenla-Haile     maRoadmapBroadcaster->addItemListener( this );
298cdf0e10cSrcweir     UnoDialog::execute();
299cdf0e10cSrcweir     UpdateConfiguration();          // taking actual control settings for the configuration
300597a4c59SAriel Constenla-Haile     maRoadmapBroadcaster->removeItemListener( this );
301cdf0e10cSrcweir     return mbStatus;
302cdf0e10cSrcweir }
303cdf0e10cSrcweir 
304cdf0e10cSrcweir // -----------------------------------------------------------------------------
305cdf0e10cSrcweir 
SwitchPage(sal_Int16 nNewStep)306cdf0e10cSrcweir void OptimizerDialog::SwitchPage( sal_Int16 nNewStep )
307cdf0e10cSrcweir {
308cdf0e10cSrcweir     if ( ( nNewStep != mnCurrentStep ) && ( ( nNewStep <= MAX_STEP ) || ( nNewStep >= 0 ) ) )
309cdf0e10cSrcweir     {
310cdf0e10cSrcweir         sal_Int16 nOldStep = mnCurrentStep;
311cdf0e10cSrcweir         if ( nNewStep == 0 )
312cdf0e10cSrcweir             disableControl( TKGet( TK_btnNavBack ) );
313cdf0e10cSrcweir         else if ( nOldStep == 0 )
314cdf0e10cSrcweir             enableControl( TKGet( TK_btnNavBack ) );
315cdf0e10cSrcweir 
316cdf0e10cSrcweir         if ( nNewStep == MAX_STEP )
317cdf0e10cSrcweir             disableControl( TKGet( TK_btnNavNext ) );
318cdf0e10cSrcweir         else if ( nOldStep == MAX_STEP )
319cdf0e10cSrcweir             enableControl( TKGet( TK_btnNavNext ) );
320cdf0e10cSrcweir 
321cdf0e10cSrcweir         setControlProperty( TKGet( TK_rdmNavi ), TKGet( TK_CurrentItemID ), Any( nNewStep ) );
322cdf0e10cSrcweir 
323cdf0e10cSrcweir         DeactivatePage( nOldStep );
324cdf0e10cSrcweir         UpdateControlStates( nNewStep );
325cdf0e10cSrcweir 
326cdf0e10cSrcweir         ActivatePage( nNewStep );
327cdf0e10cSrcweir         mnCurrentStep = nNewStep;
328cdf0e10cSrcweir     }
329cdf0e10cSrcweir }
330cdf0e10cSrcweir 
UpdateControlStates(sal_Int16 nPage)331cdf0e10cSrcweir void OptimizerDialog::UpdateControlStates( sal_Int16 nPage )
332cdf0e10cSrcweir {
333cdf0e10cSrcweir     switch( nPage )
334cdf0e10cSrcweir     {
335cdf0e10cSrcweir         case 0 : UpdateControlStatesPage0(); break;
336cdf0e10cSrcweir         case 1 : UpdateControlStatesPage1(); break;
337cdf0e10cSrcweir         case 2 : UpdateControlStatesPage2(); break;
338cdf0e10cSrcweir         case 3 : UpdateControlStatesPage3(); break;
339cdf0e10cSrcweir         case 4 : UpdateControlStatesPage4(); break;
340cdf0e10cSrcweir         default:
341cdf0e10cSrcweir         {
342cdf0e10cSrcweir             UpdateControlStatesPage0();
343cdf0e10cSrcweir             UpdateControlStatesPage1();
344cdf0e10cSrcweir             UpdateControlStatesPage2();
345cdf0e10cSrcweir             UpdateControlStatesPage3();
346cdf0e10cSrcweir             UpdateControlStatesPage4();
347cdf0e10cSrcweir         }
348cdf0e10cSrcweir     }
349cdf0e10cSrcweir }
350cdf0e10cSrcweir 
351cdf0e10cSrcweir // -----------------------------------------------------------------------------
352cdf0e10cSrcweir 
GetSelectedString(const PPPOptimizerTokenEnum eToken)353cdf0e10cSrcweir rtl::OUString OptimizerDialog::GetSelectedString( const PPPOptimizerTokenEnum eToken )
354cdf0e10cSrcweir {
355cdf0e10cSrcweir     OUString aSelectedItem;
356cdf0e10cSrcweir     Sequence< sal_Int16 > sSelectedItems;
357cdf0e10cSrcweir     Sequence< OUString >  sItemList;
358cdf0e10cSrcweir 
359cdf0e10cSrcweir     if ( ( getControlProperty( TKGet( eToken ), TKGet( TK_SelectedItems ) ) >>= sSelectedItems ) &&
360cdf0e10cSrcweir             ( getControlProperty( TKGet( eToken ), TKGet( TK_StringItemList ) ) >>= sItemList ) )
361cdf0e10cSrcweir     {
362cdf0e10cSrcweir         if ( sSelectedItems.getLength() == 1 )
363cdf0e10cSrcweir         {
364cdf0e10cSrcweir             sal_Int16 nSelectedItem = sSelectedItems[ 0 ];
365cdf0e10cSrcweir             if ( nSelectedItem < sItemList.getLength() )
366cdf0e10cSrcweir                 aSelectedItem = sItemList[ nSelectedItem ];
367cdf0e10cSrcweir         }
368cdf0e10cSrcweir     }
369cdf0e10cSrcweir     return aSelectedItem;
370cdf0e10cSrcweir }
371cdf0e10cSrcweir 
372cdf0e10cSrcweir // -----------------------------------------------------------------------------
373cdf0e10cSrcweir 
UpdateStatus(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rStatus)374cdf0e10cSrcweir void OptimizerDialog::UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus )
375cdf0e10cSrcweir {
376cdf0e10cSrcweir     if ( mxReschedule.is() )
377cdf0e10cSrcweir     {
378cdf0e10cSrcweir         maStats.InitializeStatusValues( rStatus );
379cdf0e10cSrcweir         const Any* pVal( maStats.GetStatusValue( TK_Status ) );
380cdf0e10cSrcweir         if ( pVal )
381cdf0e10cSrcweir         {
382cdf0e10cSrcweir             rtl::OUString sStatus;
383cdf0e10cSrcweir             if ( *pVal >>= sStatus )
384cdf0e10cSrcweir             {
385cdf0e10cSrcweir                 setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
386597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Label ), Any( sStatus ) );
387cdf0e10cSrcweir             }
388cdf0e10cSrcweir         }
389cdf0e10cSrcweir         pVal = maStats.GetStatusValue( TK_Progress );
390cdf0e10cSrcweir         if ( pVal )
391cdf0e10cSrcweir         {
392cdf0e10cSrcweir             sal_Int32 nProgress = 0;
393cdf0e10cSrcweir             if ( *pVal >>= nProgress )
394cdf0e10cSrcweir                 setControlProperty( TKGet( TK_Progress ), TKGet( TK_ProgressValue ), Any( nProgress ) );
395cdf0e10cSrcweir         }
396cdf0e10cSrcweir         pVal = maStats.GetStatusValue( TK_OpenNewDocument );
397cdf0e10cSrcweir         if ( pVal )
398cdf0e10cSrcweir             SetConfigProperty( TK_OpenNewDocument, *pVal );
399cdf0e10cSrcweir 
400cdf0e10cSrcweir         mxReschedule->reschedule();
401cdf0e10cSrcweir     }
402cdf0e10cSrcweir }
403cdf0e10cSrcweir 
404cdf0e10cSrcweir // -----------------------------------------------------------------------------
405cdf0e10cSrcweir 
itemStateChanged(const ItemEvent & Event)406597a4c59SAriel Constenla-Haile void OptimizerDialog::itemStateChanged( const ItemEvent& Event )
407cdf0e10cSrcweir     throw ( RuntimeException )
408cdf0e10cSrcweir {
409cdf0e10cSrcweir     try
410cdf0e10cSrcweir     {
411cdf0e10cSrcweir         sal_Int16 nState;
412cdf0e10cSrcweir         OUString aControlName;
413cdf0e10cSrcweir         Reference< XControl > xControl;
414cdf0e10cSrcweir         Any aSource( Event.Source );
415cdf0e10cSrcweir         if ( aSource >>= xControl )
416cdf0e10cSrcweir         {
417cdf0e10cSrcweir             Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW );
418cdf0e10cSrcweir             xPropertySet->getPropertyValue( TKGet( TK_Name ) ) >>= aControlName;
419cdf0e10cSrcweir             PPPOptimizerTokenEnum eControl( TKGet( aControlName ) );
420cdf0e10cSrcweir             switch( eControl )
421cdf0e10cSrcweir             {
422cdf0e10cSrcweir                 case TK_rdmNavi :
423cdf0e10cSrcweir                 {
424597a4c59SAriel Constenla-Haile                     SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) );
425cdf0e10cSrcweir                 }
426cdf0e10cSrcweir                 break;
427cdf0e10cSrcweir                 case TK_CheckBox1Pg1 :
428cdf0e10cSrcweir                 {
429cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
430597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) );
431cdf0e10cSrcweir                 }
432cdf0e10cSrcweir                 break;
433cdf0e10cSrcweir                 case TK_CheckBox2Pg1 :
434cdf0e10cSrcweir                 {
435cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
436597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) );
437cdf0e10cSrcweir                 }
438cdf0e10cSrcweir                 break;
439cdf0e10cSrcweir                 case TK_CheckBox0Pg2 :
440cdf0e10cSrcweir                 {
441cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
442cdf0e10cSrcweir                     {
443597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) );
444597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
445597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
446cdf0e10cSrcweir                     }
447cdf0e10cSrcweir                 }
448cdf0e10cSrcweir                 break;
449cdf0e10cSrcweir                 case TK_RadioButton0Pg1 :
450cdf0e10cSrcweir                 {
451cdf0e10cSrcweir                     sal_Int16 nInt16 = 0;
452cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
453cdf0e10cSrcweir                     {
454cdf0e10cSrcweir                         nInt16 ^= 1;
455597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) );
456597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
457597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
458cdf0e10cSrcweir                     }
459cdf0e10cSrcweir                 }
460cdf0e10cSrcweir                 break;
461cdf0e10cSrcweir                 case TK_RadioButton1Pg1 :
462cdf0e10cSrcweir                 {
463cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
464cdf0e10cSrcweir                     {
465597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) );
466597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
467597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
468cdf0e10cSrcweir                     }
469cdf0e10cSrcweir                 }
470cdf0e10cSrcweir                 break;
471cdf0e10cSrcweir                 case TK_RadioButton0Pg2 :
472cdf0e10cSrcweir                 {
473cdf0e10cSrcweir                     sal_Int16 nInt16;
474cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
475cdf0e10cSrcweir                     {
476cdf0e10cSrcweir                         nInt16 ^= 1;
477597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) );
478cdf0e10cSrcweir                     }
479cdf0e10cSrcweir                 }
480cdf0e10cSrcweir                 break;
481cdf0e10cSrcweir                 case TK_RadioButton1Pg2 :
482cdf0e10cSrcweir                 {
483cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
484597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_OLEOptimizationType, Any( nState ) );
485cdf0e10cSrcweir                 }
486cdf0e10cSrcweir                 break;
487cdf0e10cSrcweir                 case TK_CheckBox0Pg3 :
488cdf0e10cSrcweir                 {
489cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
490597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) );
491cdf0e10cSrcweir                 }
492cdf0e10cSrcweir                 break;
493cdf0e10cSrcweir                 case TK_CheckBox1Pg3 :
494cdf0e10cSrcweir                 {
495cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
496597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) );
497cdf0e10cSrcweir                 }
498cdf0e10cSrcweir                 break;
499cdf0e10cSrcweir                 case TK_CheckBox2Pg3 :
500cdf0e10cSrcweir                 {
501cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
502597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) );
503cdf0e10cSrcweir                 }
504cdf0e10cSrcweir                 break;
505cdf0e10cSrcweir                 case TK_CheckBox3Pg3 :
506cdf0e10cSrcweir                 {
507cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
508597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
509cdf0e10cSrcweir                 }
510cdf0e10cSrcweir                 break;
511cdf0e10cSrcweir                 case TK_CheckBox1Pg4 :
512cdf0e10cSrcweir                 {
513cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
514597a4c59SAriel Constenla-Haile                         setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
515cdf0e10cSrcweir                 }
516cdf0e10cSrcweir                 break;
517cdf0e10cSrcweir                 case TK_RadioButton0Pg4 :
518cdf0e10cSrcweir                 case TK_RadioButton1Pg4 :
519cdf0e10cSrcweir                 {
520cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
521597a4c59SAriel Constenla-Haile                         SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) );
522cdf0e10cSrcweir                 }
523cdf0e10cSrcweir                 break;
524cdf0e10cSrcweir                 default:
525cdf0e10cSrcweir                 break;
526cdf0e10cSrcweir             }
527cdf0e10cSrcweir         }
528cdf0e10cSrcweir     }
529cdf0e10cSrcweir     catch ( Exception& )
530cdf0e10cSrcweir     {
531cdf0e10cSrcweir     }
532cdf0e10cSrcweir }
533cdf0e10cSrcweir 
534cdf0e10cSrcweir // -----------------------------------------------------------------------------
535cdf0e10cSrcweir 
actionPerformed(const ActionEvent & rEvent)536597a4c59SAriel Constenla-Haile void OptimizerDialog::actionPerformed( const ActionEvent& rEvent )
537cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
538cdf0e10cSrcweir {
539cdf0e10cSrcweir     switch( TKGet( rEvent.ActionCommand ) )
540cdf0e10cSrcweir     {
541597a4c59SAriel Constenla-Haile         case TK_btnNavBack :    SwitchPage( mnCurrentStep - 1 ); break;
542597a4c59SAriel Constenla-Haile         case TK_btnNavNext :    SwitchPage( mnCurrentStep + 1 ); break;
543cdf0e10cSrcweir         case TK_btnNavFinish :
544cdf0e10cSrcweir         {
545597a4c59SAriel Constenla-Haile             UpdateConfiguration();
546cdf0e10cSrcweir 
547597a4c59SAriel Constenla-Haile             SwitchPage( ITEM_ID_SUMMARY );
548597a4c59SAriel Constenla-Haile             DisablePage( ITEM_ID_SUMMARY );
549597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_False ) );
550597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_False ) );
551597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
552597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_False ) );
553597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_False ) );
554597a4c59SAriel Constenla-Haile             setControlProperty( TKGet( TK_FixedText0Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
555cdf0e10cSrcweir 
556cdf0e10cSrcweir             // check if we have to open the FileDialog
557cdf0e10cSrcweir             sal_Bool    bSuccessfullyExecuted = sal_True;
558cdf0e10cSrcweir             sal_Int16   nInt16 = 0;
559597a4c59SAriel Constenla-Haile             getControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
560cdf0e10cSrcweir             if ( nInt16 )
561cdf0e10cSrcweir             {
562cdf0e10cSrcweir                 rtl::OUString aSaveAsURL;
563597a4c59SAriel Constenla-Haile                 FileOpenDialog aFileOpenDialog( mxContext, Reference< XWindow >( mxParent, UNO_QUERY ) );
564cdf0e10cSrcweir 
565cdf0e10cSrcweir                 // generating default file name
566597a4c59SAriel Constenla-Haile                 Reference< XStorable > xStorable( mxModel, UNO_QUERY );
567cdf0e10cSrcweir                 if ( xStorable.is() && xStorable->hasLocation() )
568cdf0e10cSrcweir                 {
569cdf0e10cSrcweir                     rtl::OUString aLocation( xStorable->getLocation() );
570cdf0e10cSrcweir                     if ( aLocation.getLength() )
571cdf0e10cSrcweir                     {
572cdf0e10cSrcweir                         sal_Int32 nIndex = aLocation.lastIndexOf( '/', aLocation.getLength() - 1 );
573cdf0e10cSrcweir                         if ( nIndex >= 0 )
574cdf0e10cSrcweir                         {
575cdf0e10cSrcweir                             if ( nIndex < aLocation.getLength() - 1 )
576cdf0e10cSrcweir                                 aLocation = aLocation.copy( nIndex + 1 );
577cdf0e10cSrcweir 
578cdf0e10cSrcweir                             // remove extension
579cdf0e10cSrcweir                             nIndex = aLocation.lastIndexOf( '.', aLocation.getLength() - 1 );
580cdf0e10cSrcweir                             if ( nIndex >= 0 )
581cdf0e10cSrcweir                                 aLocation = aLocation.copy( 0, nIndex );
582cdf0e10cSrcweir 
583cdf0e10cSrcweir                             // adding .mini
584cdf0e10cSrcweir                             aLocation = aLocation.concat( OUString::createFromAscii( ".mini" ) );
585cdf0e10cSrcweir                             aFileOpenDialog.setDefaultName( aLocation );
586cdf0e10cSrcweir                         }
587cdf0e10cSrcweir                     }
588cdf0e10cSrcweir                 }
589cdf0e10cSrcweir                 sal_Bool bDialogExecuted = aFileOpenDialog.execute() == dialogs::ExecutableDialogResults::OK;
590cdf0e10cSrcweir                 if ( bDialogExecuted )
591cdf0e10cSrcweir                 {
592cdf0e10cSrcweir                     aSaveAsURL = aFileOpenDialog.getURL();
593597a4c59SAriel Constenla-Haile                     SetConfigProperty( TK_SaveAsURL, Any( aSaveAsURL ) );
594597a4c59SAriel Constenla-Haile                     SetConfigProperty( TK_FilterName, Any( aFileOpenDialog.getFilterName() ) );
595cdf0e10cSrcweir                 }
596cdf0e10cSrcweir                 if ( !aSaveAsURL.getLength() )
597cdf0e10cSrcweir                 {
598cdf0e10cSrcweir                     // something goes wrong...
599cdf0e10cSrcweir                     bSuccessfullyExecuted = sal_False;
600cdf0e10cSrcweir                 }
601cdf0e10cSrcweir 
602cdf0e10cSrcweir                 // waiting for 500ms
603597a4c59SAriel Constenla-Haile                 if ( mxReschedule.is() )
604cdf0e10cSrcweir                 {
605597a4c59SAriel Constenla-Haile                     mxReschedule->reschedule();
606cdf0e10cSrcweir                     for ( sal_uInt32 i = osl_getGlobalTimer(); ( i + 500 ) > ( osl_getGlobalTimer() ); )
607597a4c59SAriel Constenla-Haile                     mxReschedule->reschedule();
608cdf0e10cSrcweir                 }
609cdf0e10cSrcweir             }
610cdf0e10cSrcweir             if ( bSuccessfullyExecuted )
611cdf0e10cSrcweir             {   // now check if we have to store a session template
612cdf0e10cSrcweir                 nInt16 = 0;
613cdf0e10cSrcweir                 OUString aSettingsName;
614597a4c59SAriel Constenla-Haile                 getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
615597a4c59SAriel Constenla-Haile                 getControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ) ) >>= aSettingsName;
616cdf0e10cSrcweir                 if ( nInt16 && aSettingsName.getLength() )
617cdf0e10cSrcweir                 {
618597a4c59SAriel Constenla-Haile                     std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSettingsName ) );
619597a4c59SAriel Constenla-Haile                     std::vector< OptimizerSettings >& rSettings( GetOptimizerSettings() );
620cdf0e10cSrcweir                     OptimizerSettings aNewSettings( rSettings[ 0 ] );
621cdf0e10cSrcweir                     aNewSettings.maName = aSettingsName;
622cdf0e10cSrcweir                     if ( aIter == rSettings.end() )
623cdf0e10cSrcweir                         rSettings.push_back( aNewSettings );
624cdf0e10cSrcweir                     else
625cdf0e10cSrcweir                         *aIter = aNewSettings;
626cdf0e10cSrcweir                 }
627cdf0e10cSrcweir             }
628cdf0e10cSrcweir             if ( bSuccessfullyExecuted )
629cdf0e10cSrcweir             {
630cdf0e10cSrcweir                 Sequence< Any > aArgs( 1 );
631597a4c59SAriel Constenla-Haile                 aArgs[ 0 ] <<= mxFrame;
632cdf0e10cSrcweir 
6338c5bb9c6SAriel Constenla-Haile                 Reference < XDispatch > xDispatch(
6348c5bb9c6SAriel Constenla-Haile                     mxContext->getServiceManager()->createInstanceWithArgumentsAndContext(
6358c5bb9c6SAriel Constenla-Haile                         OUString( RTL_CONSTASCII_USTRINGPARAM(
6368c5bb9c6SAriel Constenla-Haile                             "com.sun.star.presentation.PresentationOptimizer" ) ),
6378c5bb9c6SAriel Constenla-Haile                         aArgs, mxContext ),
6388c5bb9c6SAriel Constenla-Haile                     UNO_QUERY );
639cdf0e10cSrcweir 
640cdf0e10cSrcweir                 URL aURL;
6418c5bb9c6SAriel Constenla-Haile                 aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.presentation.PresentationOptimizer:" ) );
642cdf0e10cSrcweir                 aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "optimize" ) );
643cdf0e10cSrcweir 
644cdf0e10cSrcweir                 Sequence< PropertyValue > lArguments( 3 );
645cdf0e10cSrcweir                 lArguments[ 0 ].Name = TKGet( TK_Settings );
646597a4c59SAriel Constenla-Haile                 lArguments[ 0 ].Value <<= GetConfigurationSequence();
647597a4c59SAriel Constenla-Haile                 lArguments[ 1 ].Name = TKGet( TK_StatusListener );
648597a4c59SAriel Constenla-Haile                 lArguments[ 1 ].Value <<= Reference< XStatusListener >( this );
649597a4c59SAriel Constenla-Haile                 lArguments[ 2 ].Name = TKGet( TK_ParentWindow );
650597a4c59SAriel Constenla-Haile                 lArguments[ 2 ].Value <<= mxDialogWindowPeer;
651cdf0e10cSrcweir 
652cdf0e10cSrcweir                 if( xDispatch.is() )
653cdf0e10cSrcweir                     xDispatch->dispatch( aURL, lArguments );
654cdf0e10cSrcweir 
655597a4c59SAriel Constenla-Haile                 endExecute( bSuccessfullyExecuted );
656cdf0e10cSrcweir             }
657cdf0e10cSrcweir             else
658cdf0e10cSrcweir             {
659597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_True ) );
660597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_True ) );
661597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
662597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_True ) );
663597a4c59SAriel Constenla-Haile                 setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_True ) );
664597a4c59SAriel Constenla-Haile                 EnablePage( ITEM_ID_SUMMARY );
665cdf0e10cSrcweir             }
666cdf0e10cSrcweir         }
667cdf0e10cSrcweir         break;
668597a4c59SAriel Constenla-Haile         case TK_btnNavCancel :  endExecute( sal_False ); break;
669cdf0e10cSrcweir         case TK_Button0Pg0 :    // delete configuration
670cdf0e10cSrcweir         {
671597a4c59SAriel Constenla-Haile             OUString aSelectedItem( GetSelectedString( TK_ListBox0Pg0 ) );
672cdf0e10cSrcweir             if ( aSelectedItem.getLength() )
673cdf0e10cSrcweir             {
674597a4c59SAriel Constenla-Haile                 std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSelectedItem ) );
675597a4c59SAriel Constenla-Haile                 std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
676cdf0e10cSrcweir                 if ( aIter != rList.end() )
677cdf0e10cSrcweir                 {
678cdf0e10cSrcweir                     rList.erase( aIter );
679597a4c59SAriel Constenla-Haile                     UpdateControlStates();
680cdf0e10cSrcweir                 }
681cdf0e10cSrcweir             }
682cdf0e10cSrcweir         }
683cdf0e10cSrcweir         break;
684597a4c59SAriel Constenla-Haile         default:
685cdf0e10cSrcweir         {
686597a4c59SAriel Constenla-Haile             Reference< XControl > xControl( rEvent.Source, UNO_QUERY );
687597a4c59SAriel Constenla-Haile             if ( xControl.is() )
688597a4c59SAriel Constenla-Haile             {
689597a4c59SAriel Constenla-Haile                 OUString aName;
690597a4c59SAriel Constenla-Haile                 Reference< XPropertySet > xProps( xControl->getModel(), UNO_QUERY );
691597a4c59SAriel Constenla-Haile                 xProps->getPropertyValue( TKGet( TK_Name ) ) >>= aName;
692597a4c59SAriel Constenla-Haile                 if ( TKGet( aName ) == TK_ListBox0Pg0 )
693cdf0e10cSrcweir                 {
694880c69c6SAriel Constenla-Haile                     if ( rEvent.ActionCommand.getLength() )
695e4a7f284SAriel Constenla-Haile                     {
696597a4c59SAriel Constenla-Haile                         std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( rEvent.ActionCommand ) );
697597a4c59SAriel Constenla-Haile                         std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
698880c69c6SAriel Constenla-Haile                         if ( aIter != rList.end() )
699880c69c6SAriel Constenla-Haile                             rList[ 0 ] = *aIter;
700880c69c6SAriel Constenla-Haile                     }
701597a4c59SAriel Constenla-Haile                     UpdateControlStates();
702880c69c6SAriel Constenla-Haile                 }
703597a4c59SAriel Constenla-Haile             }
704597a4c59SAriel Constenla-Haile         }
705597a4c59SAriel Constenla-Haile             break;
706597a4c59SAriel Constenla-Haile     }
707cdf0e10cSrcweir }
708cdf0e10cSrcweir 
709880c69c6SAriel Constenla-Haile // -----------------------------------------------------------------------------
710880c69c6SAriel Constenla-Haile 
textChanged(const TextEvent & rEvent)711597a4c59SAriel Constenla-Haile void OptimizerDialog::textChanged( const TextEvent& rEvent )
712880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
713880c69c6SAriel Constenla-Haile {
714597a4c59SAriel Constenla-Haile     Reference< XSpinField > xFormattedField( rEvent.Source, UNO_QUERY );
715597a4c59SAriel Constenla-Haile     if ( xFormattedField.is() )
716597a4c59SAriel Constenla-Haile     {
717880c69c6SAriel Constenla-Haile         double fDouble = 0;
718597a4c59SAriel Constenla-Haile         Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
719880c69c6SAriel Constenla-Haile         if ( aAny >>= fDouble )
720597a4c59SAriel Constenla-Haile             SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
721597a4c59SAriel Constenla-Haile         return;
722880c69c6SAriel Constenla-Haile     }
723880c69c6SAriel Constenla-Haile 
724597a4c59SAriel Constenla-Haile     Reference< XComboBox > xComboBox( rEvent.Source, UNO_QUERY );
725597a4c59SAriel Constenla-Haile     if ( xComboBox.is() )
726cdf0e10cSrcweir     {
727cdf0e10cSrcweir         rtl::OUString aString;
728597a4c59SAriel Constenla-Haile         Any aAny = getControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ) );
729cdf0e10cSrcweir         if ( aAny >>= aString )
730cdf0e10cSrcweir         {
731cdf0e10cSrcweir             sal_Int32 nI0, nI1, nI2, nI3, nI4;
732cdf0e10cSrcweir             nI0 = nI1 = nI2 = nI3 = nI4 = 0;
733cdf0e10cSrcweir 
734597a4c59SAriel Constenla-Haile             if ( getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 ) == aString )
735597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI4 );
736597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 ) == aString )
737597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI4 );
738597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 ) == aString )
739597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI4 );
740597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 ) == aString )
741597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI4 );
742cdf0e10cSrcweir 
743597a4c59SAriel Constenla-Haile             SetConfigProperty( TK_ImageResolution, Any( aString.toInt32() ) );
744cdf0e10cSrcweir         }
745cdf0e10cSrcweir     }
746cdf0e10cSrcweir }
747cdf0e10cSrcweir 
748cdf0e10cSrcweir // -----------------------------------------------------------------------------
749cdf0e10cSrcweir 
up(const SpinEvent &)750597a4c59SAriel Constenla-Haile void OptimizerDialog::up( const SpinEvent& /* rEvent */ )
751cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
752cdf0e10cSrcweir {
753cdf0e10cSrcweir     double fDouble;
754597a4c59SAriel Constenla-Haile     Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
755cdf0e10cSrcweir     if ( aAny >>= fDouble )
756cdf0e10cSrcweir     {
757cdf0e10cSrcweir         fDouble += 9;
758cdf0e10cSrcweir         if ( fDouble > 100 )
759cdf0e10cSrcweir             fDouble = 100;
760597a4c59SAriel Constenla-Haile         setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
761597a4c59SAriel Constenla-Haile         SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
762cdf0e10cSrcweir     }
763cdf0e10cSrcweir }
764597a4c59SAriel Constenla-Haile 
down(const SpinEvent &)765597a4c59SAriel Constenla-Haile void OptimizerDialog::down( const SpinEvent& /* rEvent */ )
766cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
767cdf0e10cSrcweir {
768cdf0e10cSrcweir     double fDouble;
769597a4c59SAriel Constenla-Haile     Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
770cdf0e10cSrcweir     if ( aAny >>= fDouble )
771cdf0e10cSrcweir     {
772cdf0e10cSrcweir         fDouble -= 9;
773cdf0e10cSrcweir         if ( fDouble < 0 )
774cdf0e10cSrcweir             fDouble = 0;
775597a4c59SAriel Constenla-Haile         setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
776597a4c59SAriel Constenla-Haile         SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
777cdf0e10cSrcweir     }
778cdf0e10cSrcweir }
779e4a7f284SAriel Constenla-Haile 
first(const SpinEvent &)780597a4c59SAriel Constenla-Haile void OptimizerDialog::first( const SpinEvent& /* rEvent */ )
781597a4c59SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
782597a4c59SAriel Constenla-Haile {
783597a4c59SAriel Constenla-Haile     setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 0 ) ) );
784597a4c59SAriel Constenla-Haile     SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)0 ) );
785597a4c59SAriel Constenla-Haile }
786880c69c6SAriel Constenla-Haile 
last(const SpinEvent &)787597a4c59SAriel Constenla-Haile void OptimizerDialog::last( const SpinEvent& /* rEvent */ )
788597a4c59SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
789880c69c6SAriel Constenla-Haile {
790597a4c59SAriel Constenla-Haile     setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 100 ) ) );
791597a4c59SAriel Constenla-Haile     SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)100 ) );
792880c69c6SAriel Constenla-Haile }
793*e1f21a75Smseidel 
794*e1f21a75Smseidel /* vim: set noet sw=4 ts=4: */
795