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;
};