xref: /aoo4110/main/sd/source/ui/dlg/dlgass.cxx (revision b1cdbd2c)
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_sd.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #ifdef SD_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski #undef SD_DLLIMPLEMENTATION
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/ClickAction.hpp>
31*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
32*b1cdbd2cSJim Jagielski #include <vos/mutex.hxx>
33*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
35*b1cdbd2cSJim Jagielski #include <vcl/combobox.hxx>
36*b1cdbd2cSJim Jagielski #include <sfx2/doctempl.hxx>
37*b1cdbd2cSJim Jagielski #include <svl/lstner.hxx>
38*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
39*b1cdbd2cSJim Jagielski #include <svtools/ehdl.hxx>
40*b1cdbd2cSJim Jagielski #include <svtools/sfxecode.hxx>
41*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/FadeEffect.hpp>
43*b1cdbd2cSJim Jagielski #include <fadedef.h>
44*b1cdbd2cSJim Jagielski #include <sfx2/sfxsids.hrc>
45*b1cdbd2cSJim Jagielski #include <svl/undo.hxx>
46*b1cdbd2cSJim Jagielski #include "DrawDocShell.hxx"
47*b1cdbd2cSJim Jagielski #include <vcl/gdimtf.hxx>
48*b1cdbd2cSJim Jagielski #include <tools/wintypes.hxx>
49*b1cdbd2cSJim Jagielski #include "docprev.hxx"
50*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
51*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
52*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
53*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XResultSet.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XComponent.hpp>
56*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XCloseable.hpp>
57*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/RuntimeException.hpp>
58*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModuleManager.hpp>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
60*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp>
61*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XImageManager.hpp>
62*b1cdbd2cSJim Jagielski #include <unotools/historyoptions.hxx>
63*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
64*b1cdbd2cSJim Jagielski #include <osl/file.hxx>
65*b1cdbd2cSJim Jagielski #include <sfx2/filedlghelper.hxx>
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski #include "sdpage.hxx"
68*b1cdbd2cSJim Jagielski #include "helpids.h"
69*b1cdbd2cSJim Jagielski #include "assclass.hxx"
70*b1cdbd2cSJim Jagielski #include "dlgass.hrc"
71*b1cdbd2cSJim Jagielski #include "dlgass.hxx"
72*b1cdbd2cSJim Jagielski #include "dlgctrls.hxx"
73*b1cdbd2cSJim Jagielski #ifndef _SD_CFGID_HXX
74*b1cdbd2cSJim Jagielski #include "strings.hrc"
75*b1cdbd2cSJim Jagielski #endif
76*b1cdbd2cSJim Jagielski #ifndef _DATETIMEITEM_HXX
77*b1cdbd2cSJim Jagielski #include "dlgassim.hxx"
78*b1cdbd2cSJim Jagielski #endif
79*b1cdbd2cSJim Jagielski #include "TemplateScanner.hxx"
80*b1cdbd2cSJim Jagielski #include "WindowUpdater.hxx"
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
85*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
86*b1cdbd2cSJim Jagielski using namespace ::sd;
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 
InterpolateFixedBitmap(FixedBitmap * pBitmap)89*b1cdbd2cSJim Jagielski void InterpolateFixedBitmap( FixedBitmap * pBitmap )
90*b1cdbd2cSJim Jagielski {
91*b1cdbd2cSJim Jagielski 	Bitmap aBmp( pBitmap->GetBitmap() );
92*b1cdbd2cSJim Jagielski 	Size aSize = pBitmap->GetSizePixel();
93*b1cdbd2cSJim Jagielski 	aBmp.Scale( aSize, BMP_SCALE_INTERPOLATE );
94*b1cdbd2cSJim Jagielski 	pBitmap->SetBitmap( aBmp );
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski // ====================================================================
99*b1cdbd2cSJim Jagielski // ====================================================================
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski const char* PageHelpIds[] =
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski 	HID_SD_AUTOPILOT_PAGE1,
104*b1cdbd2cSJim Jagielski 	HID_SD_AUTOPILOT_PAGE2,
105*b1cdbd2cSJim Jagielski 	HID_SD_AUTOPILOT_PAGE3,
106*b1cdbd2cSJim Jagielski 	HID_SD_AUTOPILOT_PAGE4,
107*b1cdbd2cSJim Jagielski 	HID_SD_AUTOPILOT_PAGE5
108*b1cdbd2cSJim Jagielski };
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski // ====================================================================
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski class PasswordEntry
113*b1cdbd2cSJim Jagielski {
114*b1cdbd2cSJim Jagielski public:
115*b1cdbd2cSJim Jagielski 	String maPassword;
116*b1cdbd2cSJim Jagielski 	String maPath;
117*b1cdbd2cSJim Jagielski };
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski DECLARE_LIST( PasswordEntryList, PasswordEntry * )
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski // ====================================================================
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski /** A simple wrapper that looks like a PushButton and is used to force the
124*b1cdbd2cSJim Jagielski     broadcasting of focus events primarly for accessibility tools.
125*b1cdbd2cSJim Jagielski     Forcing focus events is achieved by using two identical PushButtons
126*b1cdbd2cSJim Jagielski     which, when the focus event is requested, are exchanged and play focus
127*b1cdbd2cSJim Jagielski     ping-pong by moving the focus from one to the other.
128*b1cdbd2cSJim Jagielski */
129*b1cdbd2cSJim Jagielski class NextButton
130*b1cdbd2cSJim Jagielski {
131*b1cdbd2cSJim Jagielski public:
132*b1cdbd2cSJim Jagielski     NextButton (::Window* pParent, const ResId& rResId);
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski     void ForceFocusEventBroadcast (void);
135*b1cdbd2cSJim Jagielski 	void SetClickHdl (const Link& rLink);
136*b1cdbd2cSJim Jagielski     bool IsEnabled (void);
137*b1cdbd2cSJim Jagielski 	void Enable (bool bEnable);
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski private:
140*b1cdbd2cSJim Jagielski     PushButton maNextButton1;
141*b1cdbd2cSJim Jagielski     PushButton maNextButton2;
142*b1cdbd2cSJim Jagielski     bool mbIsFirstButtonActive;
143*b1cdbd2cSJim Jagielski };
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski 
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski // ====================================================================
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski class AssistentDlgImpl : public SfxListener
150*b1cdbd2cSJim Jagielski {
151*b1cdbd2cSJim Jagielski public:
152*b1cdbd2cSJim Jagielski 	AssistentDlgImpl( ::Window* pWindow, const Link& rFinishLink, sal_Bool bAutoPilot  );
153*b1cdbd2cSJim Jagielski 	~AssistentDlgImpl();
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski     /// Local mutex used to serialize concurrent method calls.
156*b1cdbd2cSJim Jagielski     ::osl::Mutex maMutex;
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski 	SfxObjectShellLock GetDocument();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	/** closes the current preview docshell */
161*b1cdbd2cSJim Jagielski 	void CloseDocShell();
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 	/**	Extract form the history list of recently used files the impress
164*b1cdbd2cSJim Jagielski 		files and insert them into a listbox.
165*b1cdbd2cSJim Jagielski 	*/
166*b1cdbd2cSJim Jagielski 	void	ScanDocmenu			(void);
167*b1cdbd2cSJim Jagielski     /**	Flag that is set to sal_True after the recently used files have been
168*b1cdbd2cSJim Jagielski         scanned.
169*b1cdbd2cSJim Jagielski 	*/
170*b1cdbd2cSJim Jagielski 	sal_Bool mbRecentDocumentsReady;
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski 	/**	When the list of templates has not been scanned already this is done
173*b1cdbd2cSJim Jagielski         when this method is called.  That includes requesting the whole list
174*b1cdbd2cSJim Jagielski         of templates from UCB and extracting from that list the impress
175*b1cdbd2cSJim Jagielski         templates and layouts and storing them for later use in
176*b1cdbd2cSJim Jagielski         <member>maPresentList</member>.  Note that the first call to this
177*b1cdbd2cSJim Jagielski         method after installing a new Office may take some time.
178*b1cdbd2cSJim Jagielski 	*/
179*b1cdbd2cSJim Jagielski 	void ProvideTemplates (void);
180*b1cdbd2cSJim Jagielski 
181*b1cdbd2cSJim Jagielski 	/**	This method transfers the template folders from the template scanner
182*b1cdbd2cSJim Jagielski 		to the internal structures of this class.  On termination it sets
183*b1cdbd2cSJim Jagielski 		the flag <member>mbTemplatesReady</member> to <TRUE/> to indicate
184*b1cdbd2cSJim Jagielski 		that the templates are available.
185*b1cdbd2cSJim Jagielski         @param rTemplateFolders
186*b1cdbd2cSJim Jagielski             This is a list of template folders.  This method takes ownership
187*b1cdbd2cSJim Jagielski             of the supplied entries by removing them from the list and
188*b1cdbd2cSJim Jagielski             transferring them to an internal structure.
189*b1cdbd2cSJim Jagielski 	*/
190*b1cdbd2cSJim Jagielski 	void TemplateScanDone (std::vector<TemplateDir*>& rTemplateFolders);
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 	/**	Flag that is set to sal_True after the impress templates have been
193*b1cdbd2cSJim Jagielski         scanned.
194*b1cdbd2cSJim Jagielski 	*/
195*b1cdbd2cSJim Jagielski 	sal_Bool mbTemplatesReady;
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski     /** Flag used to prevent nested or concurrent calls to the
198*b1cdbd2cSJim Jagielski         <member>UpdatePreview</memember> method.  A <TRUE/> value indicates
199*b1cdbd2cSJim Jagielski         that a preview update is currently active.
200*b1cdbd2cSJim Jagielski     */
201*b1cdbd2cSJim Jagielski     sal_Bool mbPreviewUpdating;
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski 	::Window* mpWindow;
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski 	void SavePassword( SfxObjectShellLock xDoc, const String& rPath );
206*b1cdbd2cSJim Jagielski 	void RestorePassword( SfxItemSet* pSet, const String& rPath );
207*b1cdbd2cSJim Jagielski 	String GetPassword( const String rPath );
208*b1cdbd2cSJim Jagielski 	void DeletePassords();
209*b1cdbd2cSJim Jagielski 
210*b1cdbd2cSJim Jagielski 	PasswordEntryList maPasswordList;
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski 	String maDocFile;
213*b1cdbd2cSJim Jagielski 	String maLayoutFile;
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski 	String GetDocFileName();
216*b1cdbd2cSJim Jagielski 	String GetLayoutFileName();
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 	///	List of URLs of recently used impress files.
219*b1cdbd2cSJim Jagielski 	std::vector<String*> maOpenFilesList;
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski 	///	List of folders containing data about impress templates.
222*b1cdbd2cSJim Jagielski 	std::vector<TemplateDir*> maPresentList;
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 	///	Currently selected template folder.
225*b1cdbd2cSJim Jagielski 	TemplateDir* mpTemplateRegion;
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 	///	Currently selected layout folder.
228*b1cdbd2cSJim Jagielski 	TemplateDir* mpLayoutRegion;
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 	// preview
231*b1cdbd2cSJim Jagielski 	sal_Bool mbUserDataDirty;
232*b1cdbd2cSJim Jagielski 	Timer maPrevTimer;
233*b1cdbd2cSJim Jagielski 	Timer maEffectPrevTimer;
234*b1cdbd2cSJim Jagielski 	Timer maUpdatePageListTimer;
235*b1cdbd2cSJim Jagielski 	Timer maStartScanTimer;
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski 	SfxObjectShellLock xDocShell;
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski     ::std::auto_ptr<WindowUpdater> mpWindowUpdater;
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski 	sal_Bool mbPreview;
242*b1cdbd2cSJim Jagielski 	sal_uInt16 mnShowPage;
243*b1cdbd2cSJim Jagielski 	sal_Bool mbDocPreview;
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski 	sal_uLong mnTemplate;
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski 	String maPageListFile;
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski 	void UpdatePreview( sal_Bool bDocPreview );
250*b1cdbd2cSJim Jagielski 	void UpdatePageList();
251*b1cdbd2cSJim Jagielski 	void UpdateUserData();
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski 	sal_Bool IsOwnFormat( const String& rPath );
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 	// dlg status
256*b1cdbd2cSJim Jagielski 	void EndDialog( long nResult = 0 );
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski 	void SetStartType( StartType eType );
259*b1cdbd2cSJim Jagielski 	StartType GetStartType();
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski 	void SelectTemplateRegion( const String& rRegion );
262*b1cdbd2cSJim Jagielski 	void SelectLayoutRegion( const String& rRegion );
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski 	void UpdatePage();
265*b1cdbd2cSJim Jagielski 	void ChangePage();
266*b1cdbd2cSJim Jagielski 	void LeavePage();
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski     String GetUiTextForCommand (const ::rtl::OUString& aCommandURL);
269*b1cdbd2cSJim Jagielski     Image GetUiIconForCommand (const ::rtl::OUString& aCommandURL);
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 	DECL_LINK( StartScanHdl, void * );
272*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectFileHdl, ListBox * );
273*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectRegionHdl, ListBox * );
274*b1cdbd2cSJim Jagielski 	DECL_LINK( UpdatePreviewHdl, void * );
275*b1cdbd2cSJim Jagielski 	DECL_LINK( UpdatePageListHdl, void * );
276*b1cdbd2cSJim Jagielski 	DECL_LINK( StartTypeHdl, RadioButton * );
277*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectTemplateHdl, ListBox * );
278*b1cdbd2cSJim Jagielski 	DECL_LINK( NextPageHdl, PushButton * );
279*b1cdbd2cSJim Jagielski 	DECL_LINK( LastPageHdl, PushButton * );
280*b1cdbd2cSJim Jagielski 	DECL_LINK( PreviewFlagHdl, CheckBox * );
281*b1cdbd2cSJim Jagielski 	DECL_LINK( EffectPreviewHdl, Button * );
282*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectLayoutHdl, ListBox * );
283*b1cdbd2cSJim Jagielski 	DECL_LINK( PageSelectHdl, Control * );
284*b1cdbd2cSJim Jagielski 	DECL_LINK( PresTypeHdl, RadioButton * );
285*b1cdbd2cSJim Jagielski 	DECL_LINK( UpdateUserDataHdl, Edit* );
286*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectEffectHdl, void* );
287*b1cdbd2cSJim Jagielski     DECL_LINK( OpenButtonHdl, Button * );
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski 	// Common
290*b1cdbd2cSJim Jagielski 	Assistent			maAssistentFunc;
291*b1cdbd2cSJim Jagielski 	CheckBox			maPreviewFlag;
292*b1cdbd2cSJim Jagielski 	CheckBox			maStartWithFlag;
293*b1cdbd2cSJim Jagielski 	HelpButton			maHelpButton;
294*b1cdbd2cSJim Jagielski 	CancelButton		maCancelButton;
295*b1cdbd2cSJim Jagielski 	PushButton			maLastPageButton;
296*b1cdbd2cSJim Jagielski     NextButton	        maNextPageButton;
297*b1cdbd2cSJim Jagielski 	OKButton			maFinishButton;
298*b1cdbd2cSJim Jagielski 	SdDocPreviewWin		maPreview;
299*b1cdbd2cSJim Jagielski 
300*b1cdbd2cSJim Jagielski     String				maCreateStr;
301*b1cdbd2cSJim Jagielski     String				maOpenStr;
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski 	// Seite 1
304*b1cdbd2cSJim Jagielski 	FixedBitmap*		mpPage1FB;
305*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage1ArtFL;
306*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage1EmptyRB;
307*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage1TemplateRB;
308*b1cdbd2cSJim Jagielski 	ListBox*			mpPage1RegionLB;
309*b1cdbd2cSJim Jagielski 	ListBox*			mpPage1TemplateLB;
310*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage1OpenRB;
311*b1cdbd2cSJim Jagielski 	ListBox*			mpPage1OpenLB;
312*b1cdbd2cSJim Jagielski     PushButton*         mpPage1OpenPB;
313*b1cdbd2cSJim Jagielski 
314*b1cdbd2cSJim Jagielski 	// Seite 2
315*b1cdbd2cSJim Jagielski 	FixedBitmap*		mpPage2FB;
316*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage2LayoutFL;
317*b1cdbd2cSJim Jagielski 	ListBox*			mpPage2RegionLB;
318*b1cdbd2cSJim Jagielski 	ListBox*			mpPage2LayoutLB;
319*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage2OutTypesFL;
320*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage2Medium1RB;
321*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage2Medium2RB;
322*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage2Medium3RB;
323*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage2Medium4RB;
324*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage2Medium5RB;
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski 	// Seite 3
327*b1cdbd2cSJim Jagielski 	FixedBitmap*		mpPage3FB;
328*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage3EffectFL;
329*b1cdbd2cSJim Jagielski 	FixedText*			mpPage3EffectFT;
330*b1cdbd2cSJim Jagielski 	FadeEffectLB*		mpPage3EffectLB;
331*b1cdbd2cSJim Jagielski 	FixedText*			mpPage3SpeedFT;
332*b1cdbd2cSJim Jagielski 	ListBox*			mpPage3SpeedLB;
333*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage3PresTypeFL;
334*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage3PresTypeLiveRB;
335*b1cdbd2cSJim Jagielski 	RadioButton*		mpPage3PresTypeKioskRB;
336*b1cdbd2cSJim Jagielski 	FixedText*			mpPage3PresTimeFT;
337*b1cdbd2cSJim Jagielski 	TimeField*			mpPage3PresTimeTMF;
338*b1cdbd2cSJim Jagielski 	FixedText*			mpPage3BreakFT;
339*b1cdbd2cSJim Jagielski 	TimeField*			mpPage3BreakTMF;
340*b1cdbd2cSJim Jagielski 	CheckBox*			mpPage3LogoCB;
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 	// Seite 4
343*b1cdbd2cSJim Jagielski 	FixedBitmap*		mpPage4FB;
344*b1cdbd2cSJim Jagielski 	FixedLine*			mpPage4PersonalFL;
345*b1cdbd2cSJim Jagielski 	FixedText*			mpPage4AskNameFT;
346*b1cdbd2cSJim Jagielski 	Edit*				mpPage4AskNameEDT;
347*b1cdbd2cSJim Jagielski 	FixedText*			mpPage4AskTopicFT;
348*b1cdbd2cSJim Jagielski 	Edit*				mpPage4AskTopicEDT;
349*b1cdbd2cSJim Jagielski 	FixedText*			mpPage4AskInfoFT;
350*b1cdbd2cSJim Jagielski 	MultiLineEdit*		mpPage4AskInfoEDT;
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski 	// Seite 5
353*b1cdbd2cSJim Jagielski 	FixedBitmap*		mpPage5FB;
354*b1cdbd2cSJim Jagielski 	FixedText*			mpPage5PageListFT;
355*b1cdbd2cSJim Jagielski 	SdPageListControl*	mpPage5PageListCT;
356*b1cdbd2cSJim Jagielski 	CheckBox*			mpPage5SummaryCB;
357*b1cdbd2cSJim Jagielski 
358*b1cdbd2cSJim Jagielski };
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski // ====================================================================
363*b1cdbd2cSJim Jagielski 
AssistentDlgImpl(::Window * pWindow,const Link & rFinishLink,sal_Bool bAutoPilot)364*b1cdbd2cSJim Jagielski AssistentDlgImpl::AssistentDlgImpl( ::Window* pWindow, const Link& rFinishLink, sal_Bool bAutoPilot ) :
365*b1cdbd2cSJim Jagielski 	mpTemplateRegion(NULL),
366*b1cdbd2cSJim Jagielski 	mpLayoutRegion(NULL),
367*b1cdbd2cSJim Jagielski 	mbUserDataDirty(sal_False),
368*b1cdbd2cSJim Jagielski 	xDocShell (NULL),
369*b1cdbd2cSJim Jagielski     mpWindowUpdater (new WindowUpdater()),
370*b1cdbd2cSJim Jagielski 	mbPreview(sal_True),
371*b1cdbd2cSJim Jagielski 	mnShowPage(0),
372*b1cdbd2cSJim Jagielski 	mbDocPreview(sal_False),
373*b1cdbd2cSJim Jagielski 	maAssistentFunc(5),
374*b1cdbd2cSJim Jagielski 	maPreviewFlag(pWindow,SdResId(CB_PREVIEW)),
375*b1cdbd2cSJim Jagielski 	maStartWithFlag(pWindow,SdResId(CB_STARTWITH)),
376*b1cdbd2cSJim Jagielski 	maHelpButton(pWindow,SdResId(BUT_HELP)),
377*b1cdbd2cSJim Jagielski 	maCancelButton(pWindow,SdResId(BUT_CANCEL)),
378*b1cdbd2cSJim Jagielski 	maLastPageButton(pWindow,SdResId(BUT_LAST)),
379*b1cdbd2cSJim Jagielski 	maNextPageButton(pWindow,SdResId(BUT_NEXT)),
380*b1cdbd2cSJim Jagielski 	maFinishButton(pWindow,SdResId(BUT_FINISH)),
381*b1cdbd2cSJim Jagielski 	maPreview(pWindow,SdResId(CT_PREVIEW)),
382*b1cdbd2cSJim Jagielski     maCreateStr(SdResId(STR_CREATE)),
383*b1cdbd2cSJim Jagielski     maOpenStr(SdResId(STR_OPEN))
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski 	maPageListFile += sal_Unicode('?'),
386*b1cdbd2cSJim Jagielski     mbRecentDocumentsReady = sal_False;
387*b1cdbd2cSJim Jagielski 	mbTemplatesReady = sal_False;
388*b1cdbd2cSJim Jagielski     mbPreviewUpdating = sal_False;
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 	mpWindow = pWindow;
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski 	if(bAutoPilot)
393*b1cdbd2cSJim Jagielski 		maStartWithFlag.Hide();
394*b1cdbd2cSJim Jagielski 	else
395*b1cdbd2cSJim Jagielski 		maAssistentFunc.InsertControl(1, &maStartWithFlag );
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski 	//page1 wird initialisiert und an die Assistentenfunktionalitaet
398*b1cdbd2cSJim Jagielski 	//uebergeben
399*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1, &maPreview );
400*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1, &maPreviewFlag );
401*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
402*b1cdbd2cSJim Jagielski 		mpPage1FB = new FixedBitmap(pWindow,SdResId(FB_PAGE1)));
403*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
404*b1cdbd2cSJim Jagielski 		mpPage1ArtFL = new FixedLine(pWindow,SdResId(FL_PAGE1_ARTGROUP)));
405*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
406*b1cdbd2cSJim Jagielski 		mpPage1EmptyRB=new RadioButton(pWindow,SdResId(RB_PAGE1_EMPTY)));
407*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
408*b1cdbd2cSJim Jagielski 		mpPage1TemplateRB=new RadioButton(pWindow,SdResId(RB_PAGE1_TEMPLATE)));
409*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
410*b1cdbd2cSJim Jagielski 		mpPage1OpenRB=new RadioButton(pWindow,SdResId(RB_PAGE1_OPEN)));
411*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
412*b1cdbd2cSJim Jagielski 		mpPage1RegionLB = new ListBox(pWindow,SdResId(LB_PAGE1_REGION)));
413*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
414*b1cdbd2cSJim Jagielski 		mpPage1TemplateLB=new ListBox(pWindow,SdResId(LB_PAGE1_TEMPLATES)));
415*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
416*b1cdbd2cSJim Jagielski 		mpPage1OpenPB=new PushButton(pWindow,SdResId(PB_PAGE1_OPEN)));
417*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(1,
418*b1cdbd2cSJim Jagielski 		mpPage1OpenLB=new ListBox(pWindow,SdResId(LB_PAGE1_OPEN)));
419*b1cdbd2cSJim Jagielski 
420*b1cdbd2cSJim Jagielski     // Align the button and list box displayed for the "open existing file"
421*b1cdbd2cSJim Jagielski     // radio button with the text of that radio button.
422*b1cdbd2cSJim Jagielski     {
423*b1cdbd2cSJim Jagielski         RadioButton aEmptyRB (mpWindow);
424*b1cdbd2cSJim Jagielski         sal_Int32 nIndent (aEmptyRB.CalcMinimumSize(0).Width());
425*b1cdbd2cSJim Jagielski         sal_Int32 nLeft (mpPage1OpenRB->GetPosPixel().X() + nIndent);
426*b1cdbd2cSJim Jagielski         sal_Int32 nWidth (mpPage1OpenRB->GetSizePixel().Width() - nIndent);
427*b1cdbd2cSJim Jagielski         mpPage1OpenPB->SetPosSizePixel(
428*b1cdbd2cSJim Jagielski             Point(nLeft, mpPage1OpenPB->GetPosPixel().Y()),
429*b1cdbd2cSJim Jagielski             Size(mpPage1OpenPB->GetSizePixel()));
430*b1cdbd2cSJim Jagielski         mpPage1OpenLB->SetPosSizePixel(
431*b1cdbd2cSJim Jagielski             Point(nLeft, mpPage1OpenLB->GetPosPixel().Y()),
432*b1cdbd2cSJim Jagielski             Size(nWidth, mpPage1OpenLB->GetSizePixel().Height()));
433*b1cdbd2cSJim Jagielski     }
434*b1cdbd2cSJim Jagielski 
435*b1cdbd2cSJim Jagielski     // Set text and icon of the 'Open...' button.
436*b1cdbd2cSJim Jagielski     {
437*b1cdbd2cSJim Jagielski         String sText (GetUiTextForCommand(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Open"))));
438*b1cdbd2cSJim Jagielski         // Remove the mnemonic and add a leading space so that icon and text
439*b1cdbd2cSJim Jagielski         // are not too close together.
440*b1cdbd2cSJim Jagielski         sText.SearchAndReplaceAll(String(RTL_CONSTASCII_STRINGPARAM("~")),String());
441*b1cdbd2cSJim Jagielski         sText.Insert(String(RTL_CONSTASCII_STRINGPARAM(" ")),0);
442*b1cdbd2cSJim Jagielski         mpPage1OpenPB->SetText(sText);
443*b1cdbd2cSJim Jagielski         // Place icon left of text and both centered in the button.
444*b1cdbd2cSJim Jagielski         mpPage1OpenPB->SetModeImage(
445*b1cdbd2cSJim Jagielski             GetUiIconForCommand(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Open"))),
446*b1cdbd2cSJim Jagielski             BMP_COLOR_NORMAL);
447*b1cdbd2cSJim Jagielski         mpPage1OpenPB->EnableImageDisplay(sal_True);
448*b1cdbd2cSJim Jagielski         mpPage1OpenPB->EnableTextDisplay(sal_True);
449*b1cdbd2cSJim Jagielski         mpPage1OpenPB->SetImageAlign(IMAGEALIGN_LEFT);
450*b1cdbd2cSJim Jagielski         mpPage1OpenPB->SetStyle(mpPage1OpenPB->GetStyle() | WB_CENTER);
451*b1cdbd2cSJim Jagielski     }
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski 	// links&handler
454*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectRegionHdl));
455*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->SetDropDownLineCount( 6 );
456*b1cdbd2cSJim Jagielski 	mpPage1TemplateLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectTemplateHdl));
457*b1cdbd2cSJim Jagielski 	mpPage1TemplateLB->InsertEntry(String(SdResId(STR_ISLOADING)));
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski 	mpPage1EmptyRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
460*b1cdbd2cSJim Jagielski 	mpPage1TemplateRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
461*b1cdbd2cSJim Jagielski 	mpPage1OpenRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
462*b1cdbd2cSJim Jagielski 	mpPage1OpenLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectFileHdl));
463*b1cdbd2cSJim Jagielski 	mpPage1OpenLB->SetDoubleClickHdl(rFinishLink);
464*b1cdbd2cSJim Jagielski     mpPage1OpenPB->SetClickHdl(LINK(this,AssistentDlgImpl,OpenButtonHdl));
465*b1cdbd2cSJim Jagielski     //	mpPage1OpenLB->InsertEntry(String(SdResId(STR_WIZARD_POSITION)));
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 	// Seite 2
468*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2, &maPreview );
469*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2, &maPreviewFlag );
470*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
471*b1cdbd2cSJim Jagielski 		mpPage2FB = new FixedBitmap(pWindow,SdResId(FB_PAGE2)));
472*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
473*b1cdbd2cSJim Jagielski 		mpPage2LayoutFL = new FixedLine( pWindow, SdResId(FL_PAGE2_LAYOUT) ));
474*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
475*b1cdbd2cSJim Jagielski 		mpPage2RegionLB = new ListBox(pWindow,SdResId(LB_PAGE2_REGION) ));
476*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
477*b1cdbd2cSJim Jagielski 		mpPage2LayoutLB = new ListBox(pWindow,SdResId(LB_PAGE2_LAYOUT) ));
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
480*b1cdbd2cSJim Jagielski 		mpPage2OutTypesFL = new FixedLine( pWindow, SdResId(FL_PAGE2_OUTPUTTYPES) ));
481*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
482*b1cdbd2cSJim Jagielski 		mpPage2Medium5RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM5) ));
483*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
484*b1cdbd2cSJim Jagielski 		mpPage2Medium3RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM3) ));
485*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
486*b1cdbd2cSJim Jagielski 		mpPage2Medium4RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM4) ));
487*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
488*b1cdbd2cSJim Jagielski 		mpPage2Medium1RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM1) ));
489*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(2,
490*b1cdbd2cSJim Jagielski 		mpPage2Medium2RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM2) ));
491*b1cdbd2cSJim Jagielski 	mpPage2Medium5RB->Check();
492*b1cdbd2cSJim Jagielski 
493*b1cdbd2cSJim Jagielski 	mpPage2RegionLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectRegionHdl));
494*b1cdbd2cSJim Jagielski 	mpPage2RegionLB->SetDropDownLineCount( 6 );
495*b1cdbd2cSJim Jagielski 	mpPage2LayoutLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectLayoutHdl));
496*b1cdbd2cSJim Jagielski 	mpPage2LayoutLB->InsertEntry(String(SdResId(STR_ISLOADING)));
497*b1cdbd2cSJim Jagielski 
498*b1cdbd2cSJim Jagielski 	// Seite 3
499*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3, &maPreview );
500*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3, &maPreviewFlag );
501*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
502*b1cdbd2cSJim Jagielski 		mpPage3FB = new FixedBitmap(pWindow,SdResId(FB_PAGE3)));
503*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
504*b1cdbd2cSJim Jagielski 		mpPage3EffectFL = new FixedLine( pWindow, SdResId(FL_PAGE3_EFFECT) ));
505*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
506*b1cdbd2cSJim Jagielski 		mpPage3EffectFT = new FixedText( pWindow, SdResId(FT_PAGE3_EFFECT) ));
507*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
508*b1cdbd2cSJim Jagielski 		mpPage3EffectLB = new FadeEffectLB( pWindow, SdResId(LB_PAGE3_EFFECT) ));
509*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
510*b1cdbd2cSJim Jagielski 		mpPage3SpeedFT = new FixedText( pWindow, SdResId(FT_PAGE3_SPEED) ));
511*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
512*b1cdbd2cSJim Jagielski 		mpPage3SpeedLB = new FadeEffectLB( pWindow, SdResId(LB_PAGE3_SPEED) ));
513*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
514*b1cdbd2cSJim Jagielski 		mpPage3PresTypeFL = new FixedLine( pWindow, SdResId(FL_PAGE3_PRESTYPE) ));
515*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
516*b1cdbd2cSJim Jagielski 		mpPage3PresTypeLiveRB = new RadioButton( pWindow, SdResId(RB_PAGE3_LIVE) ));
517*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
518*b1cdbd2cSJim Jagielski 		mpPage3PresTypeKioskRB = new RadioButton( pWindow, SdResId(RB_PAGE3_KIOSK) ));
519*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
520*b1cdbd2cSJim Jagielski 		mpPage3PresTimeFT = new FixedText( pWindow, SdResId( FT_PAGE3_TIME) ));
521*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
522*b1cdbd2cSJim Jagielski 		mpPage3PresTimeTMF = new TimeField( pWindow, SdResId( TMF_PAGE3_TIME) ));
523*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
524*b1cdbd2cSJim Jagielski 		mpPage3BreakFT = new FixedText( pWindow, SdResId( FT_PAGE3_BREAK) ));
525*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
526*b1cdbd2cSJim Jagielski 		mpPage3BreakTMF = new TimeField( pWindow, SdResId( TMF_PAGE3_BREAK) ));
527*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(3,
528*b1cdbd2cSJim Jagielski 		mpPage3LogoCB = new CheckBox( pWindow, SdResId( CB_PAGE3_LOGO) ));
529*b1cdbd2cSJim Jagielski 
530*b1cdbd2cSJim Jagielski 	mpPage3EffectLB->Fill();
531*b1cdbd2cSJim Jagielski //	mpPage3EffectLB->SelectEffect( presentation::FadeEffect_NONE );
532*b1cdbd2cSJim Jagielski 	mpPage3EffectLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
533*b1cdbd2cSJim Jagielski 	mpPage3EffectLB->SetDropDownLineCount( 12 );
534*b1cdbd2cSJim Jagielski 
535*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->InsertEntry( String( SdResId(STR_SLOW) ));
536*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->InsertEntry( String( SdResId(STR_MEDIUM) ));
537*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->InsertEntry( String( SdResId(STR_FAST) ));
538*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->SetDropDownLineCount( 3 );
539*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
540*b1cdbd2cSJim Jagielski 	mpPage3SpeedLB->SelectEntryPos( 1 );
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski 	mpPage3PresTypeLiveRB->Check();
543*b1cdbd2cSJim Jagielski 	mpPage3PresTypeLiveRB->SetClickHdl( LINK(this,AssistentDlgImpl, PresTypeHdl ));
544*b1cdbd2cSJim Jagielski 	mpPage3PresTypeKioskRB->SetClickHdl( LINK(this,AssistentDlgImpl, PresTypeHdl ));
545*b1cdbd2cSJim Jagielski 	mpPage3PresTimeTMF->SetFormat( TIMEF_SEC );
546*b1cdbd2cSJim Jagielski 	mpPage3PresTimeTMF->SetTime( Time( 0, 0, 10 ) );
547*b1cdbd2cSJim Jagielski 	mpPage3BreakTMF->SetFormat( TIMEF_SEC );
548*b1cdbd2cSJim Jagielski 	mpPage3BreakTMF->SetTime( Time( 0, 0, 10 ) );
549*b1cdbd2cSJim Jagielski 	mpPage3LogoCB->Check();
550*b1cdbd2cSJim Jagielski 
551*b1cdbd2cSJim Jagielski 	// set cursor in timefield
552*b1cdbd2cSJim Jagielski 	Edit *pEditPage3PresTimeTMF = mpPage3PresTimeTMF->GetField();
553*b1cdbd2cSJim Jagielski 	Edit *pEditPage3BreakTMF = mpPage3BreakTMF->GetField();
554*b1cdbd2cSJim Jagielski 	Selection aSel1( pEditPage3PresTimeTMF->GetMaxTextLen(), pEditPage3PresTimeTMF->GetMaxTextLen() );
555*b1cdbd2cSJim Jagielski 	Selection aSel2( pEditPage3BreakTMF->GetMaxTextLen(), pEditPage3BreakTMF->GetMaxTextLen() );
556*b1cdbd2cSJim Jagielski 	pEditPage3PresTimeTMF->SetSelection( aSel1 );
557*b1cdbd2cSJim Jagielski 	pEditPage3BreakTMF->SetSelection( aSel2 );
558*b1cdbd2cSJim Jagielski 
559*b1cdbd2cSJim Jagielski 	// Seite 4
560*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
561*b1cdbd2cSJim Jagielski 		mpPage4FB = new FixedBitmap(pWindow,SdResId(FB_PAGE4)));
562*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
563*b1cdbd2cSJim Jagielski 		mpPage4PersonalFL = new FixedLine( pWindow, SdResId(FL_PAGE4_PERSONAL) ));
564*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
565*b1cdbd2cSJim Jagielski 		mpPage4AskNameFT   = new FixedText( pWindow, SdResId(FT_PAGE4_ASKNAME) ));
566*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
567*b1cdbd2cSJim Jagielski 		mpPage4AskNameEDT  = new Edit( pWindow, SdResId(EDT_PAGE4_ASKNAME) ));
568*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
569*b1cdbd2cSJim Jagielski 		mpPage4AskTopicFT= new FixedText( pWindow, SdResId(FT_PAGE4_ASKTOPIC) ));
570*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
571*b1cdbd2cSJim Jagielski 		mpPage4AskTopicEDT = new Edit( pWindow, SdResId(EDT_PAGE4_ASKTOPIC) ));
572*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
573*b1cdbd2cSJim Jagielski 		mpPage4AskInfoFT   = new FixedText( pWindow, SdResId(FT_PAGE4_ASKINFORMATION) ));
574*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(4,
575*b1cdbd2cSJim Jagielski 		mpPage4AskInfoEDT  = new MultiLineEdit( pWindow, SdResId(EDT_PAGE4_ASKINFORMATION) ));
576*b1cdbd2cSJim Jagielski 
577*b1cdbd2cSJim Jagielski 	mpPage4AskNameEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
578*b1cdbd2cSJim Jagielski 	mpPage4AskTopicEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
579*b1cdbd2cSJim Jagielski 	mpPage4AskInfoEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
580*b1cdbd2cSJim Jagielski 
581*b1cdbd2cSJim Jagielski 	// page 5
582*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5, &maPreview );
583*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5, &maPreviewFlag );
584*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5,
585*b1cdbd2cSJim Jagielski 		mpPage5FB = new FixedBitmap(pWindow,SdResId(FB_PAGE5)));
586*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5,
587*b1cdbd2cSJim Jagielski 		mpPage5PageListFT = new FixedText( pWindow, SdResId( FT_PAGE5_PAGELIST ) ));
588*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5,
589*b1cdbd2cSJim Jagielski 		mpPage5PageListCT = new SdPageListControl( pWindow, SdResId( CT_PAGE5_PAGELIST ) ));
590*b1cdbd2cSJim Jagielski 	maAssistentFunc.InsertControl(5,
591*b1cdbd2cSJim Jagielski 		mpPage5SummaryCB  = new CheckBox( pWindow, SdResId( CB_PAGE5_SUMMARY ) ));
592*b1cdbd2cSJim Jagielski 
593*b1cdbd2cSJim Jagielski 	mpPage5PageListCT->SetSelectHdl(LINK(this,AssistentDlgImpl, PageSelectHdl));
594*b1cdbd2cSJim Jagielski 
595*b1cdbd2cSJim Jagielski 
596*b1cdbd2cSJim Jagielski 	// generell
597*b1cdbd2cSJim Jagielski     InterpolateFixedBitmap( mpPage1FB );
598*b1cdbd2cSJim Jagielski     InterpolateFixedBitmap( mpPage2FB );
599*b1cdbd2cSJim Jagielski     InterpolateFixedBitmap( mpPage3FB );
600*b1cdbd2cSJim Jagielski     InterpolateFixedBitmap( mpPage4FB );
601*b1cdbd2cSJim Jagielski     InterpolateFixedBitmap( mpPage5FB );
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski 	maLastPageButton.SetClickHdl(LINK(this,AssistentDlgImpl, LastPageHdl ));
604*b1cdbd2cSJim Jagielski 	maNextPageButton.SetClickHdl(LINK(this,AssistentDlgImpl, NextPageHdl ));
605*b1cdbd2cSJim Jagielski 
606*b1cdbd2cSJim Jagielski 	maPreviewFlag.Check( mbPreview );
607*b1cdbd2cSJim Jagielski 	maPreviewFlag.SetClickHdl(LINK(this, AssistentDlgImpl, PreviewFlagHdl ));
608*b1cdbd2cSJim Jagielski 	maPreview.SetClickHdl(LINK(this,AssistentDlgImpl, EffectPreviewHdl ));
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski 	//setzt die Ausgangsseite
611*b1cdbd2cSJim Jagielski 	maAssistentFunc.GotoPage(1);
612*b1cdbd2cSJim Jagielski 	maLastPageButton.Disable();
613*b1cdbd2cSJim Jagielski 
614*b1cdbd2cSJim Jagielski 	maPrevTimer.SetTimeout( 200 );
615*b1cdbd2cSJim Jagielski 	maPrevTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, UpdatePreviewHdl));
616*b1cdbd2cSJim Jagielski 
617*b1cdbd2cSJim Jagielski 	maEffectPrevTimer.SetTimeout( 50 );
618*b1cdbd2cSJim Jagielski 	maEffectPrevTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, EffectPreviewHdl ));
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski 	maUpdatePageListTimer.SetTimeout( 50 );
621*b1cdbd2cSJim Jagielski 	maUpdatePageListTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, UpdatePageListHdl));
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski 	SetStartType( ST_EMPTY );
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski 	ChangePage();
626*b1cdbd2cSJim Jagielski 
627*b1cdbd2cSJim Jagielski     mpWindowUpdater->RegisterWindow (&maPreview);
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski 	UpdatePreview( sal_True );
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski 	//check wether we should start with a template document initialy and preselect it
632*b1cdbd2cSJim Jagielski 	const ::rtl::OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.presentation.PresentationDocument" ) );
633*b1cdbd2cSJim Jagielski     String aStandardTemplate( SfxObjectFactory::GetStandardTemplate( aServiceName ) );
634*b1cdbd2cSJim Jagielski     if( aStandardTemplate.Len() )
635*b1cdbd2cSJim Jagielski     {
636*b1cdbd2cSJim Jagielski         ProvideTemplates();
637*b1cdbd2cSJim Jagielski 
638*b1cdbd2cSJim Jagielski         //find aStandardTemplate in maPresentList
639*b1cdbd2cSJim Jagielski         TemplateDir*   pStandardTemplateDir = 0;
640*b1cdbd2cSJim Jagielski         TemplateEntry* pStandardTemplateEntry = 0;
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski         std::vector<TemplateDir*>::iterator	I;
643*b1cdbd2cSJim Jagielski 	    for (I=maPresentList.begin(); I!=maPresentList.end(); I++)
644*b1cdbd2cSJim Jagielski 	    {
645*b1cdbd2cSJim Jagielski 		    TemplateDir* pDir = *I;
646*b1cdbd2cSJim Jagielski 		    std::vector<TemplateEntry*>::iterator	J;
647*b1cdbd2cSJim Jagielski 			for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); J++)
648*b1cdbd2cSJim Jagielski             {
649*b1cdbd2cSJim Jagielski                 TemplateEntry* pEntry = *J;
650*b1cdbd2cSJim Jagielski                 if(pEntry->msPath == aStandardTemplate)
651*b1cdbd2cSJim Jagielski                 {
652*b1cdbd2cSJim Jagielski                     pStandardTemplateDir = pDir;
653*b1cdbd2cSJim Jagielski                     pStandardTemplateEntry = pEntry;
654*b1cdbd2cSJim Jagielski                     break;
655*b1cdbd2cSJim Jagielski                 }
656*b1cdbd2cSJim Jagielski             }
657*b1cdbd2cSJim Jagielski             if(pStandardTemplateDir)
658*b1cdbd2cSJim Jagielski                 break;
659*b1cdbd2cSJim Jagielski 	    }
660*b1cdbd2cSJim Jagielski 
661*b1cdbd2cSJim Jagielski 		//preselect template
662*b1cdbd2cSJim Jagielski         if( pStandardTemplateDir && pStandardTemplateEntry )
663*b1cdbd2cSJim Jagielski         {
664*b1cdbd2cSJim Jagielski             mpPage1RegionLB->SelectEntry( pStandardTemplateDir->msRegion );
665*b1cdbd2cSJim Jagielski             SelectTemplateRegion( pStandardTemplateDir->msRegion );
666*b1cdbd2cSJim Jagielski             mpPage1TemplateLB->SelectEntry( pStandardTemplateEntry->msTitle );
667*b1cdbd2cSJim Jagielski             SelectTemplateHdl(mpPage1TemplateLB);
668*b1cdbd2cSJim Jagielski         }
669*b1cdbd2cSJim Jagielski     }
670*b1cdbd2cSJim Jagielski }
671*b1cdbd2cSJim Jagielski 
672*b1cdbd2cSJim Jagielski 
673*b1cdbd2cSJim Jagielski 
674*b1cdbd2cSJim Jagielski 
~AssistentDlgImpl()675*b1cdbd2cSJim Jagielski AssistentDlgImpl::~AssistentDlgImpl()
676*b1cdbd2cSJim Jagielski {
677*b1cdbd2cSJim Jagielski 	CloseDocShell();
678*b1cdbd2cSJim Jagielski 
679*b1cdbd2cSJim Jagielski 	DeletePassords();
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski 	//	Delete the template file infos.
682*b1cdbd2cSJim Jagielski 	std::vector<TemplateDir*>::iterator	I;
683*b1cdbd2cSJim Jagielski 	std::vector<TemplateEntry*>::iterator	J;
684*b1cdbd2cSJim Jagielski 	for (I=maPresentList.begin(); I!=maPresentList.end(); I++)
685*b1cdbd2cSJim Jagielski 	{
686*b1cdbd2cSJim Jagielski 		for (J=(*I)->maEntries.begin(); J!=(*I)->maEntries.end(); J++)
687*b1cdbd2cSJim Jagielski 			delete (*J);
688*b1cdbd2cSJim Jagielski 		delete (*I);
689*b1cdbd2cSJim Jagielski 	}
690*b1cdbd2cSJim Jagielski 
691*b1cdbd2cSJim Jagielski 	// Seite 1
692*b1cdbd2cSJim Jagielski 	delete mpPage1FB;
693*b1cdbd2cSJim Jagielski 	delete mpPage1ArtFL;
694*b1cdbd2cSJim Jagielski 	delete mpPage1EmptyRB;
695*b1cdbd2cSJim Jagielski 	delete mpPage1TemplateRB;
696*b1cdbd2cSJim Jagielski 	delete mpPage1TemplateLB;
697*b1cdbd2cSJim Jagielski 	delete mpPage1RegionLB;
698*b1cdbd2cSJim Jagielski 	delete mpPage1OpenRB;
699*b1cdbd2cSJim Jagielski 	delete mpPage1OpenLB;
700*b1cdbd2cSJim Jagielski     delete mpPage1OpenPB;
701*b1cdbd2cSJim Jagielski 
702*b1cdbd2cSJim Jagielski 	// Seite 2
703*b1cdbd2cSJim Jagielski 	delete mpPage2FB;
704*b1cdbd2cSJim Jagielski 	delete mpPage2LayoutFL;
705*b1cdbd2cSJim Jagielski 	delete mpPage2RegionLB;
706*b1cdbd2cSJim Jagielski 	delete mpPage2LayoutLB;
707*b1cdbd2cSJim Jagielski 	delete mpPage2OutTypesFL;
708*b1cdbd2cSJim Jagielski 	delete mpPage2Medium1RB;
709*b1cdbd2cSJim Jagielski 	delete mpPage2Medium2RB;
710*b1cdbd2cSJim Jagielski 	delete mpPage2Medium3RB;
711*b1cdbd2cSJim Jagielski 	delete mpPage2Medium4RB;
712*b1cdbd2cSJim Jagielski 	delete mpPage2Medium5RB;
713*b1cdbd2cSJim Jagielski 
714*b1cdbd2cSJim Jagielski 	// Seite 3
715*b1cdbd2cSJim Jagielski 	delete mpPage3FB;
716*b1cdbd2cSJim Jagielski 	delete mpPage3EffectFL;
717*b1cdbd2cSJim Jagielski 	delete mpPage3EffectFT;
718*b1cdbd2cSJim Jagielski 	delete mpPage3EffectLB;
719*b1cdbd2cSJim Jagielski 	delete mpPage3SpeedFT;
720*b1cdbd2cSJim Jagielski 	delete mpPage3SpeedLB;
721*b1cdbd2cSJim Jagielski 	delete mpPage3PresTypeFL;
722*b1cdbd2cSJim Jagielski 	delete mpPage3PresTypeLiveRB;
723*b1cdbd2cSJim Jagielski 	delete mpPage3PresTypeKioskRB;
724*b1cdbd2cSJim Jagielski 	delete mpPage3PresTimeFT;
725*b1cdbd2cSJim Jagielski 	delete mpPage3PresTimeTMF;
726*b1cdbd2cSJim Jagielski 	delete mpPage3BreakFT;
727*b1cdbd2cSJim Jagielski 	delete mpPage3BreakTMF;
728*b1cdbd2cSJim Jagielski 	delete mpPage3LogoCB;
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski 	// Seite 4
731*b1cdbd2cSJim Jagielski 	delete mpPage4FB;
732*b1cdbd2cSJim Jagielski 	delete mpPage4PersonalFL;
733*b1cdbd2cSJim Jagielski 	delete mpPage4AskNameFT;
734*b1cdbd2cSJim Jagielski 	delete mpPage4AskNameEDT;
735*b1cdbd2cSJim Jagielski 	delete mpPage4AskTopicFT;
736*b1cdbd2cSJim Jagielski 	delete mpPage4AskTopicEDT;
737*b1cdbd2cSJim Jagielski 	delete mpPage4AskInfoFT;
738*b1cdbd2cSJim Jagielski 	delete mpPage4AskInfoEDT;
739*b1cdbd2cSJim Jagielski 
740*b1cdbd2cSJim Jagielski 	// Seite 5
741*b1cdbd2cSJim Jagielski 	delete mpPage5FB;
742*b1cdbd2cSJim Jagielski 	delete mpPage5PageListFT;
743*b1cdbd2cSJim Jagielski 	delete mpPage5PageListCT;
744*b1cdbd2cSJim Jagielski 	delete mpPage5SummaryCB;
745*b1cdbd2cSJim Jagielski 
746*b1cdbd2cSJim Jagielski 	//	Delete the file history list.
747*b1cdbd2cSJim Jagielski 	std::vector<String*>::iterator	I2;
748*b1cdbd2cSJim Jagielski 	for (I2=maOpenFilesList.begin(); I2!=maOpenFilesList.end(); I2++)
749*b1cdbd2cSJim Jagielski 		delete *I2;
750*b1cdbd2cSJim Jagielski }
751*b1cdbd2cSJim Jagielski 
CloseDocShell()752*b1cdbd2cSJim Jagielski void AssistentDlgImpl::CloseDocShell()
753*b1cdbd2cSJim Jagielski {
754*b1cdbd2cSJim Jagielski 	if(xDocShell.Is())
755*b1cdbd2cSJim Jagielski 	{
756*b1cdbd2cSJim Jagielski 		//uno::Reference< lang::XComponent > xModel( xDocShell->GetModel(), uno::UNO_QUERY );
757*b1cdbd2cSJim Jagielski 		uno::Reference< util::XCloseable > xCloseable( xDocShell->GetModel(), uno::UNO_QUERY );
758*b1cdbd2cSJim Jagielski 		//if( xModel.is() )
759*b1cdbd2cSJim Jagielski 		if( xCloseable.is() )
760*b1cdbd2cSJim Jagielski 		{
761*b1cdbd2cSJim Jagielski 			xCloseable->close( sal_True );
762*b1cdbd2cSJim Jagielski 			xDocShell = NULL;
763*b1cdbd2cSJim Jagielski 			//xModel->dispose();
764*b1cdbd2cSJim Jagielski 		}
765*b1cdbd2cSJim Jagielski 		else
766*b1cdbd2cSJim Jagielski 		{
767*b1cdbd2cSJim Jagielski 			xDocShell->DoClose();
768*b1cdbd2cSJim Jagielski 			xDocShell = NULL;
769*b1cdbd2cSJim Jagielski 		}
770*b1cdbd2cSJim Jagielski 	}
771*b1cdbd2cSJim Jagielski }
772*b1cdbd2cSJim Jagielski 
EndDialog(long)773*b1cdbd2cSJim Jagielski void AssistentDlgImpl::EndDialog( long )
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski 	mpWindow = NULL;
776*b1cdbd2cSJim Jagielski }
777*b1cdbd2cSJim Jagielski 
778*b1cdbd2cSJim Jagielski 
779*b1cdbd2cSJim Jagielski 
780*b1cdbd2cSJim Jagielski 
ScanDocmenu(void)781*b1cdbd2cSJim Jagielski void	AssistentDlgImpl::ScanDocmenu	(void)
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski     if( mbRecentDocumentsReady )
784*b1cdbd2cSJim Jagielski         return;
785*b1cdbd2cSJim Jagielski 
786*b1cdbd2cSJim Jagielski 	uno::Sequence<uno::Sequence<beans::PropertyValue> > aHistory =
787*b1cdbd2cSJim Jagielski 		SvtHistoryOptions().GetList (ePICKLIST);
788*b1cdbd2cSJim Jagielski 
789*b1cdbd2cSJim Jagielski     uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
790*b1cdbd2cSJim Jagielski     uno::Reference< container::XNameAccess > xFilterFactory( xFactory->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.FilterFactory" ) ) ), uno::UNO_QUERY );
791*b1cdbd2cSJim Jagielski 
792*b1cdbd2cSJim Jagielski     Reference< ::com::sun::star::ucb::XSimpleFileAccess > xFileAccess(
793*b1cdbd2cSJim Jagielski         xFactory->createInstance(
794*b1cdbd2cSJim Jagielski             ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess"))),
795*b1cdbd2cSJim Jagielski         UNO_QUERY_THROW);
796*b1cdbd2cSJim Jagielski 
797*b1cdbd2cSJim Jagielski 	sal_uInt32 nCount = aHistory.getLength();
798*b1cdbd2cSJim Jagielski 	for (sal_uInt32 nItem=0; nItem<nCount; ++nItem)
799*b1cdbd2cSJim Jagielski 	{
800*b1cdbd2cSJim Jagielski 		//	Get the current history item's properties.
801*b1cdbd2cSJim Jagielski 		uno::Sequence<beans::PropertyValue> aPropertySet = aHistory[nItem];
802*b1cdbd2cSJim Jagielski 		rtl::OUString	sURL;
803*b1cdbd2cSJim Jagielski 		rtl::OUString	sFilter;
804*b1cdbd2cSJim Jagielski 		rtl::OUString	sTitle;
805*b1cdbd2cSJim Jagielski 		rtl::OUString	sPassword;
806*b1cdbd2cSJim Jagielski 		sal_uInt32 nPropertyCount = aPropertySet.getLength();
807*b1cdbd2cSJim Jagielski 		for (sal_uInt32 nProperty=0; nProperty<nPropertyCount; ++nProperty)
808*b1cdbd2cSJim Jagielski 			if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_URL)
809*b1cdbd2cSJim Jagielski 				aPropertySet[nProperty].Value >>= sURL;
810*b1cdbd2cSJim Jagielski 			else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_FILTER)
811*b1cdbd2cSJim Jagielski 				aPropertySet[nProperty].Value >>= sFilter;
812*b1cdbd2cSJim Jagielski 			else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_TITLE)
813*b1cdbd2cSJim Jagielski 				aPropertySet[nProperty].Value >>= sTitle;
814*b1cdbd2cSJim Jagielski 			else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_PASSWORD)
815*b1cdbd2cSJim Jagielski 				aPropertySet[nProperty].Value >>= sPassword;
816*b1cdbd2cSJim Jagielski 
817*b1cdbd2cSJim Jagielski         //	If the entry is an impress file then insert it into the
818*b1cdbd2cSJim Jagielski         //	history list and the list box.
819*b1cdbd2cSJim Jagielski         uno::Sequence< beans::PropertyValue > lProps;
820*b1cdbd2cSJim Jagielski         if (xFilterFactory->hasByName(sFilter))
821*b1cdbd2cSJim Jagielski         {
822*b1cdbd2cSJim Jagielski             uno::Any aFilterPropSet = xFilterFactory->getByName( sFilter );
823*b1cdbd2cSJim Jagielski             aFilterPropSet >>= lProps;
824*b1cdbd2cSJim Jagielski         }
825*b1cdbd2cSJim Jagielski 
826*b1cdbd2cSJim Jagielski         sal_Int32 nPropCount = lProps.getLength();
827*b1cdbd2cSJim Jagielski         rtl::OUString sFactoryName;
828*b1cdbd2cSJim Jagielski         for( sal_Int32 i=0; i<nPropCount; ++i )
829*b1cdbd2cSJim Jagielski         {
830*b1cdbd2cSJim Jagielski             if( lProps[i].Name.compareToAscii( "DocumentService" ) == 0 &&
831*b1cdbd2cSJim Jagielski                 (lProps[i].Value >>= sFactoryName) &&
832*b1cdbd2cSJim Jagielski                 sFactoryName.compareToAscii( "com.sun.star.presentation.PresentationDocument" ) == 0 )
833*b1cdbd2cSJim Jagielski             {
834*b1cdbd2cSJim Jagielski                 // yes, it's an impress document
835*b1cdbd2cSJim Jagielski                 INetURLObject aURL;
836*b1cdbd2cSJim Jagielski 
837*b1cdbd2cSJim Jagielski                 // Do not include the file if it does not exist.
838*b1cdbd2cSJim Jagielski                 if (xFileAccess.is() && ! xFileAccess->exists(sURL))
839*b1cdbd2cSJim Jagielski                     continue;
840*b1cdbd2cSJim Jagielski 
841*b1cdbd2cSJim Jagielski                 aURL.SetSmartURL (sURL);
842*b1cdbd2cSJim Jagielski                 // The password is set only when it is not empty.
843*b1cdbd2cSJim Jagielski                 if (sPassword.getLength() > 0)
844*b1cdbd2cSJim Jagielski 	                aURL.SetPass (sPassword);
845*b1cdbd2cSJim Jagielski                 maOpenFilesList.push_back (new String (aURL.GetMainURL( INetURLObject::NO_DECODE )));
846*b1cdbd2cSJim Jagielski                 mpPage1OpenLB->InsertEntry (sTitle);
847*b1cdbd2cSJim Jagielski                 break;
848*b1cdbd2cSJim Jagielski             }
849*b1cdbd2cSJim Jagielski 		}
850*b1cdbd2cSJim Jagielski 	}
851*b1cdbd2cSJim Jagielski     mbRecentDocumentsReady = sal_True;
852*b1cdbd2cSJim Jagielski     try
853*b1cdbd2cSJim Jagielski     {
854*b1cdbd2cSJim Jagielski         UpdatePreview(sal_True);
855*b1cdbd2cSJim Jagielski     }
856*b1cdbd2cSJim Jagielski     catch (uno::RuntimeException& )
857*b1cdbd2cSJim Jagielski     {
858*b1cdbd2cSJim Jagielski         // Ignore all exceptions.
859*b1cdbd2cSJim Jagielski     }
860*b1cdbd2cSJim Jagielski }
861*b1cdbd2cSJim Jagielski 
862*b1cdbd2cSJim Jagielski 
863*b1cdbd2cSJim Jagielski 
ProvideTemplates(void)864*b1cdbd2cSJim Jagielski void AssistentDlgImpl::ProvideTemplates (void)
865*b1cdbd2cSJim Jagielski {
866*b1cdbd2cSJim Jagielski     if ( ! mbTemplatesReady)
867*b1cdbd2cSJim Jagielski     {
868*b1cdbd2cSJim Jagielski         TemplateScanner aScanner;
869*b1cdbd2cSJim Jagielski         aScanner.Scan ();
870*b1cdbd2cSJim Jagielski         TemplateScanDone (aScanner.GetFolderList());
871*b1cdbd2cSJim Jagielski 
872*b1cdbd2cSJim Jagielski         try
873*b1cdbd2cSJim Jagielski         {
874*b1cdbd2cSJim Jagielski             UpdatePreview(sal_True);
875*b1cdbd2cSJim Jagielski         }
876*b1cdbd2cSJim Jagielski         catch (uno::RuntimeException& e)
877*b1cdbd2cSJim Jagielski         {
878*b1cdbd2cSJim Jagielski             // Ignore all exceptions.
879*b1cdbd2cSJim Jagielski             (void) e;
880*b1cdbd2cSJim Jagielski         }
881*b1cdbd2cSJim Jagielski     }
882*b1cdbd2cSJim Jagielski }
883*b1cdbd2cSJim Jagielski 
TemplateScanDone(std::vector<TemplateDir * > & rTemplateFolder)884*b1cdbd2cSJim Jagielski void AssistentDlgImpl::TemplateScanDone (
885*b1cdbd2cSJim Jagielski     std::vector<TemplateDir*>& rTemplateFolder)
886*b1cdbd2cSJim Jagielski {
887*b1cdbd2cSJim Jagielski 	//	This method is called from a thread.  Therefore we get the solar mutex.
888*b1cdbd2cSJim Jagielski 	::vos::OGuard aGuard (Application::GetSolarMutex());
889*b1cdbd2cSJim Jagielski 
890*b1cdbd2cSJim Jagielski     // Copy the contents of the given template folders to a local list.
891*b1cdbd2cSJim Jagielski     maPresentList.swap (rTemplateFolder);
892*b1cdbd2cSJim Jagielski 
893*b1cdbd2cSJim Jagielski 	//	Fill in the list box on the first page.
894*b1cdbd2cSJim Jagielski 	int nFirstEntry = 0;
895*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->Clear();
896*b1cdbd2cSJim Jagielski 	std::vector<TemplateDir*>::iterator	I;
897*b1cdbd2cSJim Jagielski 	int	i;
898*b1cdbd2cSJim Jagielski 	for (i=0,I=maPresentList.begin(); I!=maPresentList.end(); I++,i++)
899*b1cdbd2cSJim Jagielski 	{
900*b1cdbd2cSJim Jagielski 		TemplateDir* pDir = *I;
901*b1cdbd2cSJim Jagielski         if (pDir == NULL)
902*b1cdbd2cSJim Jagielski             continue;
903*b1cdbd2cSJim Jagielski 
904*b1cdbd2cSJim Jagielski         // HACK! presnt directory is always initially selected.
905*b1cdbd2cSJim Jagielski         // We have to look at the first entry to get a URL.
906*b1cdbd2cSJim Jagielski         if (!pDir->maEntries.empty() )
907*b1cdbd2cSJim Jagielski         {
908*b1cdbd2cSJim Jagielski             TemplateEntry* pEntry = pDir->maEntries.front();
909*b1cdbd2cSJim Jagielski             if (pEntry != NULL)
910*b1cdbd2cSJim Jagielski                 if (pEntry->msPath.SearchAscii("presnt") != STRING_NOTFOUND)
911*b1cdbd2cSJim Jagielski                     nFirstEntry = i;
912*b1cdbd2cSJim Jagielski         }
913*b1cdbd2cSJim Jagielski 
914*b1cdbd2cSJim Jagielski 		mpPage1RegionLB->InsertEntry (pDir->msRegion);
915*b1cdbd2cSJim Jagielski 	}
916*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->SelectEntryPos ((sal_uInt16)nFirstEntry);
917*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->Update();
918*b1cdbd2cSJim Jagielski 	SelectTemplateRegion (mpPage1RegionLB->GetSelectEntry());
919*b1cdbd2cSJim Jagielski 
920*b1cdbd2cSJim Jagielski 	//	Fill in the list box on the second page.
921*b1cdbd2cSJim Jagielski 	nFirstEntry = 0;
922*b1cdbd2cSJim Jagielski 	mpPage2RegionLB->Clear();
923*b1cdbd2cSJim Jagielski 	for (i=0,I=maPresentList.begin(); I!=maPresentList.end(); I++,i++)
924*b1cdbd2cSJim Jagielski 	{
925*b1cdbd2cSJim Jagielski 		TemplateDir* pDir = *I;
926*b1cdbd2cSJim Jagielski         if (pDir == NULL)
927*b1cdbd2cSJim Jagielski             continue;
928*b1cdbd2cSJim Jagielski 
929*b1cdbd2cSJim Jagielski 		// HACK! layout directory is always initially selected.
930*b1cdbd2cSJim Jagielski         // We have to look at the first entry to get a URL.
931*b1cdbd2cSJim Jagielski         if (!pDir->maEntries.empty() )
932*b1cdbd2cSJim Jagielski         {
933*b1cdbd2cSJim Jagielski             TemplateEntry* pEntry = pDir->maEntries.front();
934*b1cdbd2cSJim Jagielski             if (pEntry != NULL)
935*b1cdbd2cSJim Jagielski                 if (pEntry->msPath.SearchAscii("layout") != STRING_NOTFOUND)
936*b1cdbd2cSJim Jagielski                     nFirstEntry = i;
937*b1cdbd2cSJim Jagielski         }
938*b1cdbd2cSJim Jagielski 
939*b1cdbd2cSJim Jagielski 		mpPage2RegionLB->InsertEntry (pDir->msRegion);
940*b1cdbd2cSJim Jagielski 	}
941*b1cdbd2cSJim Jagielski 	mpPage2RegionLB->SelectEntryPos ((sal_uInt16)nFirstEntry);
942*b1cdbd2cSJim Jagielski 	mpPage2RegionLB->Update();
943*b1cdbd2cSJim Jagielski 	SelectLayoutRegion (mpPage2RegionLB->GetSelectEntry());
944*b1cdbd2cSJim Jagielski 
945*b1cdbd2cSJim Jagielski 	//	Make the changes visible.
946*b1cdbd2cSJim Jagielski 	mbTemplatesReady = sal_True;
947*b1cdbd2cSJim Jagielski 	if (mpWindow)
948*b1cdbd2cSJim Jagielski 		UpdatePage();
949*b1cdbd2cSJim Jagielski }
950*b1cdbd2cSJim Jagielski 
951*b1cdbd2cSJim Jagielski 
952*b1cdbd2cSJim Jagielski 
953*b1cdbd2cSJim Jagielski 
954*b1cdbd2cSJim Jagielski // ********************************************************************
955*b1cdbd2cSJim Jagielski // Status Methoden
956*b1cdbd2cSJim Jagielski // ********************************************************************
957*b1cdbd2cSJim Jagielski 
SetStartType(StartType eType)958*b1cdbd2cSJim Jagielski void AssistentDlgImpl::SetStartType( StartType eType )
959*b1cdbd2cSJim Jagielski {
960*b1cdbd2cSJim Jagielski 	mpPage1EmptyRB->SetState( eType == ST_EMPTY );
961*b1cdbd2cSJim Jagielski 	mpPage1TemplateRB->SetState( eType == ST_TEMPLATE );
962*b1cdbd2cSJim Jagielski 	mpPage1OpenRB->SetState( eType == ST_OPEN );
963*b1cdbd2cSJim Jagielski 	maNextPageButton.Enable( eType != ST_OPEN );
964*b1cdbd2cSJim Jagielski 
965*b1cdbd2cSJim Jagielski 	mpPage1RegionLB->Show(eType == ST_TEMPLATE);
966*b1cdbd2cSJim Jagielski 	mpPage1TemplateLB->Show(eType == ST_TEMPLATE);
967*b1cdbd2cSJim Jagielski 	mpPage1OpenLB->Show(eType == ST_OPEN);
968*b1cdbd2cSJim Jagielski 	mpPage1OpenPB->Show(eType == ST_OPEN);
969*b1cdbd2cSJim Jagielski 
970*b1cdbd2cSJim Jagielski 	if (eType == ST_OPEN)
971*b1cdbd2cSJim Jagielski 		maFinishButton.SetText(maOpenStr);
972*b1cdbd2cSJim Jagielski 	else
973*b1cdbd2cSJim Jagielski 		maFinishButton.SetText(maCreateStr);
974*b1cdbd2cSJim Jagielski }
975*b1cdbd2cSJim Jagielski 
GetStartType()976*b1cdbd2cSJim Jagielski StartType AssistentDlgImpl::GetStartType()
977*b1cdbd2cSJim Jagielski {
978*b1cdbd2cSJim Jagielski 	if( mpPage1EmptyRB->IsChecked() )
979*b1cdbd2cSJim Jagielski 		return ST_EMPTY;
980*b1cdbd2cSJim Jagielski 	else if( mpPage1TemplateRB->IsChecked() )
981*b1cdbd2cSJim Jagielski 		return ST_TEMPLATE;
982*b1cdbd2cSJim Jagielski 	else
983*b1cdbd2cSJim Jagielski 		return ST_OPEN;
984*b1cdbd2cSJim Jagielski }
985*b1cdbd2cSJim Jagielski 
GetDocFileName()986*b1cdbd2cSJim Jagielski String AssistentDlgImpl::GetDocFileName()
987*b1cdbd2cSJim Jagielski {
988*b1cdbd2cSJim Jagielski 	String aTitle;
989*b1cdbd2cSJim Jagielski 	if(mpWindow)
990*b1cdbd2cSJim Jagielski 	{
991*b1cdbd2cSJim Jagielski 		aTitle = mpWindow->GetText();
992*b1cdbd2cSJim Jagielski 		sal_uInt16 nPos = aTitle.Search(sal_Unicode('('));
993*b1cdbd2cSJim Jagielski 		if(nPos != STRING_NOTFOUND)
994*b1cdbd2cSJim Jagielski 			aTitle.Erase( nPos-1 );
995*b1cdbd2cSJim Jagielski 	}
996*b1cdbd2cSJim Jagielski 
997*b1cdbd2cSJim Jagielski 	String aDocFile;
998*b1cdbd2cSJim Jagielski 	if( GetStartType() == ST_TEMPLATE )
999*b1cdbd2cSJim Jagielski 	{
1000*b1cdbd2cSJim Jagielski 		const sal_uInt16 nEntry = mpPage1TemplateLB->GetSelectEntryPos();
1001*b1cdbd2cSJim Jagielski 		TemplateEntry* pEntry = NULL;
1002*b1cdbd2cSJim Jagielski 		if(nEntry != (sal_uInt16)-1)
1003*b1cdbd2cSJim Jagielski 			pEntry = mpTemplateRegion->maEntries[nEntry];
1004*b1cdbd2cSJim Jagielski 
1005*b1cdbd2cSJim Jagielski 		if(pEntry)
1006*b1cdbd2cSJim Jagielski 		{
1007*b1cdbd2cSJim Jagielski 			aDocFile = pEntry->msPath;
1008*b1cdbd2cSJim Jagielski 
1009*b1cdbd2cSJim Jagielski 			aTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM(  " (" ) );
1010*b1cdbd2cSJim Jagielski 			aTitle.Append( pEntry->msTitle );
1011*b1cdbd2cSJim Jagielski 			aTitle.Append( sal_Unicode(')') );
1012*b1cdbd2cSJim Jagielski 		}
1013*b1cdbd2cSJim Jagielski 	}
1014*b1cdbd2cSJim Jagielski 	else if( GetStartType() == ST_OPEN )
1015*b1cdbd2cSJim Jagielski 	{
1016*b1cdbd2cSJim Jagielski 		const sal_uInt16 nEntry = mpPage1OpenLB->GetSelectEntryPos();
1017*b1cdbd2cSJim Jagielski 		if(nEntry != (sal_uInt16)-1 )
1018*b1cdbd2cSJim Jagielski 			aDocFile = *maOpenFilesList[nEntry];
1019*b1cdbd2cSJim Jagielski 	}
1020*b1cdbd2cSJim Jagielski 
1021*b1cdbd2cSJim Jagielski 	if(mpWindow)
1022*b1cdbd2cSJim Jagielski 		mpWindow->SetText(aTitle);
1023*b1cdbd2cSJim Jagielski 
1024*b1cdbd2cSJim Jagielski 	return aDocFile;
1025*b1cdbd2cSJim Jagielski }
1026*b1cdbd2cSJim Jagielski 
GetLayoutFileName()1027*b1cdbd2cSJim Jagielski String AssistentDlgImpl::GetLayoutFileName()
1028*b1cdbd2cSJim Jagielski {
1029*b1cdbd2cSJim Jagielski 	String aFile;
1030*b1cdbd2cSJim Jagielski 	const sal_uInt16 nEntry = mpPage2LayoutLB->GetSelectEntryPos();
1031*b1cdbd2cSJim Jagielski 	TemplateEntry* pEntry = NULL;
1032*b1cdbd2cSJim Jagielski 	if(nEntry != (sal_uInt16)-1 && nEntry > 0)
1033*b1cdbd2cSJim Jagielski 		pEntry = mpLayoutRegion->maEntries[nEntry-1];
1034*b1cdbd2cSJim Jagielski 
1035*b1cdbd2cSJim Jagielski 	if(pEntry)
1036*b1cdbd2cSJim Jagielski 		aFile = pEntry->msPath;
1037*b1cdbd2cSJim Jagielski 
1038*b1cdbd2cSJim Jagielski 	return aFile;
1039*b1cdbd2cSJim Jagielski }
1040*b1cdbd2cSJim Jagielski 
GetDocument()1041*b1cdbd2cSJim Jagielski SfxObjectShellLock AssistentDlgImpl::GetDocument()
1042*b1cdbd2cSJim Jagielski {
1043*b1cdbd2cSJim Jagielski //	mbPreview = sal_False;		// Document nicht anzeigen
1044*b1cdbd2cSJim Jagielski 	UpdatePreview(sal_False);	// aber komplett laden
1045*b1cdbd2cSJim Jagielski 	UpdatePageList();
1046*b1cdbd2cSJim Jagielski 
1047*b1cdbd2cSJim Jagielski 	SfxObjectShell* pShell = xDocShell;
1048*b1cdbd2cSJim Jagielski 	::sd::DrawDocShell* pDocShell = PTR_CAST(::sd::DrawDocShell,pShell);
1049*b1cdbd2cSJim Jagielski 	SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
1050*b1cdbd2cSJim Jagielski 
1051*b1cdbd2cSJim Jagielski 	if(pDoc)
1052*b1cdbd2cSJim Jagielski 	{
1053*b1cdbd2cSJim Jagielski 		const sal_uInt16 nPageCount = pDoc->GetSdPageCount(PK_STANDARD);
1054*b1cdbd2cSJim Jagielski 		sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
1055*b1cdbd2cSJim Jagielski 		sal_uInt32 nNewTime = (sal_uInt32)mpPage3PresTimeTMF->GetTime().GetMSFromTime() / 1000;
1056*b1cdbd2cSJim Jagielski 		if(bKiosk)
1057*b1cdbd2cSJim Jagielski 		{
1058*b1cdbd2cSJim Jagielski 			PresentationSettings& rSettings = pDoc->getPresentationSettings();
1059*b1cdbd2cSJim Jagielski 			rSettings.mbEndless = bKiosk;
1060*b1cdbd2cSJim Jagielski 			rSettings.mnPauseTimeout = (sal_Int32)mpPage3BreakTMF->GetTime().GetMSFromTime() / 1000;
1061*b1cdbd2cSJim Jagielski 			rSettings.mbShowPauseLogo = mpPage3LogoCB->IsChecked();
1062*b1cdbd2cSJim Jagielski 		}
1063*b1cdbd2cSJim Jagielski 
1064*b1cdbd2cSJim Jagielski 		sal_uInt16 nPgAbsNum = 0;
1065*b1cdbd2cSJim Jagielski 		sal_uInt16 nPgRelNum = 0;
1066*b1cdbd2cSJim Jagielski 		while( nPgAbsNum < nPageCount )
1067*b1cdbd2cSJim Jagielski 		{
1068*b1cdbd2cSJim Jagielski 			SdPage* pPage = pDoc->GetSdPage( nPgRelNum, PK_STANDARD );
1069*b1cdbd2cSJim Jagielski 			if( mpPage5PageListCT->IsPageChecked(nPgAbsNum) )
1070*b1cdbd2cSJim Jagielski 			{
1071*b1cdbd2cSJim Jagielski 				mpPage3EffectLB->applySelected(pPage);
1072*b1cdbd2cSJim Jagielski 				const sal_uInt16 nPos = mpPage3SpeedLB->GetSelectEntryPos();
1073*b1cdbd2cSJim Jagielski 		        pPage->setTransitionDuration( (nPos == 0) ? 3.0 : (nPos == 1) ? 2.0 : 1.0 );
1074*b1cdbd2cSJim Jagielski 				if(bKiosk)
1075*b1cdbd2cSJim Jagielski 				{
1076*b1cdbd2cSJim Jagielski 					pPage->SetPresChange( PRESCHANGE_AUTO );
1077*b1cdbd2cSJim Jagielski 					pPage->SetTime(nNewTime);
1078*b1cdbd2cSJim Jagielski 				}
1079*b1cdbd2cSJim Jagielski 				nPgRelNum++;
1080*b1cdbd2cSJim Jagielski 			}
1081*b1cdbd2cSJim Jagielski 			else
1082*b1cdbd2cSJim Jagielski 			{
1083*b1cdbd2cSJim Jagielski 				// diese Seite loeschen
1084*b1cdbd2cSJim Jagielski 				pDoc->DeletePage( (nPgRelNum << 1) + 2 ); // Notizseite loeschen
1085*b1cdbd2cSJim Jagielski 				pDoc->DeletePage( (nPgRelNum << 1) + 1 );	// Seite loeschen
1086*b1cdbd2cSJim Jagielski 			}
1087*b1cdbd2cSJim Jagielski 
1088*b1cdbd2cSJim Jagielski 			nPgAbsNum++;
1089*b1cdbd2cSJim Jagielski 		}
1090*b1cdbd2cSJim Jagielski 	}
1091*b1cdbd2cSJim Jagielski 	else
1092*b1cdbd2cSJim Jagielski 	{
1093*b1cdbd2cSJim Jagielski 		DBG_ERROR("sd::AssistentDlgImpl::GetDocument(), no template?");
1094*b1cdbd2cSJim Jagielski 	}
1095*b1cdbd2cSJim Jagielski 
1096*b1cdbd2cSJim Jagielski 	SfxObjectShellLock xRet = xDocShell;
1097*b1cdbd2cSJim Jagielski 	xDocShell = NULL;
1098*b1cdbd2cSJim Jagielski 
1099*b1cdbd2cSJim Jagielski 	return xRet;
1100*b1cdbd2cSJim Jagielski }
1101*b1cdbd2cSJim Jagielski 
LeavePage()1102*b1cdbd2cSJim Jagielski void AssistentDlgImpl::LeavePage()
1103*b1cdbd2cSJim Jagielski {
1104*b1cdbd2cSJim Jagielski 	int nPage = maAssistentFunc.GetCurrentPage();
1105*b1cdbd2cSJim Jagielski 
1106*b1cdbd2cSJim Jagielski 	if( nPage == 4 && mbUserDataDirty )
1107*b1cdbd2cSJim Jagielski 		maPrevTimer.Start();
1108*b1cdbd2cSJim Jagielski }
1109*b1cdbd2cSJim Jagielski 
ChangePage()1110*b1cdbd2cSJim Jagielski void AssistentDlgImpl::ChangePage()
1111*b1cdbd2cSJim Jagielski {
1112*b1cdbd2cSJim Jagielski 	maNextPageButton.Enable(!maAssistentFunc.IsLastPage());
1113*b1cdbd2cSJim Jagielski 	maLastPageButton.Enable(!maAssistentFunc.IsFirstPage());
1114*b1cdbd2cSJim Jagielski 
1115*b1cdbd2cSJim Jagielski 	sal_uInt16 nPage = (sal_uInt16)maAssistentFunc.GetCurrentPage();
1116*b1cdbd2cSJim Jagielski 
1117*b1cdbd2cSJim Jagielski 	if( mpWindow )
1118*b1cdbd2cSJim Jagielski 	{
1119*b1cdbd2cSJim Jagielski 		mpWindow->SetHelpId( PageHelpIds[nPage-1]);
1120*b1cdbd2cSJim Jagielski 	}
1121*b1cdbd2cSJim Jagielski 
1122*b1cdbd2cSJim Jagielski 	UpdatePage();
1123*b1cdbd2cSJim Jagielski 
1124*b1cdbd2cSJim Jagielski 	if( maNextPageButton.IsEnabled() )
1125*b1cdbd2cSJim Jagielski 	{
1126*b1cdbd2cSJim Jagielski 	  maNextPageButton.ForceFocusEventBroadcast();
1127*b1cdbd2cSJim Jagielski 	}
1128*b1cdbd2cSJim Jagielski 	else
1129*b1cdbd2cSJim Jagielski 		maFinishButton.GrabFocus();
1130*b1cdbd2cSJim Jagielski }
1131*b1cdbd2cSJim Jagielski 
UpdatePage()1132*b1cdbd2cSJim Jagielski void AssistentDlgImpl::UpdatePage()
1133*b1cdbd2cSJim Jagielski {
1134*b1cdbd2cSJim Jagielski 	sal_uInt16 nPage = (sal_uInt16)maAssistentFunc.GetCurrentPage();
1135*b1cdbd2cSJim Jagielski 
1136*b1cdbd2cSJim Jagielski 	switch(nPage)
1137*b1cdbd2cSJim Jagielski 	{
1138*b1cdbd2cSJim Jagielski 	case 1:
1139*b1cdbd2cSJim Jagielski 		{
1140*b1cdbd2cSJim Jagielski 			// Elemente auf der ersten Seite abhaengig vom Starttype Zeigen
1141*b1cdbd2cSJim Jagielski 			SetStartType( GetStartType() );
1142*b1cdbd2cSJim Jagielski 			mpPage1TemplateRB->Enable(sal_True /*mbTemplatesReady*/);
1143*b1cdbd2cSJim Jagielski 			break;
1144*b1cdbd2cSJim Jagielski 		}
1145*b1cdbd2cSJim Jagielski 
1146*b1cdbd2cSJim Jagielski 	case 2:
1147*b1cdbd2cSJim Jagielski 		{
1148*b1cdbd2cSJim Jagielski 			mpPage2RegionLB->Enable(mbTemplatesReady);
1149*b1cdbd2cSJim Jagielski 			mpPage2LayoutLB->Enable(mbTemplatesReady);
1150*b1cdbd2cSJim Jagielski 
1151*b1cdbd2cSJim Jagielski 			if( GetStartType() != ST_EMPTY )
1152*b1cdbd2cSJim Jagielski 			{
1153*b1cdbd2cSJim Jagielski 				mpPage2Medium5RB->Enable( sal_True );
1154*b1cdbd2cSJim Jagielski 			}
1155*b1cdbd2cSJim Jagielski 			else
1156*b1cdbd2cSJim Jagielski 			{
1157*b1cdbd2cSJim Jagielski 				mpPage2Medium5RB->Enable( sal_False );
1158*b1cdbd2cSJim Jagielski 				if(mpPage2Medium5RB->IsChecked())
1159*b1cdbd2cSJim Jagielski 					mpPage2Medium1RB->Check();
1160*b1cdbd2cSJim Jagielski 			}
1161*b1cdbd2cSJim Jagielski 
1162*b1cdbd2cSJim Jagielski 			break;
1163*b1cdbd2cSJim Jagielski 		}
1164*b1cdbd2cSJim Jagielski 	case 5:
1165*b1cdbd2cSJim Jagielski 		{
1166*b1cdbd2cSJim Jagielski 			if(mbDocPreview || maPageListFile != maDocFile)
1167*b1cdbd2cSJim Jagielski 				mpPage5PageListCT->Clear();
1168*b1cdbd2cSJim Jagielski 
1169*b1cdbd2cSJim Jagielski 			maUpdatePageListTimer.Start();
1170*b1cdbd2cSJim Jagielski 			break;
1171*b1cdbd2cSJim Jagielski 		}
1172*b1cdbd2cSJim Jagielski 
1173*b1cdbd2cSJim Jagielski 	case 3:
1174*b1cdbd2cSJim Jagielski 		{
1175*b1cdbd2cSJim Jagielski 			if(GetStartType() != ST_TEMPLATE)
1176*b1cdbd2cSJim Jagielski 				maNextPageButton.Enable(false);
1177*b1cdbd2cSJim Jagielski 
1178*b1cdbd2cSJim Jagielski 			sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
1179*b1cdbd2cSJim Jagielski 			mpPage3PresTimeFT->Enable(bKiosk);
1180*b1cdbd2cSJim Jagielski 			mpPage3BreakFT->Enable(bKiosk);
1181*b1cdbd2cSJim Jagielski 			mpPage3PresTimeTMF->Enable(bKiosk);
1182*b1cdbd2cSJim Jagielski 			mpPage3BreakTMF->Enable(bKiosk);
1183*b1cdbd2cSJim Jagielski 			mpPage3LogoCB->Enable(bKiosk);
1184*b1cdbd2cSJim Jagielski 			break;
1185*b1cdbd2cSJim Jagielski 		}
1186*b1cdbd2cSJim Jagielski 	}
1187*b1cdbd2cSJim Jagielski }
1188*b1cdbd2cSJim Jagielski 
1189*b1cdbd2cSJim Jagielski // ********************************************************************
1190*b1cdbd2cSJim Jagielski // UI-Handler
1191*b1cdbd2cSJim Jagielski // ********************************************************************
1192*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,SelectRegionHdl,ListBox *,pLB)1193*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, SelectRegionHdl, ListBox *, pLB )
1194*b1cdbd2cSJim Jagielski {
1195*b1cdbd2cSJim Jagielski 	if( pLB == mpPage1RegionLB )
1196*b1cdbd2cSJim Jagielski 	{
1197*b1cdbd2cSJim Jagielski 		SelectTemplateRegion( pLB->GetSelectEntry() );
1198*b1cdbd2cSJim Jagielski 		SetStartType( ST_TEMPLATE );
1199*b1cdbd2cSJim Jagielski 		mpPage2Medium5RB->Check();
1200*b1cdbd2cSJim Jagielski 	}
1201*b1cdbd2cSJim Jagielski 	else
1202*b1cdbd2cSJim Jagielski 	{
1203*b1cdbd2cSJim Jagielski 		SelectLayoutRegion( pLB->GetSelectEntry() );
1204*b1cdbd2cSJim Jagielski 	}
1205*b1cdbd2cSJim Jagielski 
1206*b1cdbd2cSJim Jagielski 	return 0;
1207*b1cdbd2cSJim Jagielski }
1208*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,SelectEffectHdl,void *,EMPTYARG)1209*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, SelectEffectHdl, void*, EMPTYARG )
1210*b1cdbd2cSJim Jagielski {
1211*b1cdbd2cSJim Jagielski 	maEffectPrevTimer.Start();
1212*b1cdbd2cSJim Jagielski 	return 0;
1213*b1cdbd2cSJim Jagielski }
1214*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,OpenButtonHdl,Button *,pButton)1215*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, OpenButtonHdl, Button*, pButton )
1216*b1cdbd2cSJim Jagielski {
1217*b1cdbd2cSJim Jagielski     // Clear the selection and forward the call.
1218*b1cdbd2cSJim Jagielski     mpPage1OpenLB->SetNoSelection();
1219*b1cdbd2cSJim Jagielski     return mpPage1OpenLB->GetDoubleClickHdl().Call(pButton);
1220*b1cdbd2cSJim Jagielski }
1221*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,EffectPreviewHdl,Button *,EMPTYARG)1222*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, EffectPreviewHdl, Button *, EMPTYARG )
1223*b1cdbd2cSJim Jagielski {
1224*b1cdbd2cSJim Jagielski 	if(mbPreview && xDocShell.Is() )
1225*b1cdbd2cSJim Jagielski 	{
1226*b1cdbd2cSJim Jagielski 		SfxObjectShell* pShell = xDocShell;
1227*b1cdbd2cSJim Jagielski 		DrawDocShell* pDocShell = dynamic_cast< DrawDocShell * >(pShell);
1228*b1cdbd2cSJim Jagielski 		if( pDocShell )
1229*b1cdbd2cSJim Jagielski 		{
1230*b1cdbd2cSJim Jagielski 			SdDrawDocument* pDoc = pDocShell->GetDoc();
1231*b1cdbd2cSJim Jagielski 			if( pDoc )
1232*b1cdbd2cSJim Jagielski 			{
1233*b1cdbd2cSJim Jagielski 				SdPage* pPage = pDoc->GetSdPage( mnShowPage, PK_STANDARD );
1234*b1cdbd2cSJim Jagielski 				if( pPage )
1235*b1cdbd2cSJim Jagielski 					mpPage3EffectLB->applySelected(pPage);
1236*b1cdbd2cSJim Jagielski 			}
1237*b1cdbd2cSJim Jagielski 		}
1238*b1cdbd2cSJim Jagielski 		maPreview.startPreview();
1239*b1cdbd2cSJim Jagielski 	}
1240*b1cdbd2cSJim Jagielski 	return 0;
1241*b1cdbd2cSJim Jagielski }
1242*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,PreviewFlagHdl,CheckBox *,EMPTYARG)1243*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, PreviewFlagHdl, CheckBox *, EMPTYARG )
1244*b1cdbd2cSJim Jagielski 
1245*b1cdbd2cSJim Jagielski {
1246*b1cdbd2cSJim Jagielski 	if( maPreviewFlag.IsChecked() != mbPreview )
1247*b1cdbd2cSJim Jagielski 	{
1248*b1cdbd2cSJim Jagielski 		mbPreview = maPreviewFlag.IsChecked();
1249*b1cdbd2cSJim Jagielski 		UpdatePreview(sal_True);
1250*b1cdbd2cSJim Jagielski 	}
1251*b1cdbd2cSJim Jagielski 	return 0;
1252*b1cdbd2cSJim Jagielski }
1253*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,SelectTemplateHdl,ListBox *,EMPTYARG)1254*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, SelectTemplateHdl, ListBox *, EMPTYARG )
1255*b1cdbd2cSJim Jagielski {
1256*b1cdbd2cSJim Jagielski 	SetStartType( ST_TEMPLATE );
1257*b1cdbd2cSJim Jagielski 	mpPage2Medium5RB->Check();
1258*b1cdbd2cSJim Jagielski 	mpPage2LayoutLB->SelectEntryPos(0);
1259*b1cdbd2cSJim Jagielski 	maPrevTimer.Start();
1260*b1cdbd2cSJim Jagielski 	return 0;
1261*b1cdbd2cSJim Jagielski }
1262*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,SelectLayoutHdl,ListBox *,EMPTYARG)1263*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, SelectLayoutHdl, ListBox *, EMPTYARG )
1264*b1cdbd2cSJim Jagielski {
1265*b1cdbd2cSJim Jagielski 	maPrevTimer.Start();
1266*b1cdbd2cSJim Jagielski 	return 0;
1267*b1cdbd2cSJim Jagielski }
1268*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,SelectFileHdl,ListBox *,EMPTYARG)1269*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, SelectFileHdl, ListBox *, EMPTYARG )
1270*b1cdbd2cSJim Jagielski {
1271*b1cdbd2cSJim Jagielski 	SetStartType( ST_OPEN );
1272*b1cdbd2cSJim Jagielski 	maPrevTimer.Start();
1273*b1cdbd2cSJim Jagielski 	return 0;
1274*b1cdbd2cSJim Jagielski }
1275*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,PageSelectHdl,Control *,EMPTYARG)1276*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, PageSelectHdl, Control *, EMPTYARG )
1277*b1cdbd2cSJim Jagielski {
1278*b1cdbd2cSJim Jagielski 	sal_uInt16 nPage = mpPage5PageListCT->GetSelectedPage();
1279*b1cdbd2cSJim Jagielski 	if( mnShowPage != nPage )
1280*b1cdbd2cSJim Jagielski 	{
1281*b1cdbd2cSJim Jagielski 		mnShowPage = nPage;
1282*b1cdbd2cSJim Jagielski 		UpdatePreview(sal_False);
1283*b1cdbd2cSJim Jagielski 	}
1284*b1cdbd2cSJim Jagielski 
1285*b1cdbd2cSJim Jagielski 	return 0;
1286*b1cdbd2cSJim Jagielski }
1287*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,UpdatePageListHdl,void *,EMPTYARG)1288*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, UpdatePageListHdl, void *, EMPTYARG )
1289*b1cdbd2cSJim Jagielski {
1290*b1cdbd2cSJim Jagielski 	UpdatePageList();
1291*b1cdbd2cSJim Jagielski 	return 0;
1292*b1cdbd2cSJim Jagielski }
1293*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,UpdatePreviewHdl,void *,EMPTYARG)1294*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, UpdatePreviewHdl, void *, EMPTYARG )
1295*b1cdbd2cSJim Jagielski {
1296*b1cdbd2cSJim Jagielski 	UpdatePreview( sal_True );
1297*b1cdbd2cSJim Jagielski 	return 0;
1298*b1cdbd2cSJim Jagielski }
1299*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,StartTypeHdl,RadioButton *,pButton)1300*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, StartTypeHdl, RadioButton *, pButton )
1301*b1cdbd2cSJim Jagielski {
1302*b1cdbd2cSJim Jagielski 	StartType eType = pButton == mpPage1EmptyRB?ST_EMPTY:pButton == mpPage1TemplateRB?ST_TEMPLATE:ST_OPEN;
1303*b1cdbd2cSJim Jagielski 
1304*b1cdbd2cSJim Jagielski 	if(eType == ST_TEMPLATE)
1305*b1cdbd2cSJim Jagielski         ProvideTemplates();
1306*b1cdbd2cSJim Jagielski     else if(eType == ST_OPEN)
1307*b1cdbd2cSJim Jagielski         ScanDocmenu();
1308*b1cdbd2cSJim Jagielski 
1309*b1cdbd2cSJim Jagielski 	SetStartType( eType );
1310*b1cdbd2cSJim Jagielski 
1311*b1cdbd2cSJim Jagielski 	if(eType == ST_TEMPLATE)
1312*b1cdbd2cSJim Jagielski 	{
1313*b1cdbd2cSJim Jagielski 		mpPage1TemplateLB->SelectEntryPos(0);
1314*b1cdbd2cSJim Jagielski 		mpPage2Medium5RB->Check();
1315*b1cdbd2cSJim Jagielski 	}
1316*b1cdbd2cSJim Jagielski 	else if(eType == ST_OPEN)
1317*b1cdbd2cSJim Jagielski 		mpPage1OpenLB->SelectEntryPos(0);
1318*b1cdbd2cSJim Jagielski 
1319*b1cdbd2cSJim Jagielski 	maPrevTimer.Start();
1320*b1cdbd2cSJim Jagielski 	return 0;
1321*b1cdbd2cSJim Jagielski }
1322*b1cdbd2cSJim Jagielski 
1323*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,NextPageHdl,PushButton *,EMPTYARG)1324*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, NextPageHdl, PushButton *, EMPTYARG )
1325*b1cdbd2cSJim Jagielski {
1326*b1cdbd2cSJim Jagielski     // When changing from the first to the second page make sure that the
1327*b1cdbd2cSJim Jagielski     // templates are present.
1328*b1cdbd2cSJim Jagielski 	if (maAssistentFunc.GetCurrentPage() == 1)
1329*b1cdbd2cSJim Jagielski         ProvideTemplates();
1330*b1cdbd2cSJim Jagielski 
1331*b1cdbd2cSJim Jagielski     // Change to the next page.
1332*b1cdbd2cSJim Jagielski 	LeavePage();
1333*b1cdbd2cSJim Jagielski 	maAssistentFunc.NextPage();
1334*b1cdbd2cSJim Jagielski 	ChangePage();
1335*b1cdbd2cSJim Jagielski 	return 0;
1336*b1cdbd2cSJim Jagielski }
1337*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,LastPageHdl,PushButton *,EMPTYARG)1338*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, LastPageHdl, PushButton *, EMPTYARG )
1339*b1cdbd2cSJim Jagielski {
1340*b1cdbd2cSJim Jagielski 	LeavePage();
1341*b1cdbd2cSJim Jagielski 	maAssistentFunc.PreviousPage();
1342*b1cdbd2cSJim Jagielski 	ChangePage();
1343*b1cdbd2cSJim Jagielski 	return 0;
1344*b1cdbd2cSJim Jagielski }
1345*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,PresTypeHdl,RadioButton *,EMPTYARG)1346*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, PresTypeHdl, RadioButton*, EMPTYARG )
1347*b1cdbd2cSJim Jagielski {
1348*b1cdbd2cSJim Jagielski 	if(maDocFile.Len() == 0)
1349*b1cdbd2cSJim Jagielski 	  {
1350*b1cdbd2cSJim Jagielski 		maNextPageButton.Enable(false);
1351*b1cdbd2cSJim Jagielski 	  }
1352*b1cdbd2cSJim Jagielski 
1353*b1cdbd2cSJim Jagielski 	sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
1354*b1cdbd2cSJim Jagielski 	mpPage3PresTimeFT->Enable(bKiosk);
1355*b1cdbd2cSJim Jagielski 	mpPage3BreakFT->Enable(bKiosk);
1356*b1cdbd2cSJim Jagielski 	mpPage3PresTimeTMF->Enable(bKiosk);
1357*b1cdbd2cSJim Jagielski 	mpPage3BreakTMF->Enable(bKiosk);
1358*b1cdbd2cSJim Jagielski 	mpPage3LogoCB->Enable(bKiosk);
1359*b1cdbd2cSJim Jagielski 	return 0;
1360*b1cdbd2cSJim Jagielski }
1361*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlgImpl,UpdateUserDataHdl,Edit *,EMPTYARG)1362*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlgImpl, UpdateUserDataHdl, Edit*, EMPTYARG )
1363*b1cdbd2cSJim Jagielski {
1364*b1cdbd2cSJim Jagielski 	mbUserDataDirty = sal_True;
1365*b1cdbd2cSJim Jagielski 	String aTopic = mpPage4AskTopicEDT->GetText();
1366*b1cdbd2cSJim Jagielski 	String aName  = mpPage4AskNameEDT->GetText();
1367*b1cdbd2cSJim Jagielski 	String aInfo  = mpPage4AskInfoEDT->GetText();
1368*b1cdbd2cSJim Jagielski 
1369*b1cdbd2cSJim Jagielski 	if(aTopic.Len() == 0 && aName.Len() == 0 && aInfo.Len() == 0)
1370*b1cdbd2cSJim Jagielski 		maDocFile.Erase();
1371*b1cdbd2cSJim Jagielski 
1372*b1cdbd2cSJim Jagielski 	return 0;
1373*b1cdbd2cSJim Jagielski }
1374*b1cdbd2cSJim Jagielski 
1375*b1cdbd2cSJim Jagielski // ********************************************************************
1376*b1cdbd2cSJim Jagielski // ********************************************************************
1377*b1cdbd2cSJim Jagielski 
SelectTemplateRegion(const String & rRegion)1378*b1cdbd2cSJim Jagielski void AssistentDlgImpl::SelectTemplateRegion( const String& rRegion )
1379*b1cdbd2cSJim Jagielski {
1380*b1cdbd2cSJim Jagielski 	mpPage1TemplateLB->Clear();
1381*b1cdbd2cSJim Jagielski 	std::vector<TemplateDir*>::iterator	I;
1382*b1cdbd2cSJim Jagielski 	for (I=maPresentList.begin(); I!=maPresentList.end(); I++)
1383*b1cdbd2cSJim Jagielski 	{
1384*b1cdbd2cSJim Jagielski 		TemplateDir * pDir = *I;
1385*b1cdbd2cSJim Jagielski 		mpTemplateRegion = *I;
1386*b1cdbd2cSJim Jagielski 		if (pDir->msRegion.Equals( rRegion ) )
1387*b1cdbd2cSJim Jagielski 		{
1388*b1cdbd2cSJim Jagielski 			std::vector<TemplateEntry*>::iterator	J;
1389*b1cdbd2cSJim Jagielski 			for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); J++)
1390*b1cdbd2cSJim Jagielski 				mpPage1TemplateLB->InsertEntry ((*J)->msTitle);
1391*b1cdbd2cSJim Jagielski 			mpPage1TemplateLB->Update();
1392*b1cdbd2cSJim Jagielski 			if(GetStartType() == ST_TEMPLATE)
1393*b1cdbd2cSJim Jagielski 			{
1394*b1cdbd2cSJim Jagielski 				mpPage1TemplateLB->SelectEntryPos( 0 );
1395*b1cdbd2cSJim Jagielski 				SelectTemplateHdl(NULL);
1396*b1cdbd2cSJim Jagielski 			}
1397*b1cdbd2cSJim Jagielski 			break;
1398*b1cdbd2cSJim Jagielski 		}
1399*b1cdbd2cSJim Jagielski 	}
1400*b1cdbd2cSJim Jagielski }
1401*b1cdbd2cSJim Jagielski 
SelectLayoutRegion(const String & rRegion)1402*b1cdbd2cSJim Jagielski void AssistentDlgImpl::SelectLayoutRegion( const String& rRegion )
1403*b1cdbd2cSJim Jagielski {
1404*b1cdbd2cSJim Jagielski 	mpPage2LayoutLB->Clear();
1405*b1cdbd2cSJim Jagielski 	mpPage2LayoutLB->InsertEntry(String(SdResId(STR_WIZARD_ORIGINAL)));
1406*b1cdbd2cSJim Jagielski 	std::vector<TemplateDir*>::iterator	I;
1407*b1cdbd2cSJim Jagielski 	for (I=maPresentList.begin(); I!=maPresentList.end(); I++)
1408*b1cdbd2cSJim Jagielski 	{
1409*b1cdbd2cSJim Jagielski 		TemplateDir * pDir = *I;
1410*b1cdbd2cSJim Jagielski 		mpLayoutRegion = *I;
1411*b1cdbd2cSJim Jagielski 
1412*b1cdbd2cSJim Jagielski 		if (pDir->msRegion.Equals (rRegion))
1413*b1cdbd2cSJim Jagielski 		{
1414*b1cdbd2cSJim Jagielski 			std::vector<TemplateEntry*>::iterator	J;
1415*b1cdbd2cSJim Jagielski 			for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); J++)
1416*b1cdbd2cSJim Jagielski 				mpPage2LayoutLB->InsertEntry ((*J)->msTitle);
1417*b1cdbd2cSJim Jagielski 			mpPage2LayoutLB->Update();
1418*b1cdbd2cSJim Jagielski 			break;
1419*b1cdbd2cSJim Jagielski 		}
1420*b1cdbd2cSJim Jagielski 	}
1421*b1cdbd2cSJim Jagielski }
1422*b1cdbd2cSJim Jagielski 
UpdateUserData()1423*b1cdbd2cSJim Jagielski void AssistentDlgImpl::UpdateUserData()
1424*b1cdbd2cSJim Jagielski {
1425*b1cdbd2cSJim Jagielski 	String aTopic = mpPage4AskTopicEDT->GetText();
1426*b1cdbd2cSJim Jagielski 	String aName  = mpPage4AskNameEDT->GetText();
1427*b1cdbd2cSJim Jagielski 	String aInfo  = mpPage4AskInfoEDT->GetText();
1428*b1cdbd2cSJim Jagielski 
1429*b1cdbd2cSJim Jagielski 	SfxObjectShell* pShell = xDocShell;
1430*b1cdbd2cSJim Jagielski 	DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
1431*b1cdbd2cSJim Jagielski 	SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
1432*b1cdbd2cSJim Jagielski 	SdPage* pPage = pDoc?pDoc->GetSdPage(0, PK_STANDARD):NULL;
1433*b1cdbd2cSJim Jagielski 
1434*b1cdbd2cSJim Jagielski 	if(pPage && ( aTopic.Len() != 0 || aName.Len() != 0 || aInfo.Len() != 0 ) )
1435*b1cdbd2cSJim Jagielski 	{
1436*b1cdbd2cSJim Jagielski 		if( pPage->GetAutoLayout() == AUTOLAYOUT_NONE )
1437*b1cdbd2cSJim Jagielski 			pPage->SetAutoLayout(AUTOLAYOUT_TITLE, sal_True);
1438*b1cdbd2cSJim Jagielski 
1439*b1cdbd2cSJim Jagielski 		SdrTextObj* pObj;
1440*b1cdbd2cSJim Jagielski 		String aEmptyString;
1441*b1cdbd2cSJim Jagielski 
1442*b1cdbd2cSJim Jagielski 		if( aTopic.Len() )
1443*b1cdbd2cSJim Jagielski 		{
1444*b1cdbd2cSJim Jagielski 			pObj  = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_TITLE ) );
1445*b1cdbd2cSJim Jagielski 			if( pObj )
1446*b1cdbd2cSJim Jagielski 			{
1447*b1cdbd2cSJim Jagielski 				pPage->SetObjText( pObj, NULL, PRESOBJ_TITLE, aTopic );
1448*b1cdbd2cSJim Jagielski 				pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_TITLE ), sal_True );
1449*b1cdbd2cSJim Jagielski 				pObj->SetEmptyPresObj(sal_False);
1450*b1cdbd2cSJim Jagielski 			}
1451*b1cdbd2cSJim Jagielski 
1452*b1cdbd2cSJim Jagielski 		}
1453*b1cdbd2cSJim Jagielski 
1454*b1cdbd2cSJim Jagielski 		if ( aName.Len() || aInfo.Len() )
1455*b1cdbd2cSJim Jagielski 		{
1456*b1cdbd2cSJim Jagielski 			String aStrTmp( aName );
1457*b1cdbd2cSJim Jagielski 			if( aName.Len() )
1458*b1cdbd2cSJim Jagielski 				aStrTmp.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\n\n" ) );
1459*b1cdbd2cSJim Jagielski 			aStrTmp.Append( aInfo );
1460*b1cdbd2cSJim Jagielski 
1461*b1cdbd2cSJim Jagielski 			pObj = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_OUTLINE ) );
1462*b1cdbd2cSJim Jagielski 			if( pObj )
1463*b1cdbd2cSJim Jagielski 			{
1464*b1cdbd2cSJim Jagielski 				pPage->SetObjText( pObj, NULL, PRESOBJ_OUTLINE, aStrTmp );
1465*b1cdbd2cSJim Jagielski 				pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_OUTLINE ), sal_True );
1466*b1cdbd2cSJim Jagielski 				pObj->SetEmptyPresObj(sal_False);
1467*b1cdbd2cSJim Jagielski 			}
1468*b1cdbd2cSJim Jagielski 			else
1469*b1cdbd2cSJim Jagielski 			{
1470*b1cdbd2cSJim Jagielski 				pObj = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_TEXT ) );
1471*b1cdbd2cSJim Jagielski 				if( pObj )
1472*b1cdbd2cSJim Jagielski 				{
1473*b1cdbd2cSJim Jagielski 					pPage->SetObjText( pObj, NULL, PRESOBJ_TEXT, aStrTmp );
1474*b1cdbd2cSJim Jagielski 					pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_TEXT ), sal_True );
1475*b1cdbd2cSJim Jagielski 					pObj->SetEmptyPresObj(sal_False);
1476*b1cdbd2cSJim Jagielski 				}
1477*b1cdbd2cSJim Jagielski 			}
1478*b1cdbd2cSJim Jagielski 		}
1479*b1cdbd2cSJim Jagielski 	}
1480*b1cdbd2cSJim Jagielski 
1481*b1cdbd2cSJim Jagielski 	mbUserDataDirty = sal_False;
1482*b1cdbd2cSJim Jagielski }
1483*b1cdbd2cSJim Jagielski 
UpdatePageList()1484*b1cdbd2cSJim Jagielski void AssistentDlgImpl::UpdatePageList()
1485*b1cdbd2cSJim Jagielski {
1486*b1cdbd2cSJim Jagielski 	if(mbDocPreview || !mbPreview)
1487*b1cdbd2cSJim Jagielski 		UpdatePreview(sal_False);
1488*b1cdbd2cSJim Jagielski 	else if(maPageListFile == maDocFile)
1489*b1cdbd2cSJim Jagielski 		return;
1490*b1cdbd2cSJim Jagielski 
1491*b1cdbd2cSJim Jagielski 	maPageListFile = maDocFile;
1492*b1cdbd2cSJim Jagielski 
1493*b1cdbd2cSJim Jagielski 	SfxObjectShell* pShell = xDocShell;
1494*b1cdbd2cSJim Jagielski 	DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
1495*b1cdbd2cSJim Jagielski 	SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
1496*b1cdbd2cSJim Jagielski 
1497*b1cdbd2cSJim Jagielski 	mpPage5PageListCT->Clear();
1498*b1cdbd2cSJim Jagielski 
1499*b1cdbd2cSJim Jagielski 	if(pDoc)
1500*b1cdbd2cSJim Jagielski 		mpPage5PageListCT->Fill(pDoc);
1501*b1cdbd2cSJim Jagielski }
1502*b1cdbd2cSJim Jagielski 
UpdatePreview(sal_Bool bDocPreview)1503*b1cdbd2cSJim Jagielski void AssistentDlgImpl::UpdatePreview( sal_Bool bDocPreview )
1504*b1cdbd2cSJim Jagielski {
1505*b1cdbd2cSJim Jagielski     // Guard against multiple concurrent execution to this method caused either
1506*b1cdbd2cSJim Jagielski     // by calls from different threads or recursion.
1507*b1cdbd2cSJim Jagielski     ::osl::MutexGuard aGuard (maMutex);
1508*b1cdbd2cSJim Jagielski     if (mbPreviewUpdating)
1509*b1cdbd2cSJim Jagielski         return;
1510*b1cdbd2cSJim Jagielski     mbPreviewUpdating = sal_True;
1511*b1cdbd2cSJim Jagielski 
1512*b1cdbd2cSJim Jagielski 	if(!mbPreview && bDocPreview)
1513*b1cdbd2cSJim Jagielski 	{
1514*b1cdbd2cSJim Jagielski 		maPreview.Invalidate();
1515*b1cdbd2cSJim Jagielski 		maPreview.SetObjectShell(0);
1516*b1cdbd2cSJim Jagielski         mbPreviewUpdating = sal_False;
1517*b1cdbd2cSJim Jagielski 		return;
1518*b1cdbd2cSJim Jagielski 	}
1519*b1cdbd2cSJim Jagielski 
1520*b1cdbd2cSJim Jagielski 	String aDocFile = GetDocFileName();
1521*b1cdbd2cSJim Jagielski 	String aLayoutFile = GetLayoutFileName();
1522*b1cdbd2cSJim Jagielski 	String aEmptyStr;
1523*b1cdbd2cSJim Jagielski 
1524*b1cdbd2cSJim Jagielski 	SfxApplication *pSfxApp = SFX_APP();
1525*b1cdbd2cSJim Jagielski 	sal_uLong lErr;
1526*b1cdbd2cSJim Jagielski 	sal_Bool bChangeMaster = aLayoutFile.Len() != 0;
1527*b1cdbd2cSJim Jagielski 
1528*b1cdbd2cSJim Jagielski 	if( aDocFile.Len() == 0 )
1529*b1cdbd2cSJim Jagielski 	{
1530*b1cdbd2cSJim Jagielski 		if( !xDocShell.Is() || maDocFile.Len() != 0 ||
1531*b1cdbd2cSJim Jagielski 			(maDocFile.Len() == 0 && maLayoutFile.Len() != 0 && aLayoutFile.Len() == 0 ))
1532*b1cdbd2cSJim Jagielski 		{
1533*b1cdbd2cSJim Jagielski 			CloseDocShell();
1534*b1cdbd2cSJim Jagielski 
1535*b1cdbd2cSJim Jagielski 			DrawDocShell* pNewDocSh;
1536*b1cdbd2cSJim Jagielski 			xDocShell = pNewDocSh = new DrawDocShell(SFX_CREATE_MODE_STANDARD, sal_False);
1537*b1cdbd2cSJim Jagielski 			pNewDocSh->DoInitNew(NULL);
1538*b1cdbd2cSJim Jagielski 			SdDrawDocument* pDoc = pNewDocSh->GetDoc();
1539*b1cdbd2cSJim Jagielski 			pDoc->CreateFirstPages();
1540*b1cdbd2cSJim Jagielski 			pDoc->StopWorkStartupDelay();
1541*b1cdbd2cSJim Jagielski 			mbDocPreview = sal_False;
1542*b1cdbd2cSJim Jagielski 
1543*b1cdbd2cSJim Jagielski 			maDocFile = aDocFile;
1544*b1cdbd2cSJim Jagielski 			mbUserDataDirty = sal_True;
1545*b1cdbd2cSJim Jagielski 		}
1546*b1cdbd2cSJim Jagielski 		else
1547*b1cdbd2cSJim Jagielski 			bChangeMaster = (aLayoutFile.Len() != 0) && (maLayoutFile != aLayoutFile);
1548*b1cdbd2cSJim Jagielski 	}
1549*b1cdbd2cSJim Jagielski 	else if( aDocFile == maDocFile && ( mbDocPreview == bDocPreview || bDocPreview ) )
1550*b1cdbd2cSJim Jagielski 	{
1551*b1cdbd2cSJim Jagielski 		if( aLayoutFile != maLayoutFile )
1552*b1cdbd2cSJim Jagielski 		{
1553*b1cdbd2cSJim Jagielski 			SfxObjectShell* pShell = xDocShell;
1554*b1cdbd2cSJim Jagielski 			DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
1555*b1cdbd2cSJim Jagielski             ::svl::IUndoManager* pUndoMgr = pDocShell?pDocShell->GetUndoManager():NULL;
1556*b1cdbd2cSJim Jagielski 			if(pUndoMgr)
1557*b1cdbd2cSJim Jagielski 				pUndoMgr->Undo();
1558*b1cdbd2cSJim Jagielski 			mbUserDataDirty = sal_True;
1559*b1cdbd2cSJim Jagielski 		}
1560*b1cdbd2cSJim Jagielski 		else
1561*b1cdbd2cSJim Jagielski 			bChangeMaster = sal_False;
1562*b1cdbd2cSJim Jagielski 	}
1563*b1cdbd2cSJim Jagielski 	else
1564*b1cdbd2cSJim Jagielski 	{
1565*b1cdbd2cSJim Jagielski 		CloseDocShell();
1566*b1cdbd2cSJim Jagielski 
1567*b1cdbd2cSJim Jagielski 		::Window *pParent = Application::GetDefDialogParent();
1568*b1cdbd2cSJim Jagielski 		Application::SetDefDialogParent( mpWindow );
1569*b1cdbd2cSJim Jagielski 
1570*b1cdbd2cSJim Jagielski 		SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,mpWindow);
1571*b1cdbd2cSJim Jagielski 
1572*b1cdbd2cSJim Jagielski 		SfxItemSet* pSet = new SfxAllItemSet( pSfxApp->GetPool() );
1573*b1cdbd2cSJim Jagielski 		if(IsOwnFormat(aDocFile))
1574*b1cdbd2cSJim Jagielski 		{
1575*b1cdbd2cSJim Jagielski 			pSet->Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
1576*b1cdbd2cSJim Jagielski 			if(bDocPreview)
1577*b1cdbd2cSJim Jagielski 				pSet->Put( SfxBoolItem( SID_PREVIEW, sal_True ) );
1578*b1cdbd2cSJim Jagielski 			RestorePassword( pSet, aDocFile );
1579*b1cdbd2cSJim Jagielski             if( (lErr = pSfxApp->LoadTemplate( xDocShell, aDocFile, sal_True, pSet )) != 0 )
1580*b1cdbd2cSJim Jagielski 				ErrorHandler::HandleError(lErr);
1581*b1cdbd2cSJim Jagielski 			else
1582*b1cdbd2cSJim Jagielski 				SavePassword( xDocShell, aDocFile );
1583*b1cdbd2cSJim Jagielski 		}
1584*b1cdbd2cSJim Jagielski 		else
1585*b1cdbd2cSJim Jagielski 		{
1586*b1cdbd2cSJim Jagielski 			const String aTargetStr( RTL_CONSTASCII_USTRINGPARAM("_default") );
1587*b1cdbd2cSJim Jagielski 
1588*b1cdbd2cSJim Jagielski 			SfxRequest aReq( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, SFX_APP()->GetPool() );
1589*b1cdbd2cSJim Jagielski 			aReq.AppendItem( SfxStringItem( SID_FILE_NAME, aDocFile ));
1590*b1cdbd2cSJim Jagielski 			aReq.AppendItem( SfxStringItem( SID_REFERER, aEmptyStr ) );
1591*b1cdbd2cSJim Jagielski 	        aReq.AppendItem( SfxStringItem( SID_TARGETNAME, aTargetStr ) );
1592*b1cdbd2cSJim Jagielski 			aReq.AppendItem( SfxBoolItem( SID_HIDDEN, sal_True ) );
1593*b1cdbd2cSJim Jagielski 			aReq.AppendItem( SfxBoolItem( SID_PREVIEW, bDocPreview ) );
1594*b1cdbd2cSJim Jagielski 
1595*b1cdbd2cSJim Jagielski             const SfxViewFrameItem* pRet = PTR_CAST( SfxViewFrameItem, SFX_APP()->ExecuteSlot( aReq ) );
1596*b1cdbd2cSJim Jagielski 
1597*b1cdbd2cSJim Jagielski 			if ( pRet && pRet->GetFrame() && pRet->GetFrame()->GetObjectShell() )
1598*b1cdbd2cSJim Jagielski 				xDocShell = pRet->GetFrame()->GetObjectShell();
1599*b1cdbd2cSJim Jagielski 		}
1600*b1cdbd2cSJim Jagielski 
1601*b1cdbd2cSJim Jagielski 
1602*b1cdbd2cSJim Jagielski 		Application::SetDefDialogParent( pParent );
1603*b1cdbd2cSJim Jagielski 
1604*b1cdbd2cSJim Jagielski 		mnShowPage = 0;
1605*b1cdbd2cSJim Jagielski 		mbDocPreview = bDocPreview;
1606*b1cdbd2cSJim Jagielski 		maDocFile = aDocFile;
1607*b1cdbd2cSJim Jagielski 		mbUserDataDirty = sal_True;
1608*b1cdbd2cSJim Jagielski 	}
1609*b1cdbd2cSJim Jagielski 
1610*b1cdbd2cSJim Jagielski 	if(bChangeMaster && (aLayoutFile != maDocFile))
1611*b1cdbd2cSJim Jagielski 	{
1612*b1cdbd2cSJim Jagielski 		// Layoutvorlage laden
1613*b1cdbd2cSJim Jagielski 		SfxObjectShellLock xLayoutDocShell;
1614*b1cdbd2cSJim Jagielski 		SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,mpWindow);
1615*b1cdbd2cSJim Jagielski 		SfxItemSet* pSet = new SfxAllItemSet( pSfxApp->GetPool() );
1616*b1cdbd2cSJim Jagielski 
1617*b1cdbd2cSJim Jagielski 		::Window *pParent = Application::GetDefDialogParent();
1618*b1cdbd2cSJim Jagielski 		Application::SetDefDialogParent( mpWindow );
1619*b1cdbd2cSJim Jagielski 
1620*b1cdbd2cSJim Jagielski 		if(IsOwnFormat(aLayoutFile))
1621*b1cdbd2cSJim Jagielski 		{
1622*b1cdbd2cSJim Jagielski 			pSet->Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
1623*b1cdbd2cSJim Jagielski 			pSet->Put( SfxBoolItem( SID_PREVIEW, sal_True ) );
1624*b1cdbd2cSJim Jagielski 
1625*b1cdbd2cSJim Jagielski 			RestorePassword( pSet, aLayoutFile );
1626*b1cdbd2cSJim Jagielski             if( (lErr = pSfxApp->LoadTemplate( xLayoutDocShell, aLayoutFile, sal_True, pSet )) != 0 )
1627*b1cdbd2cSJim Jagielski 				ErrorHandler::HandleError(lErr);
1628*b1cdbd2cSJim Jagielski 			SavePassword( xLayoutDocShell, aLayoutFile );
1629*b1cdbd2cSJim Jagielski 		}
1630*b1cdbd2cSJim Jagielski 
1631*b1cdbd2cSJim Jagielski 		Application::SetDefDialogParent( pParent );
1632*b1cdbd2cSJim Jagielski 
1633*b1cdbd2cSJim Jagielski 		// die Implementierung ermitteln
1634*b1cdbd2cSJim Jagielski 		SfxObjectShell* pShell = xDocShell;
1635*b1cdbd2cSJim Jagielski 		DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
1636*b1cdbd2cSJim Jagielski 		SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
1637*b1cdbd2cSJim Jagielski 
1638*b1cdbd2cSJim Jagielski 		pShell = xLayoutDocShell;
1639*b1cdbd2cSJim Jagielski 		pDocShell = PTR_CAST(DrawDocShell,pShell);
1640*b1cdbd2cSJim Jagielski 		SdDrawDocument* pLayoutDoc = pDocShell?pDocShell->GetDoc():NULL;
1641*b1cdbd2cSJim Jagielski 
1642*b1cdbd2cSJim Jagielski 		if( pDoc && pLayoutDoc )
1643*b1cdbd2cSJim Jagielski 		{
1644*b1cdbd2cSJim Jagielski 			pDoc->SetMasterPage(0, aEmptyStr, pLayoutDoc, sal_True,  sal_False );
1645*b1cdbd2cSJim Jagielski 		}
1646*b1cdbd2cSJim Jagielski 		else
1647*b1cdbd2cSJim Jagielski 		{
1648*b1cdbd2cSJim Jagielski 			DBG_ERROR("sd::AssistentDlgImpl::UpdatePreview(), no document for preview?");
1649*b1cdbd2cSJim Jagielski 		}
1650*b1cdbd2cSJim Jagielski 
1651*b1cdbd2cSJim Jagielski 		mbUserDataDirty = sal_True;
1652*b1cdbd2cSJim Jagielski 	}
1653*b1cdbd2cSJim Jagielski 	maLayoutFile = aLayoutFile;
1654*b1cdbd2cSJim Jagielski 
1655*b1cdbd2cSJim Jagielski 	if(mbUserDataDirty)
1656*b1cdbd2cSJim Jagielski 		UpdateUserData();
1657*b1cdbd2cSJim Jagielski 
1658*b1cdbd2cSJim Jagielski 	if ( !xDocShell.Is() || !mbPreview )
1659*b1cdbd2cSJim Jagielski 		maPreview.SetObjectShell( 0 );
1660*b1cdbd2cSJim Jagielski 	else
1661*b1cdbd2cSJim Jagielski 	{
1662*b1cdbd2cSJim Jagielski 		maPreview.SetObjectShell( xDocShell, mnShowPage );
1663*b1cdbd2cSJim Jagielski 	}
1664*b1cdbd2cSJim Jagielski 
1665*b1cdbd2cSJim Jagielski     mbPreviewUpdating = sal_False;
1666*b1cdbd2cSJim Jagielski }
1667*b1cdbd2cSJim Jagielski 
SavePassword(SfxObjectShellLock xDoc,const String & rPath)1668*b1cdbd2cSJim Jagielski void AssistentDlgImpl::SavePassword( SfxObjectShellLock xDoc, const String& rPath )
1669*b1cdbd2cSJim Jagielski {
1670*b1cdbd2cSJim Jagielski 	if(xDoc.Is())
1671*b1cdbd2cSJim Jagielski 	{
1672*b1cdbd2cSJim Jagielski 		SfxMedium * pMedium = xDoc->GetMedium();
1673*b1cdbd2cSJim Jagielski 		if(pMedium && pMedium->IsStorage())
1674*b1cdbd2cSJim Jagielski 		{
1675*b1cdbd2cSJim Jagielski 			SfxItemSet * pSet = pMedium->GetItemSet();
1676*b1cdbd2cSJim Jagielski           const SfxPoolItem *pItem = 0;
1677*b1cdbd2cSJim Jagielski           if( pSet->GetItemState(SID_PASSWORD, sal_True, &pItem) == SFX_ITEM_SET )
1678*b1cdbd2cSJim Jagielski           {
1679*b1cdbd2cSJim Jagielski             //TODO/MBA: testing
1680*b1cdbd2cSJim Jagielski             String aPass( ((const SfxStringItem*)pItem)->GetValue());
1681*b1cdbd2cSJim Jagielski             if(aPass.Len() == 0)
1682*b1cdbd2cSJim Jagielski                 return;
1683*b1cdbd2cSJim Jagielski 
1684*b1cdbd2cSJim Jagielski             PasswordEntry* pEntry = maPasswordList.First();
1685*b1cdbd2cSJim Jagielski             while(pEntry)
1686*b1cdbd2cSJim Jagielski             {
1687*b1cdbd2cSJim Jagielski                 if(pEntry->maPath == rPath)
1688*b1cdbd2cSJim Jagielski                     break;
1689*b1cdbd2cSJim Jagielski 
1690*b1cdbd2cSJim Jagielski                 pEntry = maPasswordList.Next();
1691*b1cdbd2cSJim Jagielski 
1692*b1cdbd2cSJim Jagielski             }
1693*b1cdbd2cSJim Jagielski 
1694*b1cdbd2cSJim Jagielski             if(pEntry == NULL)
1695*b1cdbd2cSJim Jagielski             {
1696*b1cdbd2cSJim Jagielski                 pEntry = new PasswordEntry();
1697*b1cdbd2cSJim Jagielski                 pEntry->maPath = rPath;
1698*b1cdbd2cSJim Jagielski                 maPasswordList.Insert( pEntry );
1699*b1cdbd2cSJim Jagielski             }
1700*b1cdbd2cSJim Jagielski 
1701*b1cdbd2cSJim Jagielski             if(pEntry)
1702*b1cdbd2cSJim Jagielski                 pEntry->maPassword = aPass;
1703*b1cdbd2cSJim Jagielski           }
1704*b1cdbd2cSJim Jagielski 		}
1705*b1cdbd2cSJim Jagielski 	}
1706*b1cdbd2cSJim Jagielski }
1707*b1cdbd2cSJim Jagielski 
RestorePassword(SfxItemSet * pSet,const String & rPath)1708*b1cdbd2cSJim Jagielski void AssistentDlgImpl::RestorePassword( SfxItemSet* pSet, const String& rPath )
1709*b1cdbd2cSJim Jagielski {
1710*b1cdbd2cSJim Jagielski 	String aPassword( GetPassword( rPath ) );
1711*b1cdbd2cSJim Jagielski 
1712*b1cdbd2cSJim Jagielski 	if(aPassword.Len())
1713*b1cdbd2cSJim Jagielski 		pSet->Put( SfxStringItem( SID_PASSWORD, aPassword ) );
1714*b1cdbd2cSJim Jagielski }
1715*b1cdbd2cSJim Jagielski 
GetPassword(const String rPath)1716*b1cdbd2cSJim Jagielski String AssistentDlgImpl::GetPassword( const String rPath )
1717*b1cdbd2cSJim Jagielski {
1718*b1cdbd2cSJim Jagielski 	PasswordEntry* pEntry = maPasswordList.First();
1719*b1cdbd2cSJim Jagielski 	while(pEntry)
1720*b1cdbd2cSJim Jagielski 	{
1721*b1cdbd2cSJim Jagielski 		if(pEntry->maPath == rPath)
1722*b1cdbd2cSJim Jagielski 			return pEntry->maPassword;
1723*b1cdbd2cSJim Jagielski 
1724*b1cdbd2cSJim Jagielski 		pEntry = maPasswordList.Next();
1725*b1cdbd2cSJim Jagielski 	}
1726*b1cdbd2cSJim Jagielski 
1727*b1cdbd2cSJim Jagielski 	return String();
1728*b1cdbd2cSJim Jagielski }
1729*b1cdbd2cSJim Jagielski 
DeletePassords()1730*b1cdbd2cSJim Jagielski void AssistentDlgImpl::DeletePassords()
1731*b1cdbd2cSJim Jagielski {
1732*b1cdbd2cSJim Jagielski 	PasswordEntry* pEntry = maPasswordList.First();
1733*b1cdbd2cSJim Jagielski 	while(pEntry)
1734*b1cdbd2cSJim Jagielski 	{
1735*b1cdbd2cSJim Jagielski 		delete pEntry;
1736*b1cdbd2cSJim Jagielski 		pEntry = maPasswordList.Next();
1737*b1cdbd2cSJim Jagielski 	}
1738*b1cdbd2cSJim Jagielski }
1739*b1cdbd2cSJim Jagielski 
IsOwnFormat(const String & rPath)1740*b1cdbd2cSJim Jagielski sal_Bool AssistentDlgImpl::IsOwnFormat( const String& rPath )
1741*b1cdbd2cSJim Jagielski {
1742*b1cdbd2cSJim Jagielski 	INetURLObject	aURL( rPath );
1743*b1cdbd2cSJim Jagielski 	String			aExt( aURL.GetFileExtension() );
1744*b1cdbd2cSJim Jagielski 
1745*b1cdbd2cSJim Jagielski 	DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
1746*b1cdbd2cSJim Jagielski 
1747*b1cdbd2cSJim Jagielski 	return !aExt.EqualsIgnoreCaseAscii( "ppt" );
1748*b1cdbd2cSJim Jagielski }
1749*b1cdbd2cSJim Jagielski 
1750*b1cdbd2cSJim Jagielski 
1751*b1cdbd2cSJim Jagielski 
1752*b1cdbd2cSJim Jagielski 
GetUiTextForCommand(const::rtl::OUString & sCommandURL)1753*b1cdbd2cSJim Jagielski String AssistentDlgImpl::GetUiTextForCommand (const ::rtl::OUString& sCommandURL)
1754*b1cdbd2cSJim Jagielski {
1755*b1cdbd2cSJim Jagielski     String sLabel;
1756*b1cdbd2cSJim Jagielski     Reference<container::XNameAccess> xUICommandLabels;
1757*b1cdbd2cSJim Jagielski 
1758*b1cdbd2cSJim Jagielski     try
1759*b1cdbd2cSJim Jagielski     {
1760*b1cdbd2cSJim Jagielski         do
1761*b1cdbd2cSJim Jagielski         {
1762*b1cdbd2cSJim Jagielski             if (sCommandURL.getLength() ==  0)
1763*b1cdbd2cSJim Jagielski                 break;
1764*b1cdbd2cSJim Jagielski 
1765*b1cdbd2cSJim Jagielski             // Retrieve popup menu labels
1766*b1cdbd2cSJim Jagielski             Reference<lang::XMultiServiceFactory> xFactory (
1767*b1cdbd2cSJim Jagielski                 ::comphelper::getProcessServiceFactory ());
1768*b1cdbd2cSJim Jagielski             if ( ! xFactory.is())
1769*b1cdbd2cSJim Jagielski                 break;
1770*b1cdbd2cSJim Jagielski 
1771*b1cdbd2cSJim Jagielski             ::rtl::OUString sModuleIdentifier (
1772*b1cdbd2cSJim Jagielski                 RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PresentationDocument"));
1773*b1cdbd2cSJim Jagielski             Reference<container::XNameAccess> xNameAccess (
1774*b1cdbd2cSJim Jagielski                 xFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1775*b1cdbd2cSJim Jagielski                     "com.sun.star.frame.UICommandDescription"))),
1776*b1cdbd2cSJim Jagielski                 UNO_QUERY);
1777*b1cdbd2cSJim Jagielski             if ( ! xNameAccess.is())
1778*b1cdbd2cSJim Jagielski                 break;
1779*b1cdbd2cSJim Jagielski             Any a = xNameAccess->getByName(sModuleIdentifier);
1780*b1cdbd2cSJim Jagielski             a >>= xUICommandLabels;
1781*b1cdbd2cSJim Jagielski             if ( ! xUICommandLabels.is())
1782*b1cdbd2cSJim Jagielski                 break;
1783*b1cdbd2cSJim Jagielski 
1784*b1cdbd2cSJim Jagielski             ::rtl::OUString sString;
1785*b1cdbd2cSJim Jagielski             Sequence<beans::PropertyValue> aProperties;
1786*b1cdbd2cSJim Jagielski             Any aAny (xUICommandLabels->getByName(sCommandURL));
1787*b1cdbd2cSJim Jagielski             if (aAny >>= aProperties)
1788*b1cdbd2cSJim Jagielski             {
1789*b1cdbd2cSJim Jagielski                 sal_Int32 nCount (aProperties.getLength());
1790*b1cdbd2cSJim Jagielski                 for (sal_Int32 i=0; i<nCount; i++)
1791*b1cdbd2cSJim Jagielski                 {
1792*b1cdbd2cSJim Jagielski                     ::rtl::OUString sPropertyName (aProperties[i].Name);
1793*b1cdbd2cSJim Jagielski                     if (sPropertyName.equalsAscii("Label"))
1794*b1cdbd2cSJim Jagielski                     {
1795*b1cdbd2cSJim Jagielski                         aProperties[i].Value >>= sString;
1796*b1cdbd2cSJim Jagielski                         break;
1797*b1cdbd2cSJim Jagielski                     }
1798*b1cdbd2cSJim Jagielski                 }
1799*b1cdbd2cSJim Jagielski             }
1800*b1cdbd2cSJim Jagielski             sLabel = sString;
1801*b1cdbd2cSJim Jagielski         }
1802*b1cdbd2cSJim Jagielski         while(false);
1803*b1cdbd2cSJim Jagielski     }
1804*b1cdbd2cSJim Jagielski     catch (com::sun::star::uno::Exception& rException)
1805*b1cdbd2cSJim Jagielski     {
1806*b1cdbd2cSJim Jagielski         (void)rException;
1807*b1cdbd2cSJim Jagielski     }
1808*b1cdbd2cSJim Jagielski 
1809*b1cdbd2cSJim Jagielski     return sLabel;
1810*b1cdbd2cSJim Jagielski }
1811*b1cdbd2cSJim Jagielski 
1812*b1cdbd2cSJim Jagielski 
1813*b1cdbd2cSJim Jagielski 
1814*b1cdbd2cSJim Jagielski 
GetUiIconForCommand(const::rtl::OUString & sCommandURL)1815*b1cdbd2cSJim Jagielski Image AssistentDlgImpl::GetUiIconForCommand (const ::rtl::OUString& sCommandURL)
1816*b1cdbd2cSJim Jagielski {
1817*b1cdbd2cSJim Jagielski     Image aIcon;
1818*b1cdbd2cSJim Jagielski     Reference<container::XNameAccess> xUICommandLabels;
1819*b1cdbd2cSJim Jagielski 
1820*b1cdbd2cSJim Jagielski     try
1821*b1cdbd2cSJim Jagielski     {
1822*b1cdbd2cSJim Jagielski         do
1823*b1cdbd2cSJim Jagielski         {
1824*b1cdbd2cSJim Jagielski             if (sCommandURL.getLength() ==  0)
1825*b1cdbd2cSJim Jagielski                 break;
1826*b1cdbd2cSJim Jagielski 
1827*b1cdbd2cSJim Jagielski             // Retrieve popup menu labels
1828*b1cdbd2cSJim Jagielski             Reference<lang::XMultiServiceFactory> xFactory (
1829*b1cdbd2cSJim Jagielski                 ::comphelper::getProcessServiceFactory ());
1830*b1cdbd2cSJim Jagielski             if ( ! xFactory.is())
1831*b1cdbd2cSJim Jagielski                 break;
1832*b1cdbd2cSJim Jagielski 
1833*b1cdbd2cSJim Jagielski             ::rtl::OUString sModuleIdentifier (
1834*b1cdbd2cSJim Jagielski                 RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PresentationDocument"));
1835*b1cdbd2cSJim Jagielski 
1836*b1cdbd2cSJim Jagielski             Reference<com::sun::star::ui::XModuleUIConfigurationManagerSupplier> xSupplier (
1837*b1cdbd2cSJim Jagielski                 xFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1838*b1cdbd2cSJim Jagielski                     "com.sun.star.ui.ModuleUIConfigurationManagerSupplier"))),
1839*b1cdbd2cSJim Jagielski                 UNO_QUERY_THROW);
1840*b1cdbd2cSJim Jagielski 
1841*b1cdbd2cSJim Jagielski             Reference<com::sun::star::ui::XUIConfigurationManager> xManager (
1842*b1cdbd2cSJim Jagielski                 xSupplier->getUIConfigurationManager(sModuleIdentifier));
1843*b1cdbd2cSJim Jagielski             if ( ! xManager.is())
1844*b1cdbd2cSJim Jagielski                 break;
1845*b1cdbd2cSJim Jagielski 
1846*b1cdbd2cSJim Jagielski             Reference<com::sun::star::ui::XImageManager> xImageManager (
1847*b1cdbd2cSJim Jagielski                 xManager->getImageManager(),
1848*b1cdbd2cSJim Jagielski                 UNO_QUERY_THROW);
1849*b1cdbd2cSJim Jagielski 
1850*b1cdbd2cSJim Jagielski             Sequence<rtl::OUString> aCommandList(1);
1851*b1cdbd2cSJim Jagielski             aCommandList[0] = sCommandURL;
1852*b1cdbd2cSJim Jagielski             Sequence<Reference<graphic::XGraphic> > xIconList (
1853*b1cdbd2cSJim Jagielski                 xImageManager->getImages(0,aCommandList));
1854*b1cdbd2cSJim Jagielski             if ( ! xIconList.hasElements())
1855*b1cdbd2cSJim Jagielski                 break;
1856*b1cdbd2cSJim Jagielski 
1857*b1cdbd2cSJim Jagielski             aIcon = Graphic(xIconList[0]).GetBitmapEx();
1858*b1cdbd2cSJim Jagielski         }
1859*b1cdbd2cSJim Jagielski         while(false);
1860*b1cdbd2cSJim Jagielski     }
1861*b1cdbd2cSJim Jagielski     catch (com::sun::star::uno::Exception& rException)
1862*b1cdbd2cSJim Jagielski     {
1863*b1cdbd2cSJim Jagielski         (void)rException;
1864*b1cdbd2cSJim Jagielski     }
1865*b1cdbd2cSJim Jagielski 
1866*b1cdbd2cSJim Jagielski     return aIcon;
1867*b1cdbd2cSJim Jagielski }
1868*b1cdbd2cSJim Jagielski 
1869*b1cdbd2cSJim Jagielski 
1870*b1cdbd2cSJim Jagielski //////////////////////////////////////////////
1871*b1cdbd2cSJim Jagielski 
AssistentDlg(Window * pParent,sal_Bool bAutoPilot)1872*b1cdbd2cSJim Jagielski AssistentDlg::AssistentDlg(Window* pParent, sal_Bool bAutoPilot) :
1873*b1cdbd2cSJim Jagielski 	ModalDialog(pParent,SdResId(DLG_ASS))
1874*b1cdbd2cSJim Jagielski {
1875*b1cdbd2cSJim Jagielski 	Link aFinishLink = LINK(this,AssistentDlg, FinishHdl);
1876*b1cdbd2cSJim Jagielski 	mpImpl = new AssistentDlgImpl( this, aFinishLink, bAutoPilot );
1877*b1cdbd2cSJim Jagielski 
1878*b1cdbd2cSJim Jagielski 	//Buttonbelegung
1879*b1cdbd2cSJim Jagielski 	mpImpl->maFinishButton.SetClickHdl(LINK(this,AssistentDlg,FinishHdl));
1880*b1cdbd2cSJim Jagielski 
1881*b1cdbd2cSJim Jagielski 	FreeResource();
1882*b1cdbd2cSJim Jagielski }
1883*b1cdbd2cSJim Jagielski 
IMPL_LINK(AssistentDlg,FinishHdl,OKButton *,EMPTYARG)1884*b1cdbd2cSJim Jagielski IMPL_LINK( AssistentDlg, FinishHdl, OKButton *, EMPTYARG )
1885*b1cdbd2cSJim Jagielski {
1886*b1cdbd2cSJim Jagielski     if( GetStartType() == ST_OPEN )
1887*b1cdbd2cSJim Jagielski 	{
1888*b1cdbd2cSJim Jagielski         //if we do not have a file here asked for one before ending the dialog
1889*b1cdbd2cSJim Jagielski         String aFileToOpen = GetDocPath();
1890*b1cdbd2cSJim Jagielski 		if(aFileToOpen.Len() == 0)
1891*b1cdbd2cSJim Jagielski 		{
1892*b1cdbd2cSJim Jagielski             sfx2::FileDialogHelper aFileDlg( WB_OPEN, ::String::CreateFromAscii("simpress") );
1893*b1cdbd2cSJim Jagielski 
1894*b1cdbd2cSJim Jagielski 			if ( aFileDlg.Execute() == ERRCODE_NONE )
1895*b1cdbd2cSJim Jagielski 				aFileToOpen = aFileDlg.GetPath();
1896*b1cdbd2cSJim Jagielski             if( aFileToOpen.Len() == 0)
1897*b1cdbd2cSJim Jagielski                 return 1;
1898*b1cdbd2cSJim Jagielski             else
1899*b1cdbd2cSJim Jagielski             {
1900*b1cdbd2cSJim Jagielski                 //add the selected file to the recent-file-listbox and select the new entry
1901*b1cdbd2cSJim Jagielski                 //this is necessary for 'GetDocPath()' returning the selected file after end of dialog
1902*b1cdbd2cSJim Jagielski 
1903*b1cdbd2cSJim Jagielski                 INetURLObject aURL;
1904*b1cdbd2cSJim Jagielski                 aURL.SetSmartURL(aFileToOpen);
1905*b1cdbd2cSJim Jagielski                 mpImpl->maOpenFilesList.push_back (new String (aURL.GetMainURL( INetURLObject::NO_DECODE )));
1906*b1cdbd2cSJim Jagielski                 sal_uInt16 nNewPos = mpImpl->mpPage1OpenLB->InsertEntry(aURL.getName());
1907*b1cdbd2cSJim Jagielski                 mpImpl->mpPage1OpenLB->SelectEntryPos(nNewPos);
1908*b1cdbd2cSJim Jagielski             }
1909*b1cdbd2cSJim Jagielski 		}
1910*b1cdbd2cSJim Jagielski     }
1911*b1cdbd2cSJim Jagielski 
1912*b1cdbd2cSJim Jagielski 	//Ende
1913*b1cdbd2cSJim Jagielski 	mpImpl->EndDialog(RET_OK);
1914*b1cdbd2cSJim Jagielski 	EndDialog(RET_OK);
1915*b1cdbd2cSJim Jagielski 	return 0;
1916*b1cdbd2cSJim Jagielski }
1917*b1cdbd2cSJim Jagielski 
~AssistentDlg()1918*b1cdbd2cSJim Jagielski AssistentDlg::~AssistentDlg()
1919*b1cdbd2cSJim Jagielski {
1920*b1cdbd2cSJim Jagielski 	delete mpImpl;
1921*b1cdbd2cSJim Jagielski }
1922*b1cdbd2cSJim Jagielski 
1923*b1cdbd2cSJim Jagielski 
GetDocument()1924*b1cdbd2cSJim Jagielski SfxObjectShellLock AssistentDlg::GetDocument()
1925*b1cdbd2cSJim Jagielski {
1926*b1cdbd2cSJim Jagielski 	return mpImpl->GetDocument();
1927*b1cdbd2cSJim Jagielski }
1928*b1cdbd2cSJim Jagielski 
GetOutputMedium() const1929*b1cdbd2cSJim Jagielski OutputType AssistentDlg::GetOutputMedium() const
1930*b1cdbd2cSJim Jagielski {
1931*b1cdbd2cSJim Jagielski 	if(mpImpl->mpPage2Medium1RB->IsChecked())
1932*b1cdbd2cSJim Jagielski 		return OUTPUT_PRESENTATION;
1933*b1cdbd2cSJim Jagielski 	else if(mpImpl->mpPage2Medium2RB->IsChecked())
1934*b1cdbd2cSJim Jagielski 		return OUTPUT_SLIDE;
1935*b1cdbd2cSJim Jagielski 	else if(mpImpl->mpPage2Medium3RB->IsChecked())
1936*b1cdbd2cSJim Jagielski 		return OUTPUT_OVERHEAD;
1937*b1cdbd2cSJim Jagielski 	else if(mpImpl->mpPage2Medium4RB->IsChecked())
1938*b1cdbd2cSJim Jagielski 		return OUTPUT_PAGE;
1939*b1cdbd2cSJim Jagielski 	else
1940*b1cdbd2cSJim Jagielski 		return OUTPUT_ORIGINAL;
1941*b1cdbd2cSJim Jagielski }
1942*b1cdbd2cSJim Jagielski 
IsSummary() const1943*b1cdbd2cSJim Jagielski sal_Bool AssistentDlg::IsSummary() const
1944*b1cdbd2cSJim Jagielski {
1945*b1cdbd2cSJim Jagielski 	return mpImpl->mpPage5SummaryCB->IsChecked();
1946*b1cdbd2cSJim Jagielski }
1947*b1cdbd2cSJim Jagielski 
GetStartType() const1948*b1cdbd2cSJim Jagielski StartType AssistentDlg::GetStartType() const
1949*b1cdbd2cSJim Jagielski {
1950*b1cdbd2cSJim Jagielski 	return mpImpl->GetStartType();
1951*b1cdbd2cSJim Jagielski }
1952*b1cdbd2cSJim Jagielski 
GetDocPath() const1953*b1cdbd2cSJim Jagielski String AssistentDlg::GetDocPath() const
1954*b1cdbd2cSJim Jagielski {
1955*b1cdbd2cSJim Jagielski 	return mpImpl->GetDocFileName();
1956*b1cdbd2cSJim Jagielski }
1957*b1cdbd2cSJim Jagielski 
GetStartWithFlag() const1958*b1cdbd2cSJim Jagielski sal_Bool AssistentDlg::GetStartWithFlag() const
1959*b1cdbd2cSJim Jagielski {
1960*b1cdbd2cSJim Jagielski 	return !mpImpl->maStartWithFlag.IsChecked();
1961*b1cdbd2cSJim Jagielski }
1962*b1cdbd2cSJim Jagielski 
IsDocEmpty() const1963*b1cdbd2cSJim Jagielski sal_Bool AssistentDlg::IsDocEmpty() const
1964*b1cdbd2cSJim Jagielski {
1965*b1cdbd2cSJim Jagielski 	return mpImpl->GetDocFileName().Len() == 0 &&
1966*b1cdbd2cSJim Jagielski 		   mpImpl->GetLayoutFileName().Len() == 0;
1967*b1cdbd2cSJim Jagielski }
1968*b1cdbd2cSJim Jagielski 
GetPassword()1969*b1cdbd2cSJim Jagielski String AssistentDlg::GetPassword()
1970*b1cdbd2cSJim Jagielski {
1971*b1cdbd2cSJim Jagielski 	return mpImpl->GetPassword( mpImpl->maDocFile );
1972*b1cdbd2cSJim Jagielski }
1973*b1cdbd2cSJim Jagielski 
1974*b1cdbd2cSJim Jagielski 
1975*b1cdbd2cSJim Jagielski 
1976*b1cdbd2cSJim Jagielski 
1977*b1cdbd2cSJim Jagielski //===== NextButton ============================================================
1978*b1cdbd2cSJim Jagielski 
NextButton(::Window * pParent,const ResId & rResId)1979*b1cdbd2cSJim Jagielski NextButton::NextButton (::Window* pParent, const ResId& rResId)
1980*b1cdbd2cSJim Jagielski     : maNextButton1(pParent, rResId),
1981*b1cdbd2cSJim Jagielski       maNextButton2(pParent, rResId),
1982*b1cdbd2cSJim Jagielski       mbIsFirstButtonActive(true)
1983*b1cdbd2cSJim Jagielski {
1984*b1cdbd2cSJim Jagielski     // Hide the unused button.
1985*b1cdbd2cSJim Jagielski     maNextButton2.Hide();
1986*b1cdbd2cSJim Jagielski }
1987*b1cdbd2cSJim Jagielski 
1988*b1cdbd2cSJim Jagielski 
1989*b1cdbd2cSJim Jagielski 
1990*b1cdbd2cSJim Jagielski 
ForceFocusEventBroadcast(void)1991*b1cdbd2cSJim Jagielski void NextButton::ForceFocusEventBroadcast (void)
1992*b1cdbd2cSJim Jagielski {
1993*b1cdbd2cSJim Jagielski     // Hide the currently visible button and show and focus the other one.
1994*b1cdbd2cSJim Jagielski     if (mbIsFirstButtonActive)
1995*b1cdbd2cSJim Jagielski     {
1996*b1cdbd2cSJim Jagielski         mbIsFirstButtonActive = false;
1997*b1cdbd2cSJim Jagielski         maNextButton2.Show();
1998*b1cdbd2cSJim Jagielski         maNextButton2.GrabFocus();
1999*b1cdbd2cSJim Jagielski         maNextButton1.Hide();
2000*b1cdbd2cSJim Jagielski     }
2001*b1cdbd2cSJim Jagielski     else
2002*b1cdbd2cSJim Jagielski     {
2003*b1cdbd2cSJim Jagielski         mbIsFirstButtonActive = true;
2004*b1cdbd2cSJim Jagielski         maNextButton1.Show();
2005*b1cdbd2cSJim Jagielski         maNextButton1.GrabFocus();
2006*b1cdbd2cSJim Jagielski         maNextButton2.Hide();
2007*b1cdbd2cSJim Jagielski     }
2008*b1cdbd2cSJim Jagielski }
2009*b1cdbd2cSJim Jagielski 
2010*b1cdbd2cSJim Jagielski 
2011*b1cdbd2cSJim Jagielski 
2012*b1cdbd2cSJim Jagielski 
SetClickHdl(const Link & rLink)2013*b1cdbd2cSJim Jagielski void NextButton::SetClickHdl (const Link& rLink)
2014*b1cdbd2cSJim Jagielski {
2015*b1cdbd2cSJim Jagielski     // Forward the setting of the click handler to the two buttons
2016*b1cdbd2cSJim Jagielski     // regardless of which one is currently visible.
2017*b1cdbd2cSJim Jagielski     maNextButton1.SetClickHdl(rLink);
2018*b1cdbd2cSJim Jagielski     maNextButton2.SetClickHdl(rLink);
2019*b1cdbd2cSJim Jagielski }
2020*b1cdbd2cSJim Jagielski 
2021*b1cdbd2cSJim Jagielski 
2022*b1cdbd2cSJim Jagielski 
2023*b1cdbd2cSJim Jagielski 
IsEnabled(void)2024*b1cdbd2cSJim Jagielski bool NextButton::IsEnabled (void)
2025*b1cdbd2cSJim Jagielski {
2026*b1cdbd2cSJim Jagielski     // Because the buttons are both either enabled or disabled, it is
2027*b1cdbd2cSJim Jagielski     // sufficient to ask one to determine the state.
2028*b1cdbd2cSJim Jagielski     return maNextButton1.IsEnabled();
2029*b1cdbd2cSJim Jagielski }
2030*b1cdbd2cSJim Jagielski 
2031*b1cdbd2cSJim Jagielski 
2032*b1cdbd2cSJim Jagielski 
2033*b1cdbd2cSJim Jagielski 
Enable(bool bEnable)2034*b1cdbd2cSJim Jagielski void NextButton::Enable (bool bEnable)
2035*b1cdbd2cSJim Jagielski {
2036*b1cdbd2cSJim Jagielski     // Enable or disable both buttons but do not change visibility or focus.
2037*b1cdbd2cSJim Jagielski     maNextButton1.Enable(bEnable);
2038*b1cdbd2cSJim Jagielski     maNextButton2.Enable(bEnable);
2039*b1cdbd2cSJim Jagielski }
2040