diff options
author | Kenneth Chew <kenneth.c0@protonmail.com> | 2022-04-20 22:34:13 -0400 |
---|---|---|
committer | Kenneth Chew <kenneth.c0@protonmail.com> | 2022-05-19 15:16:37 -0400 |
commit | b5bdfa6c2e9a0eb62e476dd399b82bfa972e0320 (patch) | |
tree | 324b777374db033d5bc838ba931ca8cc5d4e93db /launcher/updater | |
parent | ea4ef1655bdadf04c36768f0f641ca7579f754cf (diff) | |
download | PrismLauncher-b5bdfa6c2e9a0eb62e476dd399b82bfa972e0320.tar.gz PrismLauncher-b5bdfa6c2e9a0eb62e476dd399b82bfa972e0320.tar.bz2 PrismLauncher-b5bdfa6c2e9a0eb62e476dd399b82bfa972e0320.zip |
Implement automatic and manual updates on macOS
Diffstat (limited to 'launcher/updater')
-rw-r--r-- | launcher/updater/UpdateChecker.cpp | 21 | ||||
-rw-r--r-- | launcher/updater/UpdateChecker.h | 15 |
2 files changed, 36 insertions, 0 deletions
diff --git a/launcher/updater/UpdateChecker.cpp b/launcher/updater/UpdateChecker.cpp index efdb6093..ad159841 100644 --- a/launcher/updater/UpdateChecker.cpp +++ b/launcher/updater/UpdateChecker.cpp @@ -44,8 +44,28 @@ bool UpdateChecker::hasChannels() const return !m_channels.isEmpty(); } +#ifdef Q_OS_MAC +SparkleUpdater* UpdateChecker::getSparkleUpdater() +{ + return m_sparkleUpdater; +} +#endif + void UpdateChecker::checkForUpdate(QString updateChannel, bool notifyNoUpdate) { +#ifdef Q_OS_MAC + m_sparkleUpdater->setAllowedChannel(updateChannel); + if (notifyNoUpdate) + { + qDebug() << "Checking for updates."; + m_sparkleUpdater->checkForUpdates(); + } + else + { + // Sparkle already handles automatic update checks. + return; + } +#else qDebug() << "Checking for updates."; // If the channel list hasn't loaded yet, load it and defer checking for updates until @@ -109,6 +129,7 @@ void UpdateChecker::checkForUpdate(QString updateChannel, bool notifyNoUpdate) connect(indexJob.get(), &NetJob::succeeded, [this, notifyNoUpdate](){ updateCheckFinished(notifyNoUpdate); }); connect(indexJob.get(), &NetJob::failed, this, &UpdateChecker::updateCheckFailed); indexJob->start(); +#endif } void UpdateChecker::updateCheckFinished(bool notifyNoUpdate) diff --git a/launcher/updater/UpdateChecker.h b/launcher/updater/UpdateChecker.h index 13ee4efd..c569e49a 100644 --- a/launcher/updater/UpdateChecker.h +++ b/launcher/updater/UpdateChecker.h @@ -18,6 +18,10 @@ #include "net/NetJob.h" #include "GoUpdate.h" +#ifdef Q_OS_MAC +#include "updater/macsparkle/SparkleUpdater.h" +#endif + class UpdateChecker : public QObject { Q_OBJECT @@ -54,6 +58,13 @@ public: */ bool hasChannels() const; +#ifdef Q_OS_MAC + /*! + * Returns a pointer to the Sparkle updater. + */ + SparkleUpdater *getSparkleUpdater(); +#endif + signals: //! Signal emitted when an update is available. Passes the URL for the repo and the ID and name for the version. void updateAvailable(GoUpdate::Status status); @@ -117,5 +128,9 @@ private: QString m_currentRepoUrl; QString m_newRepoUrl; + +#ifdef Q_OS_MAC + SparkleUpdater *m_sparkleUpdater = new SparkleUpdater(); +#endif }; |