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