Implement automatic and manual updates on macOS
This commit is contained in:
parent
ea4ef1655b
commit
b5bdfa6c2e
@ -283,7 +283,7 @@ public:
|
|||||||
updateLaunchAction();
|
updateLaunchAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void createMainToolbarActions(QMainWindow *MainWindow)
|
void createMainToolbarActions(MainWindow *MainWindow)
|
||||||
{
|
{
|
||||||
actionAddInstance = TranslatedAction(MainWindow);
|
actionAddInstance = TranslatedAction(MainWindow);
|
||||||
actionAddInstance->setObjectName(QStringLiteral("actionAddInstance"));
|
actionAddInstance->setObjectName(QStringLiteral("actionAddInstance"));
|
||||||
@ -1027,6 +1027,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow
|
|||||||
{
|
{
|
||||||
updater->checkForUpdate(APPLICATION->settings()->get("UpdateChannel").toString(), false);
|
updater->checkForUpdate(APPLICATION->settings()->get("UpdateChannel").toString(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
connect(APPLICATION->updateChecker()->getSparkleUpdater(),
|
||||||
|
&SparkleUpdater::canCheckForUpdatesChanged,
|
||||||
|
this,
|
||||||
|
&MainWindow::updatesAllowedChanged);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
setSelectedInstanceById(APPLICATION->settings()->get("SelectedInstance").toString());
|
setSelectedInstanceById(APPLICATION->settings()->get("SelectedInstance").toString());
|
||||||
|
@ -44,8 +44,28 @@ bool UpdateChecker::hasChannels() const
|
|||||||
return !m_channels.isEmpty();
|
return !m_channels.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
SparkleUpdater* UpdateChecker::getSparkleUpdater()
|
||||||
|
{
|
||||||
|
return m_sparkleUpdater;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void UpdateChecker::checkForUpdate(QString updateChannel, bool notifyNoUpdate)
|
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.";
|
qDebug() << "Checking for updates.";
|
||||||
|
|
||||||
// If the channel list hasn't loaded yet, load it and defer checking for updates until
|
// 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::succeeded, [this, notifyNoUpdate](){ updateCheckFinished(notifyNoUpdate); });
|
||||||
connect(indexJob.get(), &NetJob::failed, this, &UpdateChecker::updateCheckFailed);
|
connect(indexJob.get(), &NetJob::failed, this, &UpdateChecker::updateCheckFailed);
|
||||||
indexJob->start();
|
indexJob->start();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateChecker::updateCheckFinished(bool notifyNoUpdate)
|
void UpdateChecker::updateCheckFinished(bool notifyNoUpdate)
|
||||||
|
@ -18,6 +18,10 @@
|
|||||||
#include "net/NetJob.h"
|
#include "net/NetJob.h"
|
||||||
#include "GoUpdate.h"
|
#include "GoUpdate.h"
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
#include "updater/macsparkle/SparkleUpdater.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
class UpdateChecker : public QObject
|
class UpdateChecker : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -54,6 +58,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool hasChannels() const;
|
bool hasChannels() const;
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
/*!
|
||||||
|
* Returns a pointer to the Sparkle updater.
|
||||||
|
*/
|
||||||
|
SparkleUpdater *getSparkleUpdater();
|
||||||
|
#endif
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
//! Signal emitted when an update is available. Passes the URL for the repo and the ID and name for the version.
|
//! 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);
|
void updateAvailable(GoUpdate::Status status);
|
||||||
@ -117,5 +128,9 @@ private:
|
|||||||
QString m_currentRepoUrl;
|
QString m_currentRepoUrl;
|
||||||
|
|
||||||
QString m_newRepoUrl;
|
QString m_newRepoUrl;
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
SparkleUpdater *m_sparkleUpdater = new SparkleUpdater();
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user