/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <com/sun/star/beans/PropertyValue.hpp>
#include <unotools/ucbstreamhelper.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/FilterConfigItem.hxx>
#include <vcl/button.hxx>
#include <vcl/fixed.hxx>
#include <vcl/combobox.hxx>
#include <svtools/svmedit.hxx>
#include <svl/intitem.hxx>
#include <svl/aeitem.hxx>
#include <svl/itemset.hxx>
#include <svl/stritem.hxx>
#include <vcl/weld.hxx>
#include <svtools/valueset.hxx>
#include <vcl/graph.hxx>
#include <svl/eitem.hxx>
#include <svtools/colrdlg.hxx>
#include <editeng/colritem.hxx>
#include <tools/urlobj.hxx>
#include <sdiocmpt.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/app.hxx>
#include <pres.hxx>
#include <unotools/useroptions.hxx>
#include <unotools/pathoptions.hxx>
#include <sdresid.hxx>
#include <strings.hrc>
#include <sdattr.hxx>
#include <pubdlg.hxx>
#include "htmlattr.hxx"
#include "htmlex.hxx"
#include "htmlpublishmode.hxx"
#include <helpids.h>
#include "buttonset.hxx"
#include <strings.hxx>
using namespace std;
using namespace com::sun::star::uno;
using namespace com::sun::star::beans;
#define NOOFPAGES 6
//ID for the config-data with the HTML-settings
const sal_uInt16 nMagic = sal_uInt16(0x1977);
// Key for the soffice.ini
#define KEY_QUALITY "JPG-EXPORT-QUALITY"
// The Help-IDs of the pages
const char* const aPageHelpIds[NOOFPAGES] =
{
HID_SD_HTMLEXPORT_PAGE1,
HID_SD_HTMLEXPORT_PAGE2,
HID_SD_HTMLEXPORT_PAGE3,
HID_SD_HTMLEXPORT_PAGE4,
HID_SD_HTMLEXPORT_PAGE5,
HID_SD_HTMLEXPORT_PAGE6
};
// This class has all the settings for the HTML-export autopilot
class SdPublishingDesign
{
public:
OUString m_aDesignName;
HtmlPublishMode m_eMode;
// special WebCast options
PublishingScript m_eScript;
OUString m_aCGI;
OUString m_aURL;
// special Kiosk options
bool m_bAutoSlide;
sal_uInt32 m_nSlideDuration;
bool m_bEndless;
// special HTML options
bool m_bContentPage;
bool m_bNotes;
// misc options
sal_uInt16 m_nResolution;
OUString m_aCompression;
PublishingFormat m_eFormat;
bool m_bSlideSound;
bool m_bHiddenSlides;
// title page information
OUString m_aAuthor;
OUString m_aEMail;
OUString m_aWWW;
OUString m_aMisc;
bool m_bDownload;
bool m_bCreated; // not used
// buttons and colorscheme
sal_Int16 m_nButtonThema;
bool m_bUserAttr;
Color m_aBackColor;
Color m_aTextColor;
Color m_aLinkColor;
Color m_aVLinkColor;
Color m_aALinkColor;
bool m_bUseAttribs;
bool m_bUseColor;
SdPublishingDesign();
bool operator ==(const SdPublishingDesign & rDesign) const;
friend SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign);
friend SvStream& WriteSdPublishingDesign(SvStream& rOut, const SdPublishingDesign& rDesign);
};
// load Default-settings
SdPublishingDesign::SdPublishingDesign()
: m_eMode(PUBLISH_HTML)
, m_eScript(SCRIPT_ASP)
, m_bAutoSlide(true)
, m_nSlideDuration(15)
, m_bEndless(true)
, m_bContentPage(true)
, m_bNotes(true)
, m_nResolution(PUB_LOWRES_WIDTH)
, m_eFormat(FORMAT_PNG)
, m_bSlideSound(true)
, m_bHiddenSlides(false)
, m_bDownload(false)
, m_bCreated(false)
, m_nButtonThema(-1)
, m_bUserAttr(false)
, m_aBackColor(COL_WHITE)
, m_aTextColor(COL_BLACK)
, m_aLinkColor(COL_BLUE)
, m_aVLinkColor(COL_LIGHTGRAY)
, m_aALinkColor(COL_GRAY)
, m_bUseAttribs(true)
, m_bUseColor(true)
{
FilterConfigItem aFilterConfigItem("Office.Common/Filter/Graphic/Export/JPG");
sal_Int32 nCompression = aFilterConfigItem.ReadInt32( KEY_QUALITY, 75 );
m_aCompression = OUString::number(nCompression) + "%";
SvtUserOptions aUserOptions;
m_aAuthor = aUserOptions.GetFirstName();
if (!m_aAuthor.isEmpty() && !aUserOptions.GetLastName().isEmpty())
m_aAuthor += " ";
m_aAuthor += aUserOptions.GetLastName();
m_aEMail = aUserOptions.GetEmail();
}
// Compares the values without paying attention to the name
bool SdPublishingDesign::operator ==(const SdPublishingDesign & rDesign) const
{
return
(
m_eMode == rDesign.m_eMode &&
m_nResolution == rDesign.m_nResolution &&
m_aCompression == rDesign.m_aCompression &&
m_eFormat == rDesign.m_eFormat &&
m_bHiddenSlides == rDesign.m_bHiddenSlides &&
( // compare html options
(m_eMode != PUBLISH_HTML && m_eMode != PUBLISH_FRAMES) ||
(
m_bContentPage == rDesign.m_bContentPage &&
m_bNotes == rDesign.m_bNotes &&
m_aAuthor == rDesign.m_aAuthor &&
m_aEMail == rDesign.m_aEMail &&
m_aWWW == rDesign.m_aWWW &&
m_aMisc == rDesign.m_aMisc &&
m_bDownload == rDesign.m_bDownload &&
m_nButtonThema == rDesign.m_nButtonThema &&
m_bUserAttr == rDesign.m_bUserAttr &&
m_aBackColor == rDesign.m_aBackColor &&
m_aTextColor == rDesign.m_aTextColor &&
m_aLinkColor == rDesign.m_aLinkColor &&
m_aVLinkColor == rDesign.m_aVLinkColor &&
m_aALinkColor == rDesign.m_aALinkColor &&
m_bUseAttribs == rDesign.m_bUseAttribs &&
m_bSlideSound == rDesign.m_bSlideSound &&
m_bUseColor == rDesign.m_bUseColor
)
) &&
( // compare kiosk options
(m_eMode != PUBLISH_KIOSK) ||
(
m_bAutoSlide == rDesign.m_bAutoSlide &&
m_bSlideSound == rDesign.m_bSlideSound &&
(
!m_bAutoSlide ||
(
m_nSlideDuration == rDesign.m_nSlideDuration &&
m_bEndless == rDesign.m_bEndless
)
)
)
) &&
( // compare WebCast options
(m_eMode != PUBLISH_WEBCAST) ||
(
m_eScript == rDesign.m_eScript &&
(
m_eScript != SCRIPT_PERL ||
(
m_aURL == rDesign.m_aURL &&
m_aCGI == rDesign.m_aCGI
)
)
)
)
);
}
// Load the design from the stream
SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign)
{
SdIOCompat aIO(rIn, StreamMode::READ);
sal_uInt16 nTemp16;
rDesign.m_aDesignName = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rIn.ReadUInt16( nTemp16 );
rDesign.m_eMode = static_cast<HtmlPublishMode>(nTemp16);
rIn.ReadCharAsBool( rDesign.m_bContentPage );
rIn.ReadCharAsBool( rDesign.m_bNotes );
rIn.ReadUInt16( rDesign.m_nResolution );
rDesign.m_aCompression = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rIn.ReadUInt16( nTemp16 );
rDesign.m_eFormat = static_cast<PublishingFormat>(nTemp16);
rDesign.m_aAuthor = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rDesign.m_aEMail = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rDesign.m_aWWW = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rDesign.m_aMisc = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rIn.ReadCharAsBool( rDesign.m_bDownload );
rIn.ReadCharAsBool( rDesign.m_bCreated ); // not used
rIn.ReadInt16( rDesign.m_nButtonThema );
rIn.ReadCharAsBool( rDesign.m_bUserAttr );
ReadColor( rIn, rDesign.m_aBackColor );
ReadColor( rIn, rDesign.m_aTextColor );
ReadColor( rIn, rDesign.m_aLinkColor );
ReadColor( rIn, rDesign.m_aVLinkColor );
ReadColor( rIn, rDesign.m_aALinkColor );
rIn.ReadCharAsBool( rDesign.m_bUseAttribs );
rIn.ReadCharAsBool( rDesign.m_bUseColor );
rIn.ReadUInt16( nTemp16 );
rDesign.m_eScript = static_cast<PublishingScript>(nTemp16);
rDesign.m_aURL = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rDesign.m_aCGI = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
rIn.ReadCharAsBool( rDesign.m_bAutoSlide );
rIn.ReadUInt32( rDesign.m_nSlideDuration );
rIn.ReadCharAsBool( rDesign.m_bEndless );
rIn.ReadCharAsBool( rDesign.m_bSlideSound );
rIn.ReadCharAsBool( rDesign.m_bHiddenSlides );
return rIn;
}
// Set the design to the stream
SvStream& WriteSdPublishingDesign(SvStream& rOut, const SdPublishingDesign& rDesign)
{
// The last parameter is the versionnumber of the code
SdIOCompat aIO(rOut, StreamMode::WRITE, 0);
// Name
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aDesignName,
RTL_TEXTENCODING_UTF8);
rOut.WriteUInt16( rDesign.m_eMode );
rOut.WriteBool( rDesign.m_bContentPage );
rOut.WriteBool( rDesign.m_bNotes );
rOut.WriteUInt16( rDesign.m_nResolution );
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aCompression,
RTL_TEXTENCODING_UTF8);
rOut.WriteUInt16( rDesign.m_eFormat );
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aAuthor,
RTL_TEXTENCODING_UTF8);
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aEMail,
RTL_TEXTENCODING_UTF8);
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aWWW,
RTL_TEXTENCODING_UTF8);
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aMisc,
RTL_TEXTENCODING_UTF8);
rOut.WriteBool( rDesign.m_bDownload );
rOut.WriteBool( rDesign.m_bCreated ); // not used
rOut.WriteInt16( rDesign.m_nButtonThema );
rOut.WriteBool( rDesign.m_bUserAttr );
WriteColor( rOut, rDesign.m_aBackColor );
WriteColor( rOut, rDesign.m_aTextColor );
WriteColor( rOut, rDesign.m_aLinkColor );
WriteColor( rOut, rDesign.m_aVLinkColor );
WriteColor( rOut, rDesign.m_aALinkColor );
rOut.WriteBool( rDesign.m_bUseAttribs );
rOut.WriteBool( rDesign.m_bUseColor );
rOut.WriteUInt16( rDesign.m_eScript );
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aURL,
RTL_TEXTENCODING_UTF8);
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aCGI,
RTL_TEXTENCODING_UTF8);
rOut.WriteBool( rDesign.m_bAutoSlide );
rOut.WriteUInt32( rDesign.m_nSlideDuration );
rOut.WriteBool( rDesign.m_bEndless );
rOut.WriteBool( rDesign.m_bSlideSound );
rOut.WriteBool( rDesign.m_bHiddenSlides );
return rOut;
}
// Dialog for the entry of the name of the design
class SdDesignNameDlg : public weld::GenericDialogController
{
private:
std::unique_ptr<weld::Entry> m_xEdit;
std::unique_ptr<weld::Button> m_xBtnOK;
public:
SdDesignNameDlg(weld::Window* pWindow, const OUString& aName );
OUString GetDesignName();
DECL_LINK(ModifyHdl, weld::Entry&, void);
};
// SdPublishingDlg Methods
SdPublishingDlg::SdPublishingDlg(vcl::Window* pWindow, DocumentType eDocType)
: ModalDialog(pWindow, "PublishingDialog", "modules/simpress/ui/publishingdialog.ui")
, mpButtonSet( new ButtonSet() )
, aAssistentFunc(NOOFPAGES)
, m_bButtonsDirty(true)
, m_bDesignListDirty(false)
, m_pDesign(nullptr)
{
get(pLastPageButton, "lastPageButton");
get(pNextPageButton, "nextPageButton");
get(pFinishButton, "finishButton");
m_bImpress = eDocType == DocumentType::Impress;
Size aSize(LogicToPixel(Size(60, 50), MapMode(MapUnit::MapAppFont)));
get(pPage2_Standard_FB, "standardFBImage");
pPage2_Standard_FB->set_width_request(aSize.Width());
pPage2_Standard_FB->set_height_request(aSize.Height());
get(pPage2_Frames_FB, "framesFBImage");
pPage2_Frames_FB->set_width_request(aSize.Width());
pPage2_Frames_FB->set_height_request(aSize.Height());
get(pPage2_Kiosk_FB, "kioskFBImage");
pPage2_Kiosk_FB->set_width_request(aSize.Width());
pPage2_Kiosk_FB->set_height_request(aSize.Height());
get(pPage2_WebCast_FB, "webCastFBImage");
pPage2_WebCast_FB->set_width_request(aSize.Width());
pPage2_WebCast_FB->set_height_request(aSize.Height());
get(pPage4_Misc, "miscTextview");
pPage4_Misc->set_height_request(pPage4_Misc->GetTextHeight() * 8);
pPage4_Misc->set_width_request(pPage4_Misc->approximate_char_width() * 52);
get(pPage1_Designs, "designsTreeview");
pPage1_Designs->set_height_request(pPage4_Misc->GetTextHeight() * 8);
pPage1_Designs->set_width_request(pPage4_Misc->approximate_char_width() * 52);
//Lock down the preferred size based on the
//initial max-size configuration
aSize = get_preferred_size();
set_width_request(aSize.Width());
set_height_request(aSize.Height());
CreatePages();
Load();
// sets the output page
aAssistentFunc.GotoPage(1);
pLastPageButton->Disable();
// button assignment
pFinishButton->SetClickHdl(LINK(this,SdPublishingDlg,FinishHdl));
pLastPageButton->SetClickHdl(LINK(this,SdPublishingDlg,LastPageHdl));
pNextPageButton->SetClickHdl(LINK(this,SdPublishingDlg,NextPageHdl));
pPage1_NewDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignHdl));
pPage1_OldDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignHdl));
pPage1_Designs->SetSelectHdl(LINK(this,SdPublishingDlg,DesignSelectHdl));
pPage1_DelDesign->SetClickHdl(LINK(this,SdPublishingDlg,DesignDeleteHdl));
pPage2_Standard->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
pPage2_Standard_FB->SetBorderStyle(WindowBorderStyle::MONO);
pPage2_Frames->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
pPage2_Frames_FB->SetBorderStyle(WindowBorderStyle::MONO);
pPage2_SingleDocument->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
pPage2_Kiosk->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
pPage2_Kiosk_FB->SetBorderStyle(WindowBorderStyle::MONO);
pPage2_WebCast->SetClickHdl(LINK(this,SdPublishingDlg,BaseHdl));
pPage2_WebCast_FB->SetBorderStyle(WindowBorderStyle::MONO);
pPage2_Content->SetClickHdl(LINK(this,SdPublishingDlg,ContentHdl));
pPage2_ASP->SetClickHdl(LINK(this,SdPublishingDlg,WebServerHdl));
pPage2_PERL->SetClickHdl(LINK(this,SdPublishingDlg,WebServerHdl));
pPage2_Index->SetText("index" STR_HTMLEXP_DEFAULT_EXTENSION);
pPage2_CGI->SetText( "/cgi-bin/" );
pPage3_Png->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
pPage3_Gif->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
pPage3_Jpg->SetClickHdl(LINK(this,SdPublishingDlg, GfxFormatHdl));
pPage3_Quality->Enable(false);
pPage3_Resolution_1->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
pPage3_Resolution_2->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
pPage3_Resolution_3->SetClickHdl(LINK(this,SdPublishingDlg, ResolutionHdl ));
pPage2_ChgDefault->SetClickHdl(LINK(this,SdPublishingDlg, SlideChgHdl));
pPage2_ChgAuto->SetClickHdl(LINK(this,SdPublishingDlg, SlideChgHdl));
pPage2_Duration->SetFormat( TimeFieldFormat::F_SEC );
pPage5_Buttons->SetSelectHdl(LINK(this,SdPublishingDlg, ButtonsHdl ));
pPage5_Buttons->SetStyle( pPage5_Buttons->GetStyle() | WB_VSCROLL );
pPage6_Back->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
pPage6_Text->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
pPage6_Link->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
pPage6_VLink->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
pPage6_ALink->SetClickHdl(LINK(this,SdPublishingDlg, ColorHdl ));
pPage6_DocColors->Check();
pPage3_Quality->InsertEntry( "25%" );
pPage3_Quality->InsertEntry( "50%" );
pPage3_Quality->InsertEntry( "75%" );
pPage3_Quality->InsertEntry( "100%" );
pPage5_Buttons->SetColCount();
pPage5_Buttons->SetLineCount( 4 );
pPage5_Buttons->SetExtraSpacing( 1 );
std::vector<SdPublishingDesign>::iterator it;
for( it = m_aDesignList.begin(); it != m_aDesignList.end(); ++it )
pPage1_Designs->InsertEntry(it->m_aDesignName);
pPage6_Preview->SetBorderStyle(WindowBorderStyle::MONO);
SetDefaults();
SetHelpId(aPageHelpIds[0]);
pNextPageButton->GrabFocus();
}
SdPublishingDlg::~SdPublishingDlg()
{
disposeOnce();
}
void SdPublishingDlg::dispose()
{
pPage1.clear();
pPage1_Titel.clear();
pPage1_NewDesign.clear();
pPage1_OldDesign.clear();
pPage1_Designs.clear();
pPage1_DelDesign.clear();
pPage1_Desc.clear();
pPage2.clear();
pPage2Frame2.clear();
pPage2Frame3.clear();
pPage2Frame4.clear();
pPage2_Titel.clear();
pPage2_Standard.clear();
pPage2_Frames.clear();
pPage2_SingleDocument.clear();
pPage2_Kiosk.clear();
pPage2_WebCast.clear();
pPage2_Standard_FB.clear();
pPage2_Frames_FB.clear();
pPage2_Kiosk_FB.clear();
pPage2_WebCast_FB.clear();
pPage2_Titel_Html.clear();
pPage2_Content.clear();
pPage2_Notes.clear();
pPage2_Titel_WebCast.clear();
pPage2_ASP.clear();
pPage2_PERL.clear();
pPage2_URL_txt.clear();
pPage2_URL.clear();
pPage2_CGI_txt.clear();
pPage2_CGI.clear();
pPage2_Index_txt.clear();
pPage2_Index.clear();
pPage2_Titel_Kiosk.clear();
pPage2_ChgDefault.clear();
pPage2_ChgAuto.clear();
pPage2_Duration_txt.clear();
pPage2_Duration.clear();
pPage2_Endless.clear();
pPage3.clear();
pPage3_Titel1.clear();
pPage3_Png.clear();
pPage3_Gif.clear();
pPage3_Jpg.clear();
pPage3_Quality_txt.clear();
pPage3_Quality.clear();
pPage3_Titel2.clear();
pPage3_Resolution_1.clear();
pPage3_Resolution_2.clear();
pPage3_Resolution_3.clear();
pPage3_Titel3.clear();
pPage3_SldSound.clear();
pPage3_HiddenSlides.clear();
pPage4.clear();
pPage4_Titel1.clear();
pPage4_Author_txt.clear();
pPage4_Author.clear();
pPage4_Email_txt.clear();
pPage4_Email.clear();
pPage4_WWW_txt.clear();
pPage4_WWW.clear();
pPage4_Titel2.clear();
pPage4_Misc.clear();
pPage4_Download.clear();
pPage5.clear();
pPage5_Titel.clear();
pPage5_TextOnly.clear();
pPage5_Buttons.clear();
pPage6.clear();
pPage6_Titel.clear();
pPage6_Default.clear();
pPage6_User.clear();
pPage6_Back.clear();
pPage6_Text.clear();
pPage6_Link.clear();
pPage6_VLink.clear();
pPage6_ALink.clear();
pPage6_DocColors.clear();
pPage6_Preview.clear();
pLastPageButton.clear();
pNextPageButton.clear();
pFinishButton.clear();
ModalDialog::dispose();
}
// Generate dialog controls and embed them in the pages
void SdPublishingDlg::CreatePages()
{
// Page 1
get(pPage1, "page1");
get(pPage1_Titel, "assignLabel");
get(pPage1_NewDesign, "newDesignRadiobutton");
get(pPage1_OldDesign, "oldDesignRadiobutton");
get(pPage1_DelDesign, "delDesingButton");
get(pPage1_Desc, "descLabel");
aAssistentFunc.InsertControl(1, pPage1);
aAssistentFunc.InsertControl(1, pPage1_Titel);
aAssistentFunc.InsertControl(1, pPage1_NewDesign);
aAssistentFunc.InsertControl(1, pPage1_OldDesign);
aAssistentFunc.InsertControl(1, pPage1_Designs);
aAssistentFunc.InsertControl(1, pPage1_DelDesign);
aAssistentFunc.InsertControl(1, pPage1_Desc);
// Page 2
get(pPage2, "page2");
get(pPage2Frame2, "page2.2");
get(pPage2Frame3, "page2.3");
get(pPage2Frame4, "page2.4");
get(pPage2_Titel, "publicationLabel");
get(pPage2_Standard, "standardRadiobutton");
get(pPage2_Frames, "framesRadiobutton");
get(pPage2_SingleDocument, "singleDocumentRadiobutton");
get(pPage2_Kiosk, "kioskRadiobutton");
get(pPage2_WebCast, "webCastRadiobutton");
aAssistentFunc.InsertControl(2, pPage2);
aAssistentFunc.InsertControl(2, pPage2Frame2);
aAssistentFunc.InsertControl(2, pPage2Frame3);
aAssistentFunc.InsertControl(2, pPage2Frame4);
aAssistentFunc.InsertControl(2, pPage2_Titel);
aAssistentFunc.InsertControl(2, pPage2_Standard);
aAssistentFunc.InsertControl(2, pPage2_Frames);
aAssistentFunc.InsertControl(2, pPage2_SingleDocument);
aAssistentFunc.InsertControl(2, pPage2_Kiosk);
aAssistentFunc.InsertControl(2, pPage2_WebCast);
aAssistentFunc.InsertControl(2, pPage2_Standard_FB);
aAssistentFunc.InsertControl(2, pPage2_Frames_FB);
aAssistentFunc.InsertControl(2, pPage2_Kiosk_FB);
aAssistentFunc.InsertControl(2, pPage2_WebCast_FB);
get(pPage2_Titel_Html, "htmlOptionsLabel");
get(pPage2_Content, "contentCheckbutton");
get(pPage2_Notes, "notesCheckbutton");
aAssistentFunc.InsertControl(2, pPage2_Titel_Html);
aAssistentFunc.InsertControl(2, pPage2_Content);
if(m_bImpress)
aAssistentFunc.InsertControl(2, pPage2_Notes);
get(pPage2_Titel_WebCast, "webCastLabel");
get(pPage2_ASP, "ASPRadiobutton");
get(pPage2_PERL, "perlRadiobutton");
get(pPage2_URL_txt, "URLTxtLabel");
get(pPage2_URL, "URLEntry");
get(pPage2_CGI_txt, "CGITxtLabel");
get(pPage2_CGI, "CGIEntry");
get(pPage2_Index_txt, "indexTxtLabel");
get(pPage2_Index, "indexEntry");
get(pPage2_Titel_Kiosk, "kioskLabel");
get(pPage2_ChgDefault, "chgDefaultRadiobutton");
get(pPage2_ChgAuto, "chgAutoRadiobutton");
get(pPage2_Duration_txt, "durationTxtLabel");
get(pPage2_Duration, "durationSpinbutton");
get(pPage2_Endless, "endlessCheckbutton");
aAssistentFunc.InsertControl(2, pPage2_Titel_WebCast);
aAssistentFunc.InsertControl(2, pPage2_Index_txt);
aAssistentFunc.InsertControl(2, pPage2_Index);
aAssistentFunc.InsertControl(2, pPage2_ASP);
aAssistentFunc.InsertControl(2, pPage2_PERL);
aAssistentFunc.InsertControl(2, pPage2_URL_txt);
aAssistentFunc.InsertControl(2, pPage2_URL);
aAssistentFunc.InsertControl(2, pPage2_CGI_txt);
aAssistentFunc.InsertControl(2, pPage2_CGI);
aAssistentFunc.InsertControl(2, pPage2_Titel_Kiosk);
aAssistentFunc.InsertControl(2, pPage2_ChgDefault);
aAssistentFunc.InsertControl(2, pPage2_ChgAuto);
aAssistentFunc.InsertControl(2, pPage2_Duration_txt);
aAssistentFunc.InsertControl(2, pPage2_Duration);
aAssistentFunc.InsertControl(2, pPage2_Endless);
// Page 3
get(pPage3, "page3");
get(pPage3_Titel1, "saveImgAsLabel");
get(pPage3_Png, "pngRadiobutton");
get(pPage3_Gif, "gifRadiobutton");
get(pPage3_Jpg, "jpgRadiobutton");
get(pPage3_Quality_txt, "qualityTxtLabel");
get(pPage3_Quality, "qualityCombobox");
get(pPage3_Titel2, "monitorResolutionLabel");
get(pPage3_Resolution_1, "resolution1Radiobutton");
get(pPage3_Resolution_2, "resolution2Radiobutton");
get(pPage3_Resolution_3, "resolution3Radiobutton");
get(pPage3_Titel3, "effectsLabel");
get(pPage3_SldSound, "sldSoundCheckbutton");
get(pPage3_HiddenSlides, "hiddenSlidesCheckbutton");
aAssistentFunc.InsertControl(3, pPage3);
aAssistentFunc.InsertControl(3, pPage3_Titel1);
aAssistentFunc.InsertControl(3, pPage3_Png);
aAssistentFunc.InsertControl(3, pPage3_Gif);
aAssistentFunc.InsertControl(3, pPage3_Jpg);
aAssistentFunc.InsertControl(3, pPage3_Quality_txt);
aAssistentFunc.InsertControl(3, pPage3_Quality);
aAssistentFunc.InsertControl(3, pPage3_Titel2);
aAssistentFunc.InsertControl(3, pPage3_Resolution_1);
aAssistentFunc.InsertControl(3, pPage3_Resolution_2);
aAssistentFunc.InsertControl(3, pPage3_Resolution_3);
aAssistentFunc.InsertControl(3, pPage3_Titel3);
aAssistentFunc.InsertControl(3, pPage3_SldSound);
aAssistentFunc.InsertControl(3, pPage3_HiddenSlides);
// Page 4
get(pPage4, "page4");
get(pPage4_Titel1, "infTitlePageLabel");
get(pPage4_Author_txt, "authorTxtLabel");
get(pPage4_Author, "authorEntry");
get(pPage4_Email_txt, "emailTxtLabel");
get(pPage4_Email, "emailEntry");
get(pPage4_WWW_txt, "wwwTxtLabel");
get(pPage4_WWW, "wwwEntry");
get(pPage4_Titel2, "addInformLabel");
get(pPage4_Download, "downloadCheckbutton");
aAssistentFunc.InsertControl(4, pPage4);
aAssistentFunc.InsertControl(4, pPage4_Titel1);
aAssistentFunc.InsertControl(4, pPage4_Author_txt);
aAssistentFunc.InsertControl(4, pPage4_Author);
aAssistentFunc.InsertControl(4, pPage4_Email_txt);
aAssistentFunc.InsertControl(4, pPage4_Email);
aAssistentFunc.InsertControl(4, pPage4_WWW_txt);
aAssistentFunc.InsertControl(4, pPage4_WWW);
aAssistentFunc.InsertControl(4, pPage4_Titel2);
aAssistentFunc.InsertControl(4, pPage4_Misc);
if(m_bImpress)
aAssistentFunc.InsertControl(4, pPage4_Download);
// Page 5
get(pPage5, "page5");
get(pPage5_Titel, "buttonStyleLabel");
get(pPage5_TextOnly, "textOnlyCheckbutton");
get(pPage5_Buttons, "buttonsDrawingarea");
aAssistentFunc.InsertControl(5, pPage5);
aAssistentFunc.InsertControl(5, pPage5_Titel);
aAssistentFunc.InsertControl(5, pPage5_TextOnly);
aAssistentFunc.InsertControl(5, pPage5_Buttons);
// Page 6
get(pPage6, "page6");
get(pPage6_Titel, "selectColorLabel");
get(pPage6_Default, "defaultRadiobutton");
get(pPage6_User, "userRadiobutton");
get(pPage6_Back, "backButton");
get(pPage6_Text, "textButton");
get(pPage6_Link, "linkButton");
get(pPage6_VLink, "vLinkButton");
get(pPage6_ALink, "aLinkButton");
get(pPage6_DocColors, "docColorsRadiobutton");
get(pPage6_Preview, "previewDrawingarea");
aAssistentFunc.InsertControl(6, pPage6);
aAssistentFunc.InsertControl(6, pPage6_Titel);
aAssistentFunc.InsertControl(6, pPage6_DocColors);
aAssistentFunc.InsertControl(6, pPage6_Default);
aAssistentFunc.InsertControl(6, pPage6_User);
aAssistentFunc.InsertControl(6, pPage6_Text);
aAssistentFunc.InsertControl(6, pPage6_Link);
aAssistentFunc.InsertControl(6, pPage6_ALink);
aAssistentFunc.InsertControl(6, pPage6_VLink);
aAssistentFunc.InsertControl(6, pPage6_Back);
aAssistentFunc.InsertControl(6, pPage6_Preview);
}
// Initialize dialog with default-values
void SdPublishingDlg::SetDefaults()
{
SdPublishingDesign aDefault;
SetDesign(&aDefault);
pPage1_NewDesign->Check();
pPage1_OldDesign->Check(false);
UpdatePage();
}
// Feed the SfxItemSet with the settings of the dialog
void SdPublishingDlg::GetParameterSequence( Sequence< PropertyValue >& rParams )
{
std::vector< PropertyValue > aProps;
PropertyValue aValue;
// Page 2
aValue.Name = "PublishMode";
HtmlPublishMode ePublishMode;
if (pPage2_Frames->IsChecked())
ePublishMode = PUBLISH_FRAMES;
else if (pPage2_SingleDocument->IsChecked())
ePublishMode = PUBLISH_SINGLE_DOCUMENT;
else if (pPage2_Kiosk->IsChecked())
ePublishMode = PUBLISH_KIOSK;
else if (pPage2_WebCast->IsChecked())
ePublishMode = PUBLISH_WEBCAST;
else
ePublishMode = PUBLISH_HTML;
aValue.Value <<= static_cast<sal_Int32>(ePublishMode);
aProps.push_back( aValue );
aValue.Name = "IsExportContentsPage";
aValue.Value <<= pPage2_Content->IsChecked();
aProps.push_back( aValue );
if(m_bImpress)
{
aValue.Name = "IsExportNotes";
aValue.Value <<= pPage2_Notes->IsChecked();
aProps.push_back( aValue );
}
if( pPage2_WebCast->IsChecked() )
{
aValue.Name = "WebCastScriptLanguage";
if( pPage2_ASP->IsChecked() )
aValue.Value <<= OUString( "asp" );
else
aValue.Value <<= OUString( "perl" );
aProps.push_back( aValue );
aValue.Name = "WebCastCGIURL";
aValue.Value <<= pPage2_CGI->GetText();
aProps.push_back( aValue );
aValue.Name = "WebCastTargetURL";
aValue.Value <<= pPage2_URL->GetText();
aProps.push_back( aValue );
}
aValue.Name = "IndexURL";
aValue.Value <<= pPage2_Index->GetText();
aProps.push_back( aValue );
if( pPage2_Kiosk->IsChecked() && pPage2_ChgAuto->IsChecked() )
{
aValue.Name = "KioskSlideDuration";
aValue.Value <<= static_cast<sal_uInt32>(pPage2_Duration->GetTime().GetMSFromTime()) / 1000;
aProps.push_back( aValue );
aValue.Name = "KioskEndless";
aValue.Value <<= pPage2_Endless->IsChecked();
aProps.push_back( aValue );
}
// Page 3
aValue.Name = "Width";
sal_Int32 nTmpWidth = 640;
if( pPage3_Resolution_2->IsChecked() )
nTmpWidth = 800;
else if( pPage3_Resolution_3->IsChecked() )
nTmpWidth = 1024;
aValue.Value <<= nTmpWidth;
aProps.push_back( aValue );
aValue.Name = "Compression";
aValue.Value <<= pPage3_Quality->GetText();
aProps.push_back( aValue );
aValue.Name = "Format";
sal_Int32 nFormat;
if( pPage3_Png->IsChecked() )
nFormat = static_cast<sal_Int32>(FORMAT_PNG);
else if( pPage3_Gif->IsChecked() )
nFormat = static_cast<sal_Int32>(FORMAT_GIF);
else
nFormat = static_cast<sal_Int32>(FORMAT_JPG);
aValue.Value <<= nFormat;
aProps.push_back( aValue );
aValue.Name = "SlideSound";
aValue.Value <<= pPage3_SldSound->IsChecked();
aProps.push_back( aValue );
aValue.Name = "HiddenSlides";
aValue.Value <<= pPage3_HiddenSlides->IsChecked();
aProps.push_back( aValue );
// Page 4
aValue.Name = "Author";
aValue.Value <<= pPage4_Author->GetText();
aProps.push_back( aValue );
aValue.Name = "EMail";
aValue.Value <<= pPage4_Email->GetText();
aProps.push_back( aValue );
// try to guess protocol for user's homepage
INetURLObject aHomeURL( pPage4_WWW->GetText(),
INetProtocol::Http, // default proto is HTTP
INetURLObject::EncodeMechanism::All );
aValue.Name = "HomepageURL";
aValue.Value <<= aHomeURL.GetMainURL( INetURLObject::DecodeMechanism::NONE );
aProps.push_back( aValue );
aValue.Name = "UserText";
aValue.Value <<= pPage4_Misc->GetText();
aProps.push_back( aValue );
if( m_bImpress )
{
aValue.Name = "EnableDownload";
aValue.Value <<= pPage4_Download->IsChecked();
aProps.push_back( aValue );
}
// Page 5
if( !pPage5_TextOnly->IsChecked() )
{
aValue.Name = "UseButtonSet";
aValue.Value <<= static_cast<sal_Int32>(pPage5_Buttons->GetSelectedItemId() - 1);
aProps.push_back( aValue );
}
// Page 6
if( pPage6_User->IsChecked() )
{
aValue.Name = "BackColor";
aValue.Value <<= m_aBackColor;
aProps.push_back( aValue );
aValue.Name = "TextColor";
aValue.Value <<= m_aTextColor;
aProps.push_back( aValue );
aValue.Name = "LinkColor";
aValue.Value <<= m_aLinkColor;
aProps.push_back( aValue );
aValue.Name = "VLinkColor";
aValue.Value <<= m_aVLinkColor;
aProps.push_back( aValue );
aValue.Name = "ALinkColor";
aValue.Value <<= m_aALinkColor;
aProps.push_back( aValue );
}
if( pPage6_DocColors->IsChecked() )
{
aValue.Name = "IsUseDocumentColors";
aValue.Value <<= true;
aProps.push_back( aValue );
}
rParams.realloc( aProps.size() );
PropertyValue* pParams = rParams.getArray();
for( std::vector< PropertyValue >::iterator i = aProps.begin(); i != aProps.end(); ++i )
{
*pParams++ = (*i);
}
}
// Clickhandler for the radiobuttons of the design-selection
IMPL_LINK( SdPublishingDlg, DesignHdl, Button *, pButton, void )
{
if(pButton == pPage1_NewDesign)
{
pPage1_NewDesign->Check(); // because of DesignDeleteHdl
pPage1_OldDesign->Check(false);
pPage1_Designs->Disable();
pPage1_DelDesign->Disable();
m_pDesign = nullptr;
SdPublishingDesign aDefault;
SetDesign(&aDefault);
}
else
{
pPage1_NewDesign->Check(false);
pPage1_Designs->Enable();
pPage1_DelDesign->Enable();
if(pPage1_Designs->GetSelectedEntryCount() == 0)
pPage1_Designs->SelectEntryPos(0);
const sal_Int32 nPos = pPage1_Designs->GetSelectedEntryPos();
m_pDesign = &m_aDesignList[nPos];
DBG_ASSERT(m_pDesign, "No Design? That's not allowed (CL)");
if(m_pDesign)
SetDesign(m_pDesign);
}
}
// Clickhandler for the choice of one design
IMPL_LINK_NOARG(SdPublishingDlg, DesignSelectHdl, ListBox&, void)
{
const sal_Int32 nPos = pPage1_Designs->GetSelectedEntryPos();
m_pDesign = &m_aDesignList[nPos];
DBG_ASSERT(m_pDesign, "No Design? That's not allowed (CL)");
if(m_pDesign)
SetDesign(m_pDesign);
UpdatePage();
}
// Clickhandler for the delete of one design
IMPL_LINK_NOARG(SdPublishingDlg, DesignDeleteHdl, Button*, void)
{
const sal_Int32 nPos = pPage1_Designs->GetSelectedEntryPos();
std::vector<SdPublishingDesign>::iterator iter = m_aDesignList.begin()+nPos;
DBG_ASSERT(iter != m_aDesignList.end(), "No Design? That's not allowed (CL)");
pPage1_Designs->RemoveEntry(nPos);
if(m_pDesign == &(*iter))
DesignHdl( pPage1_NewDesign );
m_aDesignList.erase(iter);
m_bDesignListDirty = true;
UpdatePage();
}
// Clickhandler for the other servertypes
IMPL_LINK( SdPublishingDlg, WebServerHdl, Button *, pButton, void )
{
bool bASP = pButton == pPage2_ASP;
pPage2_ASP->Check( bASP );
pPage2_PERL->Check( !bASP );
UpdatePage();
}
// Clickhandler for the Radiobuttons of the graphicformat choice
IMPL_LINK( SdPublishingDlg, GfxFormatHdl, Button *, pButton, void )
{
pPage3_Png->Check( pButton == pPage3_Png );
pPage3_Gif->Check( pButton == pPage3_Gif );
pPage3_Jpg->Check( pButton == pPage3_Jpg );
pPage3_Quality->Enable(pButton == pPage3_Jpg);
}
// Clickhandler for the Radiobuttons Standard/Frames
IMPL_LINK_NOARG(SdPublishingDlg, BaseHdl, Button*, void)
{
UpdatePage();
}
// Clickhandler for the Checkbox of the Title page
IMPL_LINK_NOARG(SdPublishingDlg, ContentHdl, Button*, void)
{
if(pPage2_Content->IsChecked())
{
if(!aAssistentFunc.IsEnabled(4))
{
aAssistentFunc.EnablePage(4);
UpdatePage();
}
}
else
{
if(aAssistentFunc.IsEnabled(4))
{
aAssistentFunc.DisablePage(4);
UpdatePage();
}
}
}
// Clickhandler for the Resolution Radiobuttons
IMPL_LINK( SdPublishingDlg, ResolutionHdl, Button *, pButton, void )
{
pPage3_Resolution_1->Check(pButton == pPage3_Resolution_1);
pPage3_Resolution_2->Check(pButton == pPage3_Resolution_2);
pPage3_Resolution_3->Check(pButton == pPage3_Resolution_3);
}
// Clickhandler for the ValueSet with the bitmap-buttons
IMPL_LINK_NOARG(SdPublishingDlg, ButtonsHdl, ValueSet*, void)
{
// if one bitmap-button is chosen, then disable TextOnly
pPage5_TextOnly->Check(false);
}
// Fill the SfxItemSet with the settings of the dialog
IMPL_LINK( SdPublishingDlg, ColorHdl, Button *, pButton, void)
{
SvColorDialog aDlg;
if(pButton == pPage6_Back)
{
aDlg.SetColor( m_aBackColor );
if(aDlg.Execute(GetFrameWeld()) == RET_OK )
m_aBackColor = aDlg.GetColor();
}
else if(pButton == pPage6_Text)
{
aDlg.SetColor( m_aTextColor );
if(aDlg.Execute(GetFrameWeld()) == RET_OK )
m_aTextColor = aDlg.GetColor();
}
else if(pButton == pPage6_Link)
{
aDlg.SetColor( m_aLinkColor );
if(aDlg.Execute(GetFrameWeld()) == RET_OK )
m_aLinkColor = aDlg.GetColor();
}
else if(pButton == pPage6_VLink)
{
aDlg.SetColor( m_aVLinkColor );
if(aDlg.Execute(GetFrameWeld()) == RET_OK )
m_aVLinkColor = aDlg.GetColor();
}
else if(pButton == pPage6_ALink)
{
aDlg.SetColor( m_aALinkColor );
if(aDlg.Execute(GetFrameWeld()) == RET_OK )
m_aALinkColor = aDlg.GetColor();
}
pPage6_User->Check();
pPage6_Preview->SetColors( m_aBackColor, m_aTextColor, m_aLinkColor,
m_aVLinkColor, m_aALinkColor );
pPage6_Preview->Invalidate();
}
IMPL_LINK_NOARG(SdPublishingDlg, SlideChgHdl, Button*, void)
{
UpdatePage();
}
// Clickhandler for the Ok Button
IMPL_LINK_NOARG(SdPublishingDlg, FinishHdl, Button*, void)
{
//End
SdPublishingDesign aDesign;
GetDesign(&aDesign);
bool bSave = false;
if(pPage1_OldDesign->IsChecked() && m_pDesign)
{
// are there changes?
if(!(aDesign == *m_pDesign))
bSave = true;
}
else
{
SdPublishingDesign aDefaultDesign;
if(!(aDefaultDesign == aDesign))
bSave = true;
}
if(bSave)
{
OUString aName;
if(m_pDesign)
aName = m_pDesign->m_aDesignName;
bool bRetry;
do
{
bRetry = false;
SdDesignNameDlg aDlg(GetFrameWeld(), aName);
if (aDlg.run() == RET_OK)
{
aDesign.m_aDesignName = aDlg.GetDesignName();
std::vector<SdPublishingDesign>::iterator iter;
for (iter = m_aDesignList.begin(); iter != m_aDesignList.end(); ++iter)
{
if (iter->m_aDesignName == aDesign.m_aDesignName)
break;
}
if (iter != m_aDesignList.end())
{
std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
VclMessageType::Error, VclButtonsType::YesNo,
SdResId(STR_PUBDLG_SAMENAME)));
bRetry = xErrorBox->run() == RET_NO;
if(!bRetry)
m_aDesignList.erase(iter);
}
if(!bRetry)
{
m_aDesignList.push_back(aDesign);
m_bDesignListDirty = true;
}
}
}
while(bRetry);
}
if(m_bDesignListDirty)
Save();
EndDialog(RET_OK);
}
// Refresh the dialogs when changing from pages
void SdPublishingDlg::ChangePage()
{
int nPage = aAssistentFunc.GetCurrentPage();
SetHelpId(aPageHelpIds[nPage-1]);
UpdatePage();
if( pNextPageButton->IsEnabled() )
pNextPageButton->GrabFocus();
else
pFinishButton->GrabFocus();
}
void SdPublishingDlg::UpdatePage()
{
pNextPageButton->Enable(!aAssistentFunc.IsLastPage());
pLastPageButton->Enable(!aAssistentFunc.IsFirstPage());
int nPage = aAssistentFunc.GetCurrentPage();
switch( nPage )
{
case 1:
if(pPage1_NewDesign->IsChecked())
{
pPage1_Designs->Disable();
pPage1_DelDesign->Disable();
}
if(m_aDesignList.empty())
pPage1_OldDesign->Disable();
break;
case 2:
pPage2_Frames_FB->Show(pPage2_Frames->IsChecked());
pPage2_Standard_FB->Show(pPage2_Standard->IsChecked());
pPage2_Kiosk_FB->Show(pPage2_Kiosk->IsChecked());
pPage2_WebCast_FB->Show(pPage2_WebCast->IsChecked());
if( pPage2_WebCast->IsChecked() )
{
pPage2Frame4->Show();
pPage2_Titel_WebCast->Show();
pPage2_ASP->Show();
pPage2_PERL->Show();
pPage2_URL_txt->Show();
pPage2_URL->Show();
pPage2_CGI_txt->Show();
pPage2_CGI->Show();
pPage2_Index_txt->Show();
pPage2_Index->Show();
bool bPerl = pPage2_PERL->IsChecked();
pPage2_Index->Enable(bPerl);
pPage2_Index_txt->Enable(bPerl);
pPage2_URL_txt->Enable(bPerl);
pPage2_URL->Enable(bPerl);
pPage2_CGI_txt->Enable(bPerl);
pPage2_CGI->Enable(bPerl);
}
else
{
pPage2Frame4->Hide();
pPage2_Titel_WebCast->Hide();
pPage2_ASP->Hide();
pPage2_PERL->Hide();
pPage2_URL_txt->Hide();
pPage2_URL->Hide();
pPage2_CGI_txt->Hide();
pPage2_CGI->Hide();
pPage2_Index->Hide();
pPage2_Index_txt->Hide();
}
if( pPage2_Kiosk->IsChecked() )
{
pPage2Frame3->Show();
pPage2_Titel_Kiosk->Show();
pPage2_ChgDefault->Show();
pPage2_ChgAuto->Show();
pPage2_Duration_txt->Show();
pPage2_Duration->Show();
pPage2_Endless->Show();
bool bAuto = pPage2_ChgAuto->IsChecked();
pPage2_Duration->Enable(bAuto);
pPage2_Endless->Enable(bAuto);
}
else
{
pPage2Frame3->Hide();
pPage2_Titel_Kiosk->Hide();
pPage2_ChgDefault->Hide();
pPage2_ChgAuto->Hide();
pPage2_Duration->Hide();
pPage2_Duration_txt->Hide();
pPage2_Endless->Hide();
}
if( pPage2_Standard->IsChecked() || pPage2_Frames->IsChecked() )
{
pPage2Frame2->Show();
pPage2_Titel_Html->Show();
pPage2_Content->Show();
if(m_bImpress)
pPage2_Notes->Show();
}
else
{
pPage2Frame2->Hide();
pPage2_Titel_Html->Hide();
pPage2_Content->Hide();
if(m_bImpress)
pPage2_Notes->Hide();
}
break;
case 3:
if( pPage2_Kiosk->IsChecked() || pPage2_WebCast->IsChecked() )
pNextPageButton->Disable();
if( pPage2_WebCast->IsChecked() )
pPage3_SldSound->Disable();
pPage3_Quality->Enable(pPage3_Jpg->IsChecked());
break;
case 5:
if( m_bButtonsDirty )
LoadPreviewButtons();
break;
}
}
/** loads the html buttons from the button sets, creates a preview and fills the
itemset for page 5
*/
void SdPublishingDlg::LoadPreviewButtons()
{
if( mpButtonSet.get() )
{
const int nButtonCount = 8;
static const char *pButtonNames[nButtonCount] =
{
"first.png",
"left.png",
"right.png",
"last.png",
"home.png",
"text.png",
"expand.png",
"collapse.png",
};
std::vector< OUString > aButtonNames;
for(const char * p : pButtonNames)
aButtonNames.push_back( OUString::createFromAscii( p ) );
int nSetCount = mpButtonSet->getCount();
int nHeight = 32;
Image aImage;
for( int nSet = 0; nSet < nSetCount; ++nSet )
{
if( mpButtonSet->getPreview( nSet, aButtonNames, aImage ) )
{
pPage5_Buttons->InsertItem( static_cast<sal_uInt16>(nSet)+1, aImage );
if( nHeight < aImage.GetSizePixel().Height() )
nHeight = aImage.GetSizePixel().Height();
}
}
pPage5_Buttons->SetItemHeight( nHeight );
m_bButtonsDirty = false;
}
}
// Clickhandler for the Forward Button
IMPL_LINK_NOARG(SdPublishingDlg, NextPageHdl, Button*, void)
{
aAssistentFunc.NextPage();
ChangePage();
}
// Sets the Controls in the dialog to the settings in the design
void SdPublishingDlg::SetDesign( SdPublishingDesign const * pDesign )
{
if(!pDesign)
return;
pPage2_Standard->Check(pDesign->m_eMode == PUBLISH_HTML);
pPage2_Frames->Check(pDesign->m_eMode == PUBLISH_FRAMES);
pPage2_Kiosk->Check(pDesign->m_eMode == PUBLISH_KIOSK );
pPage2_WebCast->Check(pDesign->m_eMode == PUBLISH_WEBCAST );
pPage2_Content->Check(pDesign->m_bContentPage);
if(pDesign->m_bContentPage)
aAssistentFunc.EnablePage(4);
else
aAssistentFunc.DisablePage(4);
if(m_bImpress)
pPage2_Notes->Check(pDesign->m_bNotes);
pPage2_ASP->Check(pDesign->m_eScript == SCRIPT_ASP);
pPage2_PERL->Check(pDesign->m_eScript == SCRIPT_PERL);
pPage2_CGI->SetText(pDesign->m_aCGI);
pPage2_URL->SetText(pDesign->m_aURL);
pPage2_ChgDefault->Check( !pDesign->m_bAutoSlide );
pPage2_ChgAuto->Check( pDesign->m_bAutoSlide );
tools::Time aTime( tools::Time::EMPTY );
aTime.MakeTimeFromMS( pDesign->m_nSlideDuration * 1000 );
pPage2_Duration->SetTime( aTime );
pPage2_Endless->Check( pDesign->m_bEndless );
pPage3_Png->Check(pDesign->m_eFormat == FORMAT_PNG);
pPage3_Gif->Check(pDesign->m_eFormat == FORMAT_GIF);
pPage3_Jpg->Check(pDesign->m_eFormat == FORMAT_JPG);
pPage3_Quality->Enable(pDesign->m_eFormat == FORMAT_JPG);
pPage3_Quality->SetText(pDesign->m_aCompression);
pPage3_Resolution_1->Check(pDesign->m_nResolution == PUB_LOWRES_WIDTH);
pPage3_Resolution_2->Check(pDesign->m_nResolution == PUB_MEDRES_WIDTH);
pPage3_Resolution_3->Check(pDesign->m_nResolution == PUB_HIGHRES_WIDTH);
pPage3_SldSound->Check( pDesign->m_bSlideSound );
pPage3_HiddenSlides->Check( pDesign->m_bHiddenSlides );
pPage4_Author->SetText(pDesign->m_aAuthor);
pPage4_Email->SetText(pDesign->m_aEMail);
pPage4_WWW->SetText(pDesign->m_aWWW);
pPage4_Misc->SetText(pDesign->m_aMisc);
if(m_bImpress)
pPage4_Download->Check(pDesign->m_bDownload);
pPage5_TextOnly->Check(pDesign->m_nButtonThema == -1);
if(pDesign->m_nButtonThema != -1)
{
if(m_bButtonsDirty)
LoadPreviewButtons();
pPage5_Buttons->SelectItem(pDesign->m_nButtonThema + 1);
}
else
pPage5_Buttons->SetNoSelection();
pPage6_User->Check(pDesign->m_bUserAttr);
m_aBackColor = pDesign->m_aBackColor;
m_aTextColor = pDesign->m_aTextColor;
m_aLinkColor = pDesign->m_aLinkColor;
m_aVLinkColor = pDesign->m_aVLinkColor;
m_aALinkColor = pDesign->m_aALinkColor;
pPage6_DocColors->Check(pDesign->m_bUseColor);
pPage6_Preview->SetColors( m_aBackColor, m_aTextColor, m_aLinkColor,
m_aVLinkColor, m_aALinkColor );
pPage6_Preview->Invalidate();
UpdatePage();
}
// Transfer the status of the Design Dialog Controls
void SdPublishingDlg::GetDesign( SdPublishingDesign* pDesign )
{
if(!pDesign)
return;
pDesign->m_eMode = pPage2_Standard->IsChecked()?PUBLISH_HTML:
pPage2_Frames->IsChecked()?PUBLISH_FRAMES:
pPage2_Kiosk->IsChecked()?PUBLISH_KIOSK:
PUBLISH_WEBCAST;
pDesign->m_bContentPage = pPage2_Content->IsChecked();
if(m_bImpress)
pDesign->m_bNotes = pPage2_Notes->IsChecked();
if( pPage3_Gif->IsChecked() )
pDesign->m_eFormat = FORMAT_GIF;
else if( pPage3_Jpg->IsChecked() )
pDesign->m_eFormat = FORMAT_JPG;
else
pDesign->m_eFormat = FORMAT_PNG;
pDesign->m_aCompression = pPage3_Quality->GetText();
pDesign->m_nResolution = pPage3_Resolution_1->IsChecked()?PUB_LOWRES_WIDTH:
(pPage3_Resolution_2->IsChecked()?PUB_MEDRES_WIDTH:PUB_HIGHRES_WIDTH);
pDesign->m_bSlideSound = pPage3_SldSound->IsChecked();
pDesign->m_bHiddenSlides = pPage3_HiddenSlides->IsChecked();
pDesign->m_aAuthor = pPage4_Author->GetText();
pDesign->m_aEMail = pPage4_Email->GetText();
pDesign->m_aWWW = pPage4_WWW->GetText();
pDesign->m_aMisc = pPage4_Misc->GetText();
pDesign->m_bDownload = m_bImpress && pPage4_Download->IsChecked();
if(pPage5_TextOnly->IsChecked())
pDesign->m_nButtonThema = -1;
else
pDesign->m_nButtonThema = pPage5_Buttons->GetSelectedItemId() - 1;
pDesign->m_bUserAttr = pPage6_User->IsChecked();
pDesign->m_aBackColor = m_aBackColor;
pDesign->m_aTextColor = m_aTextColor;
pDesign->m_aLinkColor = m_aLinkColor;
pDesign->m_aVLinkColor = m_aVLinkColor;
pDesign->m_aALinkColor = m_aALinkColor;
pDesign->m_bUseColor = pPage6_DocColors->IsChecked();
pDesign->m_eScript = pPage2_ASP->IsChecked()?SCRIPT_ASP:SCRIPT_PERL;
pDesign->m_aCGI = pPage2_CGI->GetText();
pDesign->m_aURL = pPage2_URL->GetText();
pDesign->m_bAutoSlide = pPage2_ChgAuto->IsChecked();
pDesign->m_nSlideDuration = static_cast<sal_uInt32>(pPage2_Duration->GetTime().GetMSFromTime()) / 1000;
pDesign->m_bEndless = pPage2_Endless->IsChecked();
}
// Clickhandler for the back Button
IMPL_LINK_NOARG(SdPublishingDlg, LastPageHdl, Button*, void)
{
aAssistentFunc.PreviousPage();
ChangePage();
}
// Load Designs
void SdPublishingDlg::Load()
{
m_bDesignListDirty = false;
INetURLObject aURL( SvtPathOptions().GetUserConfigPath() );
aURL.Append( "designs.sod" );
// check if file exists, SfxMedium shows an errorbox else
{
std::unique_ptr<SvStream> pIStm = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), StreamMode::READ );
bool bOk = pIStm && ( pIStm->GetError() == ERRCODE_NONE);
if( !bOk )
return;
}
SfxMedium aMedium( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), StreamMode::READ | StreamMode::NOCREATE );
SvStream* pStream = aMedium.GetInStream();
if( !pStream )
return;
sal_uInt16 aCheck;
pStream->ReadUInt16( aCheck );
if(aCheck != nMagic)
return;
SdIOCompat aIO(*pStream, StreamMode::READ);
sal_uInt16 nDesigns;
pStream->ReadUInt16( nDesigns );
for( sal_uInt16 nIndex = 0;
pStream->GetError() == ERRCODE_NONE && nIndex < nDesigns;
nIndex++ )
{
SdPublishingDesign aDesign;
*pStream >> aDesign;
m_aDesignList.push_back(aDesign);
}
}
// Save Designs
bool SdPublishingDlg::Save()
{
INetURLObject aURL( SvtPathOptions().GetUserConfigPath() );
aURL.Append( "designs.sod" );
SfxMedium aMedium( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), StreamMode::WRITE | StreamMode::TRUNC );
SvStream* pStream = aMedium.GetOutStream();
if( !pStream )
return false;
pStream->WriteUInt16( nMagic );
// Destroys the SdIOCompat before the Stream is being distributed
{
SdIOCompat aIO(*pStream, StreamMode::WRITE, 0);
sal_uInt16 nDesigns = static_cast<sal_uInt16>(m_aDesignList.size());
pStream->WriteUInt16( nDesigns );
for( sal_uInt16 nIndex = 0;
pStream->GetError() == ERRCODE_NONE && nIndex < nDesigns;
nIndex++ )
WriteSdPublishingDesign( *pStream, m_aDesignList[nIndex] );
}
aMedium.Close();
aMedium.Commit();
return( aMedium.GetError() == ERRCODE_NONE );
}
std::vector<OString> SdPublishingDlg::getAllPageUIXMLDescriptions() const
{
// this dialog has a hard number of pages
std::vector<OString> aRetval;
for (sal_uInt32 a(0); a < 6; a++)
{
aRetval.push_back(OString::number(a));
}
return aRetval;
}
bool SdPublishingDlg::selectPageByUIXMLDescription(const OString& rUIXMLDescription)
{
// rUIXMLDescription contains one of the values above, make use of it
const sal_uInt32 nPage(rUIXMLDescription.toUInt32());
if (nPage < 6)
{
aAssistentFunc.GotoPage(nPage + 1);
return true;
}
return false;
}
// SdDesignNameDlg Methods
SdDesignNameDlg::SdDesignNameDlg(weld::Window* pWindow, const OUString& rName)
: GenericDialogController(pWindow, "modules/sdraw/ui/namedesign.ui", "NameDesignDialog")
, m_xEdit(m_xBuilder->weld_entry("entry"))
, m_xBtnOK(m_xBuilder->weld_button("ok"))
{
m_xEdit->connect_changed(LINK(this, SdDesignNameDlg, ModifyHdl ));
m_xEdit->set_text(rName);
m_xBtnOK->set_sensitive(!rName.isEmpty());
}
OUString SdDesignNameDlg::GetDesignName()
{
return m_xEdit->get_text();
}
IMPL_LINK_NOARG(SdDesignNameDlg, ModifyHdl, weld::Entry&, void)
{
m_xBtnOK->set_sensitive(!m_xEdit->get_text().isEmpty());
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
↑ V1029 Numeric Truncation Error. Result of the 'size' function is written to the 16-bit variable.