safe.h (1697B)
1 #ifndef SAFE_H 2 #define SAFE_H 3 4 #include <QObject> 5 #include <QVector> 6 7 namespace Safe 8 { 9 class LockTask; 10 class UnlockTask; 11 class DecryptTask; 12 class EncryptTask; 13 14 LockTask *lock(); 15 UnlockTask *unlock(const QString &passphrase); 16 DecryptTask *decrypt(const QString &file); 17 EncryptTask *encrypt(const QString &data, const QString &file); 18 19 20 class Task : public QObject { 21 Q_OBJECT 22 public: 23 bool error() const; 24 QString errorString() const; 25 26 Q_SIGNALS: 27 void finished(); 28 29 protected: 30 explicit Task(QObject *parent = nullptr); 31 32 virtual void run() = 0; 33 34 void setError(const QString &error); 35 36 private Q_SLOTS: 37 void start(); 38 39 private: 40 QString mError; 41 }; 42 43 class LockTask : public Task { 44 Q_OBJECT 45 friend LockTask *Safe::lock(); 46 public: 47 QString content() const; 48 49 protected: 50 void run() override; 51 52 private: 53 LockTask(); 54 }; 55 56 class UnlockTask : public Task { 57 Q_OBJECT 58 friend UnlockTask *Safe::unlock(const QString &); 59 public: 60 QString content() const; 61 62 protected: 63 void run() override; 64 65 private: 66 UnlockTask(const QString &passphrase); 67 68 QString mPassphrase; 69 }; 70 71 class DecryptTask : public Task { 72 Q_OBJECT 73 friend DecryptTask *Safe::decrypt(const QString &); 74 public: 75 QString content() const; 76 77 protected: 78 void run() override; 79 80 private: 81 DecryptTask(const QString &file); 82 83 QString mFile; 84 QString mContent; 85 }; 86 87 class EncryptTask : public Task { 88 Q_OBJECT 89 friend EncryptTask *Safe::encrypt(const QString &, const QString &); 90 protected: 91 void run() override; 92 93 private: 94 EncryptTask(const QString &file, const QString &content); 95 96 QString mFile; 97 QString mContent; 98 }; 99 100 } // namespace Safe 101 102 #endif // SAFE_H