xref: /aoo4110/main/sd/source/filter/html/pubdlg.cxx (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26 
27 #ifdef SD_DLLIMPLEMENTATION
28 #undef SD_DLLIMPLEMENTATION
29 #endif
30 #include <com/sun/star/beans/PropertyValue.hpp>
31 #include <unotools/ucbstreamhelper.hxx>
32 #include <vcl/lstbox.hxx>
33 #include <svtools/FilterConfigItem.hxx>
34 #ifndef _SV_BUTTON_HXX
35 #include <vcl/button.hxx>
36 #endif
37 #include <vcl/fixed.hxx>
38 #include <vcl/combobox.hxx>
39 #include <svtools/svmedit.hxx>
40 #include <svl/intitem.hxx>
41 #include <svl/aeitem.hxx>
42 #include <svl/itemset.hxx>
43 #include <svl/stritem.hxx>
44 #include <vcl/msgbox.hxx>
45 #include <svtools/valueset.hxx>
46 #include <vcl/graph.hxx>
47 #include <svl/eitem.hxx>
48 #include <svtools/colrdlg.hxx>
49 #include <editeng/colritem.hxx>
50 #include <tools/urlobj.hxx>
51 #include <tools/list.hxx>
52 #include <sdiocmpt.hxx>
53 #include <sfx2/docfile.hxx>
54 #include <sfx2/app.hxx>
55 #include <pres.hxx>
56 #include <unotools/useroptions.hxx>
57 #include <unotools/pathoptions.hxx>
58 
59 #include "sdresid.hxx"
60 #include "sdattr.hxx"
61 #include "pubdlg.hrc"
62 #include "htmlattr.hxx"
63 #include "htmlex.hxx"
64 #include "helpids.h"
65 #include "buttonset.hxx"
66 
67 using namespace std;
68 using namespace rtl;
69 using namespace com::sun::star::uno;
70 using namespace com::sun::star::beans;
71 
72 extern void InterpolateFixedBitmap( FixedBitmap * pBitmap );
73 
74 // Kennung fuer die Config Datei mit den Html Einstellungen
75 const sal_uInt16 nMagic = (sal_uInt16)0x1977;
76 
77 // Key fuer die soffice.ini
78 #define KEY_QUALITY		"JPG-EXPORT-QUALITY"
79 
80 // Die Help Ids der einzelnen Seiten
81 const char* aPageHelpIds[NOOFPAGES] =
82 {
83 	HID_SD_HTMLEXPORT_PAGE1,
84 	HID_SD_HTMLEXPORT_PAGE2,
85 	HID_SD_HTMLEXPORT_PAGE3,
86 	HID_SD_HTMLEXPORT_PAGE4,
87 	HID_SD_HTMLEXPORT_PAGE5,
88 	HID_SD_HTMLEXPORT_PAGE6
89 };
90 
91 // *********************************************************************
92 // Diese Klasse enthaelt alle Einstellungen des Html-Export Autopiloten
93 // *********************************************************************
94 class SdPublishingDesign
95 {
96 public:
97 	String	m_aDesignName;
98 
99 	HtmlPublishMode	m_eMode;
100 
101 	// special WebCast options
102 	PublishingScript m_eScript;
103 	String		     m_aCGI;
104 	String			 m_aURL;
105 
106 	// special Kiosk options
107 	sal_Bool	m_bAutoSlide;
108 	sal_uInt32	m_nSlideDuration;
109 	sal_Bool	m_bEndless;
110 
111 	// special HTML options
112 	sal_Bool	m_bContentPage;
113 	sal_Bool	m_bNotes;
114 
115 	// misc options
116 	sal_uInt16	m_nResolution;
117 	String	m_aCompression;
118 	PublishingFormat m_eFormat;
119 	sal_Bool	m_bSlideSound;
120     sal_Bool    m_bHiddenSlides;
121 
122 	// titel page information
123 	String	m_aAuthor;
124 	String	m_aEMail;
125 	String	m_aWWW;
126 	String	m_aMisc;
127 	sal_Bool	m_bDownload;
128 	sal_Bool	m_bCreated;			// not used
129 
130 	// buttons and colorscheme
131 	sal_Int16	m_nButtonThema;
132 	sal_Bool	m_bUserAttr;
133 	Color	m_aBackColor;
134 	Color	m_aTextColor;
135 	Color   m_aLinkColor;
136 	Color	m_aVLinkColor;
137 	Color	m_aALinkColor;
138 	sal_Bool	m_bUseAttribs;
139 	sal_Bool	m_bUseColor;
140 
141 	SdPublishingDesign();
142 
143 	int operator ==(const SdPublishingDesign & rDesign) const;
144 	friend SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign);
145 	friend SvStream& operator << (SvStream& rOut, const SdPublishingDesign& rDesign);
146 };
147 
148 // =====================================================================
149 // Default Einstellungen erzeugen
150 // =====================================================================
SdPublishingDesign()151 SdPublishingDesign::SdPublishingDesign()
152 {
153 	m_eMode = PUBLISH_HTML;
154 	m_bContentPage = sal_True;
155 	m_bNotes = sal_True;
156 
157 	m_eFormat = FORMAT_PNG;
158 
159 	String	aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/JPG" ) );
160 	FilterConfigItem aFilterConfigItem( aFilterConfigPath );
161 	sal_Int32 nCompression = aFilterConfigItem.ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( KEY_QUALITY ) ), 75 );
162 	m_aCompression = UniString::CreateFromInt32( nCompression );
163 	m_aCompression.Append( sal_Unicode('%') );
164 
165     SvtUserOptions aUserOptions;
166 
167 	m_nResolution	= PUB_LOWRES_WIDTH;
168     m_aAuthor       = aUserOptions.GetFirstName();
169     if( m_aAuthor.Len() && aUserOptions.GetLastName().getLength() )
170 		m_aAuthor	   += sal_Unicode(' ');
171     m_aAuthor      += (String)aUserOptions.GetLastName();
172     m_aEMail        = aUserOptions.GetEmail();
173 	m_bDownload		= sal_False;
174 //-/	m_bCreated		= sal_True;
175 	m_nButtonThema	= -1;
176 
177 	m_bUserAttr		= sal_False;
178 	m_bUseAttribs	= sal_True;
179 	m_bUseColor		= sal_True;
180 
181 	m_aBackColor    = COL_WHITE;
182 	m_aTextColor    = COL_BLACK;
183 	m_aLinkColor    = COL_BLUE;
184 	m_aVLinkColor	= COL_LIGHTBLUE;
185 	m_aALinkColor	= COL_GRAY;
186 
187 	m_eScript		= SCRIPT_ASP;
188 
189 	m_bAutoSlide	 = sal_True;
190 	m_nSlideDuration = 15;
191 	m_bEndless		 = sal_True;
192 
193 	m_bSlideSound	 = sal_True;
194     m_bHiddenSlides  = sal_False;
195 }
196 
197 // =====================================================================
198 // Vergleicht die Member ohne den Namen zu beachten
199 // =====================================================================
operator ==(const SdPublishingDesign & rDesign) const200 int SdPublishingDesign::operator ==(const SdPublishingDesign & rDesign) const
201 {
202 	return
203 	(
204 		m_eMode 	   == rDesign.m_eMode &&
205 		m_nResolution  == rDesign.m_nResolution &&
206 		m_aCompression == rDesign.m_aCompression &&
207 		m_eFormat	   == rDesign.m_eFormat &&
208         m_bHiddenSlides == rDesign.m_bHiddenSlides &&
209 		(  // compare html options
210 			(m_eMode != PUBLISH_HTML && m_eMode != PUBLISH_FRAMES) ||
211 			(
212 				m_bContentPage == rDesign.m_bContentPage &&
213 				m_bNotes	   == rDesign.m_bNotes &&
214 				m_aAuthor	   == rDesign.m_aAuthor &&
215 				m_aEMail	   == rDesign.m_aEMail &&
216 				m_aWWW	       == rDesign.m_aWWW &&
217 				m_aMisc		   == rDesign.m_aMisc &&
218 				m_bDownload    == rDesign.m_bDownload &&
219 //-/				m_bCreated     == rDesign.m_bCreated &&
220 				m_nButtonThema == rDesign.m_nButtonThema &&
221 				m_bUserAttr    == rDesign.m_bUserAttr &&
222 				m_aBackColor   == rDesign.m_aBackColor &&
223 				m_aTextColor   == rDesign.m_aTextColor &&
224 				m_aLinkColor   == rDesign.m_aLinkColor &&
225 				m_aVLinkColor  == rDesign.m_aVLinkColor &&
226 				m_aALinkColor  == rDesign.m_aALinkColor &&
227 				m_bUseAttribs  == rDesign.m_bUseAttribs &&
228 				m_bSlideSound  == rDesign.m_bSlideSound &&
229 				m_bUseColor    == rDesign.m_bUseColor
230 			)
231 		) &&
232 		(	// compare kiosk options
233 			(m_eMode != PUBLISH_KIOSK) ||
234 			(
235 				m_bAutoSlide  == rDesign.m_bAutoSlide &&
236 				m_bSlideSound == rDesign.m_bSlideSound &&
237 				(
238 					!m_bAutoSlide ||
239 					(
240 						m_nSlideDuration == rDesign.m_nSlideDuration &&
241 						m_bEndless == rDesign.m_bEndless
242 					)
243 				)
244 			)
245 		) &&
246 		(	// compare WebCast options
247 			(m_eMode != PUBLISH_WEBCAST) ||
248 			(
249 				m_eScript == rDesign.m_eScript &&
250 				(
251 					m_eScript != SCRIPT_PERL ||
252 					(
253 						m_aURL == rDesign.m_aURL &&
254 						m_aCGI == rDesign.m_aCGI
255 					)
256 				)
257 			)
258 		)
259 	);
260 }
261 
262 // =====================================================================
263 // Dieses Design aus Stream laden
264 // =====================================================================
operator >>(SvStream & rIn,SdPublishingDesign & rDesign)265 SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign)
266 {
267 	SdIOCompat aIO(rIn, STREAM_READ);
268 
269 	sal_uInt16 nTemp16;
270 
271 	rIn.ReadByteString( rDesign.m_aDesignName, RTL_TEXTENCODING_UTF8 );
272 	rIn >> nTemp16;
273 	rDesign.m_eMode = (HtmlPublishMode)nTemp16;
274 	rIn >> rDesign.m_bContentPage;
275 	rIn >> rDesign.m_bNotes;
276 	rIn >> rDesign.m_nResolution;
277 	rIn.ReadByteString( rDesign.m_aCompression, RTL_TEXTENCODING_UTF8 );
278 	rIn >> nTemp16;
279 	rDesign.m_eFormat = (PublishingFormat)nTemp16;
280 	rIn.ReadByteString( rDesign.m_aAuthor, RTL_TEXTENCODING_UTF8 );
281 	rIn.ReadByteString( rDesign.m_aEMail, RTL_TEXTENCODING_UTF8 );
282 	rIn.ReadByteString( rDesign.m_aWWW, RTL_TEXTENCODING_UTF8 );
283 	rIn.ReadByteString( rDesign.m_aMisc, RTL_TEXTENCODING_UTF8 );
284 	rIn >> rDesign.m_bDownload;
285 	rIn >> rDesign.m_bCreated;		// not used
286 	rIn >> rDesign.m_nButtonThema;
287 	rIn >> rDesign.m_bUserAttr;
288 	rIn >> rDesign.m_aBackColor;
289 	rIn >> rDesign.m_aTextColor;
290 	rIn >> rDesign.m_aLinkColor;
291 	rIn >> rDesign.m_aVLinkColor;
292 	rIn >> rDesign.m_aALinkColor;
293 	rIn >> rDesign.m_bUseAttribs;
294 	rIn >> rDesign.m_bUseColor;
295 
296 	rIn >> nTemp16;
297 	rDesign.m_eScript = (PublishingScript)nTemp16;
298 	rIn.ReadByteString( rDesign.m_aURL, RTL_TEXTENCODING_UTF8 );
299 	rIn.ReadByteString( rDesign.m_aCGI, RTL_TEXTENCODING_UTF8 );
300 
301 	rIn >> rDesign.m_bAutoSlide;
302 	rIn >> rDesign.m_nSlideDuration;
303 	rIn >> rDesign.m_bEndless;
304 	rIn >> rDesign.m_bSlideSound;
305     rIn >> rDesign.m_bHiddenSlides;
306 
307 	return rIn;
308 }
309 
310 // =====================================================================
311 // Dieses Design in Stream speichern
312 // =====================================================================
operator <<(SvStream & rOut,const SdPublishingDesign & rDesign)313 SvStream& operator << (SvStream& rOut, const SdPublishingDesign& rDesign)
314 {
315 	// Letzter Parameter ist die aktuelle Versionsnummer des Codes
316 	SdIOCompat aIO(rOut, STREAM_WRITE, 0);
317 
318 	// Name
319 	rOut.WriteByteString( rDesign.m_aDesignName, RTL_TEXTENCODING_UTF8 );
320 
321 	rOut << (sal_uInt16)rDesign.m_eMode;
322 	rOut << rDesign.m_bContentPage;
323 	rOut << rDesign.m_bNotes;
324 	rOut << rDesign.m_nResolution;
325 	rOut.WriteByteString( rDesign.m_aCompression, RTL_TEXTENCODING_UTF8 );
326 	rOut << (sal_uInt16)rDesign.m_eFormat;
327 	rOut.WriteByteString( rDesign.m_aAuthor, RTL_TEXTENCODING_UTF8 );
328 	rOut.WriteByteString( rDesign.m_aEMail, RTL_TEXTENCODING_UTF8 );
329 	rOut.WriteByteString( rDesign.m_aWWW, RTL_TEXTENCODING_UTF8 );
330 	rOut.WriteByteString( rDesign.m_aMisc, RTL_TEXTENCODING_UTF8 );
331 	rOut << rDesign.m_bDownload;
332 	rOut << rDesign.m_bCreated;		// not used
333 	rOut << rDesign.m_nButtonThema;
334 	rOut << rDesign.m_bUserAttr;
335 	rOut << rDesign.m_aBackColor;
336 	rOut << rDesign.m_aTextColor;
337 	rOut << rDesign.m_aLinkColor;
338 	rOut << rDesign.m_aVLinkColor;
339 	rOut << rDesign.m_aALinkColor;
340 	rOut << rDesign.m_bUseAttribs;
341 	rOut << rDesign.m_bUseColor;
342 
343 	rOut << (sal_uInt16)rDesign.m_eScript;
344 	rOut.WriteByteString( rDesign.m_aURL, RTL_TEXTENCODING_UTF8 );
345 	rOut.WriteByteString( rDesign.m_aCGI, RTL_TEXTENCODING_UTF8 );
346 
347 	rOut << rDesign.m_bAutoSlide;
348 	rOut << rDesign.m_nSlideDuration;
349 	rOut << rDesign.m_bEndless;
350 	rOut << rDesign.m_bSlideSound;
351     rOut << rDesign.m_bHiddenSlides;
352 
353 	return rOut;
354 }
355 
356 // *********************************************************************
357 // Dialog zur eingabe eines Namens fuer ein Design
358 // *********************************************************************
359 class SdDesignNameDlg : public ModalDialog
360 {
361 private:
362 	Edit			m_aEdit;
363 	OKButton		m_aBtnOK;
364 	CancelButton	m_aBtnCancel;
365 
366 public:
367 	SdDesignNameDlg(Window* pWindow, const String& aName );
368 
369 	String GetDesignName();
370 	DECL_LINK( ModifyHdl, Edit* );
371 };
372 
373 // *********************************************************************
374 // SdPublishingDlg Methoden
375 // *********************************************************************
376 
377 // =====================================================================
378 // Konstruktor des Dialogs
379 // =====================================================================
SdPublishingDlg(Window * pWindow,DocumentType eDocType)380 SdPublishingDlg::SdPublishingDlg(Window* pWindow, DocumentType eDocType)
381 :	ModalDialog(pWindow, SdResId( DLG_PUBLISHING ))
382 ,	mpButtonSet( new ButtonSet() )
383 ,	aBottomLine( this, SdResId( BOTTOM_LINE ) )
384 ,	aHelpButton(this,SdResId(BUT_HELP))
385 ,	aCancelButton(this,SdResId(BUT_CANCEL))
386 ,	aLastPageButton(this,SdResId(BUT_LAST))
387 ,	aNextPageButton(this,SdResId(BUT_NEXT))
388 ,	aFinishButton(this,SdResId(BUT_FINISH))
389 ,	aAssistentFunc(NOOFPAGES)
390 ,	m_bButtonsDirty(sal_True)
391 ,	m_bDesignListDirty(sal_False)
392 ,	m_pDesign(NULL)
393 {
394 	m_bImpress = eDocType == DOCUMENT_TYPE_IMPRESS;
395 
396 	CreatePages();
397 	Load();
398 
399 	//setzt die Ausgangsseite
400 	aAssistentFunc.GotoPage(1);
401 	aLastPageButton.Disable();
402 
403 	//Buttonbelegung
404 	aFinishButton.SetClickHdl(LINK(this,SdPublishingDlg,FinishHdl));
405 	aLastPageButton.SetClickHdl(LINK(this,SdPublishingDlg,LastPageHdl));
406 	aNextPageButton.SetClickHdl(LINK(this,SdPublishingDlg,NextPageHdl));
407 
408 	pPage1_NewDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignHdl));
409 	pPage1_OldDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignHdl));
410 	pPage1_Designs->SetSelectHdl(LINK(this,SdPublishingDlg,DesignSelectHdl));
411 	pPage1_DelDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignDeleteHdl));
412 
413 	pPage2_Standard->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
414 	pPage2_Standard_FB->SetBorderStyle(WINDOW_BORDER_MONO);
415 	pPage2_Frames->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
416 	pPage2_Frames_FB->SetBorderStyle(WINDOW_BORDER_MONO);
417 	pPage2_Kiosk->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
418 	pPage2_Kiosk_FB->SetBorderStyle(WINDOW_BORDER_MONO);
419 	pPage2_WebCast->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
420 	pPage2_WebCast_FB->SetBorderStyle(WINDOW_BORDER_MONO);
421 
422 	pPage2_Content->SetClickHdl(LINK(this,SdPublishingDlg,ContentHdl));
423 
424 	pPage2_ASP->SetClickHdl(LINK(this,SdPublishingDlg,WebServerHdl));
425 	pPage2_PERL->SetClickHdl(LINK(this,SdPublishingDlg,WebServerHdl));
426 	String	aText( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("index")) );
427 	aText += String(SdResId(STR_HTMLEXP_DEFAULT_EXTENSION));
428 	pPage2_Index->SetText(aText);
429 	pPage2_CGI->SetText( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "/cgi-bin/" ) ) );
430 
431 	pPage3_Png->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
432 	pPage3_Gif->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
433 	pPage3_Jpg->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
434 	pPage3_Quality->Enable(sal_False);
435 
436 	pPage3_Resolution_1->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
437 	pPage3_Resolution_2->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
438 	pPage3_Resolution_3->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
439 
440 	pPage2_ChgDefault->SetClickHdl(LINK(this,SdPublishingDlg, SlideChgHdl));
441 	pPage2_ChgAuto->SetClickHdl(LINK(this,SdPublishingDlg, SlideChgHdl));
442 	pPage2_Duration->SetFormat( TIMEF_SEC );
443 
444 	pPage5_Buttons->SetSelectHdl(LINK(this,SdPublishingDlg, ButtonsHdl ));
445 	pPage5_Buttons->SetStyle( pPage5_Buttons->GetStyle() | WB_VSCROLL );
446 
447 	pPage6_Back->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
448 	pPage6_Text->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
449 	pPage6_Link->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
450 	pPage6_VLink->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
451 	pPage6_ALink->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
452 
453 	pPage6_DocColors->Check();
454 
455 	FreeResource();
456 
457 	pPage3_Quality->InsertEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "25%" ) ) );
458 	pPage3_Quality->InsertEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "50%" ) ) );
459 	pPage3_Quality->InsertEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "75%" ) ) );
460 	pPage3_Quality->InsertEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "100%" ) ) );
461 
462 	pPage5_Buttons->SetColCount( 1 );
463 	pPage5_Buttons->SetLineCount( 4 );
464 	pPage5_Buttons->SetExtraSpacing( 1 );
465 
466 	for( sal_uInt16 nIndex = 0; nIndex < m_pDesignList->Count(); nIndex++ )
467 	{
468 		SdPublishingDesign *pDesign = (SdPublishingDesign*)
469 										m_pDesignList->GetObject(nIndex);
470 
471 		pPage1_Designs->InsertEntry(pDesign->m_aDesignName);
472 	}
473 
474 	pPage6_Preview->SetBorderStyle(WINDOW_BORDER_MONO);
475 
476 	SetDefaults();
477 
478 	SetHelpId(aPageHelpIds[0]);
479 
480 	aNextPageButton.GrabFocus();
481 }
482 
483 // =====================================================================
484 // Destruktor
485 // =====================================================================
~SdPublishingDlg()486 SdPublishingDlg::~SdPublishingDlg()
487 {
488 	if( m_pDesignList )
489 	{
490 		for( sal_uInt16 nIndex = 0;	nIndex < m_pDesignList->Count(); nIndex++ )
491 			delete (SdPublishingDesign*)m_pDesignList->GetObject(nIndex);
492 	}
493 
494 	delete m_pDesignList;
495 	RemovePages();
496 }
497 
498 // =====================================================================
499 // Dialog Controls erzeugen und in die Seiten des Assistenten einbinden
500 // =====================================================================
CreatePages()501 void SdPublishingDlg::CreatePages()
502 {
503 	// Page 1
504 	aAssistentFunc.InsertControl(1,
505 		pPage1_Bmp = new FixedBitmap(this,SdResId(PAGE1_BMP)));
506 	aAssistentFunc.InsertControl(1,
507 		pPage1_Titel = new FixedLine(this,SdResId(PAGE1_TITEL)));
508 	aAssistentFunc.InsertControl(1,
509 		pPage1_NewDesign = new RadioButton(this,SdResId(PAGE1_NEW_DESIGN)));
510 	aAssistentFunc.InsertControl(1,
511 		pPage1_OldDesign = new RadioButton(this,SdResId(PAGE1_OLD_DESIGN)));
512 	aAssistentFunc.InsertControl(1,
513 		pPage1_Designs = new ListBox(this,SdResId(PAGE1_DESIGNS)));
514 	aAssistentFunc.InsertControl(1,
515 		pPage1_DelDesign = new PushButton(this,SdResId(PAGE1_DEL_DESIGN)));
516 	aAssistentFunc.InsertControl(1,
517 		pPage1_Desc = new FixedText(this,SdResId(PAGE1_DESC)));
518 
519 
520 	// Page 2
521 	aAssistentFunc.InsertControl(2,
522 		pPage2_Bmp = new FixedBitmap(this,SdResId(PAGE2_BMP)));
523 	aAssistentFunc.InsertControl(2,
524 		pPage2_Titel = new FixedLine(this,SdResId(PAGE2_TITEL )));
525 	aAssistentFunc.InsertControl(2,
526 		pPage2_Standard = new RadioButton(this,SdResId(PAGE2_STANDARD)));
527 	aAssistentFunc.InsertControl(2,
528 		pPage2_Frames = new RadioButton(this,SdResId(PAGE2_FRAMES)));
529 	aAssistentFunc.InsertControl(2,
530 		pPage2_Kiosk = new RadioButton(this,SdResId(PAGE2_KIOSK)));
531 	aAssistentFunc.InsertControl(2,
532 		pPage2_WebCast = new RadioButton(this,SdResId(PAGE2_WEBCAST)));
533 	aAssistentFunc.InsertControl(2,
534 		pPage2_Standard_FB = new FixedBitmap(this,SdResId(PAGE2_NOFRAMES_FB)));
535 	aAssistentFunc.InsertControl(2,
536 		pPage2_Frames_FB = new FixedBitmap(this,SdResId(PAGE2_FRAMES_FB)));
537 	aAssistentFunc.InsertControl(2,
538 		pPage2_Kiosk_FB = new FixedBitmap(this,SdResId(PAGE2_KIOSK_FB)));
539 	aAssistentFunc.InsertControl(2,
540 		pPage2_WebCast_FB = new FixedBitmap(this,SdResId(PAGE2_WEBCAST_FB)));
541 
542 	aAssistentFunc.InsertControl(2,
543 		pPage2_Titel_Html = new FixedLine(this,SdResId(PAGE2_TITEL_HTML)));
544 	aAssistentFunc.InsertControl(2,
545 		pPage2_Content = new CheckBox(this,SdResId(PAGE2_CONTENT)));
546 	if(m_bImpress)
547 		aAssistentFunc.InsertControl(2,
548 			pPage2_Notes = new CheckBox(this,SdResId(PAGE2_NOTES)));
549 
550 	aAssistentFunc.InsertControl(2,
551 		pPage2_Titel_WebCast = new FixedLine(this,SdResId(PAGE2_TITEL_WEBCAST)));
552 	aAssistentFunc.InsertControl(2,
553 		pPage2_Index_txt = new FixedText(this,SdResId(PAGE2_INDEX_TXT)));
554 	aAssistentFunc.InsertControl(2,
555 		pPage2_Index = new Edit(this,SdResId(PAGE2_INDEX)));
556 	aAssistentFunc.InsertControl(2,
557 		pPage2_ASP = new RadioButton(this,SdResId(PAGE2_ASP)));
558 	aAssistentFunc.InsertControl(2,
559 		pPage2_PERL = new RadioButton(this,SdResId(PAGE2_PERL)));
560 	aAssistentFunc.InsertControl(2,
561 		pPage2_URL_txt = new FixedText(this,SdResId(PAGE2_URL_TXT)));
562 	aAssistentFunc.InsertControl(2,
563 		pPage2_URL = new Edit(this,SdResId(PAGE2_URL)));
564 	aAssistentFunc.InsertControl(2,
565 		pPage2_CGI_txt = new FixedText(this,SdResId(PAGE2_CGI_TXT)));
566 	aAssistentFunc.InsertControl(2,
567 		pPage2_CGI = new Edit(this,SdResId(PAGE2_CGI)));
568 	aAssistentFunc.InsertControl(2,
569 		pPage2_Vert = new FixedLine( this,SdResId( PAGE2_VERT )));
570 	aAssistentFunc.InsertControl(2,
571 		pPage2_Titel_Kiosk = new FixedLine(this,SdResId(PAGE2_TITEL_KIOSK)));
572 	aAssistentFunc.InsertControl(2,
573 		pPage2_ChgDefault = new RadioButton(this,SdResId(PAGE2_CHG_DEFAULT)));
574 	aAssistentFunc.InsertControl(2,
575 		pPage2_ChgAuto = new RadioButton(this,SdResId(PAGE2_CHG_AUTO)));
576 	aAssistentFunc.InsertControl(2,
577 		pPage2_Duration_txt = new FixedText(this,SdResId(PAGE2_DURATION_TXT)));
578 	aAssistentFunc.InsertControl(2,
579 		pPage2_Duration = new TimeField(this,SdResId(PAGE2_DURATION_TMF)));
580 	aAssistentFunc.InsertControl(2,
581 		pPage2_Endless = new CheckBox(this,SdResId(PAGE2_ENDLESS)));
582 
583 	// Page 3
584 	aAssistentFunc.InsertControl(3,
585 		pPage3_Bmp = new FixedBitmap(this,SdResId(PAGE3_BMP)));
586 	aAssistentFunc.InsertControl(3,
587 		pPage3_Titel1 = new FixedLine(this,SdResId(PAGE3_TITEL_1)));
588 	aAssistentFunc.InsertControl(3,
589 		pPage3_Png = new RadioButton(this,SdResId(PAGE3_PNG)));
590 	aAssistentFunc.InsertControl(3,
591 		pPage3_Gif = new RadioButton(this,SdResId(PAGE3_GIF)));
592 	aAssistentFunc.InsertControl(3,
593 		pPage3_Jpg = new RadioButton(this,SdResId(PAGE3_JPG)));
594 	aAssistentFunc.InsertControl(3,
595 		pPage3_Quality_txt = new FixedText(this,SdResId(PAGE3_QUALITY_TXT)));
596 	aAssistentFunc.InsertControl(3,
597 		pPage3_Quality = new ComboBox(this,SdResId(PAGE3_QUALITY)));
598 	aAssistentFunc.InsertControl(3,
599 		pPage3_Vert = new FixedLine( this,SdResId( PAGE3_VERT )));
600 	aAssistentFunc.InsertControl(3,
601 		pPage3_Titel2 = new FixedLine(this,SdResId(PAGE3_TITEL_2)));
602 	aAssistentFunc.InsertControl(3,
603 		pPage3_Resolution_1 = new RadioButton(this,SdResId(PAGE3_RESOLUTION_1)));
604 	aAssistentFunc.InsertControl(3,
605 		pPage3_Resolution_2 = new RadioButton(this,SdResId(PAGE3_RESOLUTION_2)));
606 	aAssistentFunc.InsertControl(3,
607 		pPage3_Resolution_3 = new RadioButton(this,SdResId(PAGE3_RESOLUTION_3)));
608 	aAssistentFunc.InsertControl(3,
609 		pPage3_Titel3 = new FixedLine(this,SdResId(PAGE3_TITEL_3)));
610 	aAssistentFunc.InsertControl(3,
611 		pPage3_SldSound = new CheckBox(this,SdResId(PAGE3_SLD_SOUND)));
612     aAssistentFunc.InsertControl(3,
613         pPage3_HiddenSlides = new CheckBox(this,SdResId(PAGE3_HIDDEN_SLIDES)));
614 
615 	// Seite 4
616 	aAssistentFunc.InsertControl(4,
617 		pPage4_Bmp = new FixedBitmap(this,SdResId(PAGE4_BMP)));
618 	aAssistentFunc.InsertControl(4,
619 		pPage4_Titel1 = new FixedLine(this,SdResId(PAGE4_TITEL_1)));
620 	aAssistentFunc.InsertControl(4,
621 		pPage4_Author_txt = new FixedText(this,SdResId(PAGE4_AUTHOR_TXT)));
622 	aAssistentFunc.InsertControl(4,
623 		pPage4_Author = new Edit(this,SdResId(PAGE4_AUTHOR)));
624 	aAssistentFunc.InsertControl(4,
625 		pPage4_Email_txt = new FixedText(this,SdResId(PAGE4_EMAIL_TXT)));
626 	aAssistentFunc.InsertControl(4,
627 		pPage4_Email = new Edit(this,SdResId(PAGE4_EMAIL_EDIT)));
628 	aAssistentFunc.InsertControl(4,
629 		pPage4_WWW_txt = new FixedText(this,SdResId(PAGE4_WWW_TXT)));
630 	aAssistentFunc.InsertControl(4,
631 		pPage4_WWW = new Edit(this,SdResId(PAGE4_WWW_EDIT)));
632 	aAssistentFunc.InsertControl(4,
633 		pPage4_Titel2 = new FixedText(this,SdResId(PAGE4_TITEL_2)));
634 	aAssistentFunc.InsertControl(4,
635 		pPage4_Misc = new MultiLineEdit(this,SdResId(PAGE4_MISC)));
636 	if(m_bImpress)
637 		aAssistentFunc.InsertControl(4,
638 			pPage4_Download = new CheckBox(this,SdResId(PAGE4_DOWNLOAD)));
639 //-/	aAssistentFunc.InsertControl(4,
640 //-/		pPage4_Created = new CheckBox(this,SdResId(PAGE4_CREATED)));
641 
642 	// Seite 5
643 	aAssistentFunc.InsertControl(5,
644 		pPage5_Bmp = new FixedBitmap(this,SdResId(PAGE5_BMP)));
645 	aAssistentFunc.InsertControl(5,
646 		pPage5_Titel = new FixedLine(this,SdResId(PAGE5_TITEL)));
647 	aAssistentFunc.InsertControl(5,
648 		pPage5_TextOnly = new CheckBox(this, SdResId(PAGE5_TEXTONLY)));
649 	aAssistentFunc.InsertControl(5,
650 		pPage5_Buttons = new ValueSet(this,SdResId(PAGE5_BUTTONS)));
651 
652 	// Seite 6
653 	aAssistentFunc.InsertControl(6,
654 		pPage6_Bmp = new FixedBitmap(this,SdResId(PAGE6_BMP)));
655 	aAssistentFunc.InsertControl(6,
656 		pPage6_Titel = new FixedLine(this,SdResId(PAGE6_TITEL)));
657 	aAssistentFunc.InsertControl(6,
658 		pPage6_DocColors = new RadioButton(this,SdResId(PAGE6_DOCCOLORS)));
659 	aAssistentFunc.InsertControl(6,
660 		pPage6_Default = new RadioButton(this,SdResId(PAGE6_DEFAULT)));
661 	aAssistentFunc.InsertControl(6,
662 		pPage6_User = new RadioButton(this,SdResId(PAGE6_USER)));
663 	aAssistentFunc.InsertControl(6,
664 		pPage6_Text = new PushButton(this,SdResId(PAGE6_TEXT)));
665 	aAssistentFunc.InsertControl(6,
666 		pPage6_Link = new PushButton(this,SdResId(PAGE6_LINK)));
667 	aAssistentFunc.InsertControl(6,
668 		pPage6_ALink = new PushButton(this,SdResId(PAGE6_ALINK)));
669 	aAssistentFunc.InsertControl(6,
670 		pPage6_VLink = new PushButton(this,SdResId(PAGE6_VLINK)));
671 	aAssistentFunc.InsertControl(6,
672 		pPage6_Back = new PushButton(this,SdResId(PAGE6_BACK)));
673 	aAssistentFunc.InsertControl(6,
674 		pPage6_Preview = new SdHtmlAttrPreview(this,SdResId(PAGE6_PREVIEW)));
675 
676     InterpolateFixedBitmap(pPage1_Bmp);
677 
678     InterpolateFixedBitmap(pPage2_Bmp);
679     InterpolateFixedBitmap(pPage2_Standard_FB);
680     InterpolateFixedBitmap(pPage2_Frames_FB);
681     InterpolateFixedBitmap(pPage2_Kiosk_FB);
682     InterpolateFixedBitmap(pPage2_WebCast_FB);
683 
684     InterpolateFixedBitmap(pPage3_Bmp);
685     InterpolateFixedBitmap(pPage4_Bmp);
686 
687     InterpolateFixedBitmap(pPage5_Bmp);
688     InterpolateFixedBitmap(pPage6_Bmp);
689 }
690 
691 // =====================================================================
692 // Dialog Controls wieder entfernen
693 // =====================================================================
RemovePages()694 void SdPublishingDlg::RemovePages()
695 {
696 	delete pPage1_Bmp;
697 	delete pPage1_Titel;
698 	delete pPage1_NewDesign;
699 	delete pPage1_OldDesign;
700 	delete pPage1_Designs;
701 	delete pPage1_DelDesign;
702     delete pPage1_Desc;
703 
704 	delete pPage2_Bmp;
705 	delete pPage2_Titel;
706 	delete pPage2_Standard;
707 	delete pPage2_Frames;
708 	delete pPage2_Kiosk;
709 	delete pPage2_WebCast;
710 	delete pPage2_Standard_FB;
711 	delete pPage2_Frames_FB;
712 	delete pPage2_Kiosk_FB;
713 	delete pPage2_WebCast_FB;
714 
715 	delete pPage2_Titel_Html;
716 	delete pPage2_Content;
717 	if(m_bImpress)
718 		delete pPage2_Notes;
719 
720     delete pPage2_Vert;
721 	delete pPage2_Titel_WebCast;
722 	delete pPage2_Index_txt;
723 	delete pPage2_Index;
724 	delete pPage2_ASP;
725 	delete pPage2_PERL;
726 	delete pPage2_URL_txt;
727 	delete pPage2_URL;
728 	delete pPage2_CGI_txt;
729 	delete pPage2_CGI;
730 
731 	delete pPage2_Titel_Kiosk;
732 	delete pPage2_ChgDefault;
733 	delete pPage2_ChgAuto;
734 	delete pPage2_Duration_txt;
735 	delete pPage2_Duration;
736 	delete pPage2_Endless;
737 
738 	delete pPage3_Bmp;
739 	delete pPage3_Titel1;
740 	delete pPage3_Png;
741 	delete pPage3_Gif;
742 	delete pPage3_Jpg;
743 	delete pPage3_Quality_txt;
744 	delete pPage3_Quality;
745     delete pPage3_Vert;
746 	delete pPage3_Titel2;
747 	delete pPage3_Resolution_1;
748 	delete pPage3_Resolution_2;
749 	delete pPage3_Resolution_3;
750 	delete pPage3_Titel3;
751 	delete pPage3_SldSound;
752     delete pPage3_HiddenSlides;
753 
754 	delete pPage4_Bmp;
755 	delete pPage4_Titel1;
756 	delete pPage4_Author_txt;
757 	delete pPage4_Author;
758 	delete pPage4_Email_txt;
759 	delete pPage4_Email;
760 	delete pPage4_WWW_txt;
761 	delete pPage4_WWW;
762 	delete pPage4_Titel2;
763 	delete pPage4_Misc;
764 	if(m_bImpress)
765 		delete pPage4_Download;
766 //-/	delete pPage4_Created;
767 
768 	delete pPage5_Bmp;
769 	delete pPage5_Titel;
770 	delete pPage5_TextOnly;
771 	delete pPage5_Buttons;
772 
773 	delete pPage6_Bmp;
774 	delete pPage6_Titel;
775 	delete pPage6_Default;
776 	delete pPage6_User;
777 	delete pPage6_Back;
778 	delete pPage6_Text;
779 	delete pPage6_Link;
780 	delete pPage6_VLink;
781 	delete pPage6_ALink;
782 	delete pPage6_DocColors;
783 	delete pPage6_Preview;
784 }
785 
786 // =====================================================================
787 // Dialog mit defaultwerten initialisieren
788 // =====================================================================
SetDefaults()789 void SdPublishingDlg::SetDefaults()
790 {
791 	SdPublishingDesign aDefault;
792 	SetDesign(&aDefault);
793 
794 	pPage1_NewDesign->Check(sal_True);
795 	pPage1_OldDesign->Check(sal_False);
796 	UpdatePage();
797 }
798 
799 // =====================================================================
800 // Das SfxItemSet mit den Einstellungen des Dialogs fuettern
801 // =====================================================================
GetParameterSequence(Sequence<PropertyValue> & rParams)802 void SdPublishingDlg::GetParameterSequence( Sequence< PropertyValue >& rParams )
803 {
804 	std::vector< PropertyValue > aProps;
805 
806 	PropertyValue aValue;
807 
808 
809 	// Page 2
810 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PublishMode" ) );
811 	aValue.Value <<= (sal_Int32)(pPage2_Standard->IsChecked()?PUBLISH_HTML:
812 										  pPage2_Frames->IsChecked()?PUBLISH_FRAMES:
813 										  pPage2_Kiosk->IsChecked()?PUBLISH_KIOSK:PUBLISH_WEBCAST);
814 	aProps.push_back( aValue );
815 
816 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "IsExportContentsPage" ) );
817 	aValue.Value <<= (sal_Bool)pPage2_Content->IsChecked();
818 	aProps.push_back( aValue );
819 
820 	if(m_bImpress)
821 	{
822 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "IsExportNotes" ) );
823 		aValue.Value <<= (sal_Bool)pPage2_Notes->IsChecked();
824 		aProps.push_back( aValue );
825 	}
826 
827 	if( pPage2_WebCast->IsChecked() )
828 	{
829 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "WebCastScriptLanguage" ) );
830 		if( pPage2_ASP->IsChecked() )
831 			aValue.Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "asp" ) );
832 		else
833 			aValue.Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "perl" ) );
834 		aProps.push_back( aValue );
835 
836 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "WebCastCGIURL" ) );
837 		aValue.Value <<= OUString( pPage2_CGI->GetText() );
838 		aProps.push_back( aValue );
839 
840 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "WebCastTargetURL" ) );
841 		aValue.Value <<= OUString( pPage2_URL->GetText() );
842 		aProps.push_back( aValue );
843 	}
844 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "IndexURL" ) );
845 	aValue.Value <<= OUString( pPage2_Index->GetText() );
846 	aProps.push_back( aValue );
847 
848 
849 	if( pPage2_Kiosk->IsChecked() && pPage2_ChgAuto->IsChecked() )
850 	{
851 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "KioskSlideDuration" ) );
852 		aValue.Value <<= (sal_uInt32)pPage2_Duration->GetTime().GetMSFromTime() / 1000;
853 		aProps.push_back( aValue );
854 
855 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "KioskEndless" ) );
856 		aValue.Value <<= (sal_Bool)pPage2_Endless->IsChecked();
857 		aProps.push_back( aValue );
858 	}
859 
860 	// Page 3
861 
862 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Width" ) );
863     sal_Int32 nTmpWidth = 512;
864     if( pPage3_Resolution_2->IsChecked() )
865         nTmpWidth = 640;
866     else if( pPage3_Resolution_3->IsChecked() )
867         nTmpWidth = 800;
868 
869 	aValue.Value <<= nTmpWidth;
870 	aProps.push_back( aValue );
871 
872 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Compression" ) );
873 	aValue.Value <<= OUString( pPage3_Quality->GetText() );
874 	aProps.push_back( aValue );
875 
876 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Format" ) );
877 	sal_Int32 nFormat;
878 	if( pPage3_Png->IsChecked() )
879 		nFormat = static_cast<sal_Int32>(FORMAT_PNG);
880 	else if( pPage3_Gif->IsChecked() )
881 		nFormat = static_cast<sal_Int32>(FORMAT_GIF);
882 	else
883 		nFormat = static_cast<sal_Int32>(FORMAT_JPG);
884 	aValue.Value <<= nFormat;
885 	aProps.push_back( aValue );
886 
887     aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "SlideSound" ) );
888     aValue.Value <<= pPage3_SldSound->IsChecked() ? sal_True : sal_False;
889     aProps.push_back( aValue );
890 
891     aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "HiddenSlides" ) );
892     aValue.Value <<= pPage3_HiddenSlides->IsChecked() ? sal_True : sal_False;
893     aProps.push_back( aValue );
894 
895 	// Page 4
896 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Author" ) );
897 	aValue.Value <<= OUString( pPage4_Author->GetText() );
898 	aProps.push_back( aValue );
899 
900 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "EMail" ) );
901 	aValue.Value <<= OUString( pPage4_Email->GetText() );
902 	aProps.push_back( aValue );
903 
904     // #92433# try to guess protocol for user's homepage
905     INetURLObject aHomeURL( pPage4_WWW->GetText(),
906                             INET_PROT_HTTP,		// default proto is HTTP
907                             INetURLObject::ENCODE_ALL );
908 
909 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "HomepageURL" ) );
910 	aValue.Value <<= OUString( aHomeURL.GetMainURL( INetURLObject::NO_DECODE ) );
911 	aProps.push_back( aValue );
912 
913 	aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "UserText" ) );
914 	aValue.Value <<= OUString( pPage4_Misc->GetText() );
915 	aProps.push_back( aValue );
916 
917 	if( m_bImpress )
918 	{
919 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableDownload" ) );
920 		aValue.Value <<= (sal_Bool)pPage4_Download->IsChecked();
921 		aProps.push_back( aValue );
922 	}
923 
924 	// Page 5
925 	if( !pPage5_TextOnly->IsChecked() )
926 	{
927 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "UseButtonSet" ) );
928 		aValue.Value <<= (sal_Int32)(pPage5_Buttons->GetSelectItemId() - 1);
929 		aProps.push_back( aValue );
930 	}
931 
932 	// Page 6
933 	if( pPage6_User->IsChecked() )
934 	{
935 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "BackColor" ) );
936 		aValue.Value <<= (sal_Int32)m_aBackColor.GetColor();
937 		aProps.push_back( aValue );
938 
939 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "TextColor" ) );
940 		aValue.Value <<= (sal_Int32)m_aTextColor.GetColor();
941 		aProps.push_back( aValue );
942 
943 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "LinkColor" ) );
944 		aValue.Value <<= (sal_Int32)m_aLinkColor.GetColor();
945 		aProps.push_back( aValue );
946 
947 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "VLinkColor" ) );
948 		aValue.Value <<= (sal_Int32)m_aVLinkColor.GetColor();
949 		aProps.push_back( aValue );
950 
951 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "ALinkColor" ) );
952 		aValue.Value <<= (sal_Int32)m_aALinkColor.GetColor();
953 		aProps.push_back( aValue );
954 	}
955 
956 	if( pPage6_DocColors->IsChecked() )
957 	{
958 		aValue.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "IsUseDocumentColors" ) );
959 		aValue.Value <<= (sal_Bool)sal_True;
960 		aProps.push_back( aValue );
961 	}
962 
963 	// Seite 6
964 //	aSet.Put(SfxBoolItem(ATTR_PUBLISH_SLIDESOUND,pPage6_Sound->IsChecked()));
965 
966 
967 	rParams.realloc( aProps.size() );
968 	PropertyValue* pParams = rParams.getArray();
969 
970 	for( std::vector< PropertyValue >::iterator i = aProps.begin(); i != aProps.end(); i++ )
971 	{
972 		*pParams++ = (*i);
973 	}
974 }
975 
976 // =====================================================================
977 // Clickhandler fuer die Radiobuttons zur Designauswahl
978 // =====================================================================
IMPL_LINK(SdPublishingDlg,DesignHdl,RadioButton *,pButton)979 IMPL_LINK( SdPublishingDlg, DesignHdl, RadioButton *, pButton )
980 {
981 	if(pButton == pPage1_NewDesign)
982 	{
983 		pPage1_NewDesign->Check(sal_True); // wegen DesignDeleteHdl
984 		pPage1_OldDesign->Check(sal_False);
985 		pPage1_Designs->Disable();
986 		pPage1_DelDesign->Disable();
987 		m_pDesign = NULL;
988 
989 		SdPublishingDesign aDefault;
990 		SetDesign(&aDefault);
991 	}
992 	else
993 	{
994 		pPage1_NewDesign->Check(sal_False);
995 		pPage1_Designs->Enable();
996 		pPage1_DelDesign->Enable();
997 
998 		if(pPage1_Designs->GetSelectEntryCount() == 0)
999 			pPage1_Designs->SelectEntryPos(0);
1000 
1001 		sal_uInt16 nPos	= pPage1_Designs->GetSelectEntryPos();
1002 		m_pDesign = (SdPublishingDesign*)m_pDesignList->GetObject(nPos);
1003 		DBG_ASSERT(m_pDesign, "Kein Design? Das darf nicht sein! (CL)");
1004 
1005 		if(m_pDesign)
1006 			SetDesign(m_pDesign);
1007 	}
1008 
1009 	return 0;
1010 }
1011 
1012 // =====================================================================
1013 // Clickhandler fuer die auswahl eines Designs
1014 // =====================================================================
IMPL_LINK(SdPublishingDlg,DesignSelectHdl,ListBox *,EMPTYARG)1015 IMPL_LINK( SdPublishingDlg, DesignSelectHdl, ListBox *, EMPTYARG )
1016 {
1017 	sal_uInt16 nPos = pPage1_Designs->GetSelectEntryPos();
1018 	m_pDesign = (SdPublishingDesign*)m_pDesignList->GetObject(nPos);
1019 	DBG_ASSERT(m_pDesign, "Kein Design? Das darf nicht sein! (CL)");
1020 
1021 	if(m_pDesign)
1022 		SetDesign(m_pDesign);
1023 
1024 	UpdatePage();
1025 
1026 	return 0;
1027 }
1028 
1029 // =====================================================================
1030 // Clickhandler fuer das loeschen eines Designs
1031 // =====================================================================
IMPL_LINK(SdPublishingDlg,DesignDeleteHdl,PushButton *,EMPTYARG)1032 IMPL_LINK( SdPublishingDlg, DesignDeleteHdl, PushButton *, EMPTYARG )
1033 {
1034 	sal_uInt16 nPos = pPage1_Designs->GetSelectEntryPos();
1035 	SdPublishingDesign* pDesign = (SdPublishingDesign*)
1036 									m_pDesignList->GetObject(nPos);
1037 	DBG_ASSERT(pDesign, "Kein Design? Das darf nicht sein! (CL)");
1038 
1039 	if(pDesign)
1040 	{
1041 		m_pDesignList->Remove(pDesign);
1042 		pPage1_Designs->RemoveEntry(nPos);
1043 	}
1044 
1045 	if(m_pDesign == pDesign)
1046 		DesignHdl( pPage1_NewDesign );
1047 
1048 	delete pDesign;
1049 
1050 	m_bDesignListDirty = sal_True;
1051 
1052 	UpdatePage();
1053 
1054 	return 0;
1055 }
1056 
1057 // =====================================================================
1058 // Clickhandler fuer das �ndern des Servertyps
1059 // =====================================================================
IMPL_LINK(SdPublishingDlg,WebServerHdl,RadioButton *,pButton)1060 IMPL_LINK( SdPublishingDlg, WebServerHdl, RadioButton *, pButton )
1061 {
1062 	sal_Bool bASP = pButton == pPage2_ASP;
1063 
1064 	pPage2_ASP->Check( bASP );
1065 	pPage2_PERL->Check( !bASP );
1066 	UpdatePage();
1067 
1068 	return 0;
1069 }
1070 
1071 // =====================================================================
1072 // Clickhandler fuer die Radiobuttons der Auswahl des Grafikformates
1073 // =====================================================================
IMPL_LINK(SdPublishingDlg,GfxFormatHdl,RadioButton *,pButton)1074 IMPL_LINK( SdPublishingDlg, GfxFormatHdl, RadioButton *, pButton )
1075 {
1076 	pPage3_Png->Check( pButton == pPage3_Png );
1077 	pPage3_Gif->Check( pButton == pPage3_Gif );
1078 	pPage3_Jpg->Check( pButton == pPage3_Jpg );
1079 	pPage3_Quality->Enable(pButton == pPage3_Jpg);
1080 	return 0;
1081 }
1082 
1083 // =====================================================================
1084 // Clickhandler fuer die Radiobuttons Stanrard/Frames
1085 // =====================================================================
IMPL_LINK(SdPublishingDlg,BaseHdl,RadioButton *,EMPTYARG)1086 IMPL_LINK( SdPublishingDlg, BaseHdl, RadioButton *, EMPTYARG )
1087 {
1088 /*
1089 	if(pButton == pPage3_Standard)
1090 	pPage3_Frames->Check( pButton == pPage3 );
1091 	else
1092 		pPage3_Standard->Check(sal_False);
1093 */
1094 	UpdatePage();
1095 
1096 	return 0;
1097 }
1098 
1099 // =====================================================================
1100 // Clickhandler fuer die CheckBox der Titelseite
1101 // =====================================================================
IMPL_LINK(SdPublishingDlg,ContentHdl,RadioButton *,EMPTYARG)1102 IMPL_LINK( SdPublishingDlg, ContentHdl, RadioButton *, EMPTYARG )
1103 {
1104 	if(pPage2_Content->IsChecked())
1105 	{
1106 		if(!aAssistentFunc.IsEnabled(4))
1107 		{
1108 			aAssistentFunc.EnablePage(4);
1109 			UpdatePage();
1110 		}
1111 	}
1112 	else
1113 	{
1114 		if(aAssistentFunc.IsEnabled(4))
1115 		{
1116 			aAssistentFunc.DisablePage(4);
1117 			UpdatePage();
1118 		}
1119 	}
1120 	return 0;
1121 }
1122 
1123 // =====================================================================
1124 // Clickhandler fuer die Radiobuttons Aufloesung
1125 // =====================================================================
IMPL_LINK(SdPublishingDlg,ResolutionHdl,RadioButton *,pButton)1126 IMPL_LINK( SdPublishingDlg, ResolutionHdl, RadioButton *, pButton )
1127 {
1128 	pPage3_Resolution_1->Check(pButton == pPage3_Resolution_1);
1129 	pPage3_Resolution_2->Check(pButton == pPage3_Resolution_2);
1130 	pPage3_Resolution_3->Check(pButton == pPage3_Resolution_3);
1131 
1132 	return 0;
1133 }
1134 
1135 // =====================================================================
1136 // Clickhandler fuer das ValueSet mit den Bitmap Schaltflaechen
1137 // =====================================================================
IMPL_LINK(SdPublishingDlg,ButtonsHdl,ValueSet *,EMPTYARG)1138 IMPL_LINK( SdPublishingDlg, ButtonsHdl, ValueSet *, EMPTYARG )
1139 {
1140 	// wird eine Bitmap Schaltflaeche gewaehlt, TexOnly ausschalten
1141 	pPage5_TextOnly->Check(sal_False);
1142 	return 0;
1143 }
1144 
1145 // =====================================================================
1146 // Das SfxItemSet mit den Einstellungen des Dialogs fuettern
1147 // =====================================================================
IMPL_LINK(SdPublishingDlg,ColorHdl,PushButton *,pButton)1148 IMPL_LINK( SdPublishingDlg, ColorHdl, PushButton *, pButton)
1149 {
1150 	SvColorDialog aDlg(this);
1151 
1152 	if(pButton == pPage6_Back)
1153 	{
1154 		aDlg.SetColor( m_aBackColor );
1155 		if(aDlg.Execute() == RET_OK )
1156 			m_aBackColor = aDlg.GetColor();
1157 	}
1158 	else if(pButton == pPage6_Text)
1159 	{
1160 		aDlg.SetColor( m_aTextColor );
1161 		if(aDlg.Execute() == RET_OK )
1162 			m_aTextColor = aDlg.GetColor();
1163 	}
1164 	else if(pButton == pPage6_Link)
1165 	{
1166 		aDlg.SetColor( m_aLinkColor );
1167 		if(aDlg.Execute() == RET_OK )
1168 			m_aLinkColor = aDlg.GetColor();
1169 	}
1170 	else if(pButton == pPage6_VLink)
1171 	{
1172 		aDlg.SetColor( m_aVLinkColor );
1173 		if(aDlg.Execute() == RET_OK )
1174 			m_aVLinkColor = aDlg.GetColor();
1175 	}
1176 	else if(pButton == pPage6_ALink)
1177 	{
1178 		aDlg.SetColor( m_aALinkColor );
1179 		if(aDlg.Execute() == RET_OK )
1180 			m_aALinkColor = aDlg.GetColor();
1181 	}
1182 
1183 	pPage6_User->Check(sal_True);
1184 	pPage6_Preview->SetColors( m_aBackColor, m_aTextColor, m_aLinkColor,
1185 							   m_aVLinkColor, m_aALinkColor );
1186 	pPage6_Preview->Invalidate();
1187 	return 0;
1188 }
1189 
IMPL_LINK(SdPublishingDlg,SlideChgHdl,RadioButton *,EMPTYARG)1190 IMPL_LINK( SdPublishingDlg, SlideChgHdl, RadioButton*, EMPTYARG )
1191 {
1192 	UpdatePage();
1193 	return 0;
1194 }
1195 
1196 // =====================================================================
1197 // Clickhandler fuer den Ok Button
1198 // =====================================================================
IMPL_LINK(SdPublishingDlg,FinishHdl,OKButton *,EMPTYARG)1199 IMPL_LINK( SdPublishingDlg, FinishHdl, OKButton *, EMPTYARG )
1200 {
1201 	//Ende
1202 	SdPublishingDesign* pDesign = new SdPublishingDesign();
1203 	GetDesign(pDesign);
1204 
1205 	sal_Bool bSave = sal_False;
1206 
1207 	if(pPage1_OldDesign->IsChecked() && m_pDesign)
1208 	{
1209 		// aenderungen??
1210 		if(!(*pDesign == *m_pDesign))
1211 			bSave = sal_True;
1212 	}
1213 	else
1214 	{
1215 		SdPublishingDesign aDefaultDesign;
1216 		if(!(aDefaultDesign == *pDesign))
1217 			bSave = sal_True;
1218 	}
1219 
1220 	if(bSave)
1221 	{
1222 		String aName;
1223 		if(m_pDesign)
1224 			aName = m_pDesign->m_aDesignName;
1225 
1226 		sal_Bool bRetry;
1227 		do
1228 		{
1229 			bRetry = sal_False;
1230 
1231 			SdDesignNameDlg aDlg(this, aName );
1232 
1233 			if ( aDlg.Execute() == RET_OK )
1234 			{
1235 				pDesign->m_aDesignName = aDlg.GetDesignName();
1236 
1237 				SdPublishingDesign* pSameNameDes = NULL;
1238 				sal_uInt16 nIndex;
1239 				for( nIndex = 0; nIndex < m_pDesignList->Count(); nIndex++ )
1240 				{
1241 					pSameNameDes = (SdPublishingDesign*)
1242 									m_pDesignList->GetObject(nIndex);
1243 					if(pSameNameDes->m_aDesignName == pDesign->m_aDesignName)
1244 						break;
1245 				}
1246 
1247 				if(nIndex < m_pDesignList->Count())
1248 				{
1249 					ErrorBox aErrorBox(this, WB_YES_NO,
1250 									   String(SdResId(STR_PUBDLG_SAMENAME)));
1251 					bRetry = aErrorBox.Execute() == RET_NO;
1252 
1253 					if(!bRetry)
1254 					{
1255 						m_pDesignList->Remove(pSameNameDes);
1256 						delete pSameNameDes;
1257 					}
1258 				}
1259 
1260 				if(!bRetry)
1261 				{
1262 					m_pDesignList->Insert(pDesign);
1263 					m_bDesignListDirty = sal_True;
1264 					pDesign = NULL;
1265 				}
1266 			}
1267 		}
1268 		while(bRetry);
1269 	}
1270 
1271 	delete pDesign;
1272 
1273 	if(m_bDesignListDirty)
1274 		Save();
1275 
1276 	EndDialog(RET_OK);
1277 	return 0;
1278 }
1279 
1280 // =====================================================================
1281 // Refresh des Dialogs beim wechsel der Seite
1282 // =====================================================================
ChangePage()1283 void SdPublishingDlg::ChangePage()
1284 {
1285 	int nPage = aAssistentFunc.GetCurrentPage();
1286 	SetHelpId(aPageHelpIds[nPage-1]);
1287 
1288 	UpdatePage();
1289 
1290 	if( aNextPageButton.IsEnabled() )
1291 		aNextPageButton.GrabFocus();
1292 	else
1293 		aFinishButton.GrabFocus();
1294 }
1295 
UpdatePage()1296 void SdPublishingDlg::UpdatePage()
1297 {
1298 	aNextPageButton.Enable(!aAssistentFunc.IsLastPage());
1299 	aLastPageButton.Enable(!aAssistentFunc.IsFirstPage());
1300 
1301 	int nPage = aAssistentFunc.GetCurrentPage();
1302 
1303 	switch( nPage )
1304 	{
1305 	case 1:
1306 		if(pPage1_NewDesign->IsChecked())
1307 		{
1308 			pPage1_Designs->Disable();
1309 			pPage1_DelDesign->Disable();
1310 		}
1311 
1312 		if(m_pDesignList && m_pDesignList->Count() == 0)
1313 			pPage1_OldDesign->Disable();
1314 		break;
1315 	case 2:
1316 		pPage2_Frames_FB->Show(pPage2_Frames->IsChecked());
1317 		pPage2_Standard_FB->Show(pPage2_Standard->IsChecked());
1318 		pPage2_Kiosk_FB->Show(pPage2_Kiosk->IsChecked());
1319 		pPage2_WebCast_FB->Show(pPage2_WebCast->IsChecked());
1320 
1321 		if( pPage2_WebCast->IsChecked() )
1322 		{
1323 			pPage2_Titel_WebCast->Show();
1324 			pPage2_ASP->Show();
1325 			pPage2_PERL->Show();
1326 			pPage2_URL_txt->Show();
1327 			pPage2_URL->Show();
1328 			pPage2_CGI_txt->Show();
1329 			pPage2_CGI->Show();
1330 			pPage2_Index_txt->Show();
1331 			pPage2_Index->Show();
1332 
1333 			sal_Bool bPerl = pPage2_PERL->IsChecked();
1334 			pPage2_Index->Enable(bPerl);
1335 			pPage2_Index_txt->Enable(bPerl);
1336 			pPage2_URL_txt->Enable(bPerl);
1337 			pPage2_URL->Enable(bPerl);
1338 			pPage2_CGI_txt->Enable(bPerl);
1339 			pPage2_CGI->Enable(bPerl);
1340 		}
1341 		else
1342 		{
1343 			pPage2_Titel_WebCast->Hide();
1344 			pPage2_ASP->Hide();
1345 			pPage2_PERL->Hide();
1346 			pPage2_URL_txt->Hide();
1347 			pPage2_URL->Hide();
1348 			pPage2_CGI_txt->Hide();
1349 			pPage2_CGI->Hide();
1350 			pPage2_Index->Hide();
1351 			pPage2_Index_txt->Hide();
1352 		}
1353 
1354 		if( pPage2_Kiosk->IsChecked() )
1355 		{
1356 			pPage2_Titel_Kiosk->Show();
1357 			pPage2_ChgDefault->Show();
1358 			pPage2_ChgAuto->Show();
1359 			pPage2_Duration_txt->Show();
1360 			pPage2_Duration->Show();
1361 			pPage2_Endless->Show();
1362 			sal_Bool bAuto = pPage2_ChgAuto->IsChecked();
1363 			pPage2_Duration->Enable(bAuto);
1364 			pPage2_Endless->Enable(bAuto);
1365 		}
1366 		else
1367 		{
1368 			pPage2_Titel_Kiosk->Hide();
1369 			pPage2_ChgDefault->Hide();
1370 			pPage2_ChgAuto->Hide();
1371 			pPage2_Duration->Hide();
1372 			pPage2_Duration_txt->Hide();
1373 			pPage2_Endless->Hide();
1374 		}
1375 
1376 		if( pPage2_Standard->IsChecked() || pPage2_Frames->IsChecked() )
1377 		{
1378 			pPage2_Titel_Html->Show();
1379 			pPage2_Content->Show();
1380 			if(m_bImpress)
1381 				pPage2_Notes->Show();
1382 		}
1383 		else
1384 		{
1385 			pPage2_Titel_Html->Hide();
1386 			pPage2_Content->Hide();
1387 			if(m_bImpress)
1388 				pPage2_Notes->Hide();
1389 		}
1390 		break;
1391 	case 3:
1392 		if( pPage2_Kiosk->IsChecked() || pPage2_WebCast->IsChecked() )
1393 			aNextPageButton.Disable();
1394 
1395 		if( pPage2_WebCast->IsChecked() )
1396 			pPage3_SldSound->Disable();
1397 
1398         pPage3_Quality->Enable(pPage3_Jpg->IsChecked());
1399 
1400 		break;
1401 	case 5:
1402 		if( m_bButtonsDirty )
1403 			LoadPreviewButtons();
1404 		break;
1405 	}
1406 }
1407 
1408 /** loads the html buttons from the button sets, creates a preview and fills the
1409 	itemset for page 5
1410  */
LoadPreviewButtons()1411 void SdPublishingDlg::LoadPreviewButtons()
1412 {
1413 	if( mpButtonSet.get() )
1414 	{
1415 		const int nButtonCount = 8;
1416 		static const char *pButtonNames[nButtonCount] =
1417 		{
1418 			"first.png",
1419 			"left.png",
1420 			"right.png",
1421 			"last.png",
1422 			"home.png",
1423 			"text.png",
1424 			"expand.png",
1425 			"collapse.png",
1426 		};
1427 
1428 		std::vector< rtl::OUString > aButtonNames;
1429 		for( int i = 0; i < nButtonCount; ++i )
1430 			aButtonNames.push_back( rtl::OUString::createFromAscii( pButtonNames[i] ) );
1431 
1432 		int nSetCount = mpButtonSet->getCount();
1433 
1434 		int nHeight = 32;
1435 		Image aImage;
1436 		for( int nSet = 0; nSet < nSetCount; ++nSet )
1437 		{
1438 			if( mpButtonSet->getPreview( nSet, aButtonNames, aImage ) )
1439 			{
1440 				pPage5_Buttons->InsertItem( (sal_uInt16)nSet+1, aImage );
1441 				if( nHeight < aImage.GetSizePixel().Height() )
1442 					nHeight = aImage.GetSizePixel().Height();
1443 			}
1444 		}
1445 
1446 		pPage5_Buttons->SetItemHeight( nHeight );
1447 		m_bButtonsDirty = sal_False;
1448 	}
1449 }
1450 
1451 // =====================================================================
1452 // Clickhandler fuer den Weiter Button
1453 // =====================================================================
IMPL_LINK(SdPublishingDlg,NextPageHdl,PushButton *,EMPTYARG)1454 IMPL_LINK( SdPublishingDlg, NextPageHdl, PushButton *, EMPTYARG )
1455 {
1456 	aAssistentFunc.NextPage();
1457 	ChangePage();
1458 	return 0;
1459 }
1460 
1461 // =====================================================================
1462 // Setzt die Controlls im Dialog gemaess den Einstellungen im Design
1463 // =====================================================================
SetDesign(SdPublishingDesign * pDesign)1464 void SdPublishingDlg::SetDesign( SdPublishingDesign* pDesign )
1465 {
1466 	if(!pDesign)
1467 		return;
1468 
1469 	pPage2_Standard->Check(pDesign->m_eMode == PUBLISH_HTML);
1470 	pPage2_Frames->Check(pDesign->m_eMode == PUBLISH_FRAMES);
1471 	pPage2_Kiosk->Check(pDesign->m_eMode == PUBLISH_KIOSK );
1472 	pPage2_WebCast->Check(pDesign->m_eMode == PUBLISH_WEBCAST );
1473 
1474 	pPage2_Content->Check(pDesign->m_bContentPage);
1475 	if(pDesign->m_bContentPage)
1476 		aAssistentFunc.EnablePage(4);
1477 	else
1478 		aAssistentFunc.DisablePage(4);
1479 
1480 	if(m_bImpress)
1481 		pPage2_Notes->Check(pDesign->m_bNotes);
1482 
1483 	pPage2_ASP->Check(pDesign->m_eScript == SCRIPT_ASP);
1484 	pPage2_PERL->Check(pDesign->m_eScript == SCRIPT_PERL);
1485 	pPage2_CGI->SetText(pDesign->m_aCGI);
1486 	pPage2_URL->SetText(pDesign->m_aURL);
1487 
1488 	pPage2_ChgDefault->Check( !pDesign->m_bAutoSlide );
1489 	pPage2_ChgAuto->Check( pDesign->m_bAutoSlide );
1490 
1491 	Time aTime;
1492 	aTime.MakeTimeFromMS( pDesign->m_nSlideDuration * 1000 );
1493 	pPage2_Duration->SetTime( aTime );
1494 
1495 	pPage2_Endless->Check( pDesign->m_bEndless );
1496 
1497 	pPage3_Png->Check(pDesign->m_eFormat == FORMAT_PNG);
1498 	pPage3_Gif->Check(pDesign->m_eFormat == FORMAT_GIF);
1499 	pPage3_Jpg->Check(pDesign->m_eFormat == FORMAT_JPG);
1500 	pPage3_Quality->Enable(pDesign->m_eFormat == FORMAT_JPG);
1501 
1502 	pPage3_Quality->SetText(pDesign->m_aCompression);
1503 	pPage3_Resolution_1->Check(pDesign->m_nResolution == PUB_LOWRES_WIDTH);
1504 	pPage3_Resolution_2->Check(pDesign->m_nResolution == PUB_MEDRES_WIDTH);
1505 	pPage3_Resolution_3->Check(pDesign->m_nResolution == PUB_HIGHRES_WIDTH);
1506 
1507 	pPage3_SldSound->Check( pDesign->m_bSlideSound );
1508     pPage3_HiddenSlides->Check( pDesign->m_bHiddenSlides );
1509 
1510 	pPage4_Author->SetText(pDesign->m_aAuthor);
1511 	pPage4_Email->SetText(pDesign->m_aEMail);
1512 	pPage4_WWW->SetText(pDesign->m_aWWW);
1513 	pPage4_Misc->SetText(pDesign->m_aMisc);
1514 	if(m_bImpress)
1515 		pPage4_Download->Check(pDesign->m_bDownload);
1516 //-/	pPage4_Created->Check(pDesign->m_bCreated);
1517 
1518 	pPage5_TextOnly->Check(pDesign->m_nButtonThema == -1);
1519 	if(pDesign->m_nButtonThema != -1)
1520 	{
1521 		if(m_bButtonsDirty)
1522 			LoadPreviewButtons();
1523 		pPage5_Buttons->SelectItem(pDesign->m_nButtonThema + 1);
1524 	}
1525 	else
1526 		pPage5_Buttons->SetNoSelection();
1527 
1528 	pPage6_User->Check(pDesign->m_bUserAttr);
1529 	m_aBackColor = pDesign->m_aBackColor;
1530 	m_aTextColor = pDesign->m_aTextColor;
1531 	m_aLinkColor = pDesign->m_aLinkColor;
1532 	m_aVLinkColor = pDesign->m_aVLinkColor;
1533 	m_aALinkColor  = pDesign->m_aALinkColor;
1534 
1535 	pPage6_DocColors->Check(pDesign->m_bUseColor);
1536 
1537 	pPage6_Preview->SetColors( m_aBackColor, m_aTextColor, m_aLinkColor,
1538 							   m_aVLinkColor, m_aALinkColor );
1539 	pPage6_Preview->Invalidate();
1540 
1541 	UpdatePage();
1542 }
1543 
1544 // =====================================================================
1545 // Uebertraegt den Status der Dialog Controlls in das Design
1546 // =====================================================================
GetDesign(SdPublishingDesign * pDesign)1547 void SdPublishingDlg::GetDesign( SdPublishingDesign* pDesign )
1548 {
1549 	if(!pDesign)
1550 		return;
1551 
1552 	pDesign->m_eMode =	pPage2_Standard->IsChecked()?PUBLISH_HTML:
1553 						pPage2_Frames->IsChecked()?PUBLISH_FRAMES:
1554 						pPage2_Kiosk->IsChecked()?PUBLISH_KIOSK:
1555 						PUBLISH_WEBCAST;
1556 
1557 	pDesign->m_bContentPage = pPage2_Content->IsChecked();
1558 	if(m_bImpress)
1559 		pDesign->m_bNotes = pPage2_Notes->IsChecked();
1560 
1561 	if( pPage3_Gif->IsChecked() )
1562 		pDesign->m_eFormat = FORMAT_GIF;
1563 	else if( pPage3_Jpg->IsChecked() )
1564 		pDesign->m_eFormat = FORMAT_JPG;
1565 	else
1566 		pDesign->m_eFormat = FORMAT_PNG;
1567 
1568 	pDesign->m_aCompression = pPage3_Quality->GetText();
1569 
1570 	pDesign->m_nResolution = pPage3_Resolution_1->IsChecked()?PUB_LOWRES_WIDTH:
1571 							(pPage3_Resolution_2->IsChecked()?PUB_MEDRES_WIDTH:PUB_HIGHRES_WIDTH);
1572 
1573 	pDesign->m_bSlideSound = pPage3_SldSound->IsChecked();
1574     pDesign->m_bHiddenSlides = pPage3_HiddenSlides->IsChecked();
1575 
1576 	pDesign->m_aAuthor = pPage4_Author->GetText();
1577 	pDesign->m_aEMail = pPage4_Email->GetText();
1578 	pDesign->m_aWWW = pPage4_WWW->GetText();
1579 	pDesign->m_aMisc = pPage4_Misc->GetText();
1580 	pDesign->m_bDownload = m_bImpress?pPage4_Download->IsChecked():sal_False;
1581 //-/	pDesign->m_bCreated = pPage4_Created->IsChecked();
1582 
1583 	if(pPage5_TextOnly->IsChecked())
1584 		pDesign->m_nButtonThema = -1;
1585 	else
1586 		pDesign->m_nButtonThema = pPage5_Buttons->GetSelectItemId() - 1;
1587 
1588 	pDesign->m_bUserAttr = pPage6_User->IsChecked();
1589 	pDesign->m_aBackColor = m_aBackColor;
1590 	pDesign->m_aTextColor = m_aTextColor;
1591 	pDesign->m_aLinkColor = m_aLinkColor;
1592 	pDesign->m_aVLinkColor = m_aVLinkColor;
1593 	pDesign->m_aALinkColor  = m_aALinkColor;
1594 	pDesign->m_bUseColor   = pPage6_DocColors->IsChecked();
1595 
1596 
1597 	pDesign->m_eScript = pPage2_ASP->IsChecked()?SCRIPT_ASP:SCRIPT_PERL;
1598 	pDesign->m_aCGI = pPage2_CGI->GetText();
1599 	pDesign->m_aURL = pPage2_URL->GetText();
1600 
1601 	pDesign->m_bAutoSlide = pPage2_ChgAuto->IsChecked();
1602 	pDesign->m_nSlideDuration = (sal_uInt32)pPage2_Duration->GetTime().GetMSFromTime() / 1000;
1603 	pDesign->m_bEndless = pPage2_Endless->IsChecked();
1604 }
1605 
1606 // =====================================================================
1607 // Clickhandler fuer den Zurueck Button
1608 // =====================================================================
IMPL_LINK(SdPublishingDlg,LastPageHdl,PushButton *,EMPTYARG)1609 IMPL_LINK( SdPublishingDlg, LastPageHdl, PushButton *, EMPTYARG )
1610 {
1611 	aAssistentFunc.PreviousPage();
1612 	ChangePage();
1613 	return 0;
1614 }
1615 
1616 // =====================================================================
1617 // Designs laden
1618 // =====================================================================
Load()1619 sal_Bool SdPublishingDlg::Load()
1620 {
1621 	m_bDesignListDirty = sal_False;
1622 
1623 	m_pDesignList = new List();
1624 
1625 	INetURLObject aURL( SvtPathOptions().GetUserConfigPath() );
1626 	aURL.Append( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "designs.sod" ) ) );
1627 
1628 	// check if file exists, SfxMedium shows an errorbox else
1629 	{
1630 		com::sun::star::uno::Reference < com::sun::star::task::XInteractionHandler > xHandler;
1631 		SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ, xHandler );
1632 
1633 		sal_Bool bOk = pIStm && ( pIStm->GetError() == 0);
1634 
1635 		if( pIStm )
1636 			delete pIStm;
1637 
1638 		if( !bOk )
1639 			return sal_False;
1640 	}
1641 
1642 	SfxMedium aMedium( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ | STREAM_NOCREATE, sal_True );
1643 
1644 	SvStream* pStream = aMedium.GetInStream();
1645 
1646 	if( !pStream )
1647 		return( sal_False );
1648 
1649 	sal_uInt16 aCheck;
1650 	*pStream >> aCheck;
1651 
1652 	if(aCheck != nMagic)
1653 		return sal_False;
1654 
1655 	SdIOCompat aIO(*pStream, STREAM_READ);
1656 
1657 	sal_uInt16 nDesigns;
1658 	*pStream >> nDesigns;
1659 
1660 	for( sal_uInt16 nIndex = 0;
1661 		 pStream->GetError() == SVSTREAM_OK && nIndex < nDesigns;
1662 		 nIndex++ )
1663 	{
1664 		SdPublishingDesign* pDesign = new SdPublishingDesign();
1665 		*pStream >> *pDesign;
1666 
1667 		m_pDesignList->Insert(pDesign);
1668 	}
1669 
1670 	return( pStream->GetError() == SVSTREAM_OK );
1671 }
1672 
1673 // =====================================================================
1674 // Designs speichern
1675 // =====================================================================
Save()1676 sal_Bool SdPublishingDlg::Save()
1677 {
1678 	INetURLObject aURL( SvtPathOptions().GetUserConfigPath() );
1679 	aURL.Append( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "designs.sod" ) ) );
1680 	SfxMedium aMedium( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE | STREAM_TRUNC, sal_False );
1681 	aMedium.IsRemote();
1682 
1683 	SvStream* pStream = aMedium.GetOutStream();
1684 
1685 	if( !pStream )
1686 		return( sal_False );
1687 
1688 	sal_uInt16 aCheck = nMagic;
1689 	*pStream << aCheck;
1690 
1691 	// damit SdIOCompat vor dem Stream destruiert wird
1692 	{
1693 		SdIOCompat aIO(*pStream, STREAM_WRITE, 0);
1694 
1695 		sal_uInt16 nDesigns = (sal_uInt16) m_pDesignList->Count();
1696 		*pStream << nDesigns;
1697 
1698 		for( sal_uInt16 nIndex = 0;
1699 			 pStream->GetError() == SVSTREAM_OK && nIndex < nDesigns;
1700 			 nIndex++ )
1701 		{
1702 			SdPublishingDesign* pDesign = (SdPublishingDesign*)
1703 											m_pDesignList->GetObject(nIndex);
1704 			*pStream << *pDesign;
1705 		}
1706 	}
1707 
1708 	aMedium.Close();
1709 	aMedium.Commit();
1710 
1711 	return( aMedium.GetError() == 0 );
1712 }
1713 
1714 // *********************************************************************
1715 // SdDesignNameDlg Methoden
1716 // *********************************************************************
1717 
1718 // =====================================================================
1719 //
1720 // =====================================================================
SdDesignNameDlg(Window * pWindow,const String & aName)1721 SdDesignNameDlg::SdDesignNameDlg(Window* pWindow, const String& aName):
1722 				ModalDialog             (pWindow, SdResId( DLG_DESIGNNAME )),
1723 				m_aEdit			        (this, SdResId(EDT_NAME)),
1724 				m_aBtnOK                (this, SdResId(BTN_SAVE)),
1725 				m_aBtnCancel            (this, SdResId(BTN_NOSAVE))
1726 {
1727 	FreeResource();
1728 	m_aEdit.SetModifyHdl(LINK(this, SdDesignNameDlg, ModifyHdl ));
1729 	m_aEdit.SetText(aName);
1730 	m_aBtnOK.Enable(aName.Len() != 0);
1731 }
1732 
1733 // =====================================================================
1734 //
1735 // =====================================================================
GetDesignName()1736 String SdDesignNameDlg::GetDesignName()
1737 {
1738 	return m_aEdit.GetText();
1739 }
1740 
1741 // =====================================================================
1742 //
1743 // =====================================================================
IMPL_LINK(SdDesignNameDlg,ModifyHdl,Edit *,EMPTYARG)1744 IMPL_LINK( SdDesignNameDlg, ModifyHdl, Edit*, EMPTYARG )
1745 {
1746 	m_aBtnOK.Enable(m_aEdit.GetText().Len() != 0);
1747 
1748 	return 0;
1749 }
1750 
1751 
1752 
1753