diff options
Diffstat (limited to 'filter/source/pdf/impdialog.cxx')
-rw-r--r-- | filter/source/pdf/impdialog.cxx | 1009 |
1 files changed, 630 insertions, 379 deletions
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx index 050c1aa4d5cc..06909a34a128 100644 --- a/filter/source/pdf/impdialog.cxx +++ b/filter/source/pdf/impdialog.cxx @@ -24,11 +24,13 @@ #include <vcl/svapp.hxx> #include <vcl/weld.hxx> #include <sfx2/passwd.hxx> -#include <unotools/resmgr.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <sfx2/objsh.hxx> -#include <svx/AccessibilityCheckDialog.hxx> +#include <svl/stritem.hxx> +#include <sfx2/dispatch.hxx> +#include <sfx2/sfxsids.hrc> +#include <comphelper/lok.hxx> #include <comphelper/propertyvalue.hxx> #include <comphelper/sequence.hxx> #include <comphelper/storagehelper.hxx> @@ -42,11 +44,6 @@ #include <com/sun/star/beans/XMaterialHolder.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> -static OUString PDFFilterResId(const char* pId) -{ - return Translate::get(pId, Translate::Create("flt")); -} - using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -54,11 +51,10 @@ using namespace ::com::sun::star::uno; Please note: the default used here are the same as per specification, They should be the same in PDFFilter::implExport and in PDFExport::PDFExport */ -ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue >& rFilterData, +ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, const Sequence< PropertyValue >& rFilterData, const Reference< XComponent >& rxDoc) - : SfxTabDialogController(pParent, "filter/ui/pdfoptionsdialog.ui", "PdfOptionsDialog"), + : SfxTabDialogController(pParent, u"filter/ui/pdfoptionsdialog.ui"_ustr, u"PdfOptionsDialog"_ustr), mrDoc(rxDoc), - mpParent(pParent), maConfigItem( u"Office.Common/Filter/PDF/Export/", &rFilterData ), maConfigI18N( u"Office.Common/I18N/CTL/" ), mbIsPresentation( false ), @@ -74,6 +70,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue mbUseTaggedPDF( false ), mbUseTaggedPDFUserSelection( false ), mbExportNotes( true ), + mbExportNotesInMargin( false ), mbViewPDF( false ), mbUseReferenceXObject( false ), mbExportNotesPages( false ), @@ -98,7 +95,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue mbOpenInFullScreenMode( false ), mbDisplayPDFDocumentTitle( false ), mnMagnification( 0 ), - mnInitialView( 0 ), + mnInitialView( 1 ), mnZoom( 0 ), mnInitialPage( 1 ), mnPageLayout( 0 ), @@ -111,8 +108,10 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue mbCanCopyOrExtract( false ), mbCanExtractForAccessibility( true ), - mbIsRangeChecked( false ), + mbIsPageRangeChecked( false ), msPageRange( ' ' ), + mbIsSheetRangeChecked( false ), + msSheetRange( ' ' ), mbSelectionIsChecked( false ), mbExportRelativeFsysLinks( false ), @@ -165,11 +164,11 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue Reference< XServiceInfo > xInfo( rxDoc, UNO_QUERY ); if ( xInfo.is() ) { - if ( xInfo->supportsService( "com.sun.star.presentation.PresentationDocument" ) ) + if ( xInfo->supportsService( u"com.sun.star.presentation.PresentationDocument"_ustr ) ) mbIsPresentation = true; - if ( xInfo->supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) ) + if ( xInfo->supportsService( u"com.sun.star.sheet.SpreadsheetDocument"_ustr ) ) mbIsSpreadsheet = true; - if ( xInfo->supportsService( "com.sun.star.text.GenericTextDocument" ) ) + if ( xInfo->supportsService( u"com.sun.star.text.GenericTextDocument"_ustr ) ) mbIsWriter = true; } } @@ -178,92 +177,99 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue } // get the CTL (Complex Text Layout) from general options, returns sal_True if we have a CTL font on our hands. - mbUseCTLFont = maConfigI18N.ReadBool( "CTLFont", false ); + mbUseCTLFont = maConfigI18N.ReadBool( u"CTLFont"_ustr, false ); - mbUseLosslessCompression = maConfigItem.ReadBool( "UseLosslessCompression", false ); - mnQuality = maConfigItem.ReadInt32( "Quality", 90 ); - mbReduceImageResolution = maConfigItem.ReadBool( "ReduceImageResolution", false ); - mnMaxImageResolution = maConfigItem.ReadInt32( "MaxImageResolution", 300 ); + mbUseLosslessCompression = maConfigItem.ReadBool( u"UseLosslessCompression"_ustr, false ); + mnQuality = maConfigItem.ReadInt32( u"Quality"_ustr, 90 ); + mbReduceImageResolution = maConfigItem.ReadBool( u"ReduceImageResolution"_ustr, false ); + mnMaxImageResolution = maConfigItem.ReadInt32( u"MaxImageResolution"_ustr, 300 ); // this is always the user selection, independent from the PDF/A forced selection - mbUseTaggedPDF = maConfigItem.ReadBool( "UseTaggedPDF", false ); + mbUseTaggedPDF = maConfigItem.ReadBool( u"UseTaggedPDF"_ustr, false ); mbUseTaggedPDFUserSelection = mbUseTaggedPDF; - mnPDFTypeSelection = maConfigItem.ReadInt32( "SelectPdfVersion", 0 ); - mbPDFUACompliance = maConfigItem.ReadBool("PDFUACompliance", false); + mnPDFTypeSelection = maConfigItem.ReadInt32( u"SelectPdfVersion"_ustr, 0 ); + mbPDFUACompliance = maConfigItem.ReadBool(u"PDFUACompliance"_ustr, false); if ( mbIsPresentation ) { - mbExportNotesPages = maConfigItem.ReadBool( "ExportNotesPages", false ); - mbExportOnlyNotesPages = maConfigItem.ReadBool( "ExportOnlyNotesPages", false ); + mbExportNotesPages = maConfigItem.ReadBool( u"ExportNotesPages"_ustr, false ); + mbExportOnlyNotesPages = maConfigItem.ReadBool( u"ExportOnlyNotesPages"_ustr, false ); } - mbExportNotes = maConfigItem.ReadBool( "ExportNotes", false ); - mbViewPDF = maConfigItem.ReadBool( "ViewPDFAfterExport", false ); + mbExportNotes = maConfigItem.ReadBool( u"ExportNotes"_ustr, false ); + if (mbIsWriter) + mbExportNotesInMargin = maConfigItem.ReadBool( u"ExportNotesInMargin"_ustr, false ); + mbViewPDF = maConfigItem.ReadBool( u"ViewPDFAfterExport"_ustr, false ); - mbExportBookmarks = maConfigItem.ReadBool( "ExportBookmarks", true ); + mbExportBookmarks = maConfigItem.ReadBool( u"ExportBookmarks"_ustr, true ); + mbExportBookmarksUserSelection = mbExportBookmarks; if ( mbIsPresentation ) - mbExportHiddenSlides = maConfigItem.ReadBool( "ExportHiddenSlides", false ); + mbExportHiddenSlides = maConfigItem.ReadBool( u"ExportHiddenSlides"_ustr, false ); if ( mbIsSpreadsheet ) - mbSinglePageSheets = maConfigItem.ReadBool( "SinglePageSheets", false ); - mnOpenBookmarkLevels = maConfigItem.ReadInt32( "OpenBookmarkLevels", -1 ); - mbUseTransitionEffects = maConfigItem.ReadBool( "UseTransitionEffects", true ); - mbIsSkipEmptyPages = maConfigItem.ReadBool( "IsSkipEmptyPages", false ); - mbIsExportPlaceholders = maConfigItem.ReadBool( "ExportPlaceholders", false ); - mbAddStream = maConfigItem.ReadBool( "IsAddStream", false ); - - mbExportFormFields = maConfigItem.ReadBool( "ExportFormFields", true ); - mnFormsType = maConfigItem.ReadInt32( "FormsType", 0 ); + mbSinglePageSheets = maConfigItem.ReadBool( u"SinglePageSheets"_ustr, false ); + mnOpenBookmarkLevels = maConfigItem.ReadInt32( u"OpenBookmarkLevels"_ustr, -1 ); + mbUseTransitionEffects = maConfigItem.ReadBool( u"UseTransitionEffects"_ustr, true ); + mbIsSkipEmptyPages = maConfigItem.ReadBool( u"IsSkipEmptyPages"_ustr, false ); + mbIsExportPlaceholders = maConfigItem.ReadBool( u"ExportPlaceholders"_ustr, false ); + mbAddStream = maConfigItem.ReadBool( u"IsAddStream"_ustr, false ); + + mbExportFormFields = maConfigItem.ReadBool( u"ExportFormFields"_ustr, true ); + mnFormsType = maConfigItem.ReadInt32( u"FormsType"_ustr, 0 ); if ( ( mnFormsType < 0 ) || ( mnFormsType > 3 ) ) mnFormsType = 0; - mbAllowDuplicateFieldNames = maConfigItem.ReadBool( "AllowDuplicateFieldNames", false ); + mbAllowDuplicateFieldNames = maConfigItem.ReadBool( u"AllowDuplicateFieldNames"_ustr, false ); // prepare values for the Viewer tab page - mbHideViewerToolbar = maConfigItem.ReadBool( "HideViewerToolbar", false ); - mbHideViewerMenubar = maConfigItem.ReadBool( "HideViewerMenubar", false ); - mbHideViewerWindowControls = maConfigItem.ReadBool( "HideViewerWindowControls", false ); - mbResizeWinToInit = maConfigItem.ReadBool( "ResizeWindowToInitialPage", false ); - mbCenterWindow = maConfigItem.ReadBool( "CenterWindow", false ); - mbOpenInFullScreenMode = maConfigItem.ReadBool( "OpenInFullScreenMode", false ); - mbDisplayPDFDocumentTitle = maConfigItem.ReadBool( "DisplayPDFDocumentTitle", true ); - - mnInitialView = maConfigItem.ReadInt32( "InitialView", 0 ); - mnMagnification = maConfigItem.ReadInt32( "Magnification", 0 ); - mnZoom = maConfigItem.ReadInt32( "Zoom", 100 ); - mnPageLayout = maConfigItem.ReadInt32( "PageLayout", 0 ); - mbFirstPageLeft = maConfigItem.ReadBool( "FirstPageOnLeft", false ); - mnInitialPage = maConfigItem.ReadInt32( "InitialPage", 1 ); + mbHideViewerToolbar = maConfigItem.ReadBool( u"HideViewerToolbar"_ustr, false ); + mbHideViewerMenubar = maConfigItem.ReadBool( u"HideViewerMenubar"_ustr, false ); + mbHideViewerWindowControls = maConfigItem.ReadBool( u"HideViewerWindowControls"_ustr, false ); + mbResizeWinToInit = maConfigItem.ReadBool( u"ResizeWindowToInitialPage"_ustr, false ); + mbCenterWindow = maConfigItem.ReadBool( u"CenterWindow"_ustr, false ); + mbOpenInFullScreenMode = maConfigItem.ReadBool( u"OpenInFullScreenMode"_ustr, false ); + mbDisplayPDFDocumentTitle = maConfigItem.ReadBool( u"DisplayPDFDocumentTitle"_ustr, true ); + + mnInitialView = maConfigItem.ReadInt32( u"InitialView"_ustr, 0 ); + mnInitialViewUserSelection = mnInitialView; + mnMagnification = maConfigItem.ReadInt32( u"Magnification"_ustr, 0 ); + mnZoom = maConfigItem.ReadInt32( u"Zoom"_ustr, 100 ); + mnPageLayout = maConfigItem.ReadInt32( u"PageLayout"_ustr, 0 ); + mbFirstPageLeft = maConfigItem.ReadBool( u"FirstPageOnLeft"_ustr, false ); + mnInitialPage = maConfigItem.ReadInt32( u"InitialPage"_ustr, 1 ); if( mnInitialPage < 1 ) mnInitialPage = 1; // prepare values for the security tab page - mnPrint = maConfigItem.ReadInt32( "Printing", 2 ); - mnChangesAllowed = maConfigItem.ReadInt32( "Changes", 4 ); - mbCanCopyOrExtract = maConfigItem.ReadBool( "EnableCopyingOfContent", true ); - mbCanExtractForAccessibility = maConfigItem.ReadBool( "EnableTextAccessForAccessibilityTools", true ); + mnPrint = maConfigItem.ReadInt32( u"Printing"_ustr, 2 ); + mnChangesAllowed = maConfigItem.ReadInt32( u"Changes"_ustr, 4 ); + mbCanCopyOrExtract = maConfigItem.ReadBool( u"EnableCopyingOfContent"_ustr, true ); + mbCanExtractForAccessibility = maConfigItem.ReadBool( u"EnableTextAccessForAccessibilityTools"_ustr, true ); // prepare values for relative links - mbExportRelativeFsysLinks = maConfigItem.ReadBool( "ExportLinksRelativeFsys", false ); + mbExportRelativeFsysLinks = maConfigItem.ReadBool( u"ExportLinksRelativeFsys"_ustr, false ); - mnViewPDFMode = maConfigItem.ReadInt32( "PDFViewSelection", 0 ); + mnViewPDFMode = maConfigItem.ReadInt32( u"PDFViewSelection"_ustr, 0 ); - mbConvertOOoTargets = maConfigItem.ReadBool( "ConvertOOoTargetToPDFTarget", false ); - mbExportBmkToPDFDestination = maConfigItem.ReadBool( "ExportBookmarksToPDFDestination", false ); + mbConvertOOoTargets = maConfigItem.ReadBool( u"ConvertOOoTargetToPDFTarget"_ustr, false ); + mbExportBmkToPDFDestination = maConfigItem.ReadBool( u"ExportBookmarksToPDFDestination"_ustr, false ); // prepare values for digital signatures - mbSignPDF = maConfigItem.ReadBool( "SignPDF", false ); + mbSignPDF = maConfigItem.ReadBool( u"SignPDF"_ustr, false ); // queue the tab pages for later creation (created when first shown) - AddTabPage("general", ImpPDFTabGeneralPage::Create, nullptr ); - AddTabPage("digitalsignatures", ImpPDFTabSigningPage::Create, nullptr); - AddTabPage("security", ImpPDFTabSecurityPage::Create, nullptr); - AddTabPage("links", ImpPDFTabLinksPage::Create, nullptr); - AddTabPage("userinterface", ImpPDFTabViewerPage::Create, nullptr); - AddTabPage("initialview", ImpPDFTabOpnFtrPage::Create, nullptr); + AddTabPage(u"general"_ustr, ImpPDFTabGeneralPage::Create, nullptr ); + if (comphelper::LibreOfficeKit::isActive()) + m_xTabCtrl->remove_page(u"digitalsignatures"_ustr); + else + AddTabPage(u"digitalsignatures"_ustr, ImpPDFTabSigningPage::Create, nullptr); + AddTabPage(u"security"_ustr, ImpPDFTabSecurityPage::Create, nullptr); + AddTabPage(u"links"_ustr, ImpPDFTabLinksPage::Create, nullptr); + AddTabPage(u"userinterface"_ustr, ImpPDFTabViewerPage::Create, nullptr); + AddTabPage(u"initialview"_ustr, ImpPDFTabOpnFtrPage::Create, nullptr); - SetCurPageId("general"); + SetCurPageId(u"general"_ustr); // get the string property value (from sfx2/source/dialog/mailmodel.cxx) to overwrite the text for the Ok button - OUString sOkButtonText = maConfigItem.ReadString( "_OkButtonString", OUString() ); + OUString sOkButtonText = maConfigItem.ReadString( u"_OkButtonString"_ustr, OUString() ); // change text on the Ok button: get the relevant string from resources, update it on the button // according to the exported pdf file destination: send as e-mail or write to file? @@ -271,6 +277,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue GetOKButton().set_label(sOkButtonText); GetCancelButton().connect_clicked(LINK(this, ImpPDFTabDialog, CancelHdl)); + GetOKButton().connect_clicked(LINK(this, ImpPDFTabDialog, OkHdl)); // remove the reset button, not needed in this tabbed dialog RemoveResetButton(); @@ -278,7 +285,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, Sequence< PropertyValue ImpPDFTabSecurityPage* ImpPDFTabDialog::getSecurityPage() const { - SfxTabPage* pSecurityPage = GetTabPage("security"); + SfxTabPage* pSecurityPage = GetTabPage(u"security"); if (pSecurityPage) { return static_cast<ImpPDFTabSecurityPage*>(pSecurityPage); @@ -286,10 +293,19 @@ ImpPDFTabSecurityPage* ImpPDFTabDialog::getSecurityPage() const return nullptr; } +ImpPDFTabOpnFtrPage * ImpPDFTabDialog::getOpenPage() const +{ + SfxTabPage* pOpenPage = GetTabPage(u"initialview"); + if (pOpenPage) + { + return static_cast<ImpPDFTabOpnFtrPage*>(pOpenPage); + } + return nullptr; +} ImpPDFTabLinksPage* ImpPDFTabDialog::getLinksPage() const { - SfxTabPage* pLinksPage = GetTabPage("links"); + SfxTabPage* pLinksPage = GetTabPage(u"links"); if (pLinksPage) { return static_cast<ImpPDFTabLinksPage*>(pLinksPage); @@ -300,7 +316,7 @@ ImpPDFTabLinksPage* ImpPDFTabDialog::getLinksPage() const ImpPDFTabGeneralPage* ImpPDFTabDialog::getGeneralPage() const { - SfxTabPage* pGeneralPage = GetTabPage("general"); + SfxTabPage* pGeneralPage = GetTabPage(u"general"); if (pGeneralPage) { return static_cast<ImpPDFTabGeneralPage*>(pGeneralPage); @@ -313,13 +329,67 @@ IMPL_LINK_NOARG(ImpPDFTabDialog, CancelHdl, weld::Button&, void) m_xDialog->response(RET_CANCEL); } +IMPL_LINK_NOARG(ImpPDFTabDialog, OkHdl, weld::Button&, void) +{ + if (getGeneralPage()->IsPdfUaSelected()) + { + SfxObjectShell* pShell = SfxObjectShell::GetShellFromComponent(mrDoc); + if (pShell) + { + sfx::AccessibilityIssueCollection aCollection = pShell->runAccessibilityCheck(); + auto aIssues = aCollection.getIssues(); + int nIssueCount(aIssues.size()); + if (!aIssues.empty()) + { + OUString aMessage(FilterResId(STR_WARN_PDFUA_ISSUES, nIssueCount)); + aMessage = aMessage.replaceFirst("%1", OUString::number(nIssueCount)); + + std::unique_ptr<weld::MessageDialog> xPDFUADialog(Application::CreateMessageDialog( + getGeneralPage()->GetFrameWeld(), VclMessageType::Warning, + VclButtonsType::Cancel, aMessage)); + xPDFUADialog->add_button(FilterResId(STR_PDFUA_INVESTIGATE, nIssueCount), RET_NO); + xPDFUADialog->add_button(FilterResId(STR_PDFUA_IGNORE), RET_YES); + xPDFUADialog->set_default_response(RET_YES); + + int ret = xPDFUADialog->run(); + if (ret == RET_YES) + m_xDialog->response(RET_OK); + else if (ret == RET_NO) + { + m_xDialog->response(RET_CANCEL); + // Show accessibility check Sidebar deck + SfxDispatcher* pDispatcher = pShell->GetDispatcher(); + if (pDispatcher) + { + const SfxStringItem sDeckName(SID_SIDEBAR_DECK, u"A11yCheckDeck"_ustr); + pDispatcher->ExecuteList(SID_SIDEBAR_DECK, SfxCallMode::RECORD, + { &sDeckName }); + } + } + } + else + { + m_xDialog->response(RET_OK); + } + } + else + { + m_xDialog->response(RET_OK); + } + } + else + { + m_xDialog->response(RET_OK); + } +} + ImpPDFTabDialog::~ImpPDFTabDialog() { maConfigItem.WriteModifiedConfig(); maConfigI18N.WriteModifiedConfig(); } -void ImpPDFTabDialog::PageCreated(const OString& rId, SfxTabPage& rPage) +void ImpPDFTabDialog::PageCreated(const OUString& rId, SfxTabPage& rPage) { if (rId == "general") static_cast<ImpPDFTabGeneralPage&>(rPage).SetFilterConfigItem(this); @@ -345,181 +415,169 @@ void ImpPDFTabDialog::PageCreated(const OString& rId, SfxTabPage& rPage) } } -short ImpPDFTabDialog::Ok( ) -{ - // here the whole mechanism of the base class is not used - // when Ok is hit, the user means 'convert to PDF', so simply close with ok - - if (getGeneralPage()->IsPdfUaSelected()) - { - SfxObjectShell* pShell = SfxObjectShell::GetShellFromComponent(mrDoc); - if (pShell) - { - sfx::AccessibilityIssueCollection aCollection = pShell->runAccessibilityCheck(); - if (!aCollection.getIssues().empty()) - { - svx::AccessibilityCheckDialog aDialog(mpParent, aCollection); - return aDialog.run(); - } - } - } - return RET_OK; -} - Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData() { // updating the FilterData sequence and storing FilterData to configuration - if (ImpPDFTabGeneralPage* pPage = static_cast<ImpPDFTabGeneralPage*>(GetTabPage("general"))) + if (ImpPDFTabGeneralPage* pPage = static_cast<ImpPDFTabGeneralPage*>(GetTabPage(u"general"))) pPage->GetFilterConfigItem(this); - if (ImpPDFTabViewerPage* pPage = static_cast<ImpPDFTabViewerPage*>(GetTabPage("userinterface"))) + if (ImpPDFTabViewerPage* pPage = static_cast<ImpPDFTabViewerPage*>(GetTabPage(u"userinterface"))) pPage->GetFilterConfigItem(this); - if (ImpPDFTabOpnFtrPage* pPage = static_cast<ImpPDFTabOpnFtrPage*>(GetTabPage("initialview"))) + if (ImpPDFTabOpnFtrPage* pPage = static_cast<ImpPDFTabOpnFtrPage*>(GetTabPage(u"initialview"))) pPage->GetFilterConfigItem(this); - if (ImpPDFTabLinksPage* pPage = static_cast<ImpPDFTabLinksPage*>(GetTabPage("links"))) + if (ImpPDFTabLinksPage* pPage = static_cast<ImpPDFTabLinksPage*>(GetTabPage(u"links"))) pPage->GetFilterConfigItem(this); - if (ImpPDFTabSecurityPage* pPage = static_cast<ImpPDFTabSecurityPage*>( GetTabPage("security"))) + if (ImpPDFTabSecurityPage* pPage = static_cast<ImpPDFTabSecurityPage*>( GetTabPage(u"security"))) pPage->GetFilterConfigItem(this); - if (ImpPDFTabSigningPage* pPage = static_cast<ImpPDFTabSigningPage*>(GetTabPage("digitalsignatures"))) + if (ImpPDFTabSigningPage* pPage = static_cast<ImpPDFTabSigningPage*>(GetTabPage(u"digitalsignatures"))) pPage->GetFilterConfigItem(this); // prepare the items to be returned - maConfigItem.WriteBool( "UseLosslessCompression", mbUseLosslessCompression ); - maConfigItem.WriteInt32("Quality", mnQuality ); - maConfigItem.WriteBool( "ReduceImageResolution", mbReduceImageResolution ); - maConfigItem.WriteInt32("MaxImageResolution", mnMaxImageResolution ); + maConfigItem.WriteBool( u"UseLosslessCompression"_ustr, mbUseLosslessCompression ); + maConfigItem.WriteInt32(u"Quality"_ustr, mnQuality ); + maConfigItem.WriteBool( u"ReduceImageResolution"_ustr, mbReduceImageResolution ); + maConfigItem.WriteInt32(u"MaxImageResolution"_ustr, mnMaxImageResolution ); // always write the user selection, never the overridden value const bool bIsPDFUA = mbPDFUACompliance; const bool bIsPDFA = (1 == mnPDFTypeSelection) || (2 == mnPDFTypeSelection) || (3 == mnPDFTypeSelection); const bool bUserSelectionTags = bIsPDFA || bIsPDFUA; - maConfigItem.WriteBool("UseTaggedPDF", bUserSelectionTags ? mbUseTaggedPDFUserSelection : mbUseTaggedPDF); - maConfigItem.WriteInt32("SelectPdfVersion", mnPDFTypeSelection ); - maConfigItem.WriteBool("PDFUACompliance", mbPDFUACompliance); + maConfigItem.WriteBool(u"UseTaggedPDF"_ustr, bUserSelectionTags ? mbUseTaggedPDFUserSelection : mbUseTaggedPDF); + maConfigItem.WriteInt32(u"SelectPdfVersion"_ustr, mnPDFTypeSelection ); + maConfigItem.WriteBool(u"PDFUACompliance"_ustr, mbPDFUACompliance); if ( mbIsPresentation ) { - maConfigItem.WriteBool( "ExportNotesPages", mbExportNotesPages ); - maConfigItem.WriteBool( "ExportOnlyNotesPages", mbExportOnlyNotesPages ); + maConfigItem.WriteBool( u"ExportNotesPages"_ustr, mbExportNotesPages ); + maConfigItem.WriteBool( u"ExportOnlyNotesPages"_ustr, mbExportOnlyNotesPages ); } - maConfigItem.WriteBool( "ExportNotes", mbExportNotes ); - maConfigItem.WriteBool( "ViewPDFAfterExport", mbViewPDF ); + maConfigItem.WriteBool( u"ExportNotes"_ustr, mbExportNotes ); + if (mbIsWriter) + maConfigItem.WriteBool( u"ExportNotesInMargin"_ustr, mbExportNotesInMargin ); + maConfigItem.WriteBool( u"ViewPDFAfterExport"_ustr, mbViewPDF ); - maConfigItem.WriteBool( "ExportBookmarks", mbExportBookmarks ); + maConfigItem.WriteBool( u"ExportBookmarks"_ustr, mbExportBookmarks ); if ( mbIsPresentation ) - maConfigItem.WriteBool( "ExportHiddenSlides", mbExportHiddenSlides ); + maConfigItem.WriteBool( u"ExportHiddenSlides"_ustr, mbExportHiddenSlides ); if ( mbIsSpreadsheet ) - maConfigItem.WriteBool( "SinglePageSheets", mbSinglePageSheets ); - maConfigItem.WriteBool( "UseTransitionEffects", mbUseTransitionEffects ); - maConfigItem.WriteBool( "IsSkipEmptyPages", mbIsSkipEmptyPages ); - maConfigItem.WriteBool( "ExportPlaceholders", mbIsExportPlaceholders ); - maConfigItem.WriteBool( "IsAddStream", mbAddStream ); + maConfigItem.WriteBool( u"SinglePageSheets"_ustr, mbSinglePageSheets ); + maConfigItem.WriteBool( u"UseTransitionEffects"_ustr, mbUseTransitionEffects ); + maConfigItem.WriteBool( u"IsSkipEmptyPages"_ustr, mbIsSkipEmptyPages ); + maConfigItem.WriteBool( u"ExportPlaceholders"_ustr, mbIsExportPlaceholders ); + maConfigItem.WriteBool( u"IsAddStream"_ustr, mbAddStream ); /* * FIXME: the entries are only implicitly defined by the resource file. Should there * ever be an additional form submit format this could get invalid. */ - maConfigItem.WriteInt32( "FormsType", mnFormsType ); - maConfigItem.WriteBool( "ExportFormFields", mbExportFormFields ); - maConfigItem.WriteBool( "AllowDuplicateFieldNames", mbAllowDuplicateFieldNames ); - - maConfigItem.WriteBool( "HideViewerToolbar", mbHideViewerToolbar ); - maConfigItem.WriteBool( "HideViewerMenubar", mbHideViewerMenubar ); - maConfigItem.WriteBool( "HideViewerWindowControls", mbHideViewerWindowControls ); - maConfigItem.WriteBool( "ResizeWindowToInitialPage", mbResizeWinToInit ); - maConfigItem.WriteBool( "CenterWindow", mbCenterWindow ); - maConfigItem.WriteBool( "OpenInFullScreenMode", mbOpenInFullScreenMode ); - maConfigItem.WriteBool( "DisplayPDFDocumentTitle", mbDisplayPDFDocumentTitle ); - maConfigItem.WriteInt32( "InitialView", mnInitialView ); - maConfigItem.WriteInt32( "Magnification", mnMagnification); - maConfigItem.WriteInt32( "Zoom", mnZoom ); - maConfigItem.WriteInt32( "InitialPage", mnInitialPage ); - maConfigItem.WriteInt32( "PageLayout", mnPageLayout ); - maConfigItem.WriteBool( "FirstPageOnLeft", mbFirstPageLeft ); - maConfigItem.WriteInt32( "OpenBookmarkLevels", mnOpenBookmarkLevels ); - - maConfigItem.WriteBool( "ExportLinksRelativeFsys", mbExportRelativeFsysLinks ); - maConfigItem.WriteInt32("PDFViewSelection", mnViewPDFMode ); - maConfigItem.WriteBool( "ConvertOOoTargetToPDFTarget", mbConvertOOoTargets ); - maConfigItem.WriteBool( "ExportBookmarksToPDFDestination", mbExportBmkToPDFDestination ); - - maConfigItem.WriteBool( "SignPDF", mbSignPDF ); - - maConfigItem.WriteInt32( "Printing", mnPrint ); - maConfigItem.WriteInt32( "Changes", mnChangesAllowed ); - maConfigItem.WriteBool( "EnableCopyingOfContent", mbCanCopyOrExtract ); - maConfigItem.WriteBool( "EnableTextAccessForAccessibilityTools", mbCanExtractForAccessibility ); - - std::vector<beans::PropertyValue> aRet; - - aRet.push_back(comphelper::makePropertyValue("Watermark", maWatermarkText)); - aRet.push_back(comphelper::makePropertyValue("EncryptFile", mbEncrypt)); - aRet.push_back(comphelper::makePropertyValue("PreparedPasswords", mxPreparedPasswords)); - aRet.push_back(comphelper::makePropertyValue("RestrictPermissions", mbRestrictPermissions)); - aRet.push_back(comphelper::makePropertyValue("PreparedPermissionPassword", maPreparedOwnerPassword)); - if( mbIsRangeChecked ) - aRet.push_back(comphelper::makePropertyValue("PageRange", msPageRange)); + maConfigItem.WriteInt32( u"FormsType"_ustr, mnFormsType ); + maConfigItem.WriteBool( u"ExportFormFields"_ustr, mbExportFormFields ); + maConfigItem.WriteBool( u"AllowDuplicateFieldNames"_ustr, mbAllowDuplicateFieldNames ); + + maConfigItem.WriteBool( u"HideViewerToolbar"_ustr, mbHideViewerToolbar ); + maConfigItem.WriteBool( u"HideViewerMenubar"_ustr, mbHideViewerMenubar ); + maConfigItem.WriteBool( u"HideViewerWindowControls"_ustr, mbHideViewerWindowControls ); + maConfigItem.WriteBool( u"ResizeWindowToInitialPage"_ustr, mbResizeWinToInit ); + maConfigItem.WriteBool( u"CenterWindow"_ustr, mbCenterWindow ); + maConfigItem.WriteBool( u"OpenInFullScreenMode"_ustr, mbOpenInFullScreenMode ); + maConfigItem.WriteBool( u"DisplayPDFDocumentTitle"_ustr, mbDisplayPDFDocumentTitle ); + maConfigItem.WriteInt32( u"InitialView"_ustr, mnInitialView ); + maConfigItem.WriteInt32( u"Magnification"_ustr, mnMagnification); + maConfigItem.WriteInt32( u"Zoom"_ustr, mnZoom ); + maConfigItem.WriteInt32( u"InitialPage"_ustr, mnInitialPage ); + maConfigItem.WriteInt32( u"PageLayout"_ustr, mnPageLayout ); + maConfigItem.WriteBool( u"FirstPageOnLeft"_ustr, mbFirstPageLeft ); + maConfigItem.WriteInt32( u"OpenBookmarkLevels"_ustr, mnOpenBookmarkLevels ); + + maConfigItem.WriteBool( u"ExportLinksRelativeFsys"_ustr, mbExportRelativeFsysLinks ); + maConfigItem.WriteInt32(u"PDFViewSelection"_ustr, mnViewPDFMode ); + maConfigItem.WriteBool( u"ConvertOOoTargetToPDFTarget"_ustr, mbConvertOOoTargets ); + maConfigItem.WriteBool( u"ExportBookmarksToPDFDestination"_ustr, mbExportBmkToPDFDestination ); + + maConfigItem.WriteBool( u"SignPDF"_ustr, mbSignPDF ); + + maConfigItem.WriteInt32( u"Printing"_ustr, mnPrint ); + maConfigItem.WriteInt32( u"Changes"_ustr, mnChangesAllowed ); + maConfigItem.WriteBool( u"EnableCopyingOfContent"_ustr, mbCanCopyOrExtract ); + maConfigItem.WriteBool( u"EnableTextAccessForAccessibilityTools"_ustr, mbCanExtractForAccessibility ); + + std::vector<beans::PropertyValue> aRet + { + comphelper::makePropertyValue(u"Watermark"_ustr, maWatermarkText), + comphelper::makePropertyValue(u"EncryptFile"_ustr, mbEncrypt), + comphelper::makePropertyValue(u"PreparedPasswords"_ustr, mxPreparedPasswords), + comphelper::makePropertyValue(u"RestrictPermissions"_ustr, mbRestrictPermissions), + comphelper::makePropertyValue(u"PreparedPermissionPassword"_ustr, maPreparedOwnerPassword) + }; + if( mbIsPageRangeChecked ) + aRet.push_back(comphelper::makePropertyValue(u"PageRange"_ustr, msPageRange)); + if( mbIsSheetRangeChecked ) + aRet.push_back(comphelper::makePropertyValue(u"SheetRange"_ustr, msSheetRange)); else if( mbSelectionIsChecked ) - aRet.push_back(comphelper::makePropertyValue("Selection", maSelection)); + aRet.push_back(comphelper::makePropertyValue(u"Selection"_ustr, maSelection)); - aRet.push_back(comphelper::makePropertyValue("SignatureLocation", msSignLocation)); - aRet.push_back(comphelper::makePropertyValue("SignatureReason", msSignReason)); - aRet.push_back(comphelper::makePropertyValue("SignatureContactInfo", msSignContact)); - aRet.push_back(comphelper::makePropertyValue("SignaturePassword", msSignPassword)); - aRet.push_back(comphelper::makePropertyValue("SignatureCertificate", maSignCertificate)); - aRet.push_back(comphelper::makePropertyValue("SignatureTSA", msSignTSA)); - aRet.push_back(comphelper::makePropertyValue("UseReferenceXObject", mbUseReferenceXObject)); + aRet.push_back(comphelper::makePropertyValue(u"SignatureLocation"_ustr, msSignLocation)); + aRet.push_back(comphelper::makePropertyValue(u"SignatureReason"_ustr, msSignReason)); + aRet.push_back(comphelper::makePropertyValue(u"SignatureContactInfo"_ustr, msSignContact)); + aRet.push_back(comphelper::makePropertyValue(u"SignaturePassword"_ustr, msSignPassword)); + aRet.push_back(comphelper::makePropertyValue(u"SignatureCertificate"_ustr, maSignCertificate)); + aRet.push_back(comphelper::makePropertyValue(u"SignatureTSA"_ustr, msSignTSA)); + aRet.push_back(comphelper::makePropertyValue(u"UseReferenceXObject"_ustr, mbUseReferenceXObject)); return comphelper::concatSequences(maConfigItem.GetFilterData(), comphelper::containerToSequence(aRet)); } ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) - : SfxTabPage(pPage, pController, "filter/ui/pdfgeneralpage.ui", "PdfGeneralPage", &rCoreSet) + : SfxTabPage(pPage, pController, u"filter/ui/pdfgeneralpage.ui"_ustr, u"PdfGeneralPage"_ustr, &rCoreSet) , mbUseTaggedPDFUserSelection(false) , mbIsPresentation(false) , mbIsSpreadsheet(false) , mbIsWriter(false) , mpParent(nullptr) - , mxRbAll(m_xBuilder->weld_radio_button("all")) - , mxRbRange(m_xBuilder->weld_radio_button("range")) - , mxRbSelection(m_xBuilder->weld_radio_button("selection")) - , mxEdPages(m_xBuilder->weld_entry("pages")) - , mxSelectedSheets(m_xBuilder->weld_label("selectedsheets")) - , mxRbLosslessCompression(m_xBuilder->weld_radio_button("losslesscompress")) - , mxRbJPEGCompression(m_xBuilder->weld_radio_button("jpegcompress")) - , mxQualityFrame(m_xBuilder->weld_widget("qualityframe")) - , mxNfQuality(m_xBuilder->weld_metric_spin_button("quality", FieldUnit::PERCENT)) - , mxCbReduceImageResolution(m_xBuilder->weld_check_button("reduceresolution")) - , mxCoReduceImageResolution(m_xBuilder->weld_combo_box("resolution")) - , mxCbPDFA(m_xBuilder->weld_check_button("pdfa")) - , mxCbPDFUA(m_xBuilder->weld_check_button("pdfua")) - , mxRbPDFAVersion(m_xBuilder->weld_combo_box("pdfaversion")) - , mxCbTaggedPDF(m_xBuilder->weld_check_button("tagged")) - , mxCbExportFormFields(m_xBuilder->weld_check_button("forms")) - , mxFormsFrame(m_xBuilder->weld_widget("formsframe")) - , mxLbFormsFormat(m_xBuilder->weld_combo_box("format")) - , mxCbAllowDuplicateFieldNames(m_xBuilder->weld_check_button("allowdups")) - , mxCbExportBookmarks(m_xBuilder->weld_check_button("bookmarks")) - , mxCbExportHiddenSlides(m_xBuilder->weld_check_button("hiddenpages")) - , mxCbSinglePageSheets(m_xBuilder->weld_check_button("singlepagesheets")) - , mxCbExportNotes(m_xBuilder->weld_check_button("comments")) - , mxCbViewPDF(m_xBuilder->weld_check_button("viewpdf")) - , mxCbUseReferenceXObject(m_xBuilder->weld_check_button("usereferencexobject")) - , mxCbExportNotesPages(m_xBuilder->weld_check_button("notes")) - , mxCbExportOnlyNotesPages(m_xBuilder->weld_check_button("onlynotes")) - , mxCbExportEmptyPages(m_xBuilder->weld_check_button("emptypages")) - , mxCbExportPlaceholders(m_xBuilder->weld_check_button("exportplaceholders")) - , mxCbAddStream(m_xBuilder->weld_check_button("embed")) - , mxCbWatermark(m_xBuilder->weld_check_button("watermark")) - , mxFtWatermark(m_xBuilder->weld_label("watermarklabel")) - , mxEdWatermark(m_xBuilder->weld_entry("watermarkentry")) - , mxSlidesFt(m_xBuilder->weld_label("slides")) - , mxSheetsFt(m_xBuilder->weld_label("selectedsheets")) + , mxRbAll(m_xBuilder->weld_radio_button(u"all"_ustr)) + , mxRbPageRange(m_xBuilder->weld_radio_button(u"pagerange"_ustr)) + , mxRbSheetRange(m_xBuilder->weld_radio_button(u"sheetrange"_ustr)) + , mxRbSelection(m_xBuilder->weld_radio_button(u"selection"_ustr)) + , mxEdPages(m_xBuilder->weld_entry(u"pages"_ustr)) + , mxEdSheets(m_xBuilder->weld_entry(u"sheets"_ustr)) + , mxRbLosslessCompression(m_xBuilder->weld_radio_button(u"losslesscompress"_ustr)) + , mxRbJPEGCompression(m_xBuilder->weld_radio_button(u"jpegcompress"_ustr)) + , mxQualityFrame(m_xBuilder->weld_widget(u"qualityframe"_ustr)) + , mxNfQuality(m_xBuilder->weld_metric_spin_button(u"quality"_ustr, FieldUnit::PERCENT)) + , mxCbReduceImageResolution(m_xBuilder->weld_check_button(u"reduceresolution"_ustr)) + , mxCoReduceImageResolution(m_xBuilder->weld_combo_box(u"resolution"_ustr)) + , mxCbPDFA(m_xBuilder->weld_check_button(u"pdfa"_ustr)) + , mxCbPDFUA(m_xBuilder->weld_check_button(u"pdfua"_ustr)) + , mxRbPDFAVersion(m_xBuilder->weld_combo_box(u"pdfaversion"_ustr)) + , mxCbTaggedPDF(m_xBuilder->weld_check_button(u"tagged"_ustr)) + , mxCbExportFormFields(m_xBuilder->weld_check_button(u"forms"_ustr)) + , mxFormsFrame(m_xBuilder->weld_widget(u"formsframe"_ustr)) + , mxLbFormsFormat(m_xBuilder->weld_combo_box(u"format"_ustr)) + , mxCbAllowDuplicateFieldNames(m_xBuilder->weld_check_button(u"allowdups"_ustr)) + , mxCbExportBookmarks(m_xBuilder->weld_check_button(u"bookmarks"_ustr)) + , mxCbExportHiddenSlides(m_xBuilder->weld_check_button(u"hiddenpages"_ustr)) + , mxCbSinglePageSheets(m_xBuilder->weld_check_button(u"singlepagesheets"_ustr)) + , mxCbExportNotes(m_xBuilder->weld_check_button(u"comments"_ustr)) + , mxCbExportNotesInMargin(m_xBuilder->weld_check_button(u"commentsinmargin"_ustr)) + , mxCbViewPDF(m_xBuilder->weld_check_button(u"viewpdf"_ustr)) + , mxCbUseReferenceXObject(m_xBuilder->weld_check_button(u"usereferencexobject"_ustr)) + , mxCbExportNotesPages(m_xBuilder->weld_check_button(u"notes"_ustr)) + , mxCbExportOnlyNotesPages(m_xBuilder->weld_check_button(u"onlynotes"_ustr)) + , mxCbExportEmptyPages(m_xBuilder->weld_check_button(u"emptypages"_ustr)) + , mxCbExportPlaceholders(m_xBuilder->weld_check_button(u"exportplaceholders"_ustr)) + , mxCbAddStream(m_xBuilder->weld_check_button(u"embed"_ustr)) + , mxCbWatermark(m_xBuilder->weld_check_button(u"watermark"_ustr)) + , mxFtWatermark(m_xBuilder->weld_label(u"watermarklabel"_ustr)) + , mxEdWatermark(m_xBuilder->weld_entry(u"watermarkentry"_ustr)) + , mxSlidesFt(m_xBuilder->weld_label(u"slides"_ustr)) + , mxSheetsSelectionFt(m_xBuilder->weld_label(u"selectedsheets"_ustr)) { } ImpPDFTabGeneralPage::~ImpPDFTabGeneralPage() { + if (mxPasswordUnusedWarnDialog) + mxPasswordUnusedWarnDialog->response(RET_CANCEL); } void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) @@ -527,39 +585,45 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) mpParent = pParent; // init this class data - mxRbRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, TogglePagesHdl ) ); + mxRbPageRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, TogglePagesHdl ) ); + mxRbSheetRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleSheetsHdl ) ); mxRbAll->set_active(true); mxRbAll->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleAllHdl ) ); TogglePagesHdl(); + ToggleSheetsHdl(); - const bool bSelectionPresent = pParent->mbSelectionPresent; - mxRbSelection->set_sensitive( bSelectionPresent ); - if ( bSelectionPresent ) + mxRbSelection->set_sensitive( pParent->mbSelectionPresent ); + if ( pParent->mbSelectionPresent ) mxRbSelection->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleSelectionHdl ) ); mbIsPresentation = pParent->mbIsPresentation; mbIsWriter = pParent->mbIsWriter; mbIsSpreadsheet = pParent->mbIsSpreadsheet; - mxCbExportEmptyPages->set_sensitive( mbIsWriter ); - mxCbExportPlaceholders->set_sensitive( mbIsWriter ); - mxRbLosslessCompression->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleCompressionHdl ) ); const bool bUseLosslessCompression = pParent->mbUseLosslessCompression; if ( bUseLosslessCompression ) mxRbLosslessCompression->set_active(true); else mxRbJPEGCompression->set_active(true); + const bool bReadOnlyCompression = !pParent->maConfigItem.IsReadOnly(u"UseLosslessCompression"_ustr); + mxRbLosslessCompression->set_sensitive(bReadOnlyCompression); + mxRbJPEGCompression->set_sensitive(bReadOnlyCompression); mxNfQuality->set_value( pParent->mnQuality, FieldUnit::PERCENT ); - mxQualityFrame->set_sensitive(!bUseLosslessCompression); + mxQualityFrame->set_sensitive( + !bUseLosslessCompression && !pParent->maConfigItem.IsReadOnly(u"Quality"_ustr)); mxCbReduceImageResolution->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleReduceImageResolutionHdl)); const bool bReduceImageResolution = pParent->mbReduceImageResolution; mxCbReduceImageResolution->set_active( bReduceImageResolution ); + mxCbReduceImageResolution->set_sensitive( + !pParent->maConfigItem.IsReadOnly(u"ReduceImageResolution"_ustr)); OUString aStrRes = OUString::number( pParent->mnMaxImageResolution ) + " DPI"; mxCoReduceImageResolution->set_entry_text(aStrRes); - mxCoReduceImageResolution->set_sensitive( bReduceImageResolution ); + mxCoReduceImageResolution->set_sensitive( + bReduceImageResolution && !pParent->maConfigItem.IsReadOnly(u"MaxImageResolution"_ustr)); + mxCbWatermark->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleWatermarkHdl ) ); mxFtWatermark->set_sensitive(false ); mxEdWatermark->set_sensitive( false ); @@ -570,20 +634,21 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) switch( pParent->mnPDFTypeSelection ) { case 1: // PDF/A-1 - mxRbPDFAVersion->set_active_id("1"); + mxRbPDFAVersion->set_active_id(u"1"_ustr); break; case 2: // PDF/A-2 - mxRbPDFAVersion->set_active_id("2"); + mxRbPDFAVersion->set_active_id(u"2"_ustr); break; case 3: // PDF/A-3 default: // PDF 1.x - mxRbPDFAVersion->set_active_id("3"); + mxRbPDFAVersion->set_active_id(u"3"_ustr); break; } const bool bIsPDFUA = pParent->mbPDFUACompliance; mxCbPDFUA->set_active(bIsPDFUA); mxCbPDFUA->connect_toggled(LINK(this, ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle)); + mxCbPDFUA->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"PDFUACompliance"_ustr)); // the TogglePDFVersionOrUniversalAccessibilityHandle handler will read or write the *UserSelection based // on the mxCbPDFA (= bIsPDFA) state, so we have to prepare the correct input state. @@ -591,32 +656,59 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) mxCbTaggedPDF->set_active(pParent->mbUseTaggedPDFUserSelection); else mbUseTaggedPDFUserSelection = pParent->mbUseTaggedPDFUserSelection; + + mxCbExportBookmarks->set_active(pParent->mbExportBookmarksUserSelection); TogglePDFVersionOrUniversalAccessibilityHandle(*mxCbPDFA); mxCbExportFormFields->set_active(pParent->mbExportFormFields); mxCbExportFormFields->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl ) ); + mxCbExportFormFields->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"ExportFormFields"_ustr)); mxLbFormsFormat->set_active(static_cast<sal_uInt16>(pParent->mnFormsType)); mxCbAllowDuplicateFieldNames->set_active( pParent->mbAllowDuplicateFieldNames ); + // FormsFrame contains (and thus sets_sensitive) FormsFormat and AllowDuplicateFieldNames mxFormsFrame->set_sensitive(pParent->mbExportFormFields); + if (pParent->mbExportFormFields) + { + if (pParent->maConfigItem.IsReadOnly(u"FormsType"_ustr)) + mxLbFormsFormat->set_sensitive(false); + if (pParent->maConfigItem.IsReadOnly(u"AllowDuplicateFieldNames"_ustr)) + mxCbAllowDuplicateFieldNames->set_sensitive(false); + } - mxCbExportBookmarks->set_active( pParent->mbExportBookmarks ); mxCbExportNotes->set_active( pParent->mbExportNotes ); - mxCbViewPDF->set_active( pParent->mbViewPDF); + mxCbExportNotesInMargin->set_active(mbIsWriter && pParent->mbExportNotesInMargin); + mxCbExportNotesInMargin->set_sensitive( + mbIsWriter && !pParent->maConfigItem.IsReadOnly(u"ExportNotesInMargin"_ustr)); + + if (comphelper::LibreOfficeKit::isActive()) + { + mxCbViewPDF->hide(); + mxCbViewPDF->set_active(false); + } + else + { + mxCbViewPDF->set_active(pParent->mbViewPDF); + mxCbViewPDF->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"ViewPDFAfterExport"_ustr)); + } if ( mbIsPresentation ) { - mxRbRange->set_label(mxSlidesFt->get_label()); + mxRbPageRange->set_label(mxSlidesFt->get_label()); mxCbExportNotesPages->show(); mxCbExportNotesPages->set_active(pParent->mbExportNotesPages); mxCbExportNotesPages->connect_toggled( LINK(this, ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl ) ); + mxCbExportNotesPages->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"ExportNotesPages"_ustr)); mxCbExportOnlyNotesPages->show(); mxCbExportOnlyNotesPages->set_active(pParent->mbExportOnlyNotesPages); // tdf#116473 Initially enable Export only note pages option depending on the checked state of Export notes pages option - mxCbExportOnlyNotesPages->set_sensitive(mxCbExportNotesPages->get_active()); + mxCbExportOnlyNotesPages->set_sensitive( + mxCbExportNotesPages->get_active() && !pParent->maConfigItem.IsReadOnly(u"ExportOnlyNotesPages"_ustr)); mxCbExportHiddenSlides->show(); mxCbExportHiddenSlides->set_active(pParent->mbExportHiddenSlides); + mxCbExportHiddenSlides->set_sensitive( + !pParent->maConfigItem.IsReadOnly(u"ExportHiddenSlides"_ustr)); } else { @@ -630,34 +722,38 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) if( mbIsSpreadsheet ) { - mxRbSelection->set_label(mxSheetsFt->get_label()); + mxRbSelection->set_label(mxSheetsSelectionFt->get_label()); // tdf#105965 Make Selection/Selected sheets the default PDF export range setting for spreadsheets mxRbSelection->set_active(true); + mxRbSheetRange->show(); + mxEdSheets->show(); + mxCbSinglePageSheets->show(); mxCbSinglePageSheets->set_active(pParent->mbSinglePageSheets); + mxCbSinglePageSheets->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"SinglePageSheets"_ustr)); } else { mxCbSinglePageSheets->hide(); mxCbSinglePageSheets->set_active(false); + mxRbSheetRange->hide(); + mxRbSheetRange->set_active(false); + mxEdSheets->hide(); } - mxCbExportPlaceholders->set_visible(mbIsWriter); - if( mbIsWriter ) - { - // tdf#54908 Make selection active if there is a selection in Writer's version - mxRbSelection->set_active( bSelectionPresent ); - } - else - { - mxCbExportPlaceholders->set_active(false); - } mxCbExportEmptyPages->set_active(!pParent->mbIsSkipEmptyPages); + mxCbExportEmptyPages->set_sensitive( + mbIsWriter && !pParent->maConfigItem.IsReadOnly(u"IsSkipEmptyPages"_ustr)); + + mxCbExportPlaceholders->set_visible(mbIsWriter); mxCbExportPlaceholders->set_active(pParent->mbIsExportPlaceholders); + mxCbExportPlaceholders->set_sensitive( + mbIsWriter && !pParent->maConfigItem.IsReadOnly(u"ExportPlaceholders"_ustr)); mxCbAddStream->show(); mxCbAddStream->set_active(pParent->mbAddStream); + mxCbAddStream->set_sensitive(!pParent->maConfigItem.IsReadOnly(u"IsAddStream"_ustr)); mxCbAddStream->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleAddStreamHdl)); ToggleAddStreamHdl(*mxCbAddStream); // init addstream dependencies @@ -671,6 +767,8 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) pParent->mbReduceImageResolution = mxCbReduceImageResolution->get_active(); pParent->mnMaxImageResolution = mxCoReduceImageResolution->get_active_text().toInt32(); pParent->mbExportNotes = mxCbExportNotes->get_active(); + if (mbIsWriter) + pParent->mbExportNotesInMargin = mxCbExportNotesInMargin->get_active(); pParent->mbViewPDF = mxCbViewPDF->get_active(); pParent->mbUseReferenceXObject = mxCbUseReferenceXObject->get_active(); if ( mbIsPresentation ) @@ -689,12 +787,17 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) pParent->mbIsExportPlaceholders = mxCbExportPlaceholders->get_active(); pParent->mbAddStream = mxCbAddStream->get_visible() && mxCbAddStream->get_active(); - pParent->mbIsRangeChecked = false; - if( mxRbRange->get_active() ) + pParent->mbIsPageRangeChecked = false; + if( mxRbPageRange->get_active() ) { - pParent->mbIsRangeChecked = true; + pParent->mbIsPageRangeChecked = true; pParent->msPageRange = mxEdPages->get_text(); //FIXME all right on other languages ? } + else if ( mxRbSheetRange->get_active() ) + { + pParent->mbIsSheetRangeChecked = true; + pParent->msSheetRange = mxEdSheets->get_text(); + } else if( mxRbSelection->get_active() ) { pParent->mbSelectionIsChecked = mxRbSelection->get_active(); @@ -720,6 +823,11 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) if (!bIsPDFA && !bIsPDFUA) mbUseTaggedPDFUserSelection = pParent->mbUseTaggedPDF; + if (!bIsPDFUA) + { + pParent->mbExportBookmarksUserSelection = pParent->mbExportBookmarks; + pParent->mbUseReferenceXObjectUserSelection = pParent->mbUseReferenceXObject; + } pParent->mbUseTaggedPDFUserSelection = mbUseTaggedPDFUserSelection; pParent->mbExportFormFields = mxCbExportFormFields->get_active(); @@ -741,59 +849,89 @@ std::unique_ptr<SfxTabPage> ImpPDFTabGeneralPage::Create( weld::Container* pPage return std::make_unique<ImpPDFTabGeneralPage>(pPage, pController, *rAttrSet); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAllHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAllHdl, weld::Toggleable&, void) { EnableExportNotesPages(); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePagesHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePagesHdl, weld::Toggleable&, void) { TogglePagesHdl(); EnableExportNotesPages(); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSelectionHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSheetsHdl, weld::Toggleable&, void) +{ + ToggleSheetsHdl(); + EnableExportNotesPages(); +} + +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSelectionHdl, weld::Toggleable&, void) { EnableExportNotesPages(); } void ImpPDFTabGeneralPage::TogglePagesHdl() { - mxEdPages->set_sensitive( mxRbRange->get_active() ); - if (mxRbRange->get_active()) + mxEdPages->set_sensitive( mxRbPageRange->get_active() ); + if (mxRbPageRange->get_active()) mxEdPages->grab_focus(); } +void ImpPDFTabGeneralPage::ToggleSheetsHdl() +{ + mxEdSheets->set_sensitive( mxRbSheetRange->get_active() ); + if (mxRbSheetRange->get_active()) + mxEdSheets->grab_focus(); +} + void ImpPDFTabGeneralPage::EnableExportNotesPages() { if ( mbIsPresentation ) { - mxCbExportNotesPages->set_sensitive( !mxRbSelection->get_active() ); - mxCbExportOnlyNotesPages->set_sensitive( !mxRbSelection->get_active() && mxCbExportNotesPages->get_active() ); + mxCbExportNotesPages->set_sensitive( + !mxRbSelection->get_active() && !IsReadOnlyProperty(u"ExportNotesPages"_ustr)); + mxCbExportOnlyNotesPages->set_sensitive( + !mxRbSelection->get_active() && mxCbExportNotesPages->get_active() + && !IsReadOnlyProperty(u"ExportOnlyNotesPages"_ustr)); } } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl, weld::Toggleable&, void) { - mxFormsFrame->set_sensitive(mxCbExportFormFields->get_active()); + const bool bExportFormFields = mxCbExportFormFields->get_active(); + // FormsFrame contains (and thus sets_sensitive) FormsFormat and AllowDuplicateFieldNames + mxFormsFrame->set_sensitive(bExportFormFields); + if (bExportFormFields) + { + if (IsReadOnlyProperty(u"FormsType"_ustr)) + mxLbFormsFormat->set_sensitive(false); + if (IsReadOnlyProperty(u"AllowDuplicateFieldNames"_ustr)) + mxCbAllowDuplicateFieldNames->set_sensitive(false); + } } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl, weld::Toggleable&, void) { - mxCbExportOnlyNotesPages->set_sensitive(mxCbExportNotesPages->get_active()); + mxCbExportOnlyNotesPages->set_sensitive( + mxCbExportNotesPages->get_active() + && !IsReadOnlyProperty(u"ExportOnlyNotesPages"_ustr)); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleCompressionHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleCompressionHdl, weld::Toggleable&, void) { - mxQualityFrame->set_sensitive(mxRbJPEGCompression->get_active()); + mxQualityFrame->set_sensitive( + mxRbJPEGCompression->get_active() && !IsReadOnlyProperty(u"Quality"_ustr)); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleReduceImageResolutionHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleReduceImageResolutionHdl, weld::Toggleable&, void) { - mxCoReduceImageResolution->set_sensitive(mxCbReduceImageResolution->get_active()); + mxCoReduceImageResolution->set_sensitive( + mxCbReduceImageResolution->get_active() + && !IsReadOnlyProperty(u"MaxImageResolution"_ustr)); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleWatermarkHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleWatermarkHdl, weld::Toggleable&, void) { mxEdWatermark->set_sensitive(mxCbWatermark->get_active()); mxFtWatermark->set_sensitive(mxCbWatermark->get_active()); @@ -801,7 +939,7 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleWatermarkHdl, weld::ToggleButton&, v mxEdWatermark->grab_focus(); } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::Toggleable&, void) { if (!mxCbAddStream->get_visible()) return; @@ -809,7 +947,8 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::ToggleButton&, v if( mxCbAddStream->get_active() ) { mxRbAll->set_active(true); - mxRbRange->set_sensitive( false ); + mxRbPageRange->set_sensitive( false ); + mxRbSheetRange->set_sensitive( false ); mxRbSelection->set_sensitive( false ); mxEdPages->set_sensitive( false ); mxRbAll->set_sensitive( false ); @@ -817,12 +956,13 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::ToggleButton&, v else { mxRbAll->set_sensitive(true); - mxRbRange->set_sensitive(true); + mxRbPageRange->set_sensitive(true); + mxRbSheetRange->set_sensitive(true); mxRbSelection->set_sensitive(true); } } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle, weld::Toggleable&, void) { const bool bIsPDFA = mxCbPDFA->get_active(); const bool bIsPDFUA = mxCbPDFUA->get_active(); @@ -830,10 +970,12 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa // set the security page status (and its controls as well) ImpPDFTabSecurityPage* pSecPage = mpParent ? mpParent->getSecurityPage() : nullptr; if (pSecPage) - pSecPage->ImplPDFASecurityControl(!bIsPDFA); + pSecPage->ImplPDFASecurityControl(); - mxCbTaggedPDF->set_sensitive(!bIsPDFA && !bIsPDFUA); - mxRbPDFAVersion->set_sensitive(bIsPDFA); + mxCbTaggedPDF->set_sensitive( + !bIsPDFA && !bIsPDFUA && !IsReadOnlyProperty(u"UseTaggedPDF"_ustr)); + mxRbPDFAVersion->set_sensitive( + bIsPDFA && !IsReadOnlyProperty(u"SelectPdfVersion"_ustr)); if (bIsPDFA || bIsPDFUA) { @@ -842,12 +984,13 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa mxCbTaggedPDF->set_active(true); // if a password was set, inform the user that this will not be used - if (pSecPage && pSecPage->hasPassword()) + if (bIsPDFA && pSecPage && pSecPage->hasPassword()) { - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xContainer.get(), + mxPasswordUnusedWarnDialog = + std::shared_ptr<weld::MessageDialog>(Application::CreateMessageDialog(m_xContainer.get(), VclMessageType::Warning, VclButtonsType::Ok, - PDFFilterResId(STR_WARN_PASSWORD_PDFA))); - xBox->run(); + FilterResId(STR_WARN_PASSWORD_PDFA))); + mxPasswordUnusedWarnDialog->runAsync(mxPasswordUnusedWarnDialog, [] (sal_uInt32){ }); } } else @@ -856,6 +999,40 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa mxCbTaggedPDF->set_active(mbUseTaggedPDFUserSelection); } + if (bIsPDFUA) + { + if (mxCbExportBookmarks->get_sensitive()) + { + if (mpParent) + { + mpParent->mbExportBookmarksUserSelection = mxCbExportBookmarks->get_active(); + } + mxCbExportBookmarks->set_active(true); + } + if (mxCbUseReferenceXObject->get_sensitive()) + { + if (mpParent) + { + mpParent->mbUseReferenceXObjectUserSelection = mxCbUseReferenceXObject->get_active(); + } + mxCbUseReferenceXObject->set_active(false); + } + } + else if (mpParent) + { + mxCbExportBookmarks->set_active(mpParent->mbExportBookmarksUserSelection); + mxCbUseReferenceXObject->set_active(mpParent->mbUseReferenceXObjectUserSelection); + } + mxCbExportBookmarks->set_sensitive( + !bIsPDFUA && !IsReadOnlyProperty(u"ExportBookmarks"_ustr)); + mxCbUseReferenceXObject->set_sensitive(!bIsPDFUA); + + ImpPDFTabOpnFtrPage *const pOpenPage(mpParent ? mpParent->getOpenPage() : nullptr); + if (pOpenPage) + { + pOpenPage->ToggleInitialView(*mpParent); + } + // PDF/A doesn't allow launch action, so enable/disable the selection on the Link page ImpPDFTabLinksPage* pLinksPage = mpParent ? mpParent->getLinksPage() : nullptr; if (pLinksPage) @@ -864,23 +1041,23 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa /// The option features tab page ImpPDFTabOpnFtrPage::ImpPDFTabOpnFtrPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) - : SfxTabPage(pPage, pController, "filter/ui/pdfviewpage.ui", "PdfViewPage", &rCoreSet) + : SfxTabPage(pPage, pController, u"filter/ui/pdfviewpage.ui"_ustr, u"PdfViewPage"_ustr, &rCoreSet) , mbUseCTLFont(false) - , mxRbOpnPageOnly(m_xBuilder->weld_radio_button("pageonly")) - , mxRbOpnOutline(m_xBuilder->weld_radio_button("outline")) - , mxRbOpnThumbs(m_xBuilder->weld_radio_button("thumbs")) - , mxNumInitialPage(m_xBuilder->weld_spin_button("page")) - , mxRbMagnDefault(m_xBuilder->weld_radio_button("fitdefault")) - , mxRbMagnFitWin(m_xBuilder->weld_radio_button("fitwin")) - , mxRbMagnFitWidth(m_xBuilder->weld_radio_button("fitwidth")) - , mxRbMagnFitVisible(m_xBuilder->weld_radio_button("fitvis")) - , mxRbMagnZoom(m_xBuilder->weld_radio_button("fitzoom")) - , mxNumZoom(m_xBuilder->weld_spin_button("zoom")) - , mxRbPgLyDefault(m_xBuilder->weld_radio_button("defaultlayout")) - , mxRbPgLySinglePage(m_xBuilder->weld_radio_button("singlelayout")) - , mxRbPgLyContinue(m_xBuilder->weld_radio_button("contlayout")) - , mxRbPgLyContinueFacing(m_xBuilder->weld_radio_button("contfacinglayout")) - , mxCbPgLyFirstOnLeft(m_xBuilder->weld_check_button("firstonleft")) + , mxRbOpnPageOnly(m_xBuilder->weld_radio_button(u"pageonly"_ustr)) + , mxRbOpnOutline(m_xBuilder->weld_radio_button(u"outline"_ustr)) + , mxRbOpnThumbs(m_xBuilder->weld_radio_button(u"thumbs"_ustr)) + , mxNumInitialPage(m_xBuilder->weld_spin_button(u"page"_ustr)) + , mxRbMagnDefault(m_xBuilder->weld_radio_button(u"fitdefault"_ustr)) + , mxRbMagnFitWin(m_xBuilder->weld_radio_button(u"fitwin"_ustr)) + , mxRbMagnFitWidth(m_xBuilder->weld_radio_button(u"fitwidth"_ustr)) + , mxRbMagnFitVisible(m_xBuilder->weld_radio_button(u"fitvis"_ustr)) + , mxRbMagnZoom(m_xBuilder->weld_radio_button(u"fitzoom"_ustr)) + , mxNumZoom(m_xBuilder->weld_spin_button(u"zoom"_ustr)) + , mxRbPgLyDefault(m_xBuilder->weld_radio_button(u"defaultlayout"_ustr)) + , mxRbPgLySinglePage(m_xBuilder->weld_radio_button(u"singlelayout"_ustr)) + , mxRbPgLyContinue(m_xBuilder->weld_radio_button(u"contlayout"_ustr)) + , mxRbPgLyContinueFacing(m_xBuilder->weld_radio_button(u"contfacinglayout"_ustr)) + , mxCbPgLyFirstOnLeft(m_xBuilder->weld_check_button(u"firstonleft"_ustr)) { mxRbMagnDefault->connect_toggled( LINK( this, ImpPDFTabOpnFtrPage, ToggleRbMagnHdl ) ); mxRbMagnFitWin->connect_toggled( LINK( this, ImpPDFTabOpnFtrPage, ToggleRbMagnHdl ) ); @@ -905,6 +1082,10 @@ void ImpPDFTabOpnFtrPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) pParent->mnInitialView = 1; else if( mxRbOpnThumbs->get_active() ) pParent->mnInitialView = 2; + if (!pParent->mbPDFUACompliance) + { + pParent->mnInitialViewUserSelection = pParent->mnInitialView; + } pParent->mnMagnification = 0; if( mxRbMagnFitWin->get_active() ) @@ -932,7 +1113,7 @@ void ImpPDFTabOpnFtrPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) pParent->mbFirstPageLeft = mbUseCTLFont && mxCbPgLyFirstOnLeft->get_active(); } -void ImpPDFTabOpnFtrPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent ) +void ImpPDFTabOpnFtrPage::SetFilterConfigItem(ImpPDFTabDialog *const pParent) { mbUseCTLFont = pParent->mbUseCTLFont; switch( pParent->mnPageLayout ) @@ -1002,9 +1183,55 @@ void ImpPDFTabOpnFtrPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent ) mxCbPgLyFirstOnLeft->set_active(pParent->mbFirstPageLeft); ToggleRbPgLyContinueFacingHdl(); } + + // The call from ImpPDFTabGeneralPage::SetFilterConfigItem() did not init + // the radio buttons correctly because ImpPDFTabOpnFtrPage did not yet exist. + ToggleInitialView(*pParent); +} + +void ImpPDFTabOpnFtrPage::ToggleInitialView(ImpPDFTabDialog & rParent) +{ + bool const bIsPDFUA(rParent.getGeneralPage()->IsPdfUaSelected()); + if (bIsPDFUA) + { // only allow Outline for PDF/UA + if (mxRbOpnOutline->get_sensitive()) + { + if (mxRbOpnPageOnly->get_active()) + { + rParent.mnInitialViewUserSelection = 0; + } + else if (mxRbOpnOutline->get_active()) + { + rParent.mnInitialViewUserSelection = 1; + } + else if (mxRbOpnThumbs->get_active()) + { + rParent.mnInitialViewUserSelection = 2; + } + mxRbOpnOutline->set_active(true); + } + } + else + { + switch (rParent.mnInitialViewUserSelection) + { + case 0: + mxRbOpnPageOnly->set_active(true); + break; + case 1: + mxRbOpnOutline->set_active(true); + break; + case 2: + mxRbOpnThumbs->set_active(true); + break; + } + } + mxRbOpnPageOnly->set_sensitive(!bIsPDFUA); + mxRbOpnThumbs->set_sensitive(!bIsPDFUA); + mxRbOpnOutline->set_sensitive(!bIsPDFUA); } -IMPL_LINK_NOARG(ImpPDFTabOpnFtrPage, ToggleRbPgLyContinueFacingHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabOpnFtrPage, ToggleRbPgLyContinueFacingHdl, weld::Toggleable&, void) { ToggleRbPgLyContinueFacingHdl(); } @@ -1014,26 +1241,26 @@ void ImpPDFTabOpnFtrPage::ToggleRbPgLyContinueFacingHdl() mxCbPgLyFirstOnLeft->set_sensitive(mxRbPgLyContinueFacing->get_active()); } -IMPL_LINK_NOARG( ImpPDFTabOpnFtrPage, ToggleRbMagnHdl, weld::ToggleButton&, void ) +IMPL_LINK_NOARG( ImpPDFTabOpnFtrPage, ToggleRbMagnHdl, weld::Toggleable&, void ) { mxNumZoom->set_sensitive(mxRbMagnZoom->get_active()); } /// The Viewer preferences tab page ImpPDFTabViewerPage::ImpPDFTabViewerPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet ) - : SfxTabPage(pPage, pController, "filter/ui/pdfuserinterfacepage.ui", "PdfUserInterfacePage", &rCoreSet) + : SfxTabPage(pPage, pController, u"filter/ui/pdfuserinterfacepage.ui"_ustr, u"PdfUserInterfacePage"_ustr, &rCoreSet) , mbIsPresentation(false) - , m_xCbResWinInit(m_xBuilder->weld_check_button("resize")) - , m_xCbCenterWindow(m_xBuilder->weld_check_button("center")) - , m_xCbOpenFullScreen(m_xBuilder->weld_check_button("open")) - , m_xCbDispDocTitle(m_xBuilder->weld_check_button("display")) - , m_xCbHideViewerMenubar(m_xBuilder->weld_check_button("menubar")) - , m_xCbHideViewerToolbar(m_xBuilder->weld_check_button("toolbar")) - , m_xCbHideViewerWindowControls(m_xBuilder->weld_check_button("window")) - , m_xCbTransitionEffects(m_xBuilder->weld_check_button("effects")) - , m_xRbAllBookmarkLevels(m_xBuilder->weld_radio_button("allbookmarks")) - , m_xRbVisibleBookmarkLevels(m_xBuilder->weld_radio_button("visiblebookmark")) - , m_xNumBookmarkLevels(m_xBuilder->weld_spin_button("visiblelevel")) + , m_xCbResWinInit(m_xBuilder->weld_check_button(u"resize"_ustr)) + , m_xCbCenterWindow(m_xBuilder->weld_check_button(u"center"_ustr)) + , m_xCbOpenFullScreen(m_xBuilder->weld_check_button(u"open"_ustr)) + , m_xCbDispDocTitle(m_xBuilder->weld_check_button(u"display"_ustr)) + , m_xCbHideViewerMenubar(m_xBuilder->weld_check_button(u"menubar"_ustr)) + , m_xCbHideViewerToolbar(m_xBuilder->weld_check_button(u"toolbar"_ustr)) + , m_xCbHideViewerWindowControls(m_xBuilder->weld_check_button(u"window"_ustr)) + , m_xCbTransitionEffects(m_xBuilder->weld_check_button(u"effects"_ustr)) + , m_xRbAllBookmarkLevels(m_xBuilder->weld_radio_button(u"allbookmarks"_ustr)) + , m_xRbVisibleBookmarkLevels(m_xBuilder->weld_radio_button(u"visiblebookmark"_ustr)) + , m_xNumBookmarkLevels(m_xBuilder->weld_spin_button(u"visiblelevel"_ustr)) { m_xRbAllBookmarkLevels->connect_toggled(LINK(this, ImpPDFTabViewerPage, ToggleRbBookmarksHdl)); m_xRbVisibleBookmarkLevels->connect_toggled(LINK(this, ImpPDFTabViewerPage, ToggleRbBookmarksHdl)); @@ -1043,7 +1270,7 @@ ImpPDFTabViewerPage::~ImpPDFTabViewerPage() { } -IMPL_LINK_NOARG( ImpPDFTabViewerPage, ToggleRbBookmarksHdl, weld::ToggleButton&, void ) +IMPL_LINK_NOARG( ImpPDFTabViewerPage, ToggleRbBookmarksHdl, weld::Toggleable&, void ) { m_xNumBookmarkLevels->set_sensitive(m_xRbVisibleBookmarkLevels->get_active()); } @@ -1096,32 +1323,33 @@ void ImpPDFTabViewerPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent ) /// The Security preferences tab page ImpPDFTabSecurityPage::ImpPDFTabSecurityPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& i_rCoreSet) - : SfxTabPage(pPage, pController, "filter/ui/pdfsecuritypage.ui", "PdfSecurityPage", &i_rCoreSet) - , msUserPwdTitle( PDFFilterResId( STR_PDF_EXPORT_UDPWD ) ) + : SfxTabPage(pPage, pController, u"filter/ui/pdfsecuritypage.ui"_ustr, u"PdfSecurityPage"_ustr, &i_rCoreSet) + , msUserPwdTitle( FilterResId( STR_PDF_EXPORT_UDPWD ) ) , mbHaveOwnerPassword( false ) , mbHaveUserPassword( false ) - , msOwnerPwdTitle( PDFFilterResId( STR_PDF_EXPORT_ODPWD ) ) - , mxPbSetPwd(m_xBuilder->weld_button("setpassword")) - , mxUserPwdSet(m_xBuilder->weld_widget("userpwdset")) - , mxUserPwdUnset(m_xBuilder->weld_widget("userpwdunset")) - , mxUserPwdPdfa(m_xBuilder->weld_widget("userpwdpdfa")) - , mxOwnerPwdSet(m_xBuilder->weld_widget("ownerpwdset")) - , mxOwnerPwdUnset(m_xBuilder->weld_widget("ownerpwdunset")) - , mxOwnerPwdPdfa(m_xBuilder->weld_widget("ownerpwdpdfa")) - , mxPrintPermissions(m_xBuilder->weld_widget("printing")) - , mxRbPrintNone(m_xBuilder->weld_radio_button("printnone")) - , mxRbPrintLowRes(m_xBuilder->weld_radio_button("printlow")) - , mxRbPrintHighRes(m_xBuilder->weld_radio_button("printhigh")) - , mxChangesAllowed(m_xBuilder->weld_widget("changes")) - , mxRbChangesNone(m_xBuilder->weld_radio_button("changenone")) - , mxRbChangesInsDel(m_xBuilder->weld_radio_button("changeinsdel")) - , mxRbChangesFillForm(m_xBuilder->weld_radio_button("changeform")) - , mxRbChangesComment(m_xBuilder->weld_radio_button("changecomment")) - , mxRbChangesAnyNoCopy(m_xBuilder->weld_radio_button("changeany")) - , mxContent(m_xBuilder->weld_widget("content")) - , mxCbEnableCopy(m_xBuilder->weld_check_button("enablecopy")) - , mxCbEnableAccessibility(m_xBuilder->weld_check_button("enablea11y")) - , mxPasswordTitle(m_xBuilder->weld_label("setpasswordstitle")) + , msOwnerPwdTitle( FilterResId( STR_PDF_EXPORT_ODPWD ) ) + , mxPbSetPwd(m_xBuilder->weld_button(u"setpassword"_ustr)) + , mxUserPwdSet(m_xBuilder->weld_widget(u"userpwdset"_ustr)) + , mxUserPwdUnset(m_xBuilder->weld_widget(u"userpwdunset"_ustr)) + , mxUserPwdPdfa(m_xBuilder->weld_widget(u"userpwdpdfa"_ustr)) + , mxOwnerPwdSet(m_xBuilder->weld_widget(u"ownerpwdset"_ustr)) + , mxOwnerPwdUnset(m_xBuilder->weld_widget(u"ownerpwdunset"_ustr)) + , mxOwnerPwdPdfa(m_xBuilder->weld_widget(u"ownerpwdpdfa"_ustr)) + , mxPrintPermissions(m_xBuilder->weld_widget(u"printing"_ustr)) + , mxRbPrintNone(m_xBuilder->weld_radio_button(u"printnone"_ustr)) + , mxRbPrintLowRes(m_xBuilder->weld_radio_button(u"printlow"_ustr)) + , mxRbPrintHighRes(m_xBuilder->weld_radio_button(u"printhigh"_ustr)) + , mxChangesAllowed(m_xBuilder->weld_widget(u"changes"_ustr)) + , mxRbChangesNone(m_xBuilder->weld_radio_button(u"changenone"_ustr)) + , mxRbChangesInsDel(m_xBuilder->weld_radio_button(u"changeinsdel"_ustr)) + , mxRbChangesFillForm(m_xBuilder->weld_radio_button(u"changeform"_ustr)) + , mxRbChangesComment(m_xBuilder->weld_radio_button(u"changecomment"_ustr)) + , mxRbChangesAnyNoCopy(m_xBuilder->weld_radio_button(u"changeany"_ustr)) + , mxContent(m_xBuilder->weld_widget(u"content"_ustr)) + , mxCbEnableCopy(m_xBuilder->weld_check_button(u"enablecopy"_ustr)) + , mxCbEnableAccessibility(m_xBuilder->weld_check_button(u"enablea11y"_ustr)) + , mxPasswordTitle(m_xBuilder->weld_label(u"setpasswordstitle"_ustr)) + , mxPermissionTitle(m_xBuilder->weld_label(u"label2"_ustr)) { msStrSetPwd = mxPasswordTitle->get_label(); mxPbSetPwd->connect_clicked(LINK(this, ImpPDFTabSecurityPage, ClickmaPbSetPwdHdl)); @@ -1129,6 +1357,10 @@ ImpPDFTabSecurityPage::ImpPDFTabSecurityPage(weld::Container* pPage, weld::Dialo ImpPDFTabSecurityPage::~ImpPDFTabSecurityPage() { + if (mpPasswordDialog) + mpPasswordDialog->response(RET_CANCEL); + if (mpUnsupportedMsgDialog) + mpUnsupportedMsgDialog->response(RET_CANCEL); } std::unique_ptr<SfxTabPage> ImpPDFTabSecurityPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet) @@ -1214,56 +1446,77 @@ void ImpPDFTabSecurityPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent ImpPDFTabGeneralPage* pGeneralPage = pParent->getGeneralPage(); if (pGeneralPage) - ImplPDFASecurityControl(!pGeneralPage->IsPdfaSelected()); + ImplPDFASecurityControl(); } IMPL_LINK_NOARG(ImpPDFTabSecurityPage, ClickmaPbSetPwdHdl, weld::Button&, void) { - SfxPasswordDialog aPwdDialog(m_xContainer.get(), &msUserPwdTitle); - aPwdDialog.SetMinLen(0); - aPwdDialog.ShowMinLengthText(false); - aPwdDialog.ShowExtras( SfxShowExtras::CONFIRM | SfxShowExtras::PASSWORD2 | SfxShowExtras::CONFIRM2 ); - aPwdDialog.set_title(msStrSetPwd); - aPwdDialog.SetGroup2Text(msOwnerPwdTitle); - aPwdDialog.AllowAsciiOnly(); - if (aPwdDialog.run() == RET_OK) // OK issued get password and set it - { - OUString aUserPW(aPwdDialog.GetPassword()); - OUString aOwnerPW(aPwdDialog.GetPassword2()); - - mbHaveUserPassword = !aUserPW.isEmpty(); - mbHaveOwnerPassword = !aOwnerPW.isEmpty(); - - mxPreparedPasswords = vcl::PDFWriter::InitEncryption( aOwnerPW, aUserPW ); - if (!mxPreparedPasswords.is()) { - OUString msg; - ErrorHandler::GetErrorString(ERRCODE_IO_NOTSUPPORTED, msg); //TODO: handle failure - std::unique_ptr<weld::MessageDialog>( - Application::CreateMessageDialog( - GetFrameWeld(), VclMessageType::Error, VclButtonsType::Ok, msg)) - ->run(); - return; - } + if(mpPasswordDialog) + mpPasswordDialog->response(RET_CANCEL); + + mpPasswordDialog = std::make_shared<SfxPasswordDialog>(m_xContainer.get(), &msUserPwdTitle); + + mpPasswordDialog->SetMinLen(0); + mpPasswordDialog->ShowMinLengthText(false); + mpPasswordDialog->ShowExtras( SfxShowExtras::CONFIRM | SfxShowExtras::PASSWORD2 | SfxShowExtras::CONFIRM2 ); + mpPasswordDialog->set_title(msStrSetPwd); + mpPasswordDialog->SetGroup2Text(msOwnerPwdTitle); + mpPasswordDialog->AllowAsciiOnly(); + + mpPasswordDialog->PreRun(); - if( mbHaveOwnerPassword ) + weld::DialogController::runAsync(mpPasswordDialog, [this](sal_Int32 response){ + if (response == RET_OK) { - maPreparedOwnerPassword = comphelper::OStorageHelper::CreatePackageEncryptionData( aOwnerPW ); + OUString aUserPW(mpPasswordDialog->GetPassword()); + OUString aOwnerPW(mpPasswordDialog->GetPassword2()); + + mbHaveUserPassword = !aUserPW.isEmpty(); + mbHaveOwnerPassword = !aOwnerPW.isEmpty(); + + mxPreparedPasswords = vcl::PDFWriter::InitEncryption( aOwnerPW, aUserPW ); + if (!mxPreparedPasswords.is()) + { + OUString msg; + ErrorHandler::GetErrorString(ERRCODE_IO_NOTSUPPORTED, msg); //TODO: handle failure + mpUnsupportedMsgDialog = std::shared_ptr<weld::MessageDialog>( + Application::CreateMessageDialog( + GetFrameWeld(), VclMessageType::Error, VclButtonsType::Ok, msg)); + + mpUnsupportedMsgDialog->runAsync(mpUnsupportedMsgDialog, [](sal_Int32){ }); + return; + } + + if( mbHaveOwnerPassword ) + maPreparedOwnerPassword = comphelper::OStorageHelper::CreatePackageEncryptionData( aOwnerPW ); + else + maPreparedOwnerPassword = Sequence< NamedValue >(); } - else - maPreparedOwnerPassword = Sequence< NamedValue >(); - } - enablePermissionControls(); + if (response != RET_CANCEL) + enablePermissionControls(); + mpPasswordDialog.reset(); + }); } void ImpPDFTabSecurityPage::enablePermissionControls() { bool bIsPDFASel = false; + bool bIsPDFUASel = false; ImpPDFTabDialog* pParent = static_cast<ImpPDFTabDialog*>(GetDialogController()); ImpPDFTabGeneralPage* pGeneralPage = pParent ? pParent->getGeneralPage() : nullptr; if (pGeneralPage) { bIsPDFASel = pGeneralPage->IsPdfaSelected(); + bIsPDFUASel = pGeneralPage->IsPdfUaSelected(); + } + // ISO 14289-1:2014, Clause: 7.16 + if (bIsPDFUASel) + { + mxCbEnableAccessibility->set_active(true); } + mxPermissionTitle->set_sensitive(!bIsPDFASel); + mxPbSetPwd->set_sensitive(!bIsPDFASel); + mxCbEnableAccessibility->set_sensitive(!bIsPDFUASel); if (bIsPDFASel) { mxUserPwdPdfa->show(); @@ -1316,25 +1569,24 @@ void ImpPDFTabSecurityPage::enablePermissionControls() // This tab page is under control of the PDF/A-1a checkbox: // TODO: implement a method to do it. -void ImpPDFTabSecurityPage::ImplPDFASecurityControl( bool bEnableSecurity ) +void ImpPDFTabSecurityPage::ImplPDFASecurityControl() { - m_xContainer->set_sensitive(bEnableSecurity); // after enable, check the status of control as if the dialog was initialized enablePermissionControls(); } /// The link preferences tab page (relative and other stuff) ImpPDFTabLinksPage::ImpPDFTabLinksPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) - : SfxTabPage(pPage, pController, "filter/ui/pdflinkspage.ui", "PdfLinksPage", &rCoreSet) + : SfxTabPage(pPage, pController, u"filter/ui/pdflinkspage.ui"_ustr, u"PdfLinksPage"_ustr, &rCoreSet) , mbOpnLnksDefaultUserState(false) , mbOpnLnksLaunchUserState(false) , mbOpnLnksBrowserUserState(false) - , m_xCbExprtBmkrToNmDst(m_xBuilder->weld_check_button("export")) - , m_xCbOOoToPDFTargets(m_xBuilder->weld_check_button("convert")) - , m_xCbExportRelativeFsysLinks(m_xBuilder->weld_check_button("exporturl")) - , m_xRbOpnLnksDefault(m_xBuilder->weld_radio_button("default")) - , m_xRbOpnLnksLaunch(m_xBuilder->weld_radio_button("openpdf")) - , m_xRbOpnLnksBrowser(m_xBuilder->weld_radio_button("openinternet")) + , m_xCbExprtBmkrToNmDst(m_xBuilder->weld_check_button(u"export"_ustr)) + , m_xCbOOoToPDFTargets(m_xBuilder->weld_check_button(u"convert"_ustr)) + , m_xCbExportRelativeFsysLinks(m_xBuilder->weld_check_button(u"exporturl"_ustr)) + , m_xRbOpnLnksDefault(m_xBuilder->weld_radio_button(u"default"_ustr)) + , m_xRbOpnLnksLaunch(m_xBuilder->weld_radio_button(u"openpdf"_ustr)) + , m_xRbOpnLnksBrowser(m_xBuilder->weld_radio_button(u"openinternet"_ustr)) { } @@ -1438,7 +1690,7 @@ void ImpPDFTabLinksPage::ImplPDFALinkControl( bool bEnableLaunch ) } /// Reset the memory of Launch action present when PDF/A-1 was requested -IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksDefaultHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksDefaultHdl, weld::Toggleable&, void) { mbOpnLnksDefaultUserState = m_xRbOpnLnksDefault->get_active(); mbOpnLnksLaunchUserState = m_xRbOpnLnksLaunch->get_active(); @@ -1446,7 +1698,7 @@ IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksDefaultHdl, weld::ToggleButton } /// Reset the memory of a launch action present when PDF/A-1 was requested -IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksBrowserHdl, weld::ToggleButton&, void) +IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksBrowserHdl, weld::Toggleable&, void) { mbOpnLnksDefaultUserState = m_xRbOpnLnksDefault->get_active(); mbOpnLnksLaunchUserState = m_xRbOpnLnksLaunch->get_active(); @@ -1454,9 +1706,9 @@ IMPL_LINK_NOARG(ImpPDFTabLinksPage, ClickRbOpnLnksBrowserHdl, weld::ToggleButton } ImplErrorDialog::ImplErrorDialog(weld::Window* pParent, const std::set<vcl::PDFWriter::ErrorCode>& rErrors) - : MessageDialogController(pParent, "filter/ui/warnpdfdialog.ui", "WarnPDFDialog", "grid") - , m_xErrors(m_xBuilder->weld_tree_view("errors")) - , m_xExplanation(m_xBuilder->weld_label("message")) + : MessageDialogController(pParent, u"filter/ui/warnpdfdialog.ui"_ustr, u"WarnPDFDialog"_ustr, u"grid"_ustr) + , m_xErrors(m_xBuilder->weld_tree_view(u"errors"_ustr)) + , m_xExplanation(m_xBuilder->weld_label(u"message"_ustr)) { int nWidth = m_xErrors->get_approximate_digit_width() * 26; int nHeight = m_xErrors->get_height_rows(9); @@ -1468,19 +1720,19 @@ ImplErrorDialog::ImplErrorDialog(weld::Window* pParent, const std::set<vcl::PDFW switch(error) { case vcl::PDFWriter::Warning_Transparency_Omitted_PDFA: - m_xErrors->append(PDFFilterResId(STR_WARN_TRANSP_PDFA), PDFFilterResId(STR_WARN_TRANSP_PDFA_SHORT), "dialog-warning"); + m_xErrors->append(FilterResId(STR_WARN_TRANSP_PDFA), FilterResId(STR_WARN_TRANSP_PDFA_SHORT), u"dialog-warning"_ustr); break; case vcl::PDFWriter::Warning_Transparency_Omitted_PDF13: - m_xErrors->append(PDFFilterResId(STR_WARN_TRANSP_VERSION), PDFFilterResId(STR_WARN_TRANSP_VERSION_SHORT), "dialog-warning"); + m_xErrors->append(FilterResId(STR_WARN_TRANSP_VERSION), FilterResId(STR_WARN_TRANSP_VERSION_SHORT), u"dialog-warning"_ustr); break; case vcl::PDFWriter::Warning_FormAction_Omitted_PDFA: - m_xErrors->append(PDFFilterResId(STR_WARN_FORMACTION_PDFA), PDFFilterResId(STR_WARN_FORMACTION_PDFA_SHORT), "dialog-warning"); + m_xErrors->append(FilterResId(STR_WARN_FORMACTION_PDFA), FilterResId(STR_WARN_FORMACTION_PDFA_SHORT), u"dialog-warning"_ustr); break; case vcl::PDFWriter::Warning_Transparency_Converted: - m_xErrors->append(PDFFilterResId(STR_WARN_TRANSP_CONVERTED), PDFFilterResId(STR_WARN_TRANSP_CONVERTED_SHORT), "dialog-warning"); + m_xErrors->append(FilterResId(STR_WARN_TRANSP_CONVERTED), FilterResId(STR_WARN_TRANSP_CONVERTED_SHORT), u"dialog-warning"_ustr); break; case vcl::PDFWriter::Error_Signature_Failed: - m_xErrors->append(PDFFilterResId(STR_ERR_PDF_EXPORT_ABORTED), PDFFilterResId(STR_ERR_SIGNATURE_FAILED), "dialog-error"); + m_xErrors->append(FilterResId(STR_ERR_PDF_EXPORT_ABORTED), FilterResId(STR_ERR_SIGNATURE_FAILED), u"dialog-error"_ustr); break; default: break; @@ -1504,16 +1756,15 @@ IMPL_LINK_NOARG(ImplErrorDialog, SelectHdl, weld::TreeView&, void) /// The digital signatures tab page ImpPDFTabSigningPage::ImpPDFTabSigningPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) - : SfxTabPage(pPage, pController, "filter/ui/pdfsignpage.ui", "PdfSignPage", &rCoreSet) - , maSignCertificate() - , mxEdSignCert(m_xBuilder->weld_entry("cert")) - , mxPbSignCertSelect(m_xBuilder->weld_button("select")) - , mxPbSignCertClear(m_xBuilder->weld_button("clear")) - , mxEdSignPassword(m_xBuilder->weld_entry("password")) - , mxEdSignLocation(m_xBuilder->weld_entry("location")) - , mxEdSignContactInfo(m_xBuilder->weld_entry("contact")) - , mxEdSignReason(m_xBuilder->weld_entry("reason")) - , mxLBSignTSA(m_xBuilder->weld_combo_box("tsa")) + : SfxTabPage(pPage, pController, u"filter/ui/pdfsignpage.ui"_ustr, u"PdfSignPage"_ustr, &rCoreSet) + , mxEdSignCert(m_xBuilder->weld_entry(u"cert"_ustr)) + , mxPbSignCertSelect(m_xBuilder->weld_button(u"select"_ustr)) + , mxPbSignCertClear(m_xBuilder->weld_button(u"clear"_ustr)) + , mxEdSignPassword(m_xBuilder->weld_entry(u"password"_ustr)) + , mxEdSignLocation(m_xBuilder->weld_entry(u"location"_ustr)) + , mxEdSignContactInfo(m_xBuilder->weld_entry(u"contact"_ustr)) + , mxEdSignReason(m_xBuilder->weld_entry(u"reason"_ustr)) + , mxLBSignTSA(m_xBuilder->weld_combo_box(u"tsa"_ustr)) { mxPbSignCertSelect->set_sensitive(true); mxPbSignCertSelect->connect_clicked(LINK(this, ImpPDFTabSigningPage, ClickmaPbSignCertSelect)); @@ -1571,7 +1822,7 @@ IMPL_LINK_NOARG(ImpPDFTabSigningPage, ClickmaPbSignCertSelect, weld::Button&, vo IMPL_LINK_NOARG(ImpPDFTabSigningPage, ClickmaPbSignCertClear, weld::Button&, void) { - mxEdSignCert->set_text(""); + mxEdSignCert->set_text(u""_ustr); maSignCertificate.clear(); mxPbSignCertClear->set_sensitive(false); mxEdSignLocation->set_sensitive(false); |