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