]> git.sur5r.net Git - minitube/blob - lib/promises/variantpromise.h
New upstream version 3.9.1
[minitube] / lib / promises / variantpromise.h
1 #ifndef VARIANTPROMISE_H
2 #define VARIANTPROMISE_H
3
4 #include <QtCore>
5
6 class VariantPromise : public QObject {
7     Q_OBJECT
8
9 public:
10     explicit VariantPromise(QObject *parent = nullptr) : QObject(parent) {
11         connect(this, &VariantPromise::resolve, this, &QObject::deleteLater);
12         connect(this, &VariantPromise::reject, this, &QObject::deleteLater);
13     };
14
15     template <typename Function> VariantPromise &then(Function func) {
16         connect(this, &VariantPromise::resolve, this, func);
17         return *this;
18     }
19     template <typename Function> VariantPromise &onFailed(Function func) {
20         connect(this, &VariantPromise::reject, this, func);
21         return *this;
22     }
23     template <typename Function> VariantPromise &finally(Function func) {
24         connect(this, &VariantPromise::destroyed, this, func);
25         return *this;
26     }
27
28 signals:
29     void resolve(QVariant result);
30     void reject(const QString &message);
31 };
32
33 #endif // VARIANTPROMISE_H