File indexing completed on 2025-02-02 05:02:28
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef HEALTHCERTIFICATEMANAGER_H 0008 #define HEALTHCERTIFICATEMANAGER_H 0009 0010 #include <QAbstractListModel> 0011 0012 #include <vector> 0013 0014 class QByteArray; 0015 0016 /** Model/manager for digital vaccination certificates. */ 0017 class HealthCertificateManager : public QAbstractListModel 0018 { 0019 Q_OBJECT 0020 Q_PROPERTY(bool isAvailable READ isAvailable CONSTANT) 0021 public: 0022 explicit HealthCertificateManager(QObject *parent = nullptr); 0023 ~HealthCertificateManager() override; 0024 0025 /** Health certificate support is compiled in. */ 0026 static bool isAvailable(); 0027 0028 bool importCertificate(const QByteArray &rawData); 0029 Q_INVOKABLE void removeCertificate(int row); 0030 0031 enum { 0032 CertificateRole = Qt::UserRole, 0033 RawDataRole, 0034 StorageIdRole, 0035 }; 0036 0037 int rowCount(const QModelIndex &parent = {}) const override; 0038 QVariant data(const QModelIndex &index, int role) const override; 0039 QHash<int, QByteArray> roleNames() const override; 0040 0041 Q_SIGNALS: 0042 void newCertificateLoaded(int index); 0043 0044 private: 0045 struct CertData { 0046 QString name; 0047 QVariant cert; 0048 }; 0049 static bool certLessThan(const CertData &lhs, const CertData &rhs); 0050 0051 void loadCertificates(); 0052 QByteArray certificateRawData(const CertData &certData) const; 0053 0054 std::vector<CertData> m_certificates; 0055 }; 0056 0057 #endif // HEALTHCERTIFICATEMANAGER_H