/* * Copyright (c) 2023, Fabian Dellwing * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace CertificateSettings { class CertificateStoreProxyModel : public GUI::SortingProxyModel { public: static ErrorOr> create(NonnullRefPtr source, NonnullRefPtr view) { return adopt_nonnull_ref_or_enomem(new (nothrow) CertificateStoreProxyModel(move(source), move(view))); } virtual void sort(int column, GUI::SortOrder) override; private: CertificateStoreProxyModel(NonnullRefPtr source, NonnullRefPtr view) : SortingProxyModel(move(source)) , m_parent_table_view(move(view)) {}; NonnullRefPtr m_parent_table_view; }; class CertificateStoreModel : public GUI::Model { public: enum Column { IssuedTo, IssuedBy, Expire, __Count }; static NonnullRefPtr create(); virtual ~CertificateStoreModel() override = default; virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return m_certificates.size(); } virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return Column::__Count; } virtual ErrorOr column_name(int) const override; virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override; virtual ErrorOr load(); virtual ErrorOr add(Vector const&); virtual Certificate get(int index); private: Vector m_certificates; }; class CertificateStoreWidget : public GUI::SettingsWindow::Tab { C_OBJECT_ABSTRACT(CertStoreWidget) public: virtual ~CertificateStoreWidget() override = default; static ErrorOr> try_create(); ErrorOr initialize(); virtual void apply_settings() override {}; private: CertificateStoreWidget() = default; ErrorOr import_pem(); ErrorOr export_pem(); RefPtr m_root_ca_model; RefPtr m_root_ca_proxy_model; RefPtr m_root_ca_tableview; RefPtr m_import_ca_button; RefPtr m_export_ca_button; }; }