calc: on editing invalidation of view with different zoom is wrong
[LibreOffice.git] / xmlsecurity / inc / certificateviewer.hxx
blob8aeb5f3368ff7fc28431d9dd44475906b3fbd2e9
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #pragma once
22 #include <utility>
23 #include <vcl/weld.hxx>
25 namespace com::sun::star {
26 namespace security { class XCertificate; }
27 namespace xml::crypto { class XSecurityEnvironment; }
30 class CertificateViewerGeneralTP;
31 class CertificateViewerDetailsTP;
32 class CertificateViewerCertPathTP;
33 class CertificateChooser;
35 class CertificateViewer final : public weld::GenericDialogController
37 private:
38 friend class CertificateViewerGeneralTP;
39 friend class CertificateViewerDetailsTP;
40 friend class CertificateViewerCertPathTP;
42 bool const mbCheckForPrivateKey;
44 css::uno::Reference< css::xml::crypto::XSecurityEnvironment > mxSecurityEnvironment;
45 css::uno::Reference< css::security::XCertificate > mxCert;
47 CertificateChooser* mpParentChooser;
49 std::unique_ptr<weld::Notebook> mxTabCtrl;
51 std::unique_ptr<CertificateViewerGeneralTP> mxGeneralPage;
52 std::unique_ptr<CertificateViewerDetailsTP> mxDetailsPage;
53 std::unique_ptr<CertificateViewerCertPathTP> mxPathId;
55 DECL_LINK(ActivatePageHdl, const OString&, void);
57 public:
58 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);
59 CertificateChooser* GetParentChooser() { return mpParentChooser; }
62 class CertificateViewerTP
64 protected:
65 std::unique_ptr<weld::Builder> mxBuilder;
66 std::unique_ptr<weld::Container> mxContainer;
67 CertificateViewer* mpDlg;
69 public:
70 CertificateViewerTP(weld::Container* pParent, const OUString& rUIXMLDescription,
71 const OString& rID, CertificateViewer* pDlg);
74 class CertificateViewerGeneralTP : public CertificateViewerTP
76 private:
77 std::unique_ptr<weld::Image> m_xCertImg;
78 std::unique_ptr<weld::Label> m_xHintNotTrustedFT;
79 std::unique_ptr<weld::Label> m_xIssuedToLabelFT;
80 std::unique_ptr<weld::Label> m_xIssuedToFT;
81 std::unique_ptr<weld::Label> m_xIssuedByLabelFT;
82 std::unique_ptr<weld::Label> m_xIssuedByFT;
83 std::unique_ptr<weld::Label> m_xValidFromDateFT;
84 std::unique_ptr<weld::Label> m_xValidToDateFT;
85 std::unique_ptr<weld::Image> m_xKeyImg;
86 std::unique_ptr<weld::Label> m_xHintCorrespPrivKeyFT;
88 public:
89 CertificateViewerGeneralTP(weld::Container* pParent, CertificateViewer* pDlg);
92 struct Details_UserDatat
94 OUString const maTxt;
95 bool const mbFixedWidthFont;
97 Details_UserDatat(OUString aTxt, bool bFixedWidthFont)
98 : maTxt(std::move(aTxt))
99 , mbFixedWidthFont(bFixedWidthFont)
104 class CertificateViewerDetailsTP : public CertificateViewerTP
106 private:
107 std::vector<std::unique_ptr<Details_UserDatat>> m_aUserData;
109 std::unique_ptr<weld::TreeView> m_xElementsLB;
110 std::unique_ptr<weld::TextView> m_xValueDetails;
112 DECL_LINK(ElementSelectHdl, weld::TreeView&, void);
113 void InsertElement(const OUString& rField, const OUString& rValue,
114 const OUString& rDetails, bool bFixedWidthFont = false);
115 public:
116 CertificateViewerDetailsTP(weld::Container* pParent, CertificateViewer* pDlg);
119 struct CertPath_UserData
121 css::uno::Reference< css::security::XCertificate > mxCert;
122 bool const mbValid;
124 CertPath_UserData(css::uno::Reference<css::security::XCertificate> xCert, bool bValid)
125 : mxCert(std::move(xCert))
126 , mbValid(bValid)
131 class CertificateViewerCertPathTP : public CertificateViewerTP
133 private:
134 CertificateViewer* mpParent;
135 bool mbFirstActivateDone;
137 std::vector<std::unique_ptr<CertPath_UserData>> maUserData;
138 std::shared_ptr<CertificateViewer> mxCertificateViewer;
140 std::unique_ptr<weld::TreeView> mxCertPathLB;
141 std::unique_ptr<weld::TreeIter> mxScratchIter;
142 std::unique_ptr<weld::Button> mxViewCertPB;
143 std::unique_ptr<weld::TextView> mxCertStatusML;
144 std::unique_ptr<weld::Label> mxCertOK;
145 std::unique_ptr<weld::Label> mxCertNotValidated;
147 DECL_LINK(ViewCertHdl, weld::Button&, void);
148 DECL_LINK(CertSelectHdl, weld::TreeView&, void);
149 void InsertCert(const weld::TreeIter* pParent, const OUString& _rName,
150 const css::uno::Reference< css::security::XCertificate >& rxCert,
151 bool bValid);
153 public:
154 CertificateViewerCertPathTP(weld::Container* pParent, CertificateViewer* pDlg);
155 ~CertificateViewerCertPathTP();
156 void ActivatePage();
159 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */