cui/source/factory/dlgfact.cxx | 11 +++++++++ cui/source/factory/dlgfact.hxx | 8 ++++++ cui/source/inc/securityoptions.hxx | 1 cui/source/options/optinet2.cxx | 38 ++------------------------------- cui/source/options/securityoptions.cxx | 30 +++++++++++++++++++++++++- include/sfx2/sfxdlg.hxx | 2 + include/sfx2/sfxsids.hrc | 1 include/svx/svxdlg.hxx | 2 + include/vcl/abstdlg.hxx | 8 ++++++ sfx2/sdi/appslots.sdi | 4 +++ sfx2/sdi/sfx.sdi | 17 ++++++++++++++ sfx2/source/appl/appserv.cxx | 14 ++++++++++++ sfx2/source/view/viewfrm.cxx | 3 -- solenv/clang-format/excludelist | 2 - 14 files changed, 102 insertions(+), 39 deletions(-)
New commits: commit 3bbcae765e58bb02ca422edbb27d69388fdba4eb Author: Balazs Varga <balazs.varga.ext...@allotropia.de> AuthorDate: Mon Jan 22 13:19:26 2024 +0100 Commit: Thorsten Behrens <thorsten.behr...@allotropia.de> CommitDate: Thu Feb 1 10:43:36 2024 +0100 tdf#159128 UI: Open Security settings option directly Open Security Option Setting page directly from Security pop up warning infobar. Follow up of 1f440348eb0892fd2c9597806d87b5fe9d60d49a (tdf#157482 UI: Turn Security Warnings popup windows into infobars) cherry-pick from commit: 2c16ea16b305dc546164e28cf6b212ebccc44ec4 Change-Id: Iac116677801bdb13a9680bcfdf532ec3d874ce0e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162393 Tested-by: Jenkins Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162491 Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de> diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index ffb5fd301069..c53e3432a2a4 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -116,6 +116,7 @@ IMPL_ABSTDLG_CLASS(AbstractScreenshotAnnotationDlg) IMPL_ABSTDLG_CLASS(AbstractSignatureLineDialog) IMPL_ABSTDLG_CLASS(AbstractSignSignatureLineDialog) IMPL_ABSTDLG_CLASS(AbstractSvxCharacterMapDialog) +IMPL_ABSTDLG_CLASS(AbstractSecurityOptionsDialog) IMPL_ABSTDLG_CLASS(AbstractSvxHpLinkDlg) IMPL_ABSTDLG_CLASS(AbstractSvxJSearchOptionsDialog) IMPL_ABSTDLG_CLASS(AbstractSvxMultiPathDialog) @@ -874,6 +875,16 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog(weld::Wi return nullptr; } +VclPtr<AbstractSecurityOptionsDialog> AbstractDialogFactory_Impl::CreateSvxSecurityOptionsDialog(weld::Window* pParent) +{ + return VclPtr<AbstractSecurityOptionsDialog_Impl>::Create(std::make_unique<svx::SecurityOptionsDialog>(pParent)); +} + +bool AbstractSecurityOptionsDialog_Impl::SetSecurityOptions() +{ + return m_xDlg->SetSecurityOptions(); +} + // TabDialog outside the drawing layer VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateAutoCorrTabDialog(weld::Window* pParent, const SfxItemSet* pAttrSet) { diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx index 1da0ec35ec38..02ba9a1b0f9d 100644 --- a/cui/source/factory/dlgfact.hxx +++ b/cui/source/factory/dlgfact.hxx @@ -49,6 +49,7 @@ #include <postdlg.hxx> #include <QrCodeGenDialog.hxx> #include <screenshotannotationdlg.hxx> +#include <securityoptions.hxx> #include <showcols.hxx> #include <SignatureLineDialog.hxx> #include <SignSignatureLineDialog.hxx> @@ -402,6 +403,11 @@ DECL_ABSTDLG_CLASS_UNIQUE(AbstractSvxCharacterMapDialog,SfxAbstractDialog,SvxCha DECL_ABSTDLG_CLASS(AbstractScreenshotAnnotationDlg,ScreenshotAnnotationDlg) }; +// AbstractSecurityOptionsDialog_Impl +DECL_ABSTDLG_CLASS(AbstractSecurityOptionsDialog, svx::SecurityOptionsDialog) + virtual bool SetSecurityOptions() override; +}; + // AbstractSignatureLineDialog_Impl DECL_ABSTDLG_CLASS(AbstractSignatureLineDialog,SignatureLineDialog) }; @@ -592,6 +598,8 @@ public: virtual VclPtr<AbstractScreenshotAnnotationDlg> CreateScreenshotAnnotationDlg(weld::Dialog& rParentDialog) override; + virtual VclPtr<AbstractSecurityOptionsDialog> CreateSvxSecurityOptionsDialog(weld::Window* pParent) override; + virtual VclPtr<AbstractSignatureLineDialog> CreateSignatureLineDialog(weld::Window* pParent, const css::uno::Reference<css::frame::XModel> xModel, bool bEditExisting) override; diff --git a/cui/source/options/securityoptions.hxx b/cui/source/inc/securityoptions.hxx similarity index 99% rename from cui/source/options/securityoptions.hxx rename to cui/source/inc/securityoptions.hxx index 7884ccfbd30e..6839e3931822 100644 --- a/cui/source/options/securityoptions.hxx +++ b/cui/source/inc/securityoptions.hxx @@ -72,6 +72,7 @@ namespace svx DECL_LINK(ShowPersonalInfosToggle, weld::Toggleable&, void); + bool SetSecurityOptions(); void changeKeepSecurityInfosEnabled(); }; } diff --git a/cui/source/options/optinet2.cxx b/cui/source/options/optinet2.cxx index 083c3e40f784..eaf0e8616bfd 100644 --- a/cui/source/options/optinet2.cxx +++ b/cui/source/options/optinet2.cxx @@ -27,7 +27,6 @@ #include <vcl/weld.hxx> #include <sfx2/filedlghelper.hxx> #include <vcl/svapp.hxx> -#include <unotools/securityoptions.hxx> #include <com/sun/star/uno/Sequence.hxx> #include <comphelper/diagnose_ex.hxx> @@ -52,7 +51,7 @@ #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> #include <com/sun/star/task/PasswordContainer.hpp> #include <com/sun/star/task/XPasswordContainer2.hpp> -#include "securityoptions.hxx" +#include <securityoptions.hxx> #include "webconninfo.hxx" #include "certpath.hxx" #include "tsaurls.hxx" @@ -834,25 +833,6 @@ DeactivateRC SvxSecurityTabPage::DeactivatePage( SfxItemSet* _pSet ) return DeactivateRC::LeavePage; } -namespace -{ - bool CheckAndSave( SvtSecurityOptions::EOption _eOpt, const bool _bIsChecked, bool& _rModified ) - { - bool bModified = false; - if ( !SvtSecurityOptions::IsReadOnly( _eOpt ) ) - { - bModified = SvtSecurityOptions::IsOptionSet( _eOpt ) != _bIsChecked; - if ( bModified ) - { - SvtSecurityOptions::SetOption( _eOpt, _bIsChecked ); - _rModified = true; - } - } - - return bModified; - } -} - OUString SvxSecurityTabPage::GetAllStrings() { OUString sAllStrings; @@ -892,20 +872,8 @@ bool SvxSecurityTabPage::FillItemSet( SfxItemSet* ) { bool bModified = false; - if (m_xSecOptDlg) - { - CheckAndSave( SvtSecurityOptions::EOption::DocWarnSaveOrSend, m_xSecOptDlg->IsSaveOrSendDocsChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnSigning, m_xSecOptDlg->IsSignDocsChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnPrint, m_xSecOptDlg->IsPrintDocsChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnCreatePdf, m_xSecOptDlg->IsCreatePdfChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo, m_xSecOptDlg->IsRemovePersInfoChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo, m_xSecOptDlg->IsRemoveRedlineInfoChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnKeepDocUserInfo, m_xSecOptDlg->IsRemoveDocUserInfoChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnKeepNoteAuthorDateInfo, m_xSecOptDlg->IsRemoveNoteAuthorInfoChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnKeepDocVersionInfo, m_xSecOptDlg->IsRemoveDocVersionInfoChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::DocWarnRecommendPassword, m_xSecOptDlg->IsRecommPasswdChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::CtrlClickHyperlink, m_xSecOptDlg->IsCtrlHyperlinkChecked(), bModified ); - CheckAndSave( SvtSecurityOptions::EOption::BlockUntrustedRefererLinks, m_xSecOptDlg->IsBlockUntrustedRefererLinksChecked(), bModified ); + if (m_xSecOptDlg) { + bModified = m_xSecOptDlg->SetSecurityOptions(); } std::shared_ptr<comphelper::ConfigurationChanges> pBatch( diff --git a/cui/source/options/securityoptions.cxx b/cui/source/options/securityoptions.cxx index d583f626183e..d7523973e367 100644 --- a/cui/source/options/securityoptions.cxx +++ b/cui/source/options/securityoptions.cxx @@ -17,8 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <securityoptions.hxx> #include <unotools/securityoptions.hxx> -#include "securityoptions.hxx" namespace { @@ -31,6 +31,15 @@ namespace rCheckBox.set_active(SvtSecurityOptions::IsOptionSet(eOption)); return bEnable; } + + void CheckAndSave(SvtSecurityOptions::EOption _eOpt, const bool _bIsChecked, bool& _rModified) + { + if (!SvtSecurityOptions::IsReadOnly(_eOpt) && SvtSecurityOptions::IsOptionSet(_eOpt) != _bIsChecked) + { + SvtSecurityOptions::SetOption(_eOpt, _bIsChecked); + _rModified = true; + } + } } namespace svx @@ -103,6 +112,25 @@ void SecurityOptionsDialog::init() changeKeepSecurityInfosEnabled(); } +bool SecurityOptionsDialog::SetSecurityOptions() +{ + bool bModified = false; + CheckAndSave(SvtSecurityOptions::EOption::DocWarnSaveOrSend, IsSaveOrSendDocsChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnSigning, IsSignDocsChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnPrint, IsPrintDocsChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnCreatePdf, IsCreatePdfChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo, IsRemovePersInfoChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo, IsRemoveRedlineInfoChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnKeepDocUserInfo, IsRemoveDocUserInfoChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnKeepNoteAuthorDateInfo, IsRemoveNoteAuthorInfoChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnKeepDocVersionInfo, IsRemoveDocVersionInfoChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::DocWarnRecommendPassword, IsRecommPasswdChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::CtrlClickHyperlink, IsCtrlHyperlinkChecked(), bModified); + CheckAndSave(SvtSecurityOptions::EOption::BlockUntrustedRefererLinks, IsBlockUntrustedRefererLinksChecked(), bModified); + + return bModified; +} + void SecurityOptionsDialog::changeKeepSecurityInfosEnabled() { bool bEnable = m_xRemovePersInfoCB->get_active(); diff --git a/include/sfx2/sfxdlg.hxx b/include/sfx2/sfxdlg.hxx index 2513bbbb00f1..31bd0c3108ad 100644 --- a/include/sfx2/sfxdlg.hxx +++ b/include/sfx2/sfxdlg.hxx @@ -135,6 +135,8 @@ public: virtual VclPtr<SfxAbstractLinksDialog> CreateLinksDialog(weld::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML=false, sfx2::SvBaseLink* p=nullptr) = 0; virtual VclPtr<VclAbstractDialog> CreateSvxScriptOrgDialog(weld::Window* pParent, const OUString& rLanguage) = 0; + virtual VclPtr<AbstractSecurityOptionsDialog> CreateSvxSecurityOptionsDialog(weld::Window* pParent) = 0; + virtual VclPtr<AbstractScriptSelectorDialog> CreateScriptSelectorDialog(weld::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rxFrame) = 0; diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc index 3e1775788dc2..c5479d836855 100644 --- a/include/sfx2/sfxsids.hrc +++ b/include/sfx2/sfxsids.hrc @@ -670,6 +670,7 @@ class SvxZoomItem; #define SID_BASICIDE_WATCH TypedWhichId<SfxBoolItem>( SID_BASICIDE_START + 55 ) #define SID_BASICIDE_STACK TypedWhichId<SfxBoolItem>( SID_BASICIDE_START + 56 ) #define SID_OPTIONS_TREEDIALOG ( SID_BASICIDE_START + 862) +#define SID_OPTIONS_SECURITY ( SID_BASICIDE_START + 863) // SlotIds for Apps -------------------------------------------------------- #define FN_PARAM (SID_SW_START + 1100) diff --git a/include/svx/svxdlg.hxx b/include/svx/svxdlg.hxx index 41158ef2a415..2e6c7d672fc6 100644 --- a/include/svx/svxdlg.hxx +++ b/include/svx/svxdlg.hxx @@ -425,6 +425,8 @@ public: virtual DialogGetRanges GetDialogGetRangesFunc() = 0; + virtual VclPtr<AbstractSecurityOptionsDialog> CreateSvxSecurityOptionsDialog(weld::Window* pParent) override = 0; + virtual VclPtr<AbstractScriptSelectorDialog> CreateScriptSelectorDialog(weld::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rxFrame) override = 0; diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx index 793d8cdd36a9..137117866d75 100644 --- a/include/vcl/abstdlg.hxx +++ b/include/vcl/abstdlg.hxx @@ -103,6 +103,14 @@ public: virtual void AllowEmpty() = 0; }; +class VCL_DLLPUBLIC AbstractSecurityOptionsDialog : public VclAbstractDialog +{ +protected: + virtual ~AbstractSecurityOptionsDialog() override = default; +public: + virtual bool SetSecurityOptions() = 0; +}; + class VCL_DLLPUBLIC AbstractScreenshotAnnotationDlg : public VclAbstractDialog { protected: diff --git a/sfx2/sdi/appslots.sdi b/sfx2/sdi/appslots.sdi index 429c48332f7f..b8d75480fef5 100644 --- a/sfx2/sdi/appslots.sdi +++ b/sfx2/sdi/appslots.sdi @@ -337,6 +337,10 @@ shell SfxApplication [ ExecMethod = OfaExec_Impl ; ] + SID_OPTIONS_SECURITY + [ + ExecMethod = OfaExec_Impl ; + ] } shell SfxModule diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi index 5660596a3b3d..9c2b72d5f443 100644 --- a/sfx2/sdi/sfx.sdi +++ b/sfx2/sdi/sfx.sdi @@ -5497,6 +5497,23 @@ SfxVoidItem MoreDictionaries SID_MORE_DICTIONARIES GroupId = SfxGroupId::Options; ] +SfxVoidItem OptionsSecurityDialog SID_OPTIONS_SECURITY +() +[ + AutoUpdate = FALSE, + FastCall = TRUE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = TRUE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::Options; +] + SfxVoidItem ActivateStyleApply SID_ACTIVATE_STYLE_APPLY () [ diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index cccc2abc1a57..58963ceed2de 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -1483,6 +1483,20 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq ) break; } + case SID_OPTIONS_SECURITY: + { + SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); + VclPtr<AbstractSecurityOptionsDialog> pDlg = + pFact->CreateSvxSecurityOptionsDialog(rReq.GetFrameWeld()); + + if (pDlg->Execute() == RET_OK) { + pDlg->SetSecurityOptions(); + } + + pDlg.disposeAndClear(); + break; + } + case SID_MORE_DICTIONARIES: { uno::Sequence<beans::PropertyValue> aArgs{ comphelper::makePropertyValue( diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index fe0dc0adc7fc..c6b25637ccf3 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -1843,8 +1843,7 @@ IMPL_LINK_NOARG(SfxViewFrame, MacroButtonHandler, weld::Button&, void) IMPL_LINK_NOARG(SfxViewFrame, SecurityButtonHandler, weld::Button&, void) { - SfxUInt16Item aPageID(SID_OPTIONS_PAGEID, sal_uInt16(RID_SVXPAGE_INET_SECURITY)); - GetDispatcher()->ExecuteList(SID_OPTIONS_TREEDIALOG, SfxCallMode::SYNCHRON, { &aPageID }); + GetDispatcher()->Execute(SID_OPTIONS_SECURITY, SfxCallMode::SYNCHRON); RemoveInfoBar(u"securitywarn"); } diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index 981877ea114d..672ac4152935 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -2424,6 +2424,7 @@ cui/source/inc/pastedlg.hxx cui/source/inc/postdlg.hxx cui/source/inc/scriptdlg.hxx cui/source/inc/sdrcelldlg.hxx +cui/source/inc/securityoptions.hxx cui/source/inc/splitcelldlg.hxx cui/source/inc/srchxtra.hxx cui/source/inc/swpossizetabpage.hxx @@ -2489,7 +2490,6 @@ cui/source/options/optupdt.hxx cui/source/options/sdbcdriverenum.cxx cui/source/options/sdbcdriverenum.hxx cui/source/options/securityoptions.cxx -cui/source/options/securityoptions.hxx cui/source/options/treeopt.cxx cui/source/options/webconninfo.cxx cui/source/options/webconninfo.hxx