1c142477cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3c142477cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4c142477cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5c142477cSAndrew Rist  * distributed with this work for additional information
6c142477cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7c142477cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8c142477cSAndrew Rist  * "License"); you may not use this file except in compliance
9c142477cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10c142477cSAndrew Rist  *
11c142477cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12c142477cSAndrew Rist  *
13c142477cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14c142477cSAndrew Rist  * software distributed under the License is distributed on an
15c142477cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16c142477cSAndrew Rist  * KIND, either express or implied.  See the License for the
17c142477cSAndrew Rist  * specific language governing permissions and limitations
18c142477cSAndrew Rist  * under the License.
19c142477cSAndrew Rist  *
20c142477cSAndrew Rist  *************************************************************/
21c142477cSAndrew Rist 
22c142477cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sdext.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "optimizerdialog.hxx"
28cdf0e10cSrcweir #include "fileopendialog.hxx"
29cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
30cdf0e10cSrcweir #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
31cdf0e10cSrcweir #include <com/sun/star/io/XInputStream.hpp>
32cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_XCloseBroadcaster_HPP_
33cdf0e10cSrcweir #include <com/sun/star/util/XCloseBroadcaster.hpp>
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #include <com/sun/star/frame/XComponentLoader.hpp>
36cdf0e10cSrcweir #include <com/sun/star/frame/XLayoutManager.hpp>
37597a4c59SAriel Constenla-Haile #include <com/sun/star/graphic/XGraphicProvider.hpp>
38cdf0e10cSrcweir #include <osl/time.h>
39cdf0e10cSrcweir 
40597a4c59SAriel Constenla-Haile #include "minimizer.hrc"
41597a4c59SAriel Constenla-Haile #include "helpid.hrc"
42597a4c59SAriel Constenla-Haile 
43597a4c59SAriel Constenla-Haile #define URL_GRAPHIC_REPO        "private:graphicrepository"
44597a4c59SAriel Constenla-Haile #define IMAGE_ROADMAP           URL_GRAPHIC_REPO "/minimizer/minimizepresi_80.png"
45597a4c59SAriel Constenla-Haile #define IMAGE_ROADMAP_HC        URL_GRAPHIC_REPO "/minimizer/minimizepresi_80.png"
46597a4c59SAriel Constenla-Haile 
47cdf0e10cSrcweir // -------------------
48cdf0e10cSrcweir // - OPTIMIZERDIALOG -
49cdf0e10cSrcweir // -------------------
50cdf0e10cSrcweir 
51cdf0e10cSrcweir using namespace ::com::sun::star::io;
52597a4c59SAriel Constenla-Haile using namespace ::com::sun::star::graphic;
53cdf0e10cSrcweir using namespace ::com::sun::star::ui;
54cdf0e10cSrcweir using namespace ::com::sun::star::awt;
55cdf0e10cSrcweir using namespace ::com::sun::star::ucb;
56cdf0e10cSrcweir using namespace ::com::sun::star::uno;
57cdf0e10cSrcweir using namespace ::com::sun::star::util;
58cdf0e10cSrcweir using namespace ::com::sun::star::lang;
59cdf0e10cSrcweir using namespace ::com::sun::star::frame;
60cdf0e10cSrcweir using namespace ::com::sun::star::beans;
61cdf0e10cSrcweir using namespace ::com::sun::star::script;
62cdf0e10cSrcweir using namespace ::com::sun::star::container;
63cdf0e10cSrcweir 
64597a4c59SAriel Constenla-Haile using ::rtl::OUString;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir // -----------------------------------------------------------------------------
67cdf0e10cSrcweir 
InitDialog()68cdf0e10cSrcweir void OptimizerDialog::InitDialog()
69cdf0e10cSrcweir {
70cdf0e10cSrcweir    // setting the dialog properties
71cdf0e10cSrcweir 	OUString pNames[] = {
72cdf0e10cSrcweir 		TKGet( TK_Closeable ),
73cdf0e10cSrcweir 		TKGet( TK_Height ),
74597a4c59SAriel Constenla-Haile         TKGet( TK_HelpURL ),
75cdf0e10cSrcweir 		TKGet( TK_Moveable ),
76cdf0e10cSrcweir 		TKGet( TK_PositionX ),
77cdf0e10cSrcweir 		TKGet( TK_PositionY ),
78cdf0e10cSrcweir 		TKGet( TK_Title ),
79cdf0e10cSrcweir 		TKGet( TK_Width ) };
80cdf0e10cSrcweir 
81cdf0e10cSrcweir 	Any	pValues[] = {
82cdf0e10cSrcweir 		Any( sal_True ),
83cdf0e10cSrcweir 		Any( sal_Int32( DIALOG_HEIGHT ) ),
84597a4c59SAriel Constenla-Haile         Any( HID( HID_SDEXT_MINIMIZER_WIZ_DLG ) ),
85cdf0e10cSrcweir 		Any( sal_True ),
86cdf0e10cSrcweir 		Any( sal_Int32( 200 ) ),
87cdf0e10cSrcweir 		Any( sal_Int32( 52 ) ),
88597a4c59SAriel Constenla-Haile 		Any( getString( STR_PRESENTATION_MINIMIZER ) ),
89cdf0e10cSrcweir 		Any( sal_Int32( OD_DIALOG_WIDTH ) ) };
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 	sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
92cdf0e10cSrcweir 
93cdf0e10cSrcweir 	Sequence< rtl::OUString >	aNames( pNames, nCount );
94cdf0e10cSrcweir 	Sequence< Any >				aValues( pValues, nCount );
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 	mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues );
97cdf0e10cSrcweir }
98cdf0e10cSrcweir 
99cdf0e10cSrcweir // -----------------------------------------------------------------------------
100cdf0e10cSrcweir 
InitRoadmap()101cdf0e10cSrcweir void OptimizerDialog::InitRoadmap()
102cdf0e10cSrcweir {
103cdf0e10cSrcweir 	try
104cdf0e10cSrcweir 	{
105cdf0e10cSrcweir 		OUString pNames[] = {
106cdf0e10cSrcweir 			TKGet( TK_Height ),
107cdf0e10cSrcweir 			TKGet( TK_PositionX ),
108cdf0e10cSrcweir 			TKGet( TK_PositionY ),
109cdf0e10cSrcweir 			TKGet( TK_Step ),
110cdf0e10cSrcweir 			TKGet( TK_TabIndex ),
111cdf0e10cSrcweir 			TKGet( TK_Width ) };
112cdf0e10cSrcweir 
113cdf0e10cSrcweir 		Any	pValues[] = {
114cdf0e10cSrcweir 			Any( sal_Int32( DIALOG_HEIGHT - 26 ) ),
115cdf0e10cSrcweir 			Any( sal_Int32( 0 ) ),
116cdf0e10cSrcweir 			Any( sal_Int32( 0 ) ),
117cdf0e10cSrcweir 			Any( sal_Int32( 0 ) ),
118cdf0e10cSrcweir 			Any( mnTabIndex++ ),
119cdf0e10cSrcweir 			Any( sal_Int32( 85 ) ) };
120cdf0e10cSrcweir 
121cdf0e10cSrcweir 		sal_Int32 nCount = sizeof( pNames ) / sizeof( OUString );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 		Sequence< rtl::OUString >	aNames( pNames, nCount );
124cdf0e10cSrcweir 		Sequence< Any >				aValues( pValues, nCount );
125cdf0e10cSrcweir 
126cdf0e10cSrcweir         mxRoadmapControlModel = insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRoadmapModel" ) ),
127cdf0e10cSrcweir 															  TKGet( TK_rdmNavi ), aNames, aValues	);
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 		Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW );
130cdf0e10cSrcweir         xPropertySet->setPropertyValue( TKGet( TK_Name ), Any( TKGet( TK_rdmNavi ) ) );
131cdf0e10cSrcweir 		mxRoadmapControl = mxDialogControlContainer->getControl( TKGet( TK_rdmNavi ) );
132cdf0e10cSrcweir 		InsertRoadmapItem( 0, sal_True, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION );
133cdf0e10cSrcweir 		InsertRoadmapItem( 1, sal_True, getString( STR_SLIDES ), ITEM_ID_SLIDES );
134cdf0e10cSrcweir 		InsertRoadmapItem( 2, sal_True, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION );
135cdf0e10cSrcweir 		InsertRoadmapItem( 3, sal_True, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION );
136cdf0e10cSrcweir 		InsertRoadmapItem( 4, sal_True, getString( STR_SUMMARY ), ITEM_ID_SUMMARY );
137cdf0e10cSrcweir 
138597a4c59SAriel Constenla-Haile 		rtl::OUString sBitmap(
139597a4c59SAriel Constenla-Haile             isHighContrast() ?
140597a4c59SAriel Constenla-Haile             rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP_HC ) ) :
141597a4c59SAriel Constenla-Haile             rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMAGE_ROADMAP ) ) );
142cdf0e10cSrcweir 
143597a4c59SAriel Constenla-Haile 		xPropertySet->setPropertyValue( TKGet( TK_ImageURL ), Any( sBitmap ) );
144cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_Activated ), Any( (sal_Bool)sal_True ) );
145cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_Complete ), Any( (sal_Bool)sal_True ) );
146cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_CurrentItemID ), Any( (sal_Int16)ITEM_ID_INTRODUCTION ) );
147cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_Text ), Any( getString( STR_STEPS ) ) );
148cdf0e10cSrcweir 	}
149cdf0e10cSrcweir 	catch( Exception& )
150cdf0e10cSrcweir 	{
151cdf0e10cSrcweir     }
152cdf0e10cSrcweir }
153cdf0e10cSrcweir 
154cdf0e10cSrcweir // -----------------------------------------------------------------------------
155cdf0e10cSrcweir 
InsertRoadmapItem(const sal_Int32 nIndex,const sal_Bool bEnabled,const rtl::OUString & rLabel,const sal_Int32 nItemID)156cdf0e10cSrcweir void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID )
157cdf0e10cSrcweir {
158cdf0e10cSrcweir 	try
159cdf0e10cSrcweir 	{
160cdf0e10cSrcweir 		Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
161cdf0e10cSrcweir 		Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
162cdf0e10cSrcweir 		Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_QUERY_THROW );
163cdf0e10cSrcweir 		Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW );
164cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_Label ), Any( rLabel ) );
165cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_Enabled ), Any( bEnabled ) );
166cdf0e10cSrcweir 		xPropertySet->setPropertyValue( TKGet( TK_ID ), Any( nItemID ) );
167cdf0e10cSrcweir 		aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) );
168cdf0e10cSrcweir 	}
169cdf0e10cSrcweir 	catch( Exception& )
170cdf0e10cSrcweir 	{
171cdf0e10cSrcweir 
172cdf0e10cSrcweir 	}
173cdf0e10cSrcweir }
174cdf0e10cSrcweir 
175cdf0e10cSrcweir // -----------------------------------------------------------------------------
176cdf0e10cSrcweir 
UpdateConfiguration()177cdf0e10cSrcweir void OptimizerDialog::UpdateConfiguration()
178cdf0e10cSrcweir {
179cdf0e10cSrcweir 	sal_Int16	nInt16 = 0;
180cdf0e10cSrcweir 	OUString	aString;
181cdf0e10cSrcweir 	Any			aAny;
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 	Sequence< sal_Int16 > aSelectedItems;
184cdf0e10cSrcweir 	Sequence< OUString > aStringItemList;
185cdf0e10cSrcweir 
186cdf0e10cSrcweir 	// page0
187cdf0e10cSrcweir 	aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ) );
188cdf0e10cSrcweir 	if ( aAny >>= aSelectedItems )
189cdf0e10cSrcweir 	{
190cdf0e10cSrcweir 		if ( aSelectedItems.getLength() )
191cdf0e10cSrcweir 		{
192cdf0e10cSrcweir 			sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
193cdf0e10cSrcweir 			aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ) );
194cdf0e10cSrcweir 			if ( aAny >>= aStringItemList )
195cdf0e10cSrcweir 			{
196cdf0e10cSrcweir 				if ( aStringItemList.getLength() > nSelectedItem )
197cdf0e10cSrcweir 					SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) );
198cdf0e10cSrcweir 			}
199cdf0e10cSrcweir 		}
200cdf0e10cSrcweir 	}
201cdf0e10cSrcweir 
202cdf0e10cSrcweir 	aAny = getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) );
203cdf0e10cSrcweir 	if ( aAny >>= nInt16 )
204cdf0e10cSrcweir 	{
205cdf0e10cSrcweir 		if ( nInt16 )
206cdf0e10cSrcweir 		{
207cdf0e10cSrcweir 			aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) );
208cdf0e10cSrcweir 			if ( aAny >>= aSelectedItems )
209cdf0e10cSrcweir 			{
210cdf0e10cSrcweir 				if ( aSelectedItems.getLength() )
211cdf0e10cSrcweir 				{
212cdf0e10cSrcweir 					sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
213cdf0e10cSrcweir 					aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) );
214cdf0e10cSrcweir 					if ( aAny >>= aStringItemList )
215cdf0e10cSrcweir 					{
216cdf0e10cSrcweir 						if ( aStringItemList.getLength() > nSelectedItem )
217cdf0e10cSrcweir 							SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) );
218cdf0e10cSrcweir 					}
219cdf0e10cSrcweir 				}
220cdf0e10cSrcweir 			}
221cdf0e10cSrcweir 		}
222cdf0e10cSrcweir 	}
223cdf0e10cSrcweir }
224cdf0e10cSrcweir 
225cdf0e10cSrcweir // -----------------------------------------------------------------------------
226cdf0e10cSrcweir 
OptimizerDialog(const Reference<XComponentContext> & rxContext,const Reference<XFrame> & rxFrame,const Reference<XWindowPeer> & rxParent)227597a4c59SAriel Constenla-Haile OptimizerDialog::OptimizerDialog(
228597a4c59SAriel Constenla-Haile     const Reference< XComponentContext > &rxContext,
229597a4c59SAriel Constenla-Haile     const Reference< XFrame > &rxFrame,
230597a4c59SAriel Constenla-Haile     const Reference< XWindowPeer >& rxParent )
231597a4c59SAriel Constenla-Haile     : UnoDialog( rxContext, rxParent )
232597a4c59SAriel Constenla-Haile 	, ConfigurationAccess( rxContext, NULL )
233597a4c59SAriel Constenla-Haile     , mxFrame( rxFrame )
234597a4c59SAriel Constenla-Haile     , mnCurrentStep( 0 )
235597a4c59SAriel Constenla-Haile     , mnTabIndex( 0 )
236cdf0e10cSrcweir {
237597a4c59SAriel Constenla-Haile     OSL_TRACE("OptimizerDialog::OptimizerDialog");
238597a4c59SAriel Constenla-Haile     OSL_ENSURE( mxFrame.is(), "OptimizerDialog: no XFrame!" );
239597a4c59SAriel Constenla-Haile     Reference< XController > xController( mxFrame->getController() );
240597a4c59SAriel Constenla-Haile     mxModel = xController->getModel();
241597a4c59SAriel Constenla-Haile 	Reference< XStorable> xStorable( mxModel, UNO_QUERY_THROW );
242cdf0e10cSrcweir 	mbIsReadonly = xStorable->isReadonly();
243cdf0e10cSrcweir 
244cdf0e10cSrcweir 	InitDialog();
245cdf0e10cSrcweir 	InitRoadmap();
246cdf0e10cSrcweir 	InitNavigationBar();
247cdf0e10cSrcweir 	InitPage0();
248cdf0e10cSrcweir 	InitPage1();
249cdf0e10cSrcweir 	InitPage2();
250cdf0e10cSrcweir 	InitPage3();
251cdf0e10cSrcweir 	InitPage4();
252cdf0e10cSrcweir 	ActivatePage( 0 );
253cdf0e10cSrcweir 
254cdf0e10cSrcweir 	OptimizationStats aStats;
255597a4c59SAriel Constenla-Haile 	aStats.InitializeStatusValuesFromDocument( mxModel );
256cdf0e10cSrcweir 	Sequence< PropertyValue > aStatusSequence( aStats.GetStatusSequence() );
257cdf0e10cSrcweir 	UpdateStatus( aStatusSequence );
258597a4c59SAriel Constenla-Haile 
259597a4c59SAriel Constenla-Haile     centerDialog();
260cdf0e10cSrcweir }
261cdf0e10cSrcweir 
262cdf0e10cSrcweir // -----------------------------------------------------------------------------
263cdf0e10cSrcweir 
~OptimizerDialog()264cdf0e10cSrcweir OptimizerDialog::~OptimizerDialog()
265cdf0e10cSrcweir {
266597a4c59SAriel Constenla-Haile     OSL_TRACE("OptimizerDialog::~OptimizerDialog");
267cdf0e10cSrcweir 	// not saving configuration if the dialog has been finished via cancel or close window
268cdf0e10cSrcweir 	if ( mbStatus )
269cdf0e10cSrcweir 		SaveConfiguration();
270597a4c59SAriel Constenla-Haile 
271597a4c59SAriel Constenla-Haile     Reference< XComponent > xComponent( mxDialog, UNO_QUERY );
272597a4c59SAriel Constenla-Haile     if ( xComponent.is() )
273597a4c59SAriel Constenla-Haile     {
274597a4c59SAriel Constenla-Haile         OSL_TRACE("OptimizerDialog::~OptimizerDialog - disposing dialog!");
275597a4c59SAriel Constenla-Haile         xComponent->dispose();
276597a4c59SAriel Constenla-Haile     }
277cdf0e10cSrcweir }
278cdf0e10cSrcweir 
279597a4c59SAriel Constenla-Haile 
statusChanged(const::com::sun::star::frame::FeatureStateEvent & aState)280597a4c59SAriel Constenla-Haile void SAL_CALL OptimizerDialog::statusChanged(
281597a4c59SAriel Constenla-Haile     const ::com::sun::star::frame::FeatureStateEvent& aState )
282597a4c59SAriel Constenla-Haile throw (::com::sun::star::uno::RuntimeException)
283597a4c59SAriel Constenla-Haile {
284597a4c59SAriel Constenla-Haile     Sequence< PropertyValue > aArguments;
285597a4c59SAriel Constenla-Haile     if ( ( aState.State >>= aArguments ) && aArguments.getLength() )
286597a4c59SAriel Constenla-Haile         UpdateStatus( aArguments );
287597a4c59SAriel Constenla-Haile }
288597a4c59SAriel Constenla-Haile 
disposing(const::com::sun::star::lang::EventObject &)289597a4c59SAriel Constenla-Haile void SAL_CALL OptimizerDialog::disposing(
290597a4c59SAriel Constenla-Haile     const ::com::sun::star::lang::EventObject& /*aSource*/ )
291597a4c59SAriel Constenla-Haile throw (::com::sun::star::uno::RuntimeException)
292597a4c59SAriel Constenla-Haile {}
293597a4c59SAriel Constenla-Haile 
294cdf0e10cSrcweir // -----------------------------------------------------------------------------
295cdf0e10cSrcweir 
execute()296cdf0e10cSrcweir sal_Bool OptimizerDialog::execute()
297cdf0e10cSrcweir {
298cdf0e10cSrcweir 	Reference< XItemEventBroadcaster > maRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW );
299597a4c59SAriel Constenla-Haile 	maRoadmapBroadcaster->addItemListener( this );
300cdf0e10cSrcweir 	UnoDialog::execute();
301cdf0e10cSrcweir 	UpdateConfiguration();			// taking actual control settings for the configuration
302597a4c59SAriel Constenla-Haile 	maRoadmapBroadcaster->removeItemListener( this );
303cdf0e10cSrcweir 	return mbStatus;
304cdf0e10cSrcweir }
305cdf0e10cSrcweir 
306cdf0e10cSrcweir // -----------------------------------------------------------------------------
307cdf0e10cSrcweir 
SwitchPage(sal_Int16 nNewStep)308cdf0e10cSrcweir void OptimizerDialog::SwitchPage( sal_Int16 nNewStep )
309cdf0e10cSrcweir {
310cdf0e10cSrcweir 	if ( ( nNewStep != mnCurrentStep ) && ( ( nNewStep <= MAX_STEP ) || ( nNewStep >= 0 ) ) )
311cdf0e10cSrcweir 	{
312cdf0e10cSrcweir 		sal_Int16 nOldStep = mnCurrentStep;
313cdf0e10cSrcweir 		if ( nNewStep == 0 )
314cdf0e10cSrcweir 			disableControl( TKGet( TK_btnNavBack ) );
315cdf0e10cSrcweir 		else if ( nOldStep == 0 )
316cdf0e10cSrcweir 			enableControl( TKGet( TK_btnNavBack ) );
317cdf0e10cSrcweir 
318cdf0e10cSrcweir 		if ( nNewStep == MAX_STEP )
319cdf0e10cSrcweir 			disableControl( TKGet( TK_btnNavNext ) );
320cdf0e10cSrcweir 		else if ( nOldStep == MAX_STEP )
321cdf0e10cSrcweir 			enableControl( TKGet( TK_btnNavNext ) );
322cdf0e10cSrcweir 
323cdf0e10cSrcweir 		setControlProperty( TKGet( TK_rdmNavi ), TKGet( TK_CurrentItemID ), Any( nNewStep ) );
324cdf0e10cSrcweir 
325cdf0e10cSrcweir 		DeactivatePage( nOldStep );
326cdf0e10cSrcweir 		UpdateControlStates( nNewStep );
327cdf0e10cSrcweir 
328cdf0e10cSrcweir 		ActivatePage( nNewStep );
329cdf0e10cSrcweir 		mnCurrentStep = nNewStep;
330cdf0e10cSrcweir 	}
331cdf0e10cSrcweir }
332cdf0e10cSrcweir 
UpdateControlStates(sal_Int16 nPage)333cdf0e10cSrcweir void OptimizerDialog::UpdateControlStates( sal_Int16 nPage )
334cdf0e10cSrcweir {
335cdf0e10cSrcweir 	switch( nPage )
336cdf0e10cSrcweir 	{
337cdf0e10cSrcweir 		case 0 : UpdateControlStatesPage0(); break;
338cdf0e10cSrcweir 		case 1 : UpdateControlStatesPage1(); break;
339cdf0e10cSrcweir 		case 2 : UpdateControlStatesPage2(); break;
340cdf0e10cSrcweir 		case 3 : UpdateControlStatesPage3(); break;
341cdf0e10cSrcweir 		case 4 : UpdateControlStatesPage4(); break;
342cdf0e10cSrcweir 		default:
343cdf0e10cSrcweir 		{
344cdf0e10cSrcweir 			UpdateControlStatesPage0();
345cdf0e10cSrcweir 			UpdateControlStatesPage1();
346cdf0e10cSrcweir 			UpdateControlStatesPage2();
347cdf0e10cSrcweir 			UpdateControlStatesPage3();
348cdf0e10cSrcweir 			UpdateControlStatesPage4();
349cdf0e10cSrcweir 		}
350cdf0e10cSrcweir 	}
351cdf0e10cSrcweir }
352cdf0e10cSrcweir 
353cdf0e10cSrcweir // -----------------------------------------------------------------------------
354cdf0e10cSrcweir 
GetSelectedString(const PPPOptimizerTokenEnum eToken)355cdf0e10cSrcweir rtl::OUString OptimizerDialog::GetSelectedString( const PPPOptimizerTokenEnum eToken )
356cdf0e10cSrcweir {
357cdf0e10cSrcweir 	OUString aSelectedItem;
358cdf0e10cSrcweir 	Sequence< sal_Int16 > sSelectedItems;
359cdf0e10cSrcweir 	Sequence< OUString >  sItemList;
360cdf0e10cSrcweir 
361cdf0e10cSrcweir 	if ( ( getControlProperty( TKGet( eToken ), TKGet( TK_SelectedItems ) ) >>= sSelectedItems ) &&
362cdf0e10cSrcweir 			( getControlProperty( TKGet( eToken ), TKGet( TK_StringItemList ) ) >>= sItemList ) )
363cdf0e10cSrcweir 	{
364cdf0e10cSrcweir 		if ( sSelectedItems.getLength() == 1 )
365cdf0e10cSrcweir 		{
366cdf0e10cSrcweir 			sal_Int16 nSelectedItem = sSelectedItems[ 0 ];
367cdf0e10cSrcweir 			if ( nSelectedItem < sItemList.getLength() )
368cdf0e10cSrcweir 				aSelectedItem = sItemList[ nSelectedItem ];
369cdf0e10cSrcweir 		}
370cdf0e10cSrcweir 	}
371cdf0e10cSrcweir 	return aSelectedItem;
372cdf0e10cSrcweir }
373cdf0e10cSrcweir 
374cdf0e10cSrcweir // -----------------------------------------------------------------------------
375cdf0e10cSrcweir 
UpdateStatus(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rStatus)376cdf0e10cSrcweir void OptimizerDialog::UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus )
377cdf0e10cSrcweir {
378cdf0e10cSrcweir 	if ( mxReschedule.is() )
379cdf0e10cSrcweir 	{
380cdf0e10cSrcweir 		maStats.InitializeStatusValues( rStatus );
381cdf0e10cSrcweir 		const Any* pVal( maStats.GetStatusValue( TK_Status ) );
382cdf0e10cSrcweir 		if ( pVal )
383cdf0e10cSrcweir 		{
384cdf0e10cSrcweir 			rtl::OUString sStatus;
385cdf0e10cSrcweir 			if ( *pVal >>= sStatus )
386cdf0e10cSrcweir 			{
387cdf0e10cSrcweir 				setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
388597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Label ), Any( sStatus ) );
389cdf0e10cSrcweir 			}
390cdf0e10cSrcweir 		}
391cdf0e10cSrcweir 		pVal = maStats.GetStatusValue( TK_Progress );
392cdf0e10cSrcweir 		if ( pVal )
393cdf0e10cSrcweir 		{
394cdf0e10cSrcweir 			sal_Int32 nProgress = 0;
395cdf0e10cSrcweir 			if ( *pVal >>= nProgress )
396cdf0e10cSrcweir 				setControlProperty( TKGet( TK_Progress ), TKGet( TK_ProgressValue ), Any( nProgress ) );
397cdf0e10cSrcweir 		}
398cdf0e10cSrcweir 		pVal = maStats.GetStatusValue( TK_OpenNewDocument );
399cdf0e10cSrcweir 		if ( pVal )
400cdf0e10cSrcweir 			SetConfigProperty( TK_OpenNewDocument, *pVal );
401cdf0e10cSrcweir 
402cdf0e10cSrcweir 		mxReschedule->reschedule();
403cdf0e10cSrcweir 	}
404cdf0e10cSrcweir }
405cdf0e10cSrcweir 
406cdf0e10cSrcweir // -----------------------------------------------------------------------------
407cdf0e10cSrcweir 
itemStateChanged(const ItemEvent & Event)408597a4c59SAriel Constenla-Haile void OptimizerDialog::itemStateChanged( const ItemEvent& Event )
409cdf0e10cSrcweir 	throw ( RuntimeException )
410cdf0e10cSrcweir {
411cdf0e10cSrcweir 	try
412cdf0e10cSrcweir 	{
413cdf0e10cSrcweir 		sal_Int16 nState;
414cdf0e10cSrcweir 		OUString aControlName;
415cdf0e10cSrcweir 		Reference< XControl > xControl;
416cdf0e10cSrcweir 		Any aSource( Event.Source );
417cdf0e10cSrcweir 		if ( aSource >>= xControl )
418cdf0e10cSrcweir 		{
419cdf0e10cSrcweir 			Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW );
420cdf0e10cSrcweir 			xPropertySet->getPropertyValue( TKGet( TK_Name ) ) >>= aControlName;
421cdf0e10cSrcweir 			PPPOptimizerTokenEnum eControl( TKGet( aControlName ) );
422cdf0e10cSrcweir 			switch( eControl )
423cdf0e10cSrcweir 			{
424cdf0e10cSrcweir 				case TK_rdmNavi :
425cdf0e10cSrcweir 				{
426597a4c59SAriel Constenla-Haile 					SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) );
427cdf0e10cSrcweir 				}
428cdf0e10cSrcweir 				break;
429cdf0e10cSrcweir 				case TK_CheckBox1Pg1 :
430cdf0e10cSrcweir 				{
431cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
432597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) );
433cdf0e10cSrcweir 				}
434cdf0e10cSrcweir 				break;
435cdf0e10cSrcweir 				case TK_CheckBox2Pg1 :
436cdf0e10cSrcweir 				{
437cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
438597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) );
439cdf0e10cSrcweir 				}
440cdf0e10cSrcweir 				break;
441cdf0e10cSrcweir 				case TK_CheckBox0Pg2 :
442cdf0e10cSrcweir 				{
443cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
444cdf0e10cSrcweir 					{
445597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) );
446597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
447597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
448cdf0e10cSrcweir 					}
449cdf0e10cSrcweir 				}
450cdf0e10cSrcweir 				break;
451cdf0e10cSrcweir 				case TK_RadioButton0Pg1 :
452cdf0e10cSrcweir 				{
453cdf0e10cSrcweir 					sal_Int16 nInt16 = 0;
454cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
455cdf0e10cSrcweir 					{
456cdf0e10cSrcweir 						nInt16 ^= 1;
457597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) );
458597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
459597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
460cdf0e10cSrcweir 					}
461cdf0e10cSrcweir 				}
462cdf0e10cSrcweir 				break;
463cdf0e10cSrcweir 				case TK_RadioButton1Pg1 :
464cdf0e10cSrcweir 				{
465cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
466cdf0e10cSrcweir 					{
467597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) );
468597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
469597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
470cdf0e10cSrcweir 					}
471cdf0e10cSrcweir 				}
472cdf0e10cSrcweir 				break;
473cdf0e10cSrcweir 				case TK_RadioButton0Pg2 :
474cdf0e10cSrcweir 				{
475cdf0e10cSrcweir 					sal_Int16 nInt16;
476cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
477cdf0e10cSrcweir 					{
478cdf0e10cSrcweir 						nInt16 ^= 1;
479597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) );
480cdf0e10cSrcweir 					}
481cdf0e10cSrcweir 				}
482cdf0e10cSrcweir 				break;
483cdf0e10cSrcweir 				case TK_RadioButton1Pg2 :
484cdf0e10cSrcweir 				{
485cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
486597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_OLEOptimizationType, Any( nState ) );
487cdf0e10cSrcweir 				}
488cdf0e10cSrcweir 				break;
489cdf0e10cSrcweir 				case TK_CheckBox0Pg3 :
490cdf0e10cSrcweir 				{
491cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
492597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) );
493cdf0e10cSrcweir 				}
494cdf0e10cSrcweir 				break;
495cdf0e10cSrcweir 				case TK_CheckBox1Pg3 :
496cdf0e10cSrcweir 				{
497cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
498597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) );
499cdf0e10cSrcweir 				}
500cdf0e10cSrcweir 				break;
501cdf0e10cSrcweir 				case TK_CheckBox2Pg3 :
502cdf0e10cSrcweir 				{
503cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
504597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) );
505cdf0e10cSrcweir 				}
506cdf0e10cSrcweir 				break;
507cdf0e10cSrcweir 				case TK_CheckBox3Pg3 :
508cdf0e10cSrcweir 				{
509cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
510597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
511cdf0e10cSrcweir 				}
512cdf0e10cSrcweir 				break;
513cdf0e10cSrcweir 				case TK_CheckBox1Pg4 :
514cdf0e10cSrcweir 				{
515cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
516597a4c59SAriel Constenla-Haile 						setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
517cdf0e10cSrcweir 				}
518cdf0e10cSrcweir 				break;
519cdf0e10cSrcweir 				case TK_RadioButton0Pg4 :
520cdf0e10cSrcweir 				case TK_RadioButton1Pg4 :
521cdf0e10cSrcweir 				{
522cdf0e10cSrcweir 					if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
523597a4c59SAriel Constenla-Haile 						SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) );
524cdf0e10cSrcweir 				}
525cdf0e10cSrcweir 				break;
526cdf0e10cSrcweir 				default:
527cdf0e10cSrcweir 				break;
528cdf0e10cSrcweir 			}
529cdf0e10cSrcweir 		}
530cdf0e10cSrcweir 	}
531cdf0e10cSrcweir 	catch ( Exception& )
532cdf0e10cSrcweir 	{
533cdf0e10cSrcweir 	}
534cdf0e10cSrcweir }
535cdf0e10cSrcweir 
536cdf0e10cSrcweir // -----------------------------------------------------------------------------
537cdf0e10cSrcweir 
actionPerformed(const ActionEvent & rEvent)538597a4c59SAriel Constenla-Haile void OptimizerDialog::actionPerformed( const ActionEvent& rEvent )
539cdf0e10cSrcweir 	throw ( com::sun::star::uno::RuntimeException )
540cdf0e10cSrcweir {
541cdf0e10cSrcweir 	switch( TKGet( rEvent.ActionCommand ) )
542cdf0e10cSrcweir 	{
543597a4c59SAriel Constenla-Haile 		case TK_btnNavBack :	SwitchPage( mnCurrentStep - 1 ); break;
544597a4c59SAriel Constenla-Haile 		case TK_btnNavNext :	SwitchPage( mnCurrentStep + 1 ); break;
545cdf0e10cSrcweir 		case TK_btnNavFinish :
546cdf0e10cSrcweir 		{
547597a4c59SAriel Constenla-Haile 			UpdateConfiguration();
548cdf0e10cSrcweir 
549597a4c59SAriel Constenla-Haile 			SwitchPage( ITEM_ID_SUMMARY );
550597a4c59SAriel Constenla-Haile 			DisablePage( ITEM_ID_SUMMARY );
551597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_False ) );
552597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_False ) );
553597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
554597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_False ) );
555597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_False ) );
556597a4c59SAriel Constenla-Haile 			setControlProperty( TKGet( TK_FixedText0Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
557cdf0e10cSrcweir 
558cdf0e10cSrcweir 			// check if we have to open the FileDialog
559cdf0e10cSrcweir 			sal_Bool	bSuccessfullyExecuted = sal_True;
560cdf0e10cSrcweir 			sal_Int16	nInt16 = 0;
561597a4c59SAriel Constenla-Haile 			getControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
562cdf0e10cSrcweir 			if ( nInt16 )
563cdf0e10cSrcweir 			{
564cdf0e10cSrcweir 				rtl::OUString aSaveAsURL;
565597a4c59SAriel Constenla-Haile 				FileOpenDialog aFileOpenDialog( mxContext, Reference< XWindow >( mxParent, UNO_QUERY ) );
566cdf0e10cSrcweir 
567cdf0e10cSrcweir 				// generating default file name
568597a4c59SAriel Constenla-Haile 				Reference< XStorable > xStorable( mxModel, UNO_QUERY );
569cdf0e10cSrcweir 				if ( xStorable.is() && xStorable->hasLocation() )
570cdf0e10cSrcweir 				{
571cdf0e10cSrcweir 					rtl::OUString aLocation( xStorable->getLocation() );
572cdf0e10cSrcweir 					if ( aLocation.getLength() )
573cdf0e10cSrcweir 					{
574cdf0e10cSrcweir 						sal_Int32 nIndex = aLocation.lastIndexOf( '/', aLocation.getLength() - 1 );
575cdf0e10cSrcweir 						if ( nIndex >= 0 )
576cdf0e10cSrcweir 						{
577cdf0e10cSrcweir 							if ( nIndex < aLocation.getLength() - 1 )
578cdf0e10cSrcweir 								aLocation = aLocation.copy( nIndex + 1 );
579cdf0e10cSrcweir 
580cdf0e10cSrcweir 							// remove extension
581cdf0e10cSrcweir 							nIndex = aLocation.lastIndexOf( '.', aLocation.getLength() - 1 );
582cdf0e10cSrcweir 							if ( nIndex >= 0 )
583cdf0e10cSrcweir 								aLocation = aLocation.copy( 0, nIndex );
584cdf0e10cSrcweir 
585cdf0e10cSrcweir 							// adding .mini
586cdf0e10cSrcweir 							aLocation = aLocation.concat( OUString::createFromAscii( ".mini" ) );
587cdf0e10cSrcweir 							aFileOpenDialog.setDefaultName( aLocation );
588cdf0e10cSrcweir 						}
589cdf0e10cSrcweir 					}
590cdf0e10cSrcweir 				}
591cdf0e10cSrcweir  				sal_Bool bDialogExecuted = aFileOpenDialog.execute() == dialogs::ExecutableDialogResults::OK;
592cdf0e10cSrcweir 				if ( bDialogExecuted )
593cdf0e10cSrcweir 				{
594cdf0e10cSrcweir 					aSaveAsURL = aFileOpenDialog.getURL();
595597a4c59SAriel Constenla-Haile 					SetConfigProperty( TK_SaveAsURL, Any( aSaveAsURL ) );
596597a4c59SAriel Constenla-Haile 					SetConfigProperty( TK_FilterName, Any( aFileOpenDialog.getFilterName() ) );
597cdf0e10cSrcweir 				}
598cdf0e10cSrcweir 				if ( !aSaveAsURL.getLength() )
599cdf0e10cSrcweir 				{
600cdf0e10cSrcweir 					// something goes wrong...
601cdf0e10cSrcweir 					bSuccessfullyExecuted = sal_False;
602cdf0e10cSrcweir 				}
603cdf0e10cSrcweir 
604cdf0e10cSrcweir 				// waiting for 500ms
605597a4c59SAriel Constenla-Haile 				if ( mxReschedule.is() )
606cdf0e10cSrcweir 				{
607597a4c59SAriel Constenla-Haile 					mxReschedule->reschedule();
608cdf0e10cSrcweir 					for ( sal_uInt32 i = osl_getGlobalTimer(); ( i + 500 ) > ( osl_getGlobalTimer() ); )
609597a4c59SAriel Constenla-Haile 					mxReschedule->reschedule();
610cdf0e10cSrcweir 				}
611cdf0e10cSrcweir 			}
612cdf0e10cSrcweir 			if ( bSuccessfullyExecuted )
613cdf0e10cSrcweir 			{	// now check if we have to store a session template
614cdf0e10cSrcweir 				nInt16 = 0;
615cdf0e10cSrcweir 				OUString aSettingsName;
616597a4c59SAriel Constenla-Haile 				getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
617597a4c59SAriel Constenla-Haile 				getControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ) ) >>= aSettingsName;
618cdf0e10cSrcweir 				if ( nInt16 && aSettingsName.getLength() )
619cdf0e10cSrcweir 				{
620597a4c59SAriel Constenla-Haile 					std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSettingsName ) );
621597a4c59SAriel Constenla-Haile 					std::vector< OptimizerSettings >& rSettings( GetOptimizerSettings() );
622cdf0e10cSrcweir 					OptimizerSettings aNewSettings( rSettings[ 0 ] );
623cdf0e10cSrcweir 					aNewSettings.maName = aSettingsName;
624cdf0e10cSrcweir 					if ( aIter == rSettings.end() )
625cdf0e10cSrcweir 						rSettings.push_back( aNewSettings );
626cdf0e10cSrcweir 					else
627cdf0e10cSrcweir 						*aIter = aNewSettings;
628cdf0e10cSrcweir 				}
629cdf0e10cSrcweir 			}
630cdf0e10cSrcweir 			if ( bSuccessfullyExecuted )
631cdf0e10cSrcweir 			{
632cdf0e10cSrcweir 				Sequence< Any > aArgs( 1 );
633597a4c59SAriel Constenla-Haile 				aArgs[ 0 ] <<= mxFrame;
634cdf0e10cSrcweir 
635*8c5bb9c6SAriel Constenla-Haile                 Reference < XDispatch > xDispatch(
636*8c5bb9c6SAriel Constenla-Haile                     mxContext->getServiceManager()->createInstanceWithArgumentsAndContext(
637*8c5bb9c6SAriel Constenla-Haile                         OUString( RTL_CONSTASCII_USTRINGPARAM(
638*8c5bb9c6SAriel Constenla-Haile                             "com.sun.star.presentation.PresentationOptimizer" ) ),
639*8c5bb9c6SAriel Constenla-Haile                         aArgs, mxContext ),
640*8c5bb9c6SAriel Constenla-Haile                     UNO_QUERY );
641cdf0e10cSrcweir 
642cdf0e10cSrcweir 				URL aURL;
643*8c5bb9c6SAriel Constenla-Haile 				aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.presentation.PresentationOptimizer:" ) );
644cdf0e10cSrcweir 				aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "optimize" ) );
645cdf0e10cSrcweir 
646cdf0e10cSrcweir 				Sequence< PropertyValue > lArguments( 3 );
647cdf0e10cSrcweir 				lArguments[ 0 ].Name = TKGet( TK_Settings );
648597a4c59SAriel Constenla-Haile 				lArguments[ 0 ].Value <<= GetConfigurationSequence();
649597a4c59SAriel Constenla-Haile 				lArguments[ 1 ].Name = TKGet( TK_StatusListener );
650597a4c59SAriel Constenla-Haile 				lArguments[ 1 ].Value <<= Reference< XStatusListener >( this );
651597a4c59SAriel Constenla-Haile 				lArguments[ 2 ].Name = TKGet( TK_ParentWindow );
652597a4c59SAriel Constenla-Haile 				lArguments[ 2 ].Value <<= mxDialogWindowPeer;
653cdf0e10cSrcweir 
654cdf0e10cSrcweir 				if( xDispatch.is() )
655cdf0e10cSrcweir 					xDispatch->dispatch( aURL, lArguments );
656cdf0e10cSrcweir 
657597a4c59SAriel Constenla-Haile 				endExecute( bSuccessfullyExecuted );
658cdf0e10cSrcweir 			}
659cdf0e10cSrcweir 			else
660cdf0e10cSrcweir 			{
661597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_True ) );
662597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_True ) );
663597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
664597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_True ) );
665597a4c59SAriel Constenla-Haile 				setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_True ) );
666597a4c59SAriel Constenla-Haile 				EnablePage( ITEM_ID_SUMMARY );
667cdf0e10cSrcweir 			}
668cdf0e10cSrcweir 		}
669cdf0e10cSrcweir 		break;
670597a4c59SAriel Constenla-Haile 		case TK_btnNavCancel :	endExecute( sal_False ); break;
671cdf0e10cSrcweir 		case TK_Button0Pg0 :	// delete configuration
672cdf0e10cSrcweir 		{
673597a4c59SAriel Constenla-Haile 			OUString aSelectedItem( GetSelectedString( TK_ListBox0Pg0 ) );
674cdf0e10cSrcweir 			if ( aSelectedItem.getLength() )
675cdf0e10cSrcweir 			{
676597a4c59SAriel Constenla-Haile 				std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( aSelectedItem ) );
677597a4c59SAriel Constenla-Haile 				std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
678cdf0e10cSrcweir 				if ( aIter != rList.end() )
679cdf0e10cSrcweir 				{
680cdf0e10cSrcweir 					rList.erase( aIter );
681597a4c59SAriel Constenla-Haile 					UpdateControlStates();
682cdf0e10cSrcweir 				}
683cdf0e10cSrcweir 			}
684cdf0e10cSrcweir 		}
685cdf0e10cSrcweir 		break;
686597a4c59SAriel Constenla-Haile 		default:
687597a4c59SAriel Constenla-Haile         {
688597a4c59SAriel Constenla-Haile             Reference< XControl > xControl( rEvent.Source, UNO_QUERY );
689597a4c59SAriel Constenla-Haile             if ( xControl.is() )
690597a4c59SAriel Constenla-Haile             {
691597a4c59SAriel Constenla-Haile                 OUString aName;
692597a4c59SAriel Constenla-Haile                 Reference< XPropertySet > xProps( xControl->getModel(), UNO_QUERY );
693597a4c59SAriel Constenla-Haile                 xProps->getPropertyValue( TKGet( TK_Name ) ) >>= aName;
694597a4c59SAriel Constenla-Haile                 if ( TKGet( aName ) == TK_ListBox0Pg0 )
695597a4c59SAriel Constenla-Haile                 {
696597a4c59SAriel Constenla-Haile                     if ( rEvent.ActionCommand.getLength() )
697597a4c59SAriel Constenla-Haile                     {
698597a4c59SAriel Constenla-Haile                         std::vector< OptimizerSettings >::iterator aIter( GetOptimizerSettingsByName( rEvent.ActionCommand ) );
699597a4c59SAriel Constenla-Haile                         std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
700597a4c59SAriel Constenla-Haile                         if ( aIter != rList.end() )
701597a4c59SAriel Constenla-Haile                             rList[ 0 ] = *aIter;
702597a4c59SAriel Constenla-Haile                     }
703597a4c59SAriel Constenla-Haile                     UpdateControlStates();
704597a4c59SAriel Constenla-Haile                 }
705597a4c59SAriel Constenla-Haile             }
706597a4c59SAriel Constenla-Haile         }
707597a4c59SAriel Constenla-Haile             break;
708cdf0e10cSrcweir 	}
709cdf0e10cSrcweir }
710cdf0e10cSrcweir 
711cdf0e10cSrcweir // -----------------------------------------------------------------------------
712cdf0e10cSrcweir 
textChanged(const TextEvent & rEvent)713597a4c59SAriel Constenla-Haile void OptimizerDialog::textChanged( const TextEvent& rEvent )
714cdf0e10cSrcweir 	throw ( com::sun::star::uno::RuntimeException )
715cdf0e10cSrcweir {
716597a4c59SAriel Constenla-Haile     Reference< XSpinField > xFormattedField( rEvent.Source, UNO_QUERY );
717597a4c59SAriel Constenla-Haile     if ( xFormattedField.is() )
718597a4c59SAriel Constenla-Haile     {
719597a4c59SAriel Constenla-Haile         double fDouble = 0;
720597a4c59SAriel Constenla-Haile         Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
721597a4c59SAriel Constenla-Haile         if ( aAny >>= fDouble )
722597a4c59SAriel Constenla-Haile             SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
723597a4c59SAriel Constenla-Haile         return;
724597a4c59SAriel Constenla-Haile     }
725880c69c6SAriel Constenla-Haile 
726597a4c59SAriel Constenla-Haile     Reference< XComboBox > xComboBox( rEvent.Source, UNO_QUERY );
727597a4c59SAriel Constenla-Haile     if ( xComboBox.is() )
728597a4c59SAriel Constenla-Haile     {
729597a4c59SAriel Constenla-Haile         rtl::OUString aString;
730597a4c59SAriel Constenla-Haile         Any aAny = getControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ) );
731597a4c59SAriel Constenla-Haile         if ( aAny >>= aString )
732597a4c59SAriel Constenla-Haile         {
733597a4c59SAriel Constenla-Haile             sal_Int32 nI0, nI1, nI2, nI3, nI4;
734597a4c59SAriel Constenla-Haile             nI0 = nI1 = nI2 = nI3 = nI4 = 0;
735597a4c59SAriel Constenla-Haile 
736597a4c59SAriel Constenla-Haile             if ( getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 ) == aString )
737597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI4 );
738597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 ) == aString )
739597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI4 );
740597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 ) == aString )
741597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI4 );
742597a4c59SAriel Constenla-Haile             else if ( getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 ) == aString )
743597a4c59SAriel Constenla-Haile                 aString = getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI4 );
744597a4c59SAriel Constenla-Haile 
745597a4c59SAriel Constenla-Haile             SetConfigProperty( TK_ImageResolution, Any( aString.toInt32() ) );
746597a4c59SAriel Constenla-Haile         }
747597a4c59SAriel Constenla-Haile     }
748cdf0e10cSrcweir }
749cdf0e10cSrcweir 
750cdf0e10cSrcweir // -----------------------------------------------------------------------------
751cdf0e10cSrcweir 
up(const SpinEvent &)752597a4c59SAriel Constenla-Haile void OptimizerDialog::up( const SpinEvent& /* rEvent */ )
753cdf0e10cSrcweir 	throw ( com::sun::star::uno::RuntimeException )
754cdf0e10cSrcweir {
755cdf0e10cSrcweir 	double fDouble;
756597a4c59SAriel Constenla-Haile 	Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
757cdf0e10cSrcweir 	if ( aAny >>= fDouble )
758cdf0e10cSrcweir 	{
759cdf0e10cSrcweir 		fDouble += 9;
760cdf0e10cSrcweir 		if ( fDouble > 100 )
761cdf0e10cSrcweir 			fDouble = 100;
762597a4c59SAriel Constenla-Haile 		setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
763597a4c59SAriel Constenla-Haile 		SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
764cdf0e10cSrcweir 	}
765cdf0e10cSrcweir }
766597a4c59SAriel Constenla-Haile 
down(const SpinEvent &)767597a4c59SAriel Constenla-Haile void OptimizerDialog::down( const SpinEvent& /* rEvent */ )
768cdf0e10cSrcweir 	throw ( com::sun::star::uno::RuntimeException )
769cdf0e10cSrcweir {
770cdf0e10cSrcweir 	double fDouble;
771597a4c59SAriel Constenla-Haile 	Any aAny = getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
772cdf0e10cSrcweir 	if ( aAny >>= fDouble )
773cdf0e10cSrcweir 	{
774cdf0e10cSrcweir 		fDouble -= 9;
775cdf0e10cSrcweir 		if ( fDouble < 0 )
776cdf0e10cSrcweir 			fDouble = 0;
777597a4c59SAriel Constenla-Haile 		setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
778597a4c59SAriel Constenla-Haile 		SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
779cdf0e10cSrcweir 	}
780cdf0e10cSrcweir }
781597a4c59SAriel Constenla-Haile 
first(const SpinEvent &)782597a4c59SAriel Constenla-Haile void OptimizerDialog::first( const SpinEvent& /* rEvent */ )
783cdf0e10cSrcweir 	throw ( com::sun::star::uno::RuntimeException )
784cdf0e10cSrcweir {
785597a4c59SAriel Constenla-Haile 	setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 0 ) ) );
786597a4c59SAriel Constenla-Haile 	SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)0 ) );
787cdf0e10cSrcweir }
788597a4c59SAriel Constenla-Haile 
last(const SpinEvent &)789597a4c59SAriel Constenla-Haile void OptimizerDialog::last( const SpinEvent& /* rEvent */ )
790880c69c6SAriel Constenla-Haile 	throw ( com::sun::star::uno::RuntimeException )
791880c69c6SAriel Constenla-Haile {
792597a4c59SAriel Constenla-Haile 	setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 100 ) ) );
793597a4c59SAriel Constenla-Haile 	SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)100 ) );
794880c69c6SAriel Constenla-Haile }
795880c69c6SAriel Constenla-Haile 
796