File indexing completed on 2025-02-02 05:02:33
0001 /* 0002 SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef PKPASSMANAGER_H 0008 #define PKPASSMANAGER_H 0009 0010 #include <QHash> 0011 #include <QObject> 0012 0013 #include <functional> 0014 0015 class QNetworkAccessManager; 0016 0017 namespace KPkPass { 0018 class Pass; 0019 } 0020 0021 class PkPassManager : public QObject 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit PkPassManager(QObject *parent = nullptr); 0026 ~PkPassManager() override; 0027 0028 void setNetworkAccessManagerFactory(const std::function<QNetworkAccessManager*()> &namFactory); 0029 0030 QVector<QString> passes() const; 0031 0032 Q_INVOKABLE KPkPass::Pass* pass(const QString &passId); 0033 Q_INVOKABLE bool hasPass(const QString &passId) const; 0034 Q_INVOKABLE static QString passId(const QVariant &reservation); 0035 0036 /** Import pass from a local @p url, returns the pass id if successful. */ 0037 QString importPass(const QUrl &url); 0038 QString importPassFromData(const QByteArray &data); 0039 Q_INVOKABLE void removePass(const QString &passId); 0040 0041 void updatePass(const QString &passId); 0042 /** Time the pass was last updated (ie. file system mtime). */ 0043 QDateTime updateTime(const QString &passId) const; 0044 0045 static QDateTime relevantDate(KPkPass::Pass *pass); 0046 /** Check whether @p pass can be online updated. */ 0047 static bool canUpdate(KPkPass::Pass *pass); 0048 0049 /** Raw pass file data, used for exporting. */ 0050 QByteArray rawData(const QString &passId) const; 0051 0052 Q_SIGNALS: 0053 void passAdded(const QString &passId); 0054 void passUpdated(const QString &passId, const QStringList &changes); 0055 void passRemoved(const QString &passId); 0056 0057 private: 0058 enum ImportMode { Copy, Move, Data }; 0059 void importPassFromTempFile(const QUrl &tmpFile); 0060 QString doImportPass(const QUrl &url, const QByteArray &data, ImportMode mode); 0061 0062 QHash<QString, KPkPass::Pass*> m_passes; 0063 std::function<QNetworkAccessManager*()> m_namFactory; 0064 }; 0065 0066 #endif // PKPASSMANAGER_H