[Libreoffice-commits] core.git: include/vcl solenv/sanitizers vcl/source vcl/unx xmlsecurity/inc xmlsecurity/source xmlsecurity/uiconfig

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Feb 13 14:16:19 UTC 2019


 include/vcl/weld.hxx                                       |    1 
 solenv/sanitizers/ui/xmlsec.suppr                          |    1 
 vcl/source/app/salvtables.cxx                              |   13 
 vcl/unx/gtk3/gtk3gtkinst.cxx                               |    5 
 xmlsecurity/inc/bitmaps.hlst                               |    3 
 xmlsecurity/inc/certificateviewer.hxx                      |  146 ++--
 xmlsecurity/inc/strings.hrc                                |    1 
 xmlsecurity/source/component/documentdigitalsignatures.cxx |    5 
 xmlsecurity/source/dialogs/certificatechooser.cxx          |    4 
 xmlsecurity/source/dialogs/certificateviewer.cxx           |  431 ++++---------
 xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx     |    4 
 xmlsecurity/source/dialogs/macrosecurity.cxx               |    4 
 xmlsecurity/uiconfig/ui/certdetails.ui                     |   78 ++
 xmlsecurity/uiconfig/ui/certgeneral.ui                     |   21 
 xmlsecurity/uiconfig/ui/certpage.ui                        |   98 +-
 xmlsecurity/uiconfig/ui/viewcertdialog.ui                  |   80 ++
 16 files changed, 481 insertions(+), 414 deletions(-)

New commits:
commit b6de43a14a768e261d2233df57cf5fa46480d991
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Feb 12 21:31:54 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Feb 13 15:15:48 2019 +0100

    weld CertificateViewer cluster
    
    CertificateViewer, CertificateViewerGeneralTP,
    CertificateViewerDetailsTP, CertificateViewerCertPathTP
    
    Change-Id: I5792b673f17b3cd465ff17444776066139877ec1
    Reviewed-on: https://gerrit.libreoffice.org/67756
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 8e6f3a71b2b6..806027ca6f48 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1281,6 +1281,7 @@ public:
     virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) = 0;
     virtual void replace_selection(const OUString& rText) = 0;
     virtual void set_editable(bool bEditable) = 0;
+    virtual void set_monospace(bool bMonospace) = 0;
     int get_height_rows(int nRows) const
     {
         //can improve this if needed
diff --git a/solenv/sanitizers/ui/xmlsec.suppr b/solenv/sanitizers/ui/xmlsec.suppr
index 64ece3d45116..361120e8f8d7 100644
--- a/solenv/sanitizers/ui/xmlsec.suppr
+++ b/solenv/sanitizers/ui/xmlsec.suppr
@@ -2,6 +2,7 @@ xmlsecurity/uiconfig/ui/certpage.ui://GtkLabel[@id='certok'] orphan-label
 xmlsecurity/uiconfig/ui/certpage.ui://GtkLabel[@id='certnotok'] orphan-label
 xmlsecurity/uiconfig/ui/certpage.ui://GtkImage[@id='imgok'] no-labelled-by
 xmlsecurity/uiconfig/ui/certpage.ui://GtkImage[@id='imgnotok'] no-labelled-by
+xmlsecurity/uiconfig/ui/certpage.ui://GtkTreeViewColumn[@id='treeviewcolumn3'] no-labelled-by
 xmlsecurity/uiconfig/ui/certgeneral.ui://GtkImage[@id='certimage'] no-labelled-by
 xmlsecurity/uiconfig/ui/certgeneral.ui://GtkLabel[@id='label1'] orphan-label
 xmlsecurity/uiconfig/ui/certgeneral.ui://GtkLabel[@id='hintnotrust'] orphan-label
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 988900ee51e2..d783794ca8d2 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3016,6 +3016,19 @@ public:
         m_xTextView->SetReadOnly(!bEditable);
     }
 
+    virtual void set_monospace(bool bMonospace) override
+    {
+        vcl::Font aOrigFont = m_xTextView->GetControlFont();
+        vcl::Font aFont;
+        if (bMonospace)
+            aFont = OutputDevice::GetDefaultFont(DefaultFontType::UI_FIXED, LANGUAGE_DONTKNOW, GetDefaultFontFlags::OnlyOne, m_xTextView);
+        else
+            aFont = Application::GetSettings().GetStyleSettings().GetFieldFont();
+        aFont.SetFontHeight(aOrigFont.GetFontHeight());
+        m_xTextView->SetFont(aFont);
+        m_xTextView->SetControlFont(aFont);
+    }
+
     virtual ~SalInstanceTextView() override
     {
         m_xTextView->SetModifyHdl(Link<Edit&, void>());
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 1e5abddfd398..d26c9e42d24e 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -6506,6 +6506,11 @@ public:
         gtk_text_view_set_editable(m_pTextView, bEditable);
     }
 
+    virtual void set_monospace(bool bMonospace) override
+    {
+        gtk_text_view_set_monospace(m_pTextView, bMonospace);
+    }
+
     virtual void disable_notify_events() override
     {
         g_signal_handler_block(m_pTextBuffer, m_nChangedSignalId);
diff --git a/xmlsecurity/inc/bitmaps.hlst b/xmlsecurity/inc/bitmaps.hlst
index 0cfeb433bc1a..1af4ff3c6234 100644
--- a/xmlsecurity/inc/bitmaps.hlst
+++ b/xmlsecurity/inc/bitmaps.hlst
@@ -12,6 +12,9 @@
 
 #define BMP_STATE_NOT_VALIDATED         "xmlecurity/res/notcertificate_40x56.png"
 
+#define BMP_CERT_OK                     "xmlsecurity/res/certificate_16.png"
+#define BMP_CERT_NOT_OK                 "xmlsecurity/res/notcertificate_16.png"
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/xmlsecurity/inc/certificateviewer.hxx b/xmlsecurity/inc/certificateviewer.hxx
index b439362f18ee..9f816c9a0671 100644
--- a/xmlsecurity/inc/certificateviewer.hxx
+++ b/xmlsecurity/inc/certificateviewer.hxx
@@ -37,111 +37,131 @@ namespace xml { namespace crypto {
     class XSecurityEnvironment; }}
 }}}
 
-class CertificateViewer : public TabDialog
+class CertificateViewerGeneralTP;
+class CertificateViewerDetailsTP;
+class CertificateViewerCertPathTP;
+
+class CertificateViewer : public weld::GenericDialogController
 {
 private:
     friend class CertificateViewerGeneralTP;
     friend class CertificateViewerDetailsTP;
     friend class CertificateViewerCertPathTP;
 
-    VclPtr<TabControl>         mpTabCtrl;
-    sal_uInt16          mnGeneralId;
-    sal_uInt16          mnDetailsId;
-    sal_uInt16          mnPathId;
-
     bool const          mbCheckForPrivateKey;
 
     css::uno::Reference< css::xml::crypto::XSecurityEnvironment > mxSecurityEnvironment;
     css::uno::Reference< css::security::XCertificate > mxCert;
+
+    VclPtr<CertificateChooser> mpParentChooser;
+
+    std::unique_ptr<weld::Notebook> mxTabCtrl;
+
+    std::unique_ptr<CertificateViewerGeneralTP> mxGeneralPage;
+    std::unique_ptr<CertificateViewerDetailsTP> mxDetailsPage;
+    std::unique_ptr<CertificateViewerCertPathTP> mxPathId;
+
+    DECL_LINK(ActivatePageHdl, const OString&, void);
+
 public:
-    CertificateViewer( vcl::Window* pParent, const css::uno::Reference< css::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment, const css::uno::Reference< css::security::XCertificate >& rXCert, bool bCheckForPrivateKey );
-    virtual             ~CertificateViewer() override;
-    virtual void        dispose() override;
+    CertificateViewer(weld::Window* pParent, const css::uno::Reference< css::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment, const css::uno::Reference< css::security::XCertificate >& rXCert, bool bCheckForPrivateKey, CertificateChooser* pParentChooser);
+    CertificateChooser* GetParentChooser() { return mpParentChooser; }
 };
 
-
-class CertificateViewerTP : public TabPage
+class CertificateViewerTP
 {
 protected:
-    VclPtr<CertificateViewer>  mpDlg;
+    std::unique_ptr<weld::Builder> mxBuilder;
+    std::unique_ptr<weld::Container> mxContainer;
+    CertificateViewer* mpDlg;
+
 public:
-    CertificateViewerTP( vcl::Window* _pParent, const OString& rID,
-        const OUString& rUIXMLDescription, CertificateViewer* _pDlg );
-    virtual ~CertificateViewerTP() override;
-    virtual void dispose() override;
+    CertificateViewerTP(weld::Container* pParent, const OUString& rUIXMLDescription,
+                        const OString& rID, CertificateViewer* pDlg);
 };
 
 class CertificateViewerGeneralTP : public CertificateViewerTP
 {
 private:
-    VclPtr<FixedImage>         m_pCertImg;
-    VclPtr<FixedText>          m_pHintNotTrustedFT;
-    VclPtr<FixedText>          m_pIssuedToLabelFT;
-    VclPtr<FixedText>          m_pIssuedToFT;
-    VclPtr<FixedText>          m_pIssuedByLabelFT;
-    VclPtr<FixedText>          m_pIssuedByFT;
-    VclPtr<FixedText>          m_pValidFromDateFT;
-    VclPtr<FixedText>          m_pValidToDateFT;
-    VclPtr<FixedImage>         m_pKeyImg;
-    VclPtr<FixedText>          m_pHintCorrespPrivKeyFT;
-public:
-                        CertificateViewerGeneralTP( vcl::Window* pParent, CertificateViewer* _pDlg );
-    virtual             ~CertificateViewerGeneralTP() override;
-    virtual void        dispose() override;
+    std::unique_ptr<weld::Image> m_xCertImg;
+    std::unique_ptr<weld::Label> m_xHintNotTrustedFT;
+    std::unique_ptr<weld::Label> m_xIssuedToLabelFT;
+    std::unique_ptr<weld::Label> m_xIssuedToFT;
+    std::unique_ptr<weld::Label> m_xIssuedByLabelFT;
+    std::unique_ptr<weld::Label> m_xIssuedByFT;
+    std::unique_ptr<weld::Label> m_xValidFromDateFT;
+    std::unique_ptr<weld::Label> m_xValidToDateFT;
+    std::unique_ptr<weld::Image> m_xKeyImg;
+    std::unique_ptr<weld::Label> m_xHintCorrespPrivKeyFT;
 
-    virtual void        ActivatePage() override;
+public:
+    CertificateViewerGeneralTP(weld::Container* pParent, CertificateViewer* pDlg);
 };
 
+struct Details_UserDatat
+{
+    OUString const  maTxt;
+    bool const      mbFixedWidthFont;
+
+    Details_UserDatat(const OUString& rTxt, bool bFixedWidthFont)
+        : maTxt(rTxt)
+        , mbFixedWidthFont(bFixedWidthFont)
+    {
+    }
+};
 
 class CertificateViewerDetailsTP : public CertificateViewerTP
 {
 private:
-    VclPtr<SvSimpleTableContainer> m_pElementsLBContainer;
-    VclPtr<SvSimpleTable>          m_pElementsLB;
-    VclPtr<VclMultiLineEdit>       m_pValueDetails;
-    vcl::Font                      m_aStdFont;
-    vcl::Font                      m_aFixedWidthFont;
+    std::vector<std::unique_ptr<Details_UserDatat>> m_aUserData;
+
+    std::unique_ptr<weld::TreeView> m_xElementsLB;
+    std::unique_ptr<weld::TextView> m_xValueDetails;
 
-    DECL_LINK(    ElementSelectHdl, SvTreeListBox*, void );
+    DECL_LINK(ElementSelectHdl, weld::TreeView&, void);
     void                Clear();
-    void                InsertElement( const OUString& _rField, const OUString& _rValue,
-                                       const OUString& _rDetails, bool _bFixedWidthFont = false );
+    void                InsertElement(const OUString& rField, const OUString& rValue,
+                                      const OUString& rDetails, bool bFixedWidthFont = false);
 public:
-                        CertificateViewerDetailsTP( vcl::Window* pParent, CertificateViewer* _pDlg );
-    virtual             ~CertificateViewerDetailsTP() override;
-    virtual void        dispose() override;
-
-    virtual void        ActivatePage() override;
+    CertificateViewerDetailsTP(weld::Container* pParent, CertificateViewer* pDlg);
 };
 
+struct CertPath_UserData
+{
+    css::uno::Reference< css::security::XCertificate > mxCert;
+    bool const mbValid;
+
+    CertPath_UserData(css::uno::Reference<css::security::XCertificate> const & xCert, bool bValid)
+        : mxCert(xCert)
+        , mbValid(bValid)
+    {
+    }
+};
 
 class CertificateViewerCertPathTP : public CertificateViewerTP
 {
 private:
-    VclPtr<SvTreeListBox>      mpCertPathLB;
-    VclPtr<PushButton>         mpViewCertPB;
-    VclPtr<VclMultiLineEdit>   mpCertStatusML;
-
-    VclPtr<CertificateViewer>  mpParent;
+    CertificateViewer*  mpParent;
     bool                mbFirstActivateDone;
-    Image               maCertImage;
-    Image               maCertNotValidatedImage;
-    OUString            msCertOK;
-    OUString            msCertNotValidated;
 
-    DECL_LINK(    ViewCertHdl, Button*, void );
-    DECL_LINK(    CertSelectHdl, SvTreeListBox*, void );
+    std::vector<std::unique_ptr<CertPath_UserData>> maUserData;
+
+    std::unique_ptr<weld::TreeView> mxCertPathLB;
+    std::unique_ptr<weld::Button> mxViewCertPB;
+    std::unique_ptr<weld::TextView> mxCertStatusML;
+    std::unique_ptr<weld::Label> mxCertOK;
+    std::unique_ptr<weld::Label> mxCertNotValidated;
+
+    DECL_LINK(ViewCertHdl, weld::Button&, void);
+    DECL_LINK(CertSelectHdl, weld::TreeView&, void);
     void                Clear();
-    SvTreeListEntry*    InsertCert( SvTreeListEntry* _pParent, const OUString& _rName,
-                                    const css::uno::Reference< css::security::XCertificate >& rxCert,
-                                    bool bValid);
+    void                InsertCert(weld::TreeIter* pParent, const OUString& _rName,
+                                   const css::uno::Reference< css::security::XCertificate >& rxCert,
+                                   bool bValid);
 
 public:
-                        CertificateViewerCertPathTP( vcl::Window* pParent, CertificateViewer* _pDlg );
-    virtual             ~CertificateViewerCertPathTP() override;
-    virtual void        dispose() override;
-
-    virtual void        ActivatePage() override;
+    CertificateViewerCertPathTP(weld::Container* pParent, CertificateViewer* pDlg);
+    void ActivatePage();
 };
 
 
diff --git a/xmlsecurity/inc/strings.hrc b/xmlsecurity/inc/strings.hrc
index 1505e3583d38..c44617e10fed 100644
--- a/xmlsecurity/inc/strings.hrc
+++ b/xmlsecurity/inc/strings.hrc
@@ -23,7 +23,6 @@
 #define NC_(Context, String) reinterpret_cast<char const *>(Context "\004" u8##String)
 
 #define STR_CERTIFICATE_NOT_VALIDATED               NC_("STR_CERTIFICATE_NOT_VALIDATED", "The certificate could not be validated.")
-#define STR_HEADERBAR                               NC_("STR_HEADERBAR", "Field\tValue")
 #define STR_VERSION                                 NC_("STR_VERSION", "Version")
 #define STR_SERIALNUM                               NC_("STR_SERIALNUM", "Serial Number")
 #define STR_ISSUER                                  NC_("STR_ISSUER", "Issuer")
diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx b/xmlsecurity/source/component/documentdigitalsignatures.cxx
index 48b60de55787..ef838b6fedff 100644
--- a/xmlsecurity/source/component/documentdigitalsignatures.cxx
+++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx
@@ -599,10 +599,9 @@ void DocumentDigitalSignatures::showCertificate(
 
     if ( bInit )
     {
-        ScopedVclPtrInstance<CertificateViewer> aViewer(nullptr, aSignatureManager.getSecurityEnvironment(), Certificate, false);
-        aViewer->Execute();
+        CertificateViewer aViewer(nullptr, aSignatureManager.getSecurityEnvironment(), Certificate, false, nullptr);
+        aViewer.run();
     }
-
 }
 
 sal_Bool DocumentDigitalSignatures::isAuthorTrusted(
diff --git a/xmlsecurity/source/dialogs/certificatechooser.cxx b/xmlsecurity/source/dialogs/certificatechooser.cxx
index fc230658e491..61ce81f135db 100644
--- a/xmlsecurity/source/dialogs/certificatechooser.cxx
+++ b/xmlsecurity/source/dialogs/certificatechooser.cxx
@@ -347,8 +347,8 @@ void CertificateChooser::ImplShowCertificateDetails()
     if (!userData->xSecurityEnvironment.is() || !userData->xCertificate.is())
         return;
 
-    ScopedVclPtrInstance< CertificateViewer > aViewer( this, userData->xSecurityEnvironment, userData->xCertificate, true );
-    aViewer->Execute();
+    CertificateViewer aViewer(GetFrameWeld(), userData->xSecurityEnvironment, userData->xCertificate, true, this);
+    aViewer.run();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmlsecurity/source/dialogs/certificateviewer.cxx b/xmlsecurity/source/dialogs/certificateviewer.cxx
index 0731a01cf0c1..501f59296b47 100644
--- a/xmlsecurity/source/dialogs/certificateviewer.cxx
+++ b/xmlsecurity/source/dialogs/certificateviewer.cxx
@@ -27,7 +27,6 @@
 
 #include <unotools/localedatawrapper.hxx>
 #include <unotools/datetime.hxx>
-#include <vcl/treelistentry.hxx>
 
 #include <strings.hrc>
 #include <resourcemanager.hxx>
@@ -37,85 +36,62 @@
 #include <bitmaps.hlst>
 
 #include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
 
 using namespace comphelper;
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
 
-CertificateViewer::CertificateViewer(
-        vcl::Window* _pParent,
+CertificateViewer::CertificateViewer(weld::Window* _pParent,
         const css::uno::Reference< css::xml::crypto::XSecurityEnvironment >& _rxSecurityEnvironment,
-        const css::uno::Reference< css::security::XCertificate >& _rXCert, bool bCheckForPrivateKey )
-    : TabDialog(_pParent, "ViewCertDialog", "xmlsec/ui/viewcertdialog.ui" ),
-    mbCheckForPrivateKey(bCheckForPrivateKey)
+        const css::uno::Reference< css::security::XCertificate >& _rXCert, bool bCheckForPrivateKey,
+        CertificateChooser* pParentChooser)
+    : GenericDialogController(_pParent, "xmlsec/ui/viewcertdialog.ui", "ViewCertDialog")
+    , mbCheckForPrivateKey(bCheckForPrivateKey)
+    , mpParentChooser(pParentChooser)
+    , mxTabCtrl(m_xBuilder->weld_notebook("tabcontrol"))
 {
-    get(mpTabCtrl, "tabcontrol");
-
+    mxTabCtrl->connect_enter_page(LINK(this, CertificateViewer, ActivatePageHdl));
 
     mxSecurityEnvironment = _rxSecurityEnvironment;
     mxCert = _rXCert;
 
-    mnGeneralId = mpTabCtrl->GetPageId("general");
-    mnDetailsId = mpTabCtrl->GetPageId("details");
-    mnPathId = mpTabCtrl->GetPageId("path");
-
-    mpTabCtrl->SetTabPage(mnGeneralId, VclPtr<CertificateViewerGeneralTP>::Create( mpTabCtrl, this));
-    mpTabCtrl->SetTabPage(mnDetailsId, VclPtr<CertificateViewerDetailsTP>::Create( mpTabCtrl, this));
+    mxGeneralPage.reset(new CertificateViewerGeneralTP(mxTabCtrl->get_page("general"), this));
+    mxDetailsPage.reset(new CertificateViewerDetailsTP(mxTabCtrl->get_page("details"), this));
     if (mxSecurityEnvironment->buildCertificatePath(mxCert).getLength() == 0)
-        mpTabCtrl->RemovePage(mnPathId);
+        mxTabCtrl->remove_page("path");
     else
-        mpTabCtrl->SetTabPage(mnPathId, VclPtr<CertificateViewerCertPathTP>::Create( mpTabCtrl, this));
-    mpTabCtrl->SetCurPageId(mnGeneralId);
-}
-
-CertificateViewer::~CertificateViewer()
-{
-    disposeOnce();
-}
-
-void CertificateViewer::dispose()
-{
-    mpTabCtrl->GetTabPage(mnGeneralId)->disposeOnce();
-    mpTabCtrl->GetTabPage(mnDetailsId)->disposeOnce();
-    if (mpTabCtrl->GetTabPage(mnPathId))
-        mpTabCtrl->GetTabPage(mnPathId)->disposeOnce();
-    mpTabCtrl.clear();
-    TabDialog::dispose();
+        mxPathId.reset(new CertificateViewerCertPathTP(mxTabCtrl->get_page("path"), this));
+    mxTabCtrl->set_current_page("general");
 }
 
-CertificateViewerTP::CertificateViewerTP( vcl::Window* _pParent, const OString& rID,
-    const OUString& rUIXMLDescription, CertificateViewer* _pDlg )
-    : TabPage(_pParent, rID, rUIXMLDescription)
-    , mpDlg(_pDlg)
+IMPL_LINK(CertificateViewer, ActivatePageHdl, const OString&, rPage, void)
 {
+    if (rPage == "path")
+        mxPathId->ActivatePage();
 }
 
-CertificateViewerTP::~CertificateViewerTP()
+CertificateViewerTP::CertificateViewerTP(weld::Container* pParent, const OUString& rUIXMLDescription,
+                                         const OString& rID, CertificateViewer* pDlg)
+    : mxBuilder(Application::CreateBuilder(pParent, rUIXMLDescription))
+    , mxContainer(mxBuilder->weld_container(rID))
+    , mpDlg(pDlg)
 {
-    disposeOnce();
 }
 
-void CertificateViewerTP::dispose()
+CertificateViewerGeneralTP::CertificateViewerGeneralTP(weld::Container* pParent, CertificateViewer* pDlg)
+    : CertificateViewerTP(pParent, "xmlsec/ui/certgeneral.ui", "CertGeneral", pDlg)
+    , m_xCertImg(mxBuilder->weld_image("certimage"))
+    , m_xHintNotTrustedFT(mxBuilder->weld_label("hintnotrust"))
+    , m_xIssuedToLabelFT(mxBuilder->weld_label("issued_to"))
+    , m_xIssuedToFT(mxBuilder->weld_label("issued_to_value"))
+    , m_xIssuedByLabelFT(mxBuilder->weld_label("issued_by"))
+    , m_xIssuedByFT(mxBuilder->weld_label("issued_by_value"))
+    , m_xValidFromDateFT(mxBuilder->weld_label("valid_from_value"))
+    , m_xValidToDateFT(mxBuilder->weld_label("valid_to_value"))
+    , m_xKeyImg(mxBuilder->weld_image("keyimage"))
+    , m_xHintCorrespPrivKeyFT(mxBuilder->weld_label("privatekey"))
 {
-    mpDlg.clear();
-    TabPage::dispose();
-}
-
-
-CertificateViewerGeneralTP::CertificateViewerGeneralTP( vcl::Window* _pParent, CertificateViewer* _pDlg )
-    :CertificateViewerTP    ( _pParent, "CertGeneral", "xmlsec/ui/certgeneral.ui", _pDlg )
-{
-    get( m_pCertImg, "certimage" );
-    get( m_pHintNotTrustedFT, "hintnotrust" );
-    get( m_pIssuedToLabelFT, "issued_to" );
-    get( m_pIssuedToFT, "issued_to_value" );
-    get( m_pIssuedByLabelFT, "issued_by");
-    get( m_pIssuedByFT, "issued_by_value" );
-    get( m_pValidFromDateFT, "valid_from_value" );
-    get( m_pValidToDateFT, "valid_to_value" );
-    get( m_pKeyImg, "keyimage" );
-    get( m_pHintCorrespPrivKeyFT, "privatekey" );
-
     //Verify the certificate
     sal_Int32 certStatus = mpDlg->mxSecurityEnvironment->verifyCertificate(mpDlg->mxCert,
          Sequence<Reference<css::security::XCertificate> >());
@@ -124,8 +100,8 @@ CertificateViewerGeneralTP::CertificateViewerGeneralTP( vcl::Window* _pParent, C
 
     if ( !bCertValid )
     {
-        m_pCertImg->SetImage(Image(StockImage::Yes, BMP_STATE_NOT_VALIDATED));
-        m_pHintNotTrustedFT->SetText( XsResId( STR_CERTIFICATE_NOT_VALIDATED ) );
+        m_xCertImg->set_from_icon_name(BMP_STATE_NOT_VALIDATED);
+        m_xHintNotTrustedFT->set_label(XsResId(STR_CERTIFICATE_NOT_VALIDATED));
     }
 
     // insert data
@@ -133,128 +109,69 @@ CertificateViewerGeneralTP::CertificateViewerGeneralTP( vcl::Window* _pParent, C
 
     OUString sSubjectName(xmlsec::GetContentPart(xCert->getSubjectName()));
     if (!sSubjectName.isEmpty())
-        m_pIssuedToFT->SetText(sSubjectName);
+        m_xIssuedToFT->set_label(sSubjectName);
     else
-        m_pIssuedToLabelFT->Hide();
+        m_xIssuedToLabelFT->hide();
     OUString sIssuerName(xmlsec::GetContentPart(xCert->getIssuerName()));
     if (!sIssuerName.isEmpty())
-        m_pIssuedByFT->SetText(sIssuerName);
+        m_xIssuedByFT->set_label(sIssuerName);
     else
-        m_pIssuedByLabelFT->Hide();
+        m_xIssuedByLabelFT->hide();
 
     DateTime aDateTimeStart( DateTime::EMPTY );
     DateTime aDateTimeEnd( DateTime::EMPTY );
     utl::typeConvert( xCert->getNotValidBefore(), aDateTimeStart );
     utl::typeConvert( xCert->getNotValidAfter(), aDateTimeEnd );
 
-    OUString sValidFromDate = GetSettings().GetUILocaleDataWrapper().getDate( Date( aDateTimeStart.GetDate()));
-    OUString sValidToDate = GetSettings().GetUILocaleDataWrapper().getDate( Date( aDateTimeEnd.GetDate()));
+    OUString sValidFromDate = Application::GetSettings().GetUILocaleDataWrapper().getDate(Date(aDateTimeStart.GetDate()));
+    OUString sValidToDate = Application::GetSettings().GetUILocaleDataWrapper().getDate(Date(aDateTimeEnd.GetDate()));
 
-    m_pValidFromDateFT->SetText(sValidFromDate);
-    m_pValidToDateFT->SetText(sValidToDate);
+    m_xValidFromDateFT->set_label(sValidFromDate);
+    m_xValidToDateFT->set_label(sValidToDate);
 
     // Check if we have the private key...
     bool bHasPrivateKey = false;
     // #i41270# Check only if we have that certificate in our security environment
-    if ( _pDlg->mbCheckForPrivateKey )
+    if (pDlg->mbCheckForPrivateKey)
     {
-        long nCertificateCharacters = _pDlg->mxSecurityEnvironment->getCertificateCharacters( xCert );
-        bHasPrivateKey = ( nCertificateCharacters & security::CertificateCharacters::HAS_PRIVATE_KEY );
+        long nCertificateCharacters = pDlg->mxSecurityEnvironment->getCertificateCharacters(xCert);
+        bHasPrivateKey = (nCertificateCharacters & security::CertificateCharacters::HAS_PRIVATE_KEY);
     }
-    if ( !bHasPrivateKey )
+    if (!bHasPrivateKey)
     {
-        m_pKeyImg->Hide();
-        m_pHintCorrespPrivKeyFT->Hide();
+        m_xKeyImg->hide();
+        m_xHintCorrespPrivKeyFT->hide();
     }
 }
 
-CertificateViewerGeneralTP::~CertificateViewerGeneralTP()
-{
-    disposeOnce();
-}
-
-void CertificateViewerGeneralTP::dispose()
-{
-    m_pCertImg.clear();
-    m_pHintNotTrustedFT.clear();
-    m_pIssuedToLabelFT.clear();
-    m_pIssuedToFT.clear();
-    m_pIssuedByLabelFT.clear();
-    m_pIssuedByFT.clear();
-    m_pValidFromDateFT.clear();
-    m_pValidToDateFT.clear();
-    m_pKeyImg.clear();
-    m_pHintCorrespPrivKeyFT.clear();
-    CertificateViewerTP::dispose();
-}
-
-void CertificateViewerGeneralTP::ActivatePage()
-{
-
-}
-
-
-struct Details_UserDatat
-{
-    OUString const  maTxt;
-    bool const      mbFixedWidthFont;
-
-    inline          Details_UserDatat( const OUString& _rTxt, bool _bFixedWidthFont );
-};
-
-inline Details_UserDatat::Details_UserDatat( const OUString& _rTxt, bool _bFixedWidthFont )
-    :maTxt              ( _rTxt )
-    ,mbFixedWidthFont   ( _bFixedWidthFont )
-{
-}
-
-
 void CertificateViewerDetailsTP::Clear()
 {
-    m_pValueDetails->SetText( OUString() );
-    sal_uLong           i = 0;
-    SvTreeListEntry*    pEntry = m_pElementsLB->GetEntry( i );
-    while( pEntry )
-    {
-        delete static_cast<Details_UserDatat*>(pEntry->GetUserData());
-        ++i;
-        pEntry = m_pElementsLB->GetEntry( i );
-    }
-
-    m_pElementsLB->Clear();
+    m_xValueDetails->set_text(OUString());
+    m_aUserData.clear();
+    m_xElementsLB->clear();
 }
 
-void CertificateViewerDetailsTP::InsertElement( const OUString& _rField, const OUString& _rValue,
-                                                const OUString& _rDetails, bool _bFixedWidthFont )
+void CertificateViewerDetailsTP::InsertElement(const OUString& rField, const OUString& rValue,
+                                               const OUString& rDetails, bool bFixedWidthFont)
 {
-    SvTreeListEntry*    pEntry = m_pElementsLB->InsertEntry( _rField );
-    m_pElementsLB->SetEntryText( _rValue, pEntry, 1 );
-    pEntry->SetUserData(new Details_UserDatat(_rDetails, _bFixedWidthFont));
+    m_aUserData.emplace_back(std::make_unique<Details_UserDatat>(rDetails, bFixedWidthFont));
+    OUString sId(OUString::number(reinterpret_cast<sal_Int64>(m_aUserData.back().get())));
+    m_xElementsLB->append(sId, rField);
+    m_xElementsLB->set_text(m_xElementsLB->n_children() -1, rValue, 1);
 }
 
-CertificateViewerDetailsTP::CertificateViewerDetailsTP( vcl::Window* _pParent, CertificateViewer* _pDlg )
-    :CertificateViewerTP    ( _pParent, "CertDetails", "xmlsec/ui/certdetails.ui", _pDlg  )
-    ,m_aFixedWidthFont( OutputDevice::GetDefaultFont( DefaultFontType::UI_FIXED, LANGUAGE_DONTKNOW, GetDefaultFontFlags::OnlyOne, this ) )
+CertificateViewerDetailsTP::CertificateViewerDetailsTP(weld::Container* pParent, CertificateViewer* pDlg)
+    : CertificateViewerTP(pParent, "xmlsec/ui/certdetails.ui", "CertDetails", pDlg)
+    , m_xElementsLB(mxBuilder->weld_tree_view("tablecontainer"))
+    , m_xValueDetails(mxBuilder->weld_text_view("valuedetails"))
 {
-    get( m_pValueDetails, "valuedetails" );
-    WinBits nStyle = m_pValueDetails->GetStyle();
-    nStyle |= WB_AUTOVSCROLL;
-    m_pValueDetails->SetStyle(nStyle);
-    get( m_pElementsLBContainer, "tablecontainer" );
-    m_pElementsLB = VclPtr<SvSimpleTable>::Create( *m_pElementsLBContainer );
-
-    m_aStdFont = m_pValueDetails->GetControlFont();
-    nStyle = m_pElementsLB->GetStyle();
-    nStyle &= ~WB_HSCROLL;
-    m_pElementsLB->SetStyle( nStyle );
-
-    m_aFixedWidthFont.SetFontHeight( m_aStdFont.GetFontHeight() );
-
-    constexpr int DLGS_WIDTH = 287;
-    constexpr int CS_LB_WIDTH = (DLGS_WIDTH - RSC_SP_DLG_INNERBORDER_RIGHT) - RSC_SP_DLG_INNERBORDER_LEFT;
-    static long nTabs[] = { 0, 30*CS_LB_WIDTH/100 };
-    m_pElementsLB->SetTabs( SAL_N_ELEMENTS(nTabs), nTabs );
-    m_pElementsLB->InsertHeaderEntry( XsResId( STR_HEADERBAR ) );
+    const int nWidth = m_xElementsLB->get_approximate_digit_width() * 60;
+    const int nHeight = m_xElementsLB->get_height_rows(8);
+    m_xElementsLB->set_size_request(nWidth, nHeight);
+    m_xValueDetails->set_size_request(nWidth, nHeight);
+    std::vector<int> aWidths;
+    aWidths.push_back(nWidth / 2);
+    m_xElementsLB->set_column_fixed_widths(aWidths);
 
     // fill list box
     Reference< security::XCertificate > xCert = mpDlg->mxCert;
@@ -278,14 +195,14 @@ CertificateViewerDetailsTP::CertificateViewerDetailsTP( vcl::Window* _pParent, C
 
     DateTime aDateTime( DateTime::EMPTY );
     utl::typeConvert( xCert->getNotValidBefore(), aDateTime );
-    aLBEntry = GetSettings().GetUILocaleDataWrapper().getDate( Date( aDateTime.GetDate()) );
+    aLBEntry = Application::GetSettings().GetUILocaleDataWrapper().getDate(Date(aDateTime.GetDate()));
     aLBEntry += " ";
-    aLBEntry += GetSettings().GetUILocaleDataWrapper().getTime( tools::Time( aDateTime.GetTime()) );
+    aLBEntry += Application::GetSettings().GetUILocaleDataWrapper().getTime(tools::Time(aDateTime.GetTime()));
     InsertElement( XsResId( STR_VALIDFROM ), aLBEntry, aLBEntry  );
     utl::typeConvert( xCert->getNotValidAfter(), aDateTime );
-    aLBEntry = GetSettings().GetUILocaleDataWrapper().getDate( Date( aDateTime.GetDate()) );
+    aLBEntry = Application::GetSettings().GetUILocaleDataWrapper().getDate(Date(aDateTime.GetDate()) );
     aLBEntry += " ";
-    aLBEntry += GetSettings().GetUILocaleDataWrapper().getTime( tools::Time( aDateTime.GetTime()) );
+    aLBEntry += Application::GetSettings().GetUILocaleDataWrapper().getTime(tools::Time(aDateTime.GetTime()));
     InsertElement( XsResId( STR_VALIDTO ), aLBEntry, aLBEntry );
 
     std::pair< OUString, OUString > pairSubject =
@@ -304,7 +221,7 @@ CertificateViewerDetailsTP::CertificateViewerDetailsTP( vcl::Window* _pParent, C
     aLBEntry = aDetails = xCert->getSignatureAlgorithm();
     InsertElement( XsResId( STR_SIGNATURE_ALGO ), aLBEntry, aDetails );
 
-    CertificateChooser* pChooser = dynamic_cast<CertificateChooser*>(mpDlg->GetParent());
+    CertificateChooser* pChooser = mpDlg->GetParentChooser();
     if (pChooser)
     {
         aLBEntry = pChooser->UsageInClearText( mpDlg->mxCert->getCertificateUsage() );
@@ -321,98 +238,44 @@ CertificateViewerDetailsTP::CertificateViewerDetailsTP( vcl::Window* _pParent, C
     aDetails = xmlsec::GetHexString( aSeq, pHexSep, nLineBreak );
     InsertElement( XsResId( STR_THUMBPRINT_MD5 ), aLBEntry, aDetails, true );
 
-    m_pElementsLB->SetSelectHdl( LINK( this, CertificateViewerDetailsTP, ElementSelectHdl ) );
-}
-
-CertificateViewerDetailsTP::~CertificateViewerDetailsTP()
-{
-    disposeOnce();
-}
-
-void CertificateViewerDetailsTP::dispose()
-{
-    Clear();
-    m_pElementsLB.disposeAndClear();
-    m_pElementsLBContainer.clear();
-    m_pValueDetails.clear();
-    CertificateViewerTP::dispose();
-}
-
-void CertificateViewerDetailsTP::ActivatePage()
-{
+    m_xElementsLB->connect_changed(LINK(this, CertificateViewerDetailsTP, ElementSelectHdl));
 }
 
-IMPL_LINK_NOARG(CertificateViewerDetailsTP, ElementSelectHdl, SvTreeListBox*, void)
+IMPL_LINK_NOARG(CertificateViewerDetailsTP, ElementSelectHdl, weld::TreeView&, void)
 {
-    SvTreeListEntry*    pEntry = m_pElementsLB->FirstSelected();
-    OUString        aElementText;
-    bool            bFixedWidthFont;
-    if( pEntry )
+    int nEntry = m_xElementsLB->get_selected_index();
+    OUString aElementText;
+    bool bFixedWidthFont;
+    if (nEntry != -1)
     {
-        const Details_UserDatat*    p = static_cast<Details_UserDatat*>(pEntry->GetUserData());
+        const Details_UserDatat* p = reinterpret_cast<Details_UserDatat*>(m_xElementsLB->get_id(nEntry).toInt64());
         aElementText = p->maTxt;
         bFixedWidthFont = p->mbFixedWidthFont;
     }
     else
         bFixedWidthFont = false;
 
-    m_pValueDetails->SetFont( bFixedWidthFont? m_aFixedWidthFont : m_aStdFont );
-    m_pValueDetails->SetControlFont( bFixedWidthFont? m_aFixedWidthFont : m_aStdFont );
-    m_pValueDetails->SetText( aElementText );
+    m_xValueDetails->set_monospace(bFixedWidthFont);
+    m_xValueDetails->set_text(aElementText);
 }
 
-struct CertPath_UserData
-{
-    css::uno::Reference< css::security::XCertificate > mxCert;
-    bool const mbValid;
-
-    CertPath_UserData( css::uno::Reference< css::security::XCertificate > const & xCert, bool bValid):
-        mxCert(xCert),
-        mbValid(bValid)
-    {
-    }
-};
-
-
-CertificateViewerCertPathTP::CertificateViewerCertPathTP( vcl::Window* _pParent, CertificateViewer* _pDlg )
-    : CertificateViewerTP(_pParent, "CertPage", "xmlsec/ui/certpage.ui", _pDlg)
-    , mpParent(_pDlg)
+CertificateViewerCertPathTP::CertificateViewerCertPathTP(weld::Container* pParent, CertificateViewer* pDlg)
+    : CertificateViewerTP(pParent, "xmlsec/ui/certpage.ui", "CertPage", pDlg)
+    , mpParent(pDlg)
     , mbFirstActivateDone(false)
+    , mxCertPathLB(mxBuilder->weld_tree_view("signatures"))
+    , mxViewCertPB(mxBuilder->weld_button("viewcert"))
+    , mxCertStatusML(mxBuilder->weld_text_view("status"))
+    , mxCertOK(mxBuilder->weld_label("certok"))
+    , mxCertNotValidated(mxBuilder->weld_label("certnotok"))
 {
-    get(mpCertPathLB, "signatures");
-    get(mpViewCertPB, "viewcert");
-    get(mpCertStatusML, "status");
-
-    msCertOK = get<FixedText>("certok")->GetText();
-    msCertNotValidated = get<FixedText>("certnotok")->GetText();
-    maCertImage = get<FixedImage>("imgok")->GetImage();
-    maCertNotValidatedImage = get<FixedImage>("imgnotok")->GetImage();
-
-    Size aControlSize(LogicToPixel(Size(251, 45), MapMode(MapUnit::MapAppFont)));
-    mpCertPathLB->set_width_request(aControlSize.Width());
-    mpCertPathLB->set_height_request(aControlSize.Height());
-    mpCertStatusML->set_width_request(aControlSize.Width());
-    mpCertStatusML->set_height_request(aControlSize.Height());
-
-    mpCertPathLB->SetNodeDefaultImages();
-    mpCertPathLB->SetSublistOpenWithLeftRight();
-    mpCertPathLB->SetSelectHdl( LINK( this, CertificateViewerCertPathTP, CertSelectHdl ) );
-    mpViewCertPB->SetClickHdl( LINK( this, CertificateViewerCertPathTP, ViewCertHdl ) );
-}
-
-CertificateViewerCertPathTP::~CertificateViewerCertPathTP()
-{
-    disposeOnce();
-}
+    const int nWidth = mxCertPathLB->get_approximate_digit_width() * 60;
+    const int nHeight = mxCertPathLB->get_height_rows(6);
+    mxCertPathLB->set_size_request(nWidth, nHeight);
+    mxCertStatusML->set_size_request(nWidth, nHeight);
 
-void CertificateViewerCertPathTP::dispose()
-{
-    Clear();
-    mpCertPathLB.clear();
-    mpViewCertPB.clear();
-    mpCertStatusML.clear();
-    mpParent.clear();
-    CertificateViewerTP::dispose();
+    mxCertPathLB->connect_changed( LINK( this, CertificateViewerCertPathTP, CertSelectHdl ) );
+    mxViewCertPB->connect_clicked( LINK( this, CertificateViewerCertPathTP, ViewCertHdl ) );
 }
 
 void CertificateViewerCertPathTP::ActivatePage()
@@ -425,7 +288,7 @@ void CertificateViewerCertPathTP::ActivatePage()
         const Reference< security::XCertificate >* pCertPath = aCertPath.getConstArray();
 
         sal_Int32 i, nCnt = aCertPath.getLength();
-        SvTreeListEntry* pParent = nullptr;
+        std::unique_ptr<weld::TreeIter> xParent;
         for (i = nCnt-1; i >= 0; i--)
         {
             const Reference< security::XCertificate > rCert = pCertPath[ i ];
@@ -434,75 +297,85 @@ void CertificateViewerCertPathTP::ActivatePage()
             sal_Int32 certStatus = mpDlg->mxSecurityEnvironment->verifyCertificate(rCert,
                  Sequence<Reference<css::security::XCertificate> >());
             bool bCertValid = certStatus == css::security::CertificateValidity::VALID;
-            pParent = InsertCert( pParent, sName, rCert, bCertValid);
+            InsertCert(xParent.get(), sName, rCert, bCertValid);
+            if (!xParent)
+            {
+                xParent = mxCertPathLB->make_iterator();
+                mxCertPathLB->get_iter_first(*xParent);
+            }
+            else
+            {
+                mxCertPathLB->iter_children(*xParent);
+            }
         }
 
-        if (pParent)
-            mpCertPathLB->Select( pParent );
-        mpViewCertPB->Disable(); // Own certificate selected
+        if (xParent)
+            mxCertPathLB->select(*xParent);
+        mxViewCertPB->set_sensitive(false); // Own certificate selected
 
-        while( pParent )
+        while (xParent)
         {
-            mpCertPathLB->Expand( pParent );
-            pParent = mpCertPathLB->GetParent( pParent );
+            mxCertPathLB->expand_row(*xParent);
+            if (!mxCertPathLB->iter_parent(*xParent))
+                xParent.reset();
         }
 
-        CertSelectHdl( nullptr );
+        CertSelectHdl(*mxCertPathLB);
     }
 }
 
-IMPL_LINK_NOARG(CertificateViewerCertPathTP, ViewCertHdl, Button*, void)
+IMPL_LINK_NOARG(CertificateViewerCertPathTP, ViewCertHdl, weld::Button&, void)
 {
-    SvTreeListEntry* pEntry = mpCertPathLB->FirstSelected();
-    if( pEntry )
+    std::unique_ptr<weld::TreeIter> xIter = mxCertPathLB->make_iterator();
+    if (mxCertPathLB->get_selected(xIter.get()))
     {
-        ScopedVclPtrInstance< CertificateViewer > aViewer(
-                this, mpDlg->mxSecurityEnvironment,
-                static_cast<CertPath_UserData*>(pEntry->GetUserData())->mxCert,
-                false );
-        aViewer->Execute();
+        CertPath_UserData* pData = reinterpret_cast<CertPath_UserData*>(mxCertPathLB->get_id(*xIter).toInt64());
+        CertificateViewer aViewer(mpDlg->getDialog(), mpDlg->mxSecurityEnvironment,
+                pData->mxCert, false, nullptr);
+        aViewer.run();
     }
 }
 
-IMPL_LINK_NOARG(CertificateViewerCertPathTP, CertSelectHdl, SvTreeListBox*, void)
+IMPL_LINK_NOARG(CertificateViewerCertPathTP, CertSelectHdl, weld::TreeView&, void)
 {
     OUString sStatus;
-    SvTreeListEntry* pEntry = mpCertPathLB->FirstSelected();
-    if( pEntry )
+
+    std::unique_ptr<weld::TreeIter> xIter = mxCertPathLB->make_iterator();
+    bool bEntry = mxCertPathLB->get_selected(xIter.get());
+    if (bEntry)
     {
-        CertPath_UserData* pData = static_cast<CertPath_UserData*>(pEntry->GetUserData());
-        if ( pData )
-            sStatus = pData->mbValid ? msCertOK : msCertNotValidated;
+        CertPath_UserData* pData = reinterpret_cast<CertPath_UserData*>(mxCertPathLB->get_id(*xIter).toInt64());
+        if (pData)
+            sStatus = pData->mbValid ? mxCertOK->get_label() : mxCertNotValidated->get_label();
     }
 
-    mpCertStatusML->SetText( sStatus );
-    mpViewCertPB->Enable( pEntry && ( pEntry != mpCertPathLB->Last() ) );
-}
+    mxCertStatusML->set_text(sStatus);
 
-void CertificateViewerCertPathTP::Clear()
-{
-    mpCertStatusML->SetText( OUString() );
-    sal_uLong           i = 0;
-    SvTreeListEntry*    pEntry = mpCertPathLB->GetEntry( i );
-    while( pEntry )
+    bool bSensitive = false;
+    if (bEntry)
     {
-        delete static_cast<CertPath_UserData*>(pEntry->GetUserData());
-        ++i;
-        pEntry = mpCertPathLB->GetEntry( i );
+        // if has children, so not the last one in the chain
+        if (mxCertPathLB->iter_children(*xIter))
+            bSensitive = true;
     }
-
-    mpCertPathLB->Clear();
+    mxViewCertPB->set_sensitive(bSensitive);
 }
 
-SvTreeListEntry* CertificateViewerCertPathTP::InsertCert(
-    SvTreeListEntry* _pParent, const OUString& _rName, const css::uno::Reference< css::security::XCertificate >& rxCert,
-    bool bValid)
+void CertificateViewerCertPathTP::Clear()
 {
-    Image aImage = bValid ? maCertImage : maCertNotValidatedImage;
-    SvTreeListEntry* pEntry = mpCertPathLB->InsertEntry( _rName, aImage, aImage, _pParent );
-    pEntry->SetUserData(new CertPath_UserData(rxCert, bValid));
+    mxCertStatusML->set_text(OUString());
+    maUserData.clear();
+    mxCertPathLB->clear();
+}
 
-    return pEntry;
+void CertificateViewerCertPathTP::InsertCert(weld::TreeIter* pParent, const OUString& rName,
+                                             const css::uno::Reference< css::security::XCertificate >& rxCert,
+                                             bool bValid)
+{
+    OUString sImage = bValid ? OUStringLiteral(BMP_CERT_OK) : OUStringLiteral(BMP_CERT_NOT_OK);
+    maUserData.emplace_back(std::make_unique<CertPath_UserData>(rxCert, bValid));
+    OUString sId(OUString::number(reinterpret_cast<sal_Int64>(maUserData.back().get())));
+    mxCertPathLB->insert(pParent, -1, &rName, &sId, nullptr, nullptr, &sImage, false);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
index fa5da389d55e..762bcc58c878 100644
--- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
+++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
@@ -740,8 +740,8 @@ void DigitalSignaturesDialog::ImplShowSignaturesDetails()
         if ( xCert.is() )
         {
             uno::Reference<xml::crypto::XSecurityEnvironment> xSecEnv = getSecurityEnvironmentForCertificate(xCert);
-            ScopedVclPtrInstance<CertificateViewer> aViewer(this, xSecEnv, xCert, false);
-            aViewer->Execute();
+            CertificateViewer aViewer(GetFrameWeld(), xSecEnv, xCert, false, nullptr);
+            aViewer.run();
         }
         else
         {
diff --git a/xmlsecurity/source/dialogs/macrosecurity.cxx b/xmlsecurity/source/dialogs/macrosecurity.cxx
index e38456f4782b..69a5dff78321 100644
--- a/xmlsecurity/source/dialogs/macrosecurity.cxx
+++ b/xmlsecurity/source/dialogs/macrosecurity.cxx
@@ -229,8 +229,8 @@ IMPL_LINK_NOARG(MacroSecurityTrustedSourcesTP, ViewCertPBHdl, Button*, void)
 
         if ( xCert.is() )
         {
-            ScopedVclPtrInstance< CertificateViewer > aViewer( this, mpDlg->mxSecurityEnvironment, xCert, false );
-            aViewer->Execute();
+            CertificateViewer aViewer(GetFrameWeld(), mpDlg->mxSecurityEnvironment, xCert, false, nullptr);
+            aViewer.run();
         }
     }
 }
diff --git a/xmlsecurity/uiconfig/ui/certdetails.ui b/xmlsecurity/uiconfig/ui/certdetails.ui
index d2b04cc75011..03c2a1459d39 100644
--- a/xmlsecurity/uiconfig/ui/certdetails.ui
+++ b/xmlsecurity/uiconfig/ui/certdetails.ui
@@ -2,20 +2,74 @@
 <!-- Generated with glade 3.22.1 -->
 <interface domain="xsc">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
+  <object class="GtkTreeStore" id="liststore3">
+    <columns>
+      <!-- column-name text -->
+      <column type="gchararray"/>
+      <!-- column-name text2 -->
+      <column type="gchararray"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
   <object class="GtkBox" id="CertDetails">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="orientation">vertical</property>
-    <property name="homogeneous">True</property>
-    <property name="spacing">12</property>
     <property name="hexpand">True</property>
     <property name="vexpand">True</property>
     <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <property name="homogeneous">True</property>
     <child>
-      <object class="svtlo-SvSimpleTableContainer" id="tablecontainer:border">
+      <object class="GtkScrolledWindow">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="hscrollbar_policy">external</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkTreeView" id="tablecontainer">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="model">liststore3</property>
+            <property name="search_column">0</property>
+            <property name="show_expanders">False</property>
+            <child internal-child="selection">
+              <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
+            </child>
+            <child>
+              <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+                <property name="resizable">True</property>
+                <property name="spacing">6</property>
+                <property name="title" translatable="yes" context="certdetails|field">Field</property>
+                <child>
+                  <object class="GtkCellRendererText" id="cellrenderer1"/>
+                  <attributes>
+                    <attribute name="text">0</attribute>
+                  </attributes>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkTreeViewColumn" id="treeviewcolumn4">
+                <property name="resizable">True</property>
+                <property name="spacing">6</property>
+                <property name="title" translatable="yes" context="certdetails|value">Value</property>
+                <child>
+                  <object class="GtkCellRendererText" id="cellrenderer2"/>
+                  <attributes>
+                    <attribute name="text">1</attribute>
+                  </attributes>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
@@ -24,9 +78,21 @@
       </packing>
     </child>
     <child>
-      <object class="GtkTextView" id="valuedetails:border">
+      <object class="GtkScrolledWindow">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="hscrollbar_policy">never</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkTextView" id="valuedetails">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+          </object>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/xmlsecurity/uiconfig/ui/certgeneral.ui b/xmlsecurity/uiconfig/ui/certgeneral.ui
index eb814665d67b..a019bbdf3a58 100644
--- a/xmlsecurity/uiconfig/ui/certgeneral.ui
+++ b/xmlsecurity/uiconfig/ui/certgeneral.ui
@@ -1,14 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="xsc">
   <requires lib="gtk+" version="3.18"/>
-  <object class="GtkBox" id="box1">
+  <object class="GtkBox" id="CertGeneral">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
+    <property name="border_width">6</property>
     <property name="orientation">vertical</property>
     <property name="spacing">6</property>
     <child>
-      <object class="GtkBox" id="CertGeneral">
+      <object class="GtkBox" id="box1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
@@ -16,7 +17,7 @@
           <object class="GtkImage" id="certimage">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="pixbuf">xmlsecurity/res/certificate_40x56.png</property>
+            <property name="icon_name">xmlsecurity/res/certificate_40x56.png</property>
           </object>
           <packing>
             <property name="expand">False</property>
@@ -66,8 +67,8 @@
         <property name="margin_left">36</property>
         <property name="margin_right">36</property>
         <property name="margin_bottom">108</property>
-        <property name="xalign">0</property>
         <property name="label" translatable="yes" context="certgeneral|hintnotrust">This certificate is validated.</property>
+        <property name="xalign">0</property>
         <attributes>
           <attribute name="weight" value="bold"/>
         </attributes>
@@ -99,8 +100,8 @@
           <object class="GtkLabel" id="issued_to">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certgeneral|issued_to">Issued to: </property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
@@ -126,8 +127,8 @@
           <object class="GtkLabel" id="issued_by">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certgeneral|issued_by">Issued by: </property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
@@ -152,8 +153,8 @@
           <object class="GtkLabel" id="valid_from">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certgeneral|valid_from">Valid from:</property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
@@ -172,7 +173,7 @@
               <object class="GtkImage" id="keyimage">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="pixbuf">xmlsecurity/res/key_12.png</property>
+                <property name="icon_name">xmlsecurity/res/key_12.png</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -203,8 +204,8 @@
           <object class="GtkLabel" id="valid_to">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certgeneral|valid_to">Valid to:</property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
diff --git a/xmlsecurity/uiconfig/ui/certpage.ui b/xmlsecurity/uiconfig/ui/certpage.ui
index c90dfda415a3..38b0f095ef14 100644
--- a/xmlsecurity/uiconfig/ui/certpage.ui
+++ b/xmlsecurity/uiconfig/ui/certpage.ui
@@ -2,7 +2,14 @@
 <!-- Generated with glade 3.22.1 -->
 <interface domain="xsc">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
+  <object class="GtkTreeStore" id="liststore3">
+    <columns>
+      <!-- column-name text -->
+      <column type="gchararray"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
   <object class="GtkBox" id="CertPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -22,16 +29,14 @@
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certpage|label1">Certification path</property>
             <property name="use_underline">True</property>
-            <property name="mnemonic_widget">signatures:border</property>
+            <property name="mnemonic_widget">signatures</property>
+            <property name="xalign">0</property>
           </object>
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">0</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
@@ -47,25 +52,47 @@
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">2</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
-          <object class="vcllo-SvTreeListBox" id="signatures:border">
+          <object class="GtkScrolledWindow">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
+            <property name="can_focus">True</property>
             <property name="hexpand">True</property>
             <property name="vexpand">True</property>
-            <child internal-child="selection">
-              <object class="GtkTreeSelection" id="Tree List-selection1"/>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkTreeView" id="signatures">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="model">liststore3</property>
+                <property name="headers_visible">False</property>
+                <property name="search_column">0</property>
+                <property name="enable_tree_lines">True</property>
+                <child internal-child="selection">
+                  <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
+                </child>
+                <child>
+                  <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+                    <property name="resizable">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="cellrenderer1"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
+              </object>
             </child>
           </object>
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">1</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
       </object>
@@ -86,31 +113,36 @@
           <object class="GtkLabel" id="label2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="certpage|label2">Certification status</property>
             <property name="use_underline">True</property>
-            <property name="mnemonic_widget">status:border</property>
+            <property name="mnemonic_widget">status</property>
+            <property name="xalign">0</property>
           </object>
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">0</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
-          <object class="GtkTextView" id="status:border">
+          <object class="GtkScrolledWindow">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="hexpand">True</property>
             <property name="vexpand">True</property>
-            <property name="editable">False</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkTextView" id="status">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+              </object>
+            </child>
           </object>
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">1</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
       </object>
@@ -144,29 +176,5 @@
         <property name="position">3</property>
       </packing>
     </child>
-    <child>
-      <object class="GtkImage" id="imgok">
-        <property name="can_focus">False</property>
-        <property name="no_show_all">True</property>
-        <property name="pixbuf">xmlsecurity/res/certificate_16.png</property>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">4</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkImage" id="imgnotok">
-        <property name="can_focus">False</property>
-        <property name="no_show_all">True</property>
-        <property name="pixbuf">xmlsecurity/res/notcertificate_16.png</property>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">5</property>
-      </packing>
-    </child>
   </object>
 </interface>
diff --git a/xmlsecurity/uiconfig/ui/viewcertdialog.ui b/xmlsecurity/uiconfig/ui/viewcertdialog.ui
index 007b537a79bc..a545c42494f1 100644
--- a/xmlsecurity/uiconfig/ui/viewcertdialog.ui
+++ b/xmlsecurity/uiconfig/ui/viewcertdialog.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="xsc">
   <requires lib="gtk+" version="3.18"/>
   <object class="GtkDialog" id="ViewCertDialog">
@@ -7,7 +7,13 @@
     <property name="border_width">6</property>
     <property name="title" translatable="yes" context="viewcertdialog|ViewCertDialog">View Certificate</property>
     <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
@@ -71,6 +77,30 @@
                 <child>
                   <placeholder/>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
             </child>
             <child type="tab">
@@ -90,6 +120,30 @@
                 <child>
                   <placeholder/>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
               <packing>
                 <property name="position">1</property>
@@ -113,6 +167,30 @@
                 <child>
                   <placeholder/>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
               <packing>
                 <property name="position">2</property>


More information about the Libreoffice-commits mailing list