xref: /trunk/main/sdext/source/minimizer/optimizerdialog.cxx (revision 880c69c65835e070cb5fc631f62f05b50096ddaf)
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 
22c142477cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sdext.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "optimizerdialog.hxx"
28cdf0e10cSrcweir #include "fileopendialog.hxx"
29cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
30cdf0e10cSrcweir #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
31cdf0e10cSrcweir #include <com/sun/star/io/XInputStream.hpp>
32cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_XCloseBroadcaster_HPP_
33cdf0e10cSrcweir #include <com/sun/star/util/XCloseBroadcaster.hpp>
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #include <com/sun/star/frame/XComponentLoader.hpp>
36cdf0e10cSrcweir #include <com/sun/star/frame/XLayoutManager.hpp>
37cdf0e10cSrcweir #include <osl/time.h>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir // -------------------
40cdf0e10cSrcweir // - OPTIMIZERDIALOG -
41cdf0e10cSrcweir // -------------------
42cdf0e10cSrcweir 
43*880c69c6SAriel Constenla-Haile using namespace ::rtl;
44cdf0e10cSrcweir using namespace ::com::sun::star::io;
45cdf0e10cSrcweir using namespace ::com::sun::star::ui;
46cdf0e10cSrcweir using namespace ::com::sun::star::awt;
47cdf0e10cSrcweir using namespace ::com::sun::star::ucb;
48cdf0e10cSrcweir using namespace ::com::sun::star::uno;
49cdf0e10cSrcweir using namespace ::com::sun::star::util;
50cdf0e10cSrcweir using namespace ::com::sun::star::lang;
51cdf0e10cSrcweir using namespace ::com::sun::star::frame;
52cdf0e10cSrcweir using namespace ::com::sun::star::beans;
53cdf0e10cSrcweir using namespace ::com::sun::star::script;
54cdf0e10cSrcweir using namespace ::com::sun::star::container;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 
57cdf0e10cSrcweir // -----------------------------------------------------------------------------
58cdf0e10cSrcweir 
59cdf0e10cSrcweir void OptimizerDialog::InitDialog()
60cdf0e10cSrcweir {
61cdf0e10cSrcweir    // setting the dialog properties
62cdf0e10cSrcweir     OUString pNames[] = {
63cdf0e10cSrcweir         TKGet( TK_Closeable ),
64cdf0e10cSrcweir         TKGet( TK_Height ),
65cdf0e10cSrcweir         TKGet( TK_Moveable ),
66cdf0e10cSrcweir         TKGet( TK_PositionX ),
67cdf0e10cSrcweir         TKGet( TK_PositionY ),
68cdf0e10cSrcweir         TKGet( TK_Title ),
69cdf0e10cSrcweir         TKGet( TK_Width ) };
70cdf0e10cSrcweir 
71cdf0e10cSrcweir     Any pValues[] = {
72cdf0e10cSrcweir         Any( sal_True ),
73cdf0e10cSrcweir         Any( sal_Int32( DIALOG_HEIGHT ) ),
74cdf0e10cSrcweir         Any( sal_True ),
75cdf0e10cSrcweir         Any( sal_Int32( 200 ) ),
76cdf0e10cSrcweir         Any( sal_Int32( 52 ) ),
77*880c69c6SAriel Constenla-Haile         Any( getString( STR_SUN_OPTIMIZATION_WIZARD2 ) ),
78cdf0e10cSrcweir         Any( sal_Int32( OD_DIALOG_WIDTH ) ) };
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     Sequence< rtl::OUString >   aNames( pNames, nCount );
83cdf0e10cSrcweir     Sequence< Any >             aValues( pValues, nCount );
84cdf0e10cSrcweir 
85cdf0e10cSrcweir     mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues );
86cdf0e10cSrcweir }
87cdf0e10cSrcweir 
88cdf0e10cSrcweir // -----------------------------------------------------------------------------
89cdf0e10cSrcweir 
90cdf0e10cSrcweir void OptimizerDialog::InitRoadmap()
91cdf0e10cSrcweir {
92cdf0e10cSrcweir     try
93cdf0e10cSrcweir     {
94cdf0e10cSrcweir         OUString pNames[] = {
95cdf0e10cSrcweir             TKGet( TK_Height ),
96cdf0e10cSrcweir             TKGet( TK_PositionX ),
97cdf0e10cSrcweir             TKGet( TK_PositionY ),
98cdf0e10cSrcweir             TKGet( TK_Step ),
99cdf0e10cSrcweir             TKGet( TK_TabIndex ),
100cdf0e10cSrcweir             TKGet( TK_Width ) };
101cdf0e10cSrcweir 
102cdf0e10cSrcweir         Any pValues[] = {
103cdf0e10cSrcweir             Any( sal_Int32( DIALOG_HEIGHT - 26 ) ),
104cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
105cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
106cdf0e10cSrcweir             Any( sal_Int32( 0 ) ),
107cdf0e10cSrcweir             Any( mnTabIndex++ ),
108cdf0e10cSrcweir             Any( sal_Int32( 85 ) ) };
109cdf0e10cSrcweir 
110cdf0e10cSrcweir         sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
111cdf0e10cSrcweir 
112cdf0e10cSrcweir         Sequence< rtl::OUString >   aNames( pNames, nCount );
113cdf0e10cSrcweir         Sequence< Any >             aValues( pValues, nCount );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir         mxRoadmapControlModel = insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRoadmapModel" ) ),
116cdf0e10cSrcweir                                                               TKGet( TK_rdmNavi ), aNames, aValues  );
117cdf0e10cSrcweir 
118cdf0e10cSrcweir         Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW );
119cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Name ), Any( TKGet( TK_rdmNavi ) ) );
120cdf0e10cSrcweir         mxRoadmapControl = mxDialogControlContainer->getControl( TKGet( TK_rdmNavi ) );
121cdf0e10cSrcweir         InsertRoadmapItem( 0, sal_True, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION );
122cdf0e10cSrcweir         InsertRoadmapItem( 1, sal_True, getString( STR_SLIDES ), ITEM_ID_SLIDES );
123cdf0e10cSrcweir         InsertRoadmapItem( 2, sal_True, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION );
124cdf0e10cSrcweir         InsertRoadmapItem( 3, sal_True, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION );
125cdf0e10cSrcweir         InsertRoadmapItem( 4, sal_True, getString( STR_SUMMARY ), ITEM_ID_SUMMARY );
126cdf0e10cSrcweir 
127*880c69c6SAriel Constenla-Haile         rtl::OUString sBitmapPath( getPath( TK_BitmapPath ) );
128*880c69c6SAriel Constenla-Haile         rtl::OUString sBitmap( isHighContrast() ? rtl::OUString::createFromAscii( "/minimizepresi_80_h.png" )
129*880c69c6SAriel Constenla-Haile                                                 : rtl::OUString::createFromAscii( "/minimizepresi_80.png" ) );
130*880c69c6SAriel Constenla-Haile         rtl::OUString sURL( sBitmapPath += sBitmap );
131cdf0e10cSrcweir 
132*880c69c6SAriel Constenla-Haile         xPropertySet->setPropertyValue( TKGet( TK_ImageURL ), Any( sURL ) );
133cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Activated ), Any( (sal_Bool)sal_True ) );
134cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Complete ), Any( (sal_Bool)sal_True ) );
135cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_CurrentItemID ), Any( (sal_Int16)ITEM_ID_INTRODUCTION ) );
136cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Text ), Any( getString( STR_STEPS ) ) );
137cdf0e10cSrcweir     }
138cdf0e10cSrcweir     catch( Exception& )
139cdf0e10cSrcweir     {
140cdf0e10cSrcweir     }
141cdf0e10cSrcweir }
142cdf0e10cSrcweir 
143cdf0e10cSrcweir // -----------------------------------------------------------------------------
144cdf0e10cSrcweir 
145cdf0e10cSrcweir void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID )
146cdf0e10cSrcweir {
147cdf0e10cSrcweir     try
148cdf0e10cSrcweir     {
149cdf0e10cSrcweir         Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
150cdf0e10cSrcweir         Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
151cdf0e10cSrcweir         Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_QUERY_THROW );
152cdf0e10cSrcweir         Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW );
153cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Label ), Any( rLabel ) );
154cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Enabled ), Any( bEnabled ) );
155cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_ID ), Any( nItemID ) );
156cdf0e10cSrcweir         aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) );
157cdf0e10cSrcweir     }
158cdf0e10cSrcweir     catch( Exception& )
159cdf0e10cSrcweir     {
160cdf0e10cSrcweir 
161cdf0e10cSrcweir     }
162cdf0e10cSrcweir }
163cdf0e10cSrcweir 
164cdf0e10cSrcweir // -----------------------------------------------------------------------------
165cdf0e10cSrcweir 
166cdf0e10cSrcweir void OptimizerDialog::UpdateConfiguration()
167cdf0e10cSrcweir {
168cdf0e10cSrcweir     sal_Int16   nInt16 = 0;
169cdf0e10cSrcweir     OUString    aString;
170cdf0e10cSrcweir     Any         aAny;
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     Sequence< sal_Int16 > aSelectedItems;
173cdf0e10cSrcweir     Sequence< OUString > aStringItemList;
174cdf0e10cSrcweir 
175cdf0e10cSrcweir     // page0
176cdf0e10cSrcweir     aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ) );
177cdf0e10cSrcweir     if ( aAny >>= aSelectedItems )
178cdf0e10cSrcweir     {
179cdf0e10cSrcweir         if ( aSelectedItems.getLength() )
180cdf0e10cSrcweir         {
181cdf0e10cSrcweir             sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
182cdf0e10cSrcweir             aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ) );
183cdf0e10cSrcweir             if ( aAny >>= aStringItemList )
184cdf0e10cSrcweir             {
185cdf0e10cSrcweir                 if ( aStringItemList.getLength() > nSelectedItem )
186cdf0e10cSrcweir                     SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) );
187cdf0e10cSrcweir             }
188cdf0e10cSrcweir         }
189cdf0e10cSrcweir     }
190cdf0e10cSrcweir 
191cdf0e10cSrcweir     aAny = getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) );
192cdf0e10cSrcweir     if ( aAny >>= nInt16 )
193cdf0e10cSrcweir     {
194cdf0e10cSrcweir         if ( nInt16 )
195cdf0e10cSrcweir         {
196cdf0e10cSrcweir             aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) );
197cdf0e10cSrcweir             if ( aAny >>= aSelectedItems )
198cdf0e10cSrcweir             {
199cdf0e10cSrcweir                 if ( aSelectedItems.getLength() )
200cdf0e10cSrcweir                 {
201cdf0e10cSrcweir                     sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
202cdf0e10cSrcweir                     aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) );
203cdf0e10cSrcweir                     if ( aAny >>= aStringItemList )
204cdf0e10cSrcweir                     {
205cdf0e10cSrcweir                         if ( aStringItemList.getLength() > nSelectedItem )
206cdf0e10cSrcweir                             SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) );
207cdf0e10cSrcweir                     }
208cdf0e10cSrcweir                 }
209cdf0e10cSrcweir             }
210cdf0e10cSrcweir         }
211cdf0e10cSrcweir     }
212cdf0e10cSrcweir }
213cdf0e10cSrcweir 
214cdf0e10cSrcweir // -----------------------------------------------------------------------------
215cdf0e10cSrcweir 
216*880c69c6SAriel Constenla-Haile OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxMSF, Reference< XFrame >& rxFrame, Reference< XDispatch > rxStatusDispatcher ) :
217*880c69c6SAriel Constenla-Haile     UnoDialog( rxMSF, rxFrame ),
218*880c69c6SAriel Constenla-Haile     ConfigurationAccess( rxMSF, NULL ),
219*880c69c6SAriel Constenla-Haile     mnCurrentStep( 0 ),
220*880c69c6SAriel Constenla-Haile     mnTabIndex( 0 ),
221*880c69c6SAriel Constenla-Haile     mxMSF( rxMSF ),
222*880c69c6SAriel Constenla-Haile     mxFrame( rxFrame ),
223*880c69c6SAriel Constenla-Haile     mxItemListener( new ItemListener( *this ) ),
224*880c69c6SAriel Constenla-Haile     mxActionListener( new ActionListener( *this ) ),
225*880c69c6SAriel Constenla-Haile     mxActionListenerListBox0Pg0( new ActionListenerListBox0Pg0( *this ) ),
226*880c69c6SAriel Constenla-Haile     mxTextListenerFormattedField0Pg1( new TextListenerFormattedField0Pg1( *this ) ),
227*880c69c6SAriel Constenla-Haile     mxTextListenerComboBox0Pg1( new TextListenerComboBox0Pg1( *this ) ),
228*880c69c6SAriel Constenla-Haile     mxSpinListenerFormattedField0Pg1( new SpinListenerFormattedField0Pg1( *this ) ),
229*880c69c6SAriel Constenla-Haile     mxStatusDispatcher( rxStatusDispatcher )
230cdf0e10cSrcweir {
231*880c69c6SAriel Constenla-Haile     Reference< XStorable > xStorable( mxController->getModel(), UNO_QUERY_THROW );
232cdf0e10cSrcweir     mbIsReadonly = xStorable->isReadonly();
233cdf0e10cSrcweir 
234cdf0e10cSrcweir     InitDialog();
235cdf0e10cSrcweir     InitRoadmap();
236cdf0e10cSrcweir     InitNavigationBar();
237cdf0e10cSrcweir     InitPage0();
238cdf0e10cSrcweir     InitPage1();
239cdf0e10cSrcweir     InitPage2();
240cdf0e10cSrcweir     InitPage3();
241cdf0e10cSrcweir     InitPage4();
242cdf0e10cSrcweir     ActivatePage( 0 );
243cdf0e10cSrcweir 
244cdf0e10cSrcweir     OptimizationStats aStats;
245*880c69c6SAriel Constenla-Haile     aStats.InitializeStatusValuesFromDocument( mxController->getModel() );
246cdf0e10cSrcweir     Sequence< PropertyValue > aStatusSequence( aStats.GetStatusSequence() );
247cdf0e10cSrcweir     UpdateStatus( aStatusSequence );
248cdf0e10cSrcweir }
249cdf0e10cSrcweir 
250cdf0e10cSrcweir // -----------------------------------------------------------------------------
251cdf0e10cSrcweir 
252cdf0e10cSrcweir OptimizerDialog::~OptimizerDialog()
253cdf0e10cSrcweir {
254cdf0e10cSrcweir     // not saving configuration if the dialog has been finished via cancel or close window
255cdf0e10cSrcweir     if ( mbStatus )
256cdf0e10cSrcweir         SaveConfiguration();
257cdf0e10cSrcweir }
258cdf0e10cSrcweir 
259cdf0e10cSrcweir // -----------------------------------------------------------------------------
260cdf0e10cSrcweir 
261cdf0e10cSrcweir sal_Bool OptimizerDialog::execute()
262cdf0e10cSrcweir {
263cdf0e10cSrcweir     Reference< XItemEventBroadcaster > maRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW );
264*880c69c6SAriel Constenla-Haile     maRoadmapBroadcaster->addItemListener( mxItemListener );
265cdf0e10cSrcweir     UnoDialog::execute();
266cdf0e10cSrcweir     UpdateConfiguration();          // taking actual control settings for the configuration
267*880c69c6SAriel Constenla-Haile     maRoadmapBroadcaster->removeItemListener( mxItemListener );
268cdf0e10cSrcweir     return mbStatus;
269cdf0e10cSrcweir }
270cdf0e10cSrcweir 
271cdf0e10cSrcweir // -----------------------------------------------------------------------------
272cdf0e10cSrcweir 
273cdf0e10cSrcweir void OptimizerDialog::SwitchPage( sal_Int16 nNewStep )
274cdf0e10cSrcweir {
275cdf0e10cSrcweir     if ( ( nNewStep != mnCurrentStep ) && ( ( nNewStep <= MAX_STEP ) || ( nNewStep >= 0 ) ) )
276cdf0e10cSrcweir     {
277cdf0e10cSrcweir         sal_Int16 nOldStep = mnCurrentStep;
278cdf0e10cSrcweir         if ( nNewStep == 0 )
279cdf0e10cSrcweir             disableControl( TKGet( TK_btnNavBack ) );
280cdf0e10cSrcweir         else if ( nOldStep == 0 )
281cdf0e10cSrcweir             enableControl( TKGet( TK_btnNavBack ) );
282cdf0e10cSrcweir 
283cdf0e10cSrcweir         if ( nNewStep == MAX_STEP )
284cdf0e10cSrcweir             disableControl( TKGet( TK_btnNavNext ) );
285cdf0e10cSrcweir         else if ( nOldStep == MAX_STEP )
286cdf0e10cSrcweir             enableControl( TKGet( TK_btnNavNext ) );
287cdf0e10cSrcweir 
288cdf0e10cSrcweir         setControlProperty( TKGet( TK_rdmNavi ), TKGet( TK_CurrentItemID ), Any( nNewStep ) );
289cdf0e10cSrcweir 
290cdf0e10cSrcweir         DeactivatePage( nOldStep );
291cdf0e10cSrcweir         UpdateControlStates( nNewStep );
292cdf0e10cSrcweir 
293cdf0e10cSrcweir         ActivatePage( nNewStep );
294cdf0e10cSrcweir         mnCurrentStep = nNewStep;
295cdf0e10cSrcweir     }
296cdf0e10cSrcweir }
297cdf0e10cSrcweir 
298cdf0e10cSrcweir void OptimizerDialog::UpdateControlStates( sal_Int16 nPage )
299cdf0e10cSrcweir {
300cdf0e10cSrcweir     switch( nPage )
301cdf0e10cSrcweir     {
302cdf0e10cSrcweir         case 0 : UpdateControlStatesPage0(); break;
303cdf0e10cSrcweir         case 1 : UpdateControlStatesPage1(); break;
304cdf0e10cSrcweir         case 2 : UpdateControlStatesPage2(); break;
305cdf0e10cSrcweir         case 3 : UpdateControlStatesPage3(); break;
306cdf0e10cSrcweir         case 4 : UpdateControlStatesPage4(); break;
307cdf0e10cSrcweir         default:
308cdf0e10cSrcweir         {
309cdf0e10cSrcweir             UpdateControlStatesPage0();
310cdf0e10cSrcweir             UpdateControlStatesPage1();
311cdf0e10cSrcweir             UpdateControlStatesPage2();
312cdf0e10cSrcweir             UpdateControlStatesPage3();
313cdf0e10cSrcweir             UpdateControlStatesPage4();
314cdf0e10cSrcweir         }
315cdf0e10cSrcweir     }
316cdf0e10cSrcweir }
317cdf0e10cSrcweir 
318cdf0e10cSrcweir // -----------------------------------------------------------------------------
319cdf0e10cSrcweir 
320cdf0e10cSrcweir rtl::OUString OptimizerDialog::GetSelectedString( const PPPOptimizerTokenEnum eToken )
321cdf0e10cSrcweir {
322cdf0e10cSrcweir     OUString aSelectedItem;
323cdf0e10cSrcweir     Sequence< sal_Int16 > sSelectedItems;
324cdf0e10cSrcweir     Sequence< OUString >  sItemList;
325cdf0e10cSrcweir 
326cdf0e10cSrcweir     if ( ( getControlProperty( TKGet( eToken ), TKGet( TK_SelectedItems ) ) >>= sSelectedItems ) &&
327cdf0e10cSrcweir             ( getControlProperty( TKGet( eToken ), TKGet( TK_StringItemList ) ) >>= sItemList ) )
328cdf0e10cSrcweir     {
329cdf0e10cSrcweir         if ( sSelectedItems.getLength() == 1 )
330cdf0e10cSrcweir         {
331cdf0e10cSrcweir             sal_Int16 nSelectedItem = sSelectedItems[ 0 ];
332cdf0e10cSrcweir             if ( nSelectedItem < sItemList.getLength() )
333cdf0e10cSrcweir                 aSelectedItem = sItemList[ nSelectedItem ];
334cdf0e10cSrcweir         }
335cdf0e10cSrcweir     }
336cdf0e10cSrcweir     return aSelectedItem;
337cdf0e10cSrcweir }
338cdf0e10cSrcweir 
339cdf0e10cSrcweir // -----------------------------------------------------------------------------
340cdf0e10cSrcweir 
341cdf0e10cSrcweir void OptimizerDialog::UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir     if ( mxReschedule.is() )
344cdf0e10cSrcweir     {
345cdf0e10cSrcweir         maStats.InitializeStatusValues( rStatus );
346cdf0e10cSrcweir         const Any* pVal( maStats.GetStatusValue( TK_Status ) );
347cdf0e10cSrcweir         if ( pVal )
348cdf0e10cSrcweir         {
349cdf0e10cSrcweir             rtl::OUString sStatus;
350cdf0e10cSrcweir             if ( *pVal >>= sStatus )
351cdf0e10cSrcweir             {
352cdf0e10cSrcweir                 setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
353*880c69c6SAriel Constenla-Haile                 setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Label ), Any( getString( TKGet( sStatus ) ) ) );
354cdf0e10cSrcweir             }
355cdf0e10cSrcweir         }
356cdf0e10cSrcweir         pVal = maStats.GetStatusValue( TK_Progress );
357cdf0e10cSrcweir         if ( pVal )
358cdf0e10cSrcweir         {
359cdf0e10cSrcweir             sal_Int32 nProgress = 0;
360cdf0e10cSrcweir             if ( *pVal >>= nProgress )
361cdf0e10cSrcweir                 setControlProperty( TKGet( TK_Progress ), TKGet( TK_ProgressValue ), Any( nProgress ) );
362cdf0e10cSrcweir         }
363cdf0e10cSrcweir         pVal = maStats.GetStatusValue( TK_OpenNewDocument );
364cdf0e10cSrcweir         if ( pVal )
365cdf0e10cSrcweir             SetConfigProperty( TK_OpenNewDocument, *pVal );
366cdf0e10cSrcweir 
367cdf0e10cSrcweir         mxReschedule->reschedule();
368cdf0e10cSrcweir     }
369cdf0e10cSrcweir }
370cdf0e10cSrcweir 
371cdf0e10cSrcweir // -----------------------------------------------------------------------------
372cdf0e10cSrcweir 
373*880c69c6SAriel Constenla-Haile void ItemListener::itemStateChanged( const ItemEvent& Event )
374cdf0e10cSrcweir     throw ( RuntimeException )
375cdf0e10cSrcweir {
376cdf0e10cSrcweir     try
377cdf0e10cSrcweir     {
378cdf0e10cSrcweir         sal_Int16 nState;
379cdf0e10cSrcweir         OUString aControlName;
380cdf0e10cSrcweir         Reference< XControl > xControl;
381cdf0e10cSrcweir         Any aSource( Event.Source );
382cdf0e10cSrcweir         if ( aSource >>= xControl )
383cdf0e10cSrcweir         {
384cdf0e10cSrcweir             Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW );
385cdf0e10cSrcweir             xPropertySet->getPropertyValue( TKGet( TK_Name ) ) >>= aControlName;
386cdf0e10cSrcweir             PPPOptimizerTokenEnum eControl( TKGet( aControlName ) );
387cdf0e10cSrcweir             switch( eControl )
388cdf0e10cSrcweir             {
389cdf0e10cSrcweir                 case TK_rdmNavi :
390cdf0e10cSrcweir                 {
391*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) );
392cdf0e10cSrcweir                 }
393cdf0e10cSrcweir                 break;
394cdf0e10cSrcweir                 case TK_CheckBox1Pg1 :
395cdf0e10cSrcweir                 {
396cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
397*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) );
398cdf0e10cSrcweir                 }
399cdf0e10cSrcweir                 break;
400cdf0e10cSrcweir                 case TK_CheckBox2Pg1 :
401cdf0e10cSrcweir                 {
402cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
403*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) );
404cdf0e10cSrcweir                 }
405cdf0e10cSrcweir                 break;
406cdf0e10cSrcweir                 case TK_CheckBox0Pg2 :
407cdf0e10cSrcweir                 {
408cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
409cdf0e10cSrcweir                     {
410*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) );
411*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
412*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
413cdf0e10cSrcweir                     }
414cdf0e10cSrcweir                 }
415cdf0e10cSrcweir                 break;
416cdf0e10cSrcweir                 case TK_RadioButton0Pg1 :
417cdf0e10cSrcweir                 {
418cdf0e10cSrcweir                     sal_Int16 nInt16 = 0;
419cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
420cdf0e10cSrcweir                     {
421cdf0e10cSrcweir                         nInt16 ^= 1;
422*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) );
423*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
424*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
425cdf0e10cSrcweir                     }
426cdf0e10cSrcweir                 }
427cdf0e10cSrcweir                 break;
428cdf0e10cSrcweir                 case TK_RadioButton1Pg1 :
429cdf0e10cSrcweir                 {
430cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
431cdf0e10cSrcweir                     {
432*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) );
433*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
434*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
435cdf0e10cSrcweir                     }
436cdf0e10cSrcweir                 }
437cdf0e10cSrcweir                 break;
438cdf0e10cSrcweir                 case TK_RadioButton0Pg2 :
439cdf0e10cSrcweir                 {
440cdf0e10cSrcweir                     sal_Int16 nInt16;
441cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
442cdf0e10cSrcweir                     {
443cdf0e10cSrcweir                         nInt16 ^= 1;
444*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) );
445cdf0e10cSrcweir                     }
446cdf0e10cSrcweir                 }
447cdf0e10cSrcweir                 break;
448cdf0e10cSrcweir                 case TK_RadioButton1Pg2 :
449cdf0e10cSrcweir                 {
450cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
451*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nState ) );
452cdf0e10cSrcweir                 }
453cdf0e10cSrcweir                 break;
454cdf0e10cSrcweir                 case TK_CheckBox0Pg3 :
455cdf0e10cSrcweir                 {
456cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
457*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) );
458cdf0e10cSrcweir                 }
459cdf0e10cSrcweir                 break;
460cdf0e10cSrcweir                 case TK_CheckBox1Pg3 :
461cdf0e10cSrcweir                 {
462cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
463*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) );
464cdf0e10cSrcweir                 }
465cdf0e10cSrcweir                 break;
466cdf0e10cSrcweir                 case TK_CheckBox2Pg3 :
467cdf0e10cSrcweir                 {
468cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
469*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) );
470cdf0e10cSrcweir                 }
471cdf0e10cSrcweir                 break;
472cdf0e10cSrcweir                 case TK_CheckBox3Pg3 :
473cdf0e10cSrcweir                 {
474cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
475*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
476cdf0e10cSrcweir                 }
477cdf0e10cSrcweir                 break;
478cdf0e10cSrcweir                 case TK_CheckBox1Pg4 :
479cdf0e10cSrcweir                 {
480cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
481*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
482cdf0e10cSrcweir                 }
483cdf0e10cSrcweir                 break;
484cdf0e10cSrcweir                 case TK_RadioButton0Pg4 :
485cdf0e10cSrcweir                 case TK_RadioButton1Pg4 :
486cdf0e10cSrcweir                 {
487cdf0e10cSrcweir                     if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
488*880c69c6SAriel Constenla-Haile                         mrOptimizerDialog.SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) );
489cdf0e10cSrcweir                 }
490cdf0e10cSrcweir                 break;
491cdf0e10cSrcweir                 default:
492cdf0e10cSrcweir                 break;
493cdf0e10cSrcweir             }
494cdf0e10cSrcweir         }
495cdf0e10cSrcweir     }
496cdf0e10cSrcweir     catch ( Exception& )
497cdf0e10cSrcweir     {
498*880c69c6SAriel Constenla-Haile 
499cdf0e10cSrcweir     }
500cdf0e10cSrcweir }
501*880c69c6SAriel Constenla-Haile void ItemListener::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
502*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
503*880c69c6SAriel Constenla-Haile {
504*880c69c6SAriel Constenla-Haile }
505cdf0e10cSrcweir 
506cdf0e10cSrcweir // -----------------------------------------------------------------------------
507cdf0e10cSrcweir 
508*880c69c6SAriel Constenla-Haile void ActionListener::actionPerformed( const ActionEvent& rEvent )
509cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
510cdf0e10cSrcweir {
511cdf0e10cSrcweir     switch( TKGet( rEvent.ActionCommand ) )
512cdf0e10cSrcweir     {
513*880c69c6SAriel Constenla-Haile         case TK_btnNavHelp :
514*880c69c6SAriel Constenla-Haile         {
515*880c69c6SAriel Constenla-Haile             try
516*880c69c6SAriel Constenla-Haile             {
517*880c69c6SAriel Constenla-Haile                 static Reference< XFrame > xHelpFrame;
518*880c69c6SAriel Constenla-Haile                 if ( !xHelpFrame.is() )
519*880c69c6SAriel Constenla-Haile                 {
520*880c69c6SAriel Constenla-Haile                     rtl::OUString sHelpFile( mrOptimizerDialog.getPath( TK_HelpFile ) );
521*880c69c6SAriel Constenla-Haile                     Reference< XDesktop > desktop( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
522*880c69c6SAriel Constenla-Haile                             OUString::createFromAscii( "com.sun.star.frame.Desktop" ), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
523*880c69c6SAriel Constenla-Haile                     Reference< XSimpleFileAccess > xSimpleFileAccess( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
524*880c69c6SAriel Constenla-Haile                             OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
525*880c69c6SAriel Constenla-Haile                     Reference< XInputStream > xInputStream( xSimpleFileAccess->openFileRead( sHelpFile ) );
526*880c69c6SAriel Constenla-Haile                     Reference< XDesktop > xDesktop( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
527*880c69c6SAriel Constenla-Haile                             OUString::createFromAscii( "com.sun.star.frame.Desktop" ), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
528*880c69c6SAriel Constenla-Haile                     Reference< XFrame > xDesktopFrame( xDesktop, UNO_QUERY_THROW );
529*880c69c6SAriel Constenla-Haile                     xHelpFrame = Reference< XFrame >( xDesktopFrame->findFrame( TKGet( TK__blank ), 0 ) );
530*880c69c6SAriel Constenla-Haile                     Reference< XCloseBroadcaster > xCloseBroadcaster( xHelpFrame, UNO_QUERY_THROW );
531*880c69c6SAriel Constenla-Haile                     xCloseBroadcaster->addCloseListener( new HelpCloseListener( xHelpFrame ) );
532*880c69c6SAriel Constenla-Haile                     Reference< XComponentLoader > xLoader( xHelpFrame, UNO_QUERY_THROW );
533*880c69c6SAriel Constenla-Haile 
534*880c69c6SAriel Constenla-Haile                     Sequence< PropertyValue > aLoadProps( 2 );
535*880c69c6SAriel Constenla-Haile                     aLoadProps[ 0 ].Name = TKGet( TK_ReadOnly );
536*880c69c6SAriel Constenla-Haile                     aLoadProps[ 0 ].Value <<= (sal_Bool)( sal_True );
537*880c69c6SAriel Constenla-Haile                     aLoadProps[ 1 ].Name = TKGet( TK_InputStream );
538*880c69c6SAriel Constenla-Haile                     aLoadProps[ 1 ].Value <<= xInputStream;
539*880c69c6SAriel Constenla-Haile 
540*880c69c6SAriel Constenla-Haile                     Reference< XComponent >( xLoader->loadComponentFromURL( OUString::createFromAscii( "private:stream" ),
541*880c69c6SAriel Constenla-Haile                         TKGet( TK__self ), 0, aLoadProps ) );
542*880c69c6SAriel Constenla-Haile 
543*880c69c6SAriel Constenla-Haile                     Reference< XPropertySet > xPropSet( xHelpFrame, UNO_QUERY_THROW );
544*880c69c6SAriel Constenla-Haile                     Reference< XLayoutManager > xLayoutManager;
545*880c69c6SAriel Constenla-Haile                     if ( xPropSet->getPropertyValue( OUString::createFromAscii( "LayoutManager" ) ) >>= xLayoutManager )
546*880c69c6SAriel Constenla-Haile                     {
547*880c69c6SAriel Constenla-Haile                         xLayoutManager->setVisible( sal_False );
548*880c69c6SAriel Constenla-Haile                         xLayoutManager->hideElement( OUString::createFromAscii( "private:resource/menubar/menubar" ) );
549*880c69c6SAriel Constenla-Haile                         xLayoutManager->destroyElement( OUString::createFromAscii( "private:resource/statusbar/statusbar" ) );
550*880c69c6SAriel Constenla-Haile                     }
551*880c69c6SAriel Constenla-Haile                 }
552*880c69c6SAriel Constenla-Haile             }
553*880c69c6SAriel Constenla-Haile             catch( Exception& )
554*880c69c6SAriel Constenla-Haile             {
555*880c69c6SAriel Constenla-Haile 
556*880c69c6SAriel Constenla-Haile             }
557*880c69c6SAriel Constenla-Haile         }
558*880c69c6SAriel Constenla-Haile         break;
559*880c69c6SAriel Constenla-Haile         case TK_btnNavBack :    mrOptimizerDialog.SwitchPage( mrOptimizerDialog.mnCurrentStep - 1 ); break;
560*880c69c6SAriel Constenla-Haile         case TK_btnNavNext :    mrOptimizerDialog.SwitchPage( mrOptimizerDialog.mnCurrentStep + 1 ); break;
561cdf0e10cSrcweir         case TK_btnNavFinish :
562cdf0e10cSrcweir         {
563*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.UpdateConfiguration();
564cdf0e10cSrcweir 
565*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.SwitchPage( ITEM_ID_SUMMARY );
566*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.DisablePage( ITEM_ID_SUMMARY );
567*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_False ) );
568*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_False ) );
569*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
570*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_False ) );
571*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_False ) );
572*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText0Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
573cdf0e10cSrcweir 
574cdf0e10cSrcweir             // check if we have to open the FileDialog
575cdf0e10cSrcweir             sal_Bool    bSuccessfullyExecuted = sal_True;
576cdf0e10cSrcweir             sal_Int16   nInt16 = 0;
577*880c69c6SAriel Constenla-Haile             mrOptimizerDialog.getControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
578cdf0e10cSrcweir             if ( nInt16 )
579cdf0e10cSrcweir             {
580cdf0e10cSrcweir                 rtl::OUString aSaveAsURL;
581*880c69c6SAriel Constenla-Haile                 FileOpenDialog aFileOpenDialog( ((UnoDialog&)mrOptimizerDialog).mxMSF );
582cdf0e10cSrcweir 
583cdf0e10cSrcweir                 // generating default file name
584*880c69c6SAriel Constenla-Haile                 Reference< XStorable > xStorable( mrOptimizerDialog.mxController->getModel(), UNO_QUERY );
585cdf0e10cSrcweir                 if ( xStorable.is() && xStorable->hasLocation() )
586cdf0e10cSrcweir                 {
587cdf0e10cSrcweir                     rtl::OUString aLocation( xStorable->getLocation() );
588cdf0e10cSrcweir                     if ( aLocation.getLength() )
589cdf0e10cSrcweir                     {
590cdf0e10cSrcweir                         sal_Int32 nIndex = aLocation.lastIndexOf( '/', aLocation.getLength() - 1 );
591cdf0e10cSrcweir                         if ( nIndex >= 0 )
592cdf0e10cSrcweir                         {
593cdf0e10cSrcweir                             if ( nIndex < aLocation.getLength() - 1 )
594cdf0e10cSrcweir                                 aLocation = aLocation.copy( nIndex + 1 );
595cdf0e10cSrcweir 
596cdf0e10cSrcweir                             // remove extension
597cdf0e10cSrcweir                             nIndex = aLocation.lastIndexOf( '.', aLocation.getLength() - 1 );
598cdf0e10cSrcweir                             if ( nIndex >= 0 )
599cdf0e10cSrcweir                                 aLocation = aLocation.copy( 0, nIndex );
600cdf0e10cSrcweir 
601cdf0e10cSrcweir                             // adding .mini
602cdf0e10cSrcweir                             aLocation = aLocation.concat( OUString::createFromAscii( ".mini" ) );
603cdf0e10cSrcweir                             aFileOpenDialog.setDefaultName( aLocation );
604cdf0e10cSrcweir                         }
605cdf0e10cSrcweir                     }
606cdf0e10cSrcweir                 }
607cdf0e10cSrcweir                 sal_Bool bDialogExecuted = aFileOpenDialog.execute() == dialogs::ExecutableDialogResults::OK;
608cdf0e10cSrcweir                 if ( bDialogExecuted )
609cdf0e10cSrcweir                 {
610cdf0e10cSrcweir                     aSaveAsURL = aFileOpenDialog.getURL();
611*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.SetConfigProperty( TK_SaveAsURL, Any( aSaveAsURL ) );
612*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.SetConfigProperty( TK_FilterName, Any( aFileOpenDialog.getFilterName() ) );
613cdf0e10cSrcweir                 }
614cdf0e10cSrcweir                 if ( !aSaveAsURL.getLength() )
615cdf0e10cSrcweir                 {
616cdf0e10cSrcweir                     // something goes wrong...
617cdf0e10cSrcweir                     bSuccessfullyExecuted = sal_False;
618cdf0e10cSrcweir                 }
619cdf0e10cSrcweir 
620cdf0e10cSrcweir                 // waiting for 500ms
621*880c69c6SAriel Constenla-Haile                 if ( mrOptimizerDialog.mxReschedule.is() )
622cdf0e10cSrcweir                 {
623*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.mxReschedule->reschedule();
624cdf0e10cSrcweir                     for ( sal_uInt32 i = osl_getGlobalTimer(); ( i + 500 ) > ( osl_getGlobalTimer() ); )
625*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.mxReschedule->reschedule();
626cdf0e10cSrcweir                 }
627cdf0e10cSrcweir             }
628cdf0e10cSrcweir             if ( bSuccessfullyExecuted )
629cdf0e10cSrcweir             {   // now check if we have to store a session template
630cdf0e10cSrcweir                 nInt16 = 0;
631cdf0e10cSrcweir                 OUString aSettingsName;
632*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
633*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.getControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ) ) >>= aSettingsName;
634cdf0e10cSrcweir                 if ( nInt16 && aSettingsName.getLength() )
635cdf0e10cSrcweir                 {
636*880c69c6SAriel Constenla-Haile                     std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( aSettingsName ) );
637*880c69c6SAriel Constenla-Haile                     std::vector< OptimizerSettings >& rSettings( mrOptimizerDialog.GetOptimizerSettings() );
638cdf0e10cSrcweir                     OptimizerSettings aNewSettings( rSettings[ 0 ] );
639cdf0e10cSrcweir                     aNewSettings.maName = aSettingsName;
640cdf0e10cSrcweir                     if ( aIter == rSettings.end() )
641cdf0e10cSrcweir                         rSettings.push_back( aNewSettings );
642cdf0e10cSrcweir                     else
643cdf0e10cSrcweir                         *aIter = aNewSettings;
644cdf0e10cSrcweir                 }
645cdf0e10cSrcweir             }
646cdf0e10cSrcweir             if ( bSuccessfullyExecuted )
647cdf0e10cSrcweir             {
648cdf0e10cSrcweir                 Sequence< Any > aArgs( 1 );
649*880c69c6SAriel Constenla-Haile                 aArgs[ 0 ] <<= mrOptimizerDialog.GetFrame();
650cdf0e10cSrcweir 
651*880c69c6SAriel Constenla-Haile                 Reference < XDispatch > xDispatch( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithArgumentsAndContext(
652*880c69c6SAriel Constenla-Haile                     OUString::createFromAscii( "com.sun.star.comp.PPPOptimizer" ), aArgs, mrOptimizerDialog.GetComponentContext() ), UNO_QUERY );
653cdf0e10cSrcweir 
654cdf0e10cSrcweir                 URL aURL;
655cdf0e10cSrcweir                 aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.comp.PPPOptimizer:" ) );
656cdf0e10cSrcweir                 aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "optimize" ) );
657cdf0e10cSrcweir 
658cdf0e10cSrcweir                 Sequence< PropertyValue > lArguments( 3 );
659cdf0e10cSrcweir                 lArguments[ 0 ].Name = TKGet( TK_Settings );
660*880c69c6SAriel Constenla-Haile                 lArguments[ 0 ].Value <<= mrOptimizerDialog.GetConfigurationSequence();
661*880c69c6SAriel Constenla-Haile                 lArguments[ 1 ].Name = TKGet( TK_StatusDispatcher );
662*880c69c6SAriel Constenla-Haile                 lArguments[ 1 ].Value <<= mrOptimizerDialog.GetStatusDispatcher();
663*880c69c6SAriel Constenla-Haile                 lArguments[ 2 ].Name = TKGet( TK_InformationDialog );
664*880c69c6SAriel Constenla-Haile                 lArguments[ 2 ].Value <<= mrOptimizerDialog.GetFrame();
665cdf0e10cSrcweir 
666cdf0e10cSrcweir                 if( xDispatch.is() )
667cdf0e10cSrcweir                     xDispatch->dispatch( aURL, lArguments );
668cdf0e10cSrcweir 
669*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.endExecute( bSuccessfullyExecuted );
670cdf0e10cSrcweir             }
671cdf0e10cSrcweir             else
672cdf0e10cSrcweir             {
673*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_True ) );
674*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_True ) );
675*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
676*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_True ) );
677*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_True ) );
678*880c69c6SAriel Constenla-Haile                 mrOptimizerDialog.EnablePage( ITEM_ID_SUMMARY );
679cdf0e10cSrcweir             }
680cdf0e10cSrcweir         }
681cdf0e10cSrcweir         break;
682*880c69c6SAriel Constenla-Haile         case TK_btnNavCancel :  mrOptimizerDialog.endExecute( sal_False ); break;
683cdf0e10cSrcweir         case TK_Button0Pg0 :    // delete configuration
684cdf0e10cSrcweir         {
685*880c69c6SAriel Constenla-Haile             OUString aSelectedItem( mrOptimizerDialog.GetSelectedString( TK_ListBox0Pg0 ) );
686cdf0e10cSrcweir             if ( aSelectedItem.getLength() )
687cdf0e10cSrcweir             {
688*880c69c6SAriel Constenla-Haile                 std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( aSelectedItem ) );
689*880c69c6SAriel Constenla-Haile                 std::vector< OptimizerSettings >& rList( mrOptimizerDialog.GetOptimizerSettings() );
690cdf0e10cSrcweir                 if ( aIter != rList.end() )
691cdf0e10cSrcweir                 {
692cdf0e10cSrcweir                     rList.erase( aIter );
693*880c69c6SAriel Constenla-Haile                     mrOptimizerDialog.UpdateControlStates();
694cdf0e10cSrcweir                 }
695cdf0e10cSrcweir             }
696cdf0e10cSrcweir         }
697cdf0e10cSrcweir         break;
698*880c69c6SAriel Constenla-Haile         default: break;
699*880c69c6SAriel Constenla-Haile     }
700*880c69c6SAriel Constenla-Haile }
701*880c69c6SAriel Constenla-Haile void ActionListener::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
702*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
703cdf0e10cSrcweir {
704cdf0e10cSrcweir }
705cdf0e10cSrcweir 
706cdf0e10cSrcweir // -----------------------------------------------------------------------------
707cdf0e10cSrcweir 
708*880c69c6SAriel Constenla-Haile void ActionListenerListBox0Pg0::actionPerformed( const ActionEvent& rEvent )
709cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
710cdf0e10cSrcweir {
711*880c69c6SAriel Constenla-Haile     if ( rEvent.ActionCommand.getLength() )
712e4a7f284SAriel Constenla-Haile     {
713*880c69c6SAriel Constenla-Haile         std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( rEvent.ActionCommand ) );
714*880c69c6SAriel Constenla-Haile         std::vector< OptimizerSettings >& rList( mrOptimizerDialog.GetOptimizerSettings() );
715*880c69c6SAriel Constenla-Haile         if ( aIter != rList.end() )
716*880c69c6SAriel Constenla-Haile             rList[ 0 ] = *aIter;
717*880c69c6SAriel Constenla-Haile     }
718*880c69c6SAriel Constenla-Haile     mrOptimizerDialog.UpdateControlStates();
719*880c69c6SAriel Constenla-Haile }
720*880c69c6SAriel Constenla-Haile void ActionListenerListBox0Pg0::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
721*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
722*880c69c6SAriel Constenla-Haile {
723cdf0e10cSrcweir }
724cdf0e10cSrcweir 
725*880c69c6SAriel Constenla-Haile // -----------------------------------------------------------------------------
726*880c69c6SAriel Constenla-Haile 
727*880c69c6SAriel Constenla-Haile void TextListenerFormattedField0Pg1::textChanged( const TextEvent& /* rEvent */ )
728*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
729*880c69c6SAriel Constenla-Haile {
730*880c69c6SAriel Constenla-Haile     double fDouble = 0;
731*880c69c6SAriel Constenla-Haile     Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
732*880c69c6SAriel Constenla-Haile     if ( aAny >>= fDouble )
733*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
734*880c69c6SAriel Constenla-Haile }
735*880c69c6SAriel Constenla-Haile void TextListenerFormattedField0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
736*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
737*880c69c6SAriel Constenla-Haile {
738*880c69c6SAriel Constenla-Haile }
739*880c69c6SAriel Constenla-Haile 
740*880c69c6SAriel Constenla-Haile // -----------------------------------------------------------------------------
741*880c69c6SAriel Constenla-Haile 
742*880c69c6SAriel Constenla-Haile void TextListenerComboBox0Pg1::textChanged( const TextEvent& /* rEvent */ )
743*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
744cdf0e10cSrcweir {
745cdf0e10cSrcweir     rtl::OUString aString;
746*880c69c6SAriel Constenla-Haile     Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ) );
747cdf0e10cSrcweir     if ( aAny >>= aString )
748cdf0e10cSrcweir     {
749cdf0e10cSrcweir         sal_Int32 nI0, nI1, nI2, nI3, nI4;
750cdf0e10cSrcweir         nI0 = nI1 = nI2 = nI3 = nI4 = 0;
751cdf0e10cSrcweir 
752*880c69c6SAriel Constenla-Haile         if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 ) == aString )
753*880c69c6SAriel Constenla-Haile             aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI4 );
754*880c69c6SAriel Constenla-Haile         else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 ) == aString )
755*880c69c6SAriel Constenla-Haile             aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI4 );
756*880c69c6SAriel Constenla-Haile         else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 ) == aString )
757*880c69c6SAriel Constenla-Haile             aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI4 );
758*880c69c6SAriel Constenla-Haile         else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 ) == aString )
759*880c69c6SAriel Constenla-Haile             aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI4 );
760cdf0e10cSrcweir 
761*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.SetConfigProperty( TK_ImageResolution, Any( aString.toInt32() ) );
762cdf0e10cSrcweir     }
763cdf0e10cSrcweir }
764*880c69c6SAriel Constenla-Haile void TextListenerComboBox0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
765*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
766*880c69c6SAriel Constenla-Haile {
767cdf0e10cSrcweir }
768cdf0e10cSrcweir 
769cdf0e10cSrcweir // -----------------------------------------------------------------------------
770cdf0e10cSrcweir 
771*880c69c6SAriel Constenla-Haile void SpinListenerFormattedField0Pg1::up( const SpinEvent& /* rEvent */ )
772cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
773cdf0e10cSrcweir {
774cdf0e10cSrcweir     double fDouble;
775*880c69c6SAriel Constenla-Haile     Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
776cdf0e10cSrcweir     if ( aAny >>= fDouble )
777cdf0e10cSrcweir     {
778cdf0e10cSrcweir         fDouble += 9;
779cdf0e10cSrcweir         if ( fDouble > 100 )
780cdf0e10cSrcweir             fDouble = 100;
781*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
782*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
783cdf0e10cSrcweir     }
784cdf0e10cSrcweir }
785*880c69c6SAriel Constenla-Haile void SpinListenerFormattedField0Pg1::down( const SpinEvent& /* rEvent */ )
786cdf0e10cSrcweir     throw ( com::sun::star::uno::RuntimeException )
787cdf0e10cSrcweir {
788cdf0e10cSrcweir     double fDouble;
789*880c69c6SAriel Constenla-Haile     Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
790cdf0e10cSrcweir     if ( aAny >>= fDouble )
791cdf0e10cSrcweir     {
792cdf0e10cSrcweir         fDouble -= 9;
793cdf0e10cSrcweir         if ( fDouble < 0 )
794cdf0e10cSrcweir             fDouble = 0;
795*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
796*880c69c6SAriel Constenla-Haile         mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
797cdf0e10cSrcweir     }
798cdf0e10cSrcweir }
799*880c69c6SAriel Constenla-Haile void SpinListenerFormattedField0Pg1::first( const SpinEvent& /* rEvent */ )
800e4a7f284SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
801e4a7f284SAriel Constenla-Haile {
802*880c69c6SAriel Constenla-Haile     mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 0 ) ) );
803*880c69c6SAriel Constenla-Haile     mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)0 ) );
804e4a7f284SAriel Constenla-Haile }
805*880c69c6SAriel Constenla-Haile void SpinListenerFormattedField0Pg1::last( const SpinEvent& /* rEvent */ )
806e4a7f284SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
807cdf0e10cSrcweir {
808*880c69c6SAriel Constenla-Haile     mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 100 ) ) );
809*880c69c6SAriel Constenla-Haile     mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)100 ) );
810*880c69c6SAriel Constenla-Haile }
811*880c69c6SAriel Constenla-Haile void SpinListenerFormattedField0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
812*880c69c6SAriel Constenla-Haile     throw ( com::sun::star::uno::RuntimeException )
813*880c69c6SAriel Constenla-Haile {
814cdf0e10cSrcweir }
815e4a7f284SAriel Constenla-Haile 
816*880c69c6SAriel Constenla-Haile // -----------------------------------------------------------------------------
817*880c69c6SAriel Constenla-Haile 
818*880c69c6SAriel Constenla-Haile void HelpCloseListener::addCloseListener( const Reference < XCloseListener >& ) throw( RuntimeException )
819*880c69c6SAriel Constenla-Haile {
820*880c69c6SAriel Constenla-Haile }
821*880c69c6SAriel Constenla-Haile void HelpCloseListener::removeCloseListener( const Reference < XCloseListener >& ) throw( RuntimeException )
822*880c69c6SAriel Constenla-Haile {
823*880c69c6SAriel Constenla-Haile }
824*880c69c6SAriel Constenla-Haile void HelpCloseListener::queryClosing( const EventObject&, sal_Bool /* bDeliverOwnership */ )
825*880c69c6SAriel Constenla-Haile         throw ( RuntimeException, CloseVetoException )
826*880c69c6SAriel Constenla-Haile {
827*880c69c6SAriel Constenla-Haile }
828*880c69c6SAriel Constenla-Haile void HelpCloseListener::notifyClosing( const EventObject& )
829*880c69c6SAriel Constenla-Haile         throw ( RuntimeException )
830*880c69c6SAriel Constenla-Haile {
831*880c69c6SAriel Constenla-Haile }
832*880c69c6SAriel Constenla-Haile void HelpCloseListener::disposing( const EventObject& ) throw ( RuntimeException )
833*880c69c6SAriel Constenla-Haile {
834*880c69c6SAriel Constenla-Haile     mrXFrame = NULL;
835*880c69c6SAriel Constenla-Haile }
836