diff --git a/bin/app/user/ApplicationSettings_template.xml b/bin/app/user/ApplicationSettings_template.xml index 6655d633..18bab967 100644 --- a/bin/app/user/ApplicationSettings_template.xml +++ b/bin/app/user/ApplicationSettings_template.xml @@ -86,7 +86,8 @@ - + + diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp index a433db53..79e8801e 100644 --- a/src/lib/settings/ApplicationSettings.cpp +++ b/src/lib/settings/ApplicationSettings.cpp @@ -429,12 +429,18 @@ void ApplicationSettings::setAutomaticUpdateCheck(bool automaticUpdates) TimeStamp ApplicationSettings::getLastUpdateCheck() const { - return TimeStamp(getValue("user/update_check/last", "")); + std::string val = getValue("user/update_check/time_stamp", ""); + if (!val.size()) + { + val = getValue("user/update_check/last", ""); // deprecated key + } + + return TimeStamp(val); } void ApplicationSettings::setLastUpdateCheck(const TimeStamp& time) { - setValue("user/update_check/last", time.toString()); + setValue("user/update_check/time_stamp", time.toString()); } Version ApplicationSettings::getSkipUpdateForVersion() const @@ -452,12 +458,25 @@ void ApplicationSettings::setSkipUpdateForVersion(const Version& version) std::string ApplicationSettings::getUpdateDownloadUrl() const { - return getValue("user/update_check/url", ""); + return getValue("user/update_check/update_url", ""); } void ApplicationSettings::setUpdateDownloadUrl(const std::string& url) { - setValue("user/update_check/url", url); + setValue("user/update_check/update_url", url); +} + +Version ApplicationSettings::getUpdateVersion() const +{ + return Version::fromString(getValue("user/update_check/update_version", "2017.1.0")); +} + +void ApplicationSettings::setUpdateVersion(const Version& version) +{ + if (version.isValid()) + { + setValue("user/update_check/update_version", version.toDisplayString()); + } } int ApplicationSettings::getPluginPort() const diff --git a/src/lib/settings/ApplicationSettings.h b/src/lib/settings/ApplicationSettings.h index 979e01b0..ca2ab4ad 100644 --- a/src/lib/settings/ApplicationSettings.h +++ b/src/lib/settings/ApplicationSettings.h @@ -135,6 +135,9 @@ public: std::string getUpdateDownloadUrl() const; void setUpdateDownloadUrl(const std::string& url); + Version getUpdateVersion() const; + void setUpdateVersion(const Version& version); + // network int getPluginPort() const; void setPluginPort(const int pluginPort); diff --git a/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp b/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp index b637d65d..156a389a 100644 --- a/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp +++ b/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp @@ -31,8 +31,9 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) } else { + Version version = appSettings->getUpdateVersion(); QString url = QString::fromStdString(appSettings->getUpdateDownloadUrl()); - if (!url.isEmpty()) + if (version > Version::getApplicationVersion() && !url.isEmpty()) { setDownloadUrl(url); } @@ -52,6 +53,7 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) void QtUpdateCheckerWidget::checkUpdate(bool force) { ApplicationSettings* appSettings = ApplicationSettings::getInstance().get(); + appSettings->setUpdateVersion(Version::getApplicationVersion()); appSettings->setUpdateDownloadUrl(""); appSettings->save(); @@ -73,6 +75,7 @@ void QtUpdateCheckerWidget::checkUpdate(bool force) { setDownloadUrl(result.url); + appSettings->setUpdateVersion(result.version); appSettings->setUpdateDownloadUrl(result.url.toStdString()); appSettings->save(); } diff --git a/src/lib_gui/qt/network/QtUpdateChecker.cpp b/src/lib_gui/qt/network/QtUpdateChecker.cpp index e88a1277..3d8f5c51 100644 --- a/src/lib_gui/qt/network/QtUpdateChecker.cpp +++ b/src/lib_gui/qt/network/QtUpdateChecker.cpp @@ -62,7 +62,7 @@ void QtUpdateChecker::check(bool force, std::function callback) urlString += ("&platform=" + platformString + "bit").c_str(); // version - // Version::setApplicationVersion(Version::fromString("2017.3.10")); // for debugging + // Version::setApplicationVersion(Version::fromString("2017.3.48")); // for debugging urlString += ("&version=" + Version::getApplicationVersion().toDisplayString()).c_str(); // license @@ -126,6 +126,7 @@ void QtUpdateChecker::check(bool force, std::function callback) if (updateVersion > Version::getApplicationVersion()) { + result.version = updateVersion; result.url = url; ApplicationSettings* appSettings = ApplicationSettings::getInstance().get(); diff --git a/src/lib_gui/qt/network/QtUpdateChecker.h b/src/lib_gui/qt/network/QtUpdateChecker.h index c613419a..88185d25 100644 --- a/src/lib_gui/qt/network/QtUpdateChecker.h +++ b/src/lib_gui/qt/network/QtUpdateChecker.h @@ -3,6 +3,7 @@ #include "qt/utility/QtThreadedFunctor.h" #include "UpdateChecker.h" +#include "utility/Version.h" class QtUpdateChecker : public UpdateChecker @@ -11,6 +12,7 @@ public: struct Result { bool success = false; + Version version; QString url; };