xref: /AOO41X/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