2010-10-27 12:45:03 +01:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-07-16 17:32:30 +01:00
|
|
|
/*
|
|
|
|
* 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 .
|
|
|
|
*/
|
2004-07-16 05:28:08 +00:00
|
|
|
|
2016-05-27 10:56:17 +03:00
|
|
|
#ifndef INCLUDED_XMLSECURITY_INC_MACROSECURITY_HXX
|
|
|
|
#define INCLUDED_XMLSECURITY_INC_MACROSECURITY_HXX
|
2004-07-16 05:28:08 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
#include <vcl/weld.hxx>
|
2009-10-06 07:38:24 +02:00
|
|
|
#include <unotools/securityoptions.hxx>
|
2004-07-16 05:28:08 +00:00
|
|
|
|
|
|
|
namespace com {
|
|
|
|
namespace sun {
|
|
|
|
namespace star {
|
|
|
|
namespace xml { namespace crypto {
|
|
|
|
class XSecurityEnvironment; }}
|
|
|
|
}}}
|
|
|
|
|
2004-07-20 14:43:12 +00:00
|
|
|
class MacroSecurityTP;
|
|
|
|
|
2019-12-22 17:22:32 +02:00
|
|
|
class MacroSecurity final : public weld::GenericDialogController
|
2004-07-16 05:28:08 +00:00
|
|
|
{
|
|
|
|
private:
|
|
|
|
friend class MacroSecurityLevelTP;
|
|
|
|
friend class MacroSecurityTrustedSourcesTP;
|
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
css::uno::Reference<css::xml::crypto::XSecurityEnvironment> m_xSecurityEnvironment;
|
|
|
|
SvtSecurityOptions m_aSecOptions;
|
2004-07-16 05:28:08 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
std::unique_ptr<weld::Notebook> m_xTabCtrl;
|
|
|
|
std::unique_ptr<weld::Button> m_xOkBtn;
|
|
|
|
std::unique_ptr<weld::Button> m_xResetBtn;
|
2004-07-26 11:13:29 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
std::unique_ptr<MacroSecurityTP> m_xLevelTP;
|
|
|
|
std::unique_ptr<MacroSecurityTP> m_xTrustSrcTP;
|
2013-02-14 23:04:56 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
DECL_LINK(ActivatePageHdl, const OString&, void);
|
|
|
|
DECL_LINK(OkBtnHdl, weld::Button&, void);
|
2004-07-16 05:28:08 +00:00
|
|
|
public:
|
2019-02-13 15:45:34 +00:00
|
|
|
MacroSecurity(weld::Window* pParent,
|
|
|
|
const css::uno::Reference<css::xml::crypto::XSecurityEnvironment>& rxSecurityEnvironment);
|
2004-07-16 09:26:28 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
void EnableReset(bool bEnable = true)
|
2013-02-14 23:04:56 +00:00
|
|
|
{
|
2019-02-13 15:45:34 +00:00
|
|
|
m_xResetBtn->set_sensitive(bEnable);
|
2013-02-14 23:04:56 +00:00
|
|
|
}
|
2004-07-16 05:28:08 +00:00
|
|
|
};
|
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
class MacroSecurityTP
|
2004-07-16 05:28:08 +00:00
|
|
|
{
|
|
|
|
protected:
|
2019-02-13 15:45:34 +00:00
|
|
|
std::unique_ptr<weld::Builder> m_xBuilder;
|
|
|
|
std::unique_ptr<weld::Container> m_xContainer;
|
|
|
|
|
|
|
|
MacroSecurity* m_pDlg;
|
2004-07-16 05:28:08 +00:00
|
|
|
public:
|
2019-02-13 15:45:34 +00:00
|
|
|
MacroSecurityTP(weld::Container* pParent, const OUString& rUIXMLDescription,
|
|
|
|
const OString& rID, MacroSecurity* pDlg);
|
|
|
|
virtual ~MacroSecurityTP();
|
2013-02-13 23:43:32 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
virtual void ActivatePage();
|
|
|
|
virtual void ClosePage() = 0;
|
2004-07-16 05:28:08 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class MacroSecurityLevelTP : public MacroSecurityTP
|
|
|
|
{
|
|
|
|
private:
|
2013-02-13 23:43:32 +00:00
|
|
|
sal_uInt16 mnCurLevel;
|
2004-08-04 05:13:56 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
std::unique_ptr<weld::RadioButton> m_xVeryHighRB;
|
|
|
|
std::unique_ptr<weld::RadioButton> m_xHighRB;
|
|
|
|
std::unique_ptr<weld::RadioButton> m_xMediumRB;
|
|
|
|
std::unique_ptr<weld::RadioButton> m_xLowRB;
|
|
|
|
std::unique_ptr<weld::Widget> m_xVHighImg;
|
|
|
|
std::unique_ptr<weld::Widget> m_xHighImg;
|
|
|
|
std::unique_ptr<weld::Widget> m_xMedImg;
|
|
|
|
std::unique_ptr<weld::Widget> m_xLowImg;
|
2004-08-04 05:13:56 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
DECL_LINK(RadioButtonHdl, weld::ToggleButton&, void);
|
2004-07-16 05:28:08 +00:00
|
|
|
public:
|
2019-02-13 15:45:34 +00:00
|
|
|
MacroSecurityLevelTP(weld::Container* pParent, MacroSecurity* pDlg);
|
|
|
|
virtual void ClosePage() override;
|
2004-07-16 05:28:08 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class MacroSecurityTrustedSourcesTP : public MacroSecurityTP
|
|
|
|
{
|
|
|
|
private:
|
2019-02-13 15:45:34 +00:00
|
|
|
css::uno::Sequence< SvtSecurityOptions::Certificate > m_aTrustedAuthors;
|
2004-07-26 11:13:29 +00:00
|
|
|
|
2018-07-20 15:57:13 +02:00
|
|
|
bool mbAuthorsReadonly;
|
|
|
|
bool mbURLsReadonly;
|
2004-07-26 11:13:29 +00:00
|
|
|
|
2019-02-13 15:45:34 +00:00
|
|
|
std::unique_ptr<weld::Image> m_xTrustCertROFI;
|
|
|
|
std::unique_ptr<weld::TreeView> m_xTrustCertLB;
|
|
|
|
std::unique_ptr<weld::Button> m_xViewCertPB;
|
|
|
|
std::unique_ptr<weld::Button> m_xRemoveCertPB;
|
|
|
|
std::unique_ptr<weld::Image> m_xTrustFileROFI;
|
|
|
|
std::unique_ptr<weld::TreeView> m_xTrustFileLocLB;
|
|
|
|
std::unique_ptr<weld::Button> m_xAddLocPB;
|
|
|
|
std::unique_ptr<weld::Button> m_xRemoveLocPB;
|
|
|
|
|
|
|
|
DECL_LINK(ViewCertPBHdl, weld::Button&, void);
|
|
|
|
DECL_LINK(RemoveCertPBHdl, weld::Button&, void);
|
|
|
|
DECL_LINK(AddLocPBHdl, weld::Button&, void);
|
|
|
|
DECL_LINK(RemoveLocPBHdl, weld::Button&, void);
|
|
|
|
DECL_LINK(TrustCertLBSelectHdl, weld::TreeView&, void);
|
|
|
|
DECL_LINK(TrustFileLocLBSelectHdl, weld::TreeView&, void);
|
|
|
|
|
Fix macro security UI usability problems
* Don't hide the option dialogs "Macro security" push button.
I don't see any reason, why these settings should be hidden, if
macros are disabled or settings locked. At least a user can now
check, what is going on (still nothing shows disabled macros for
a document in the UI AFAIK).
* Don't scale the lock icons of the trusted list boxes.
This just uses the same alignments, which the macro security
level lock image uses, otherwise the image is scaled to fit the
whole space of its layout cell.
* Don't disable the trusted list boxes.
If the setting is locked, it's sufficient to disable all the
buttons, which allow modification (so View can stay enabled).
This way you can still scroll the list. Correct button handling
is already implemented and works for me.
* Catch exceptions of broken certificate data.
If your config contains certificates, which can't be correctly
decoded, the NSS backend will throw an exception, which kills
the dialog, but not the nested loop, resulting in a locked LO.
Also show an error dialog with the broken base64-encoded data.
Change-Id: I79002e0ce85cf9a9017caf858407f2f635a3a074
Reviewed-on: https://gerrit.libreoffice.org/85056
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-12-11 10:24:37 +01:00
|
|
|
void FillCertLB(const bool bShowWarnings = false);
|
2019-02-13 15:45:34 +00:00
|
|
|
void ImplCheckButtons();
|
Fix macro security UI usability problems
* Don't hide the option dialogs "Macro security" push button.
I don't see any reason, why these settings should be hidden, if
macros are disabled or settings locked. At least a user can now
check, what is going on (still nothing shows disabled macros for
a document in the UI AFAIK).
* Don't scale the lock icons of the trusted list boxes.
This just uses the same alignments, which the macro security
level lock image uses, otherwise the image is scaled to fit the
whole space of its layout cell.
* Don't disable the trusted list boxes.
If the setting is locked, it's sufficient to disable all the
buttons, which allow modification (so View can stay enabled).
This way you can still scroll the list. Correct button handling
is already implemented and works for me.
* Catch exceptions of broken certificate data.
If your config contains certificates, which can't be correctly
decoded, the NSS backend will throw an exception, which kills
the dialog, but not the nested loop, resulting in a locked LO.
Also show an error dialog with the broken base64-encoded data.
Change-Id: I79002e0ce85cf9a9017caf858407f2f635a3a074
Reviewed-on: https://gerrit.libreoffice.org/85056
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-12-11 10:24:37 +01:00
|
|
|
void ShowBrokenCertificateError(const OUString& rData);
|
2004-07-26 11:13:29 +00:00
|
|
|
|
2004-07-16 05:28:08 +00:00
|
|
|
public:
|
2019-02-13 15:45:34 +00:00
|
|
|
MacroSecurityTrustedSourcesTP(weld::Container* pParent, MacroSecurity* pDlg);
|
2004-07-16 05:28:08 +00:00
|
|
|
|
2015-10-12 16:04:04 +02:00
|
|
|
virtual void ActivatePage() override;
|
|
|
|
virtual void ClosePage() override;
|
2004-07-16 05:28:08 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-05-27 10:56:17 +03:00
|
|
|
#endif // INCLUDED_XMLSECURITY_INC_MACROSECURITY_HXX
|
2004-07-16 05:28:08 +00:00
|
|
|
|
2010-10-27 12:45:03 +01:00
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|