]> git.sur5r.net Git - minitube/blob - lib/updater/src/updater.h
457b1cc50aa984c72d0339d0edc2b1f15c4572d6
[minitube] / lib / updater / src / updater.h
1 #ifndef UPDATER_H
2 #define UPDATER_H
3
4 #include <QtWidgets>
5
6
7 class Updater : public QObject {
8     Q_OBJECT
9
10 public:
11     /// Set a shared Updater instance
12     static void setInstance(Updater *value);
13
14     /// Get a shared updater instance, null by default
15     static Updater &instance();
16
17     Updater(QObject *parent = nullptr);
18
19     QAction *getAction();
20     QPushButton *getButton();
21     QLabel *getLabel();
22
23     enum class Status {
24         UpToDate,
25         UpdateAvailable,
26         DownloadingUpdate,
27         UpdateDownloaded,
28         UpdateDownloadFailed
29     };
30     Q_ENUM(Status)
31     Status getStatus() const { return status; }
32     // This should be protected
33     void setStatus(Status v);
34
35     QString getVersion() const { return version; }
36     // This should be protected
37     void setVersion(const QString &value) { version = value; }
38
39     QString getDisplayVersion() const { return displayVersion; }
40     // This should be protected
41     void setDisplayVersion(const QString &value) { displayVersion = value; }
42
43     virtual bool getImmediateInstallAndRelaunch() const { return immediateInstallAndRelaunch; }
44     virtual void setImmediateInstallAndRelaunch(bool value) { immediateInstallAndRelaunch = value; }
45
46     virtual bool getAutomaticDownload() const { return automaticDownload; }
47     virtual void setAutomaticDownload(bool value) { automaticDownload = value; }
48
49     virtual void checkAndShowUI() = 0;
50     virtual void checkAndMaybeShowUI() = 0;
51     virtual void checkWithoutUI() = 0;
52
53 protected slots:
54     virtual void update() = 0;
55     virtual void onUserAction();
56
57 signals:
58     void statusChanged(Status status);
59     void actionTextChanged(const QString &actionText);
60
61 private:
62     QAction *action = nullptr;
63     QPushButton *button = nullptr;
64     QLabel *label = nullptr;
65
66     bool automaticDownload = true;
67     bool immediateInstallAndRelaunch = false;
68     Status status = Status::UpToDate;
69     QString version;
70     QString displayVersion;
71 };
72
73 #endif // UPDATER_H