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