]> git.sur5r.net Git - minitube/blob - lib/updater/src/updater.h
New upstream version 3.8
[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     /// true if the app can be stopped and relaunched without user interaction
44     virtual bool getImmediateInstallAndRelaunch() const { return immediateInstallAndRelaunch; }
45     virtual void setImmediateInstallAndRelaunch(bool value) { immediateInstallAndRelaunch = value; }
46
47     /// true if the app has to be relaunched after the update has completed
48     virtual bool getRelaunchAfterInstall() const { return relaunchAfterInstall; }
49     virtual void setRelaunchAfterInstall(bool value) { relaunchAfterInstall = value; }
50
51     /// when true an available update will be downloaded without user interaction
52     virtual bool getAutomaticDownload() const { return automaticDownload; }
53     virtual void setAutomaticDownload(bool value) { automaticDownload = value; }
54
55     virtual void checkAndShowUI() = 0;
56     virtual void checkAndMaybeShowUI() = 0;
57     virtual void checkWithoutUI() = 0;
58
59 protected slots:
60     virtual void update() = 0;
61     virtual void onUserAction();
62
63 signals:
64     void statusChanged(Status status);
65     void actionTextChanged(const QString &actionText);
66
67 private:
68     QAction *action = nullptr;
69     QPushButton *button = nullptr;
70     QLabel *label = nullptr;
71
72     bool automaticDownload = true;
73     bool immediateInstallAndRelaunch = false;
74     bool relaunchAfterInstall = false;
75     Status status = Status::UpToDate;
76     QString version;
77     QString displayVersion;
78 };
79
80 #endif // UPDATER_H