File indexing completed on 2024-05-12 05:17:09
0001 // SPDX-FileCopyrightText: 2023 Claudio Cambra <claudio.cambra@kde.org> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "kidentitymanagementquick_export.h" 0007 0008 #include <QModelIndex> 0009 #include <QObject> 0010 0011 #include <KIdentityManagementCore/Identity> 0012 #include <KIdentityManagementQuick/CryptographyBackendInterface> 0013 #include <KIdentityManagementQuick/KeyListModelInterface> 0014 0015 namespace KIdentityManagementQuick 0016 { 0017 /** 0018 * @brief The CryptographyEditorBackend class. 0019 * 0020 * Used by the QML interface to access cryptography-related data. 0021 * Note that since the CryptographyBackendInterface is an abstract class, 0022 * it is not accessible from QML. You will need to instantiate it in C++ 0023 * and then feed it into the QML side of the editor with a valid backend 0024 * already set! 0025 */ 0026 class KIDENTITYMANAGEMENTQUICK_EXPORT CryptographyEditorBackend : public QObject 0027 { 0028 Q_OBJECT 0029 0030 Q_PROPERTY(KIdentityManagementCore::Identity identity READ identity WRITE setIdentity NOTIFY identityChanged) 0031 Q_PROPERTY(QAbstractItemModel *openPgpKeyListModel READ openPgpKeyListModel NOTIFY openPgpKeyListModelChanged) 0032 Q_PROPERTY(QAbstractItemModel *smimeKeyListModel READ smimeKeyListModel NOTIFY smimeKeyListModelChanged) 0033 0034 public: 0035 explicit CryptographyEditorBackend(QObject *parent = nullptr, const CryptographyBackendInterfacePtr &backend = {}); 0036 0037 CryptographyBackendInterfacePtr cryptographyBackend() const; 0038 void setCryptographyBackend(const CryptographyBackendInterfacePtr &cryptographyBackend); 0039 0040 QAbstractItemModel *openPgpKeyListModel() const; 0041 QAbstractItemModel *smimeKeyListModel() const; 0042 0043 KIdentityManagementCore::Identity identity() const; 0044 void setIdentity(const KIdentityManagementCore::Identity &identity); 0045 0046 Q_INVOKABLE QModelIndex indexForIdentity(QAbstractItemModel *model, const KIdentityManagementCore::Identity &identity, const KeyUseTypes::KeyUse keyUse); 0047 0048 Q_INVOKABLE static QString stringFromKeyByteArray(const QByteArray &key); 0049 0050 Q_SIGNALS: 0051 void cryptographyBackendChanged(); 0052 void openPgpKeyListModelChanged(); 0053 void smimeKeyListModelChanged(); 0054 void identityChanged(); 0055 0056 private: 0057 CryptographyBackendInterfacePtr mCryptoBackend; 0058 }; 0059 0060 }