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 }; Q_ENUM(Status)30 Q_ENUM(Status) 31 Status getStatus() const { return status; } 32 // This should be protected 33 void setStatus(Status v); 34 getVersion()35 QString getVersion() const { return version; } 36 // This should be protected setVersion(const QString & value)37 void setVersion(const QString &value) { version = value; } 38 getDisplayVersion()39 QString getDisplayVersion() const { return displayVersion; } 40 // This should be protected setDisplayVersion(const QString & value)41 void setDisplayVersion(const QString &value) { displayVersion = value; } 42 43 /// true if the app can be stopped and relaunched without user interaction getImmediateInstallAndRelaunch()44 virtual bool getImmediateInstallAndRelaunch() const { return immediateInstallAndRelaunch; } setImmediateInstallAndRelaunch(bool value)45 virtual void setImmediateInstallAndRelaunch(bool value) { immediateInstallAndRelaunch = value; } 46 47 /// true if the app has to be relaunched after the update has completed getRelaunchAfterInstall()48 virtual bool getRelaunchAfterInstall() const { return relaunchAfterInstall; } setRelaunchAfterInstall(bool value)49 virtual void setRelaunchAfterInstall(bool value) { relaunchAfterInstall = value; } 50 51 /// when true an available update will be downloaded without user interaction getAutomaticDownload()52 virtual bool getAutomaticDownload() const { return automaticDownload; } setAutomaticDownload(bool value)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 81