diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index e30da68d1..271932fbc 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -1662,11 +1662,11 @@ void MainWindow::handleUpdateCheckFinished(ProgramUpdater *updater, const bool i
updater->deleteLater();
};
- const QString newVersion = updater->getNewVersion();
- if (!newVersion.isEmpty())
+ const auto newVersion = updater->getNewVersion();
+ if (newVersion.isValid())
{
const QString msg {tr("A new version is available.") + u"
"
- + tr("Do you want to download %1?").arg(newVersion) + u"
"
+ + tr("Do you want to download %1?").arg(newVersion.toString()) + u"
"
+ u"%1"_s.arg(tr("Open changelog..."))};
auto *msgBox = new QMessageBox {QMessageBox::Question, tr("qBittorrent Update Available"), msg
, (QMessageBox::Yes | QMessageBox::No), this};
diff --git a/src/gui/programupdater.cpp b/src/gui/programupdater.cpp
index 58b1d47b0..dc6965f29 100644
--- a/src/gui/programupdater.cpp
+++ b/src/gui/programupdater.cpp
@@ -49,23 +49,20 @@
namespace
{
- bool isVersionMoreRecent(const QString &remoteVersion)
+ bool isVersionMoreRecent(const ProgramUpdater::Version &remoteVersion)
{
- using Version = Utils::Version<4, 3>;
-
- const auto newVersion = Version::fromString(remoteVersion);
- if (!newVersion.isValid())
+ if (!remoteVersion.isValid())
return false;
- const Version currentVersion {QBT_VERSION_MAJOR, QBT_VERSION_MINOR, QBT_VERSION_BUGFIX, QBT_VERSION_BUILD};
- if (newVersion == currentVersion)
+ const ProgramUpdater::Version currentVersion {QBT_VERSION_MAJOR, QBT_VERSION_MINOR, QBT_VERSION_BUGFIX, QBT_VERSION_BUILD};
+ if (remoteVersion == currentVersion)
{
const bool isDevVersion = QStringLiteral(QBT_VERSION_STATUS).contains(
QRegularExpression(u"(alpha|beta|rc)"_s));
if (isDevVersion)
return true;
}
- return (newVersion > currentVersion);
+ return (remoteVersion > currentVersion);
}
QString buildVariant()
@@ -99,7 +96,7 @@ void ProgramUpdater::checkForUpdates() const
m_hasCompletedOneReq = false;
}
-QString ProgramUpdater::getNewVersion() const
+ProgramUpdater::Version ProgramUpdater::getNewVersion() const
{
return shouldUseFallback() ? m_fallbackRemoteVersion : m_remoteVersion;
}
@@ -153,9 +150,10 @@ void ProgramUpdater::rssDownloadFinished(const Net::DownloadResult &result)
if (!version.isEmpty())
{
qDebug("Detected version is %s", qUtf8Printable(version));
- if (isVersionMoreRecent(version))
+ const ProgramUpdater::Version tmpVer {version};
+ if (isVersionMoreRecent(tmpVer))
{
- m_remoteVersion = version;
+ m_remoteVersion = tmpVer;
m_updateURL = updateLink;
}
}
@@ -192,9 +190,9 @@ void ProgramUpdater::fallbackDownloadFinished(const Net::DownloadResult &result)
if (const QJsonValue verJSON = json[platformKey][u"version"_s]; verJSON.isString())
{
- const auto ver = verJSON.toString();
- if (isVersionMoreRecent(ver))
- m_fallbackRemoteVersion = ver;
+ const ProgramUpdater::Version tmpVer {verJSON.toString()};
+ if (isVersionMoreRecent(tmpVer))
+ m_fallbackRemoteVersion = tmpVer;
}
handleFinishedRequest();
@@ -215,10 +213,5 @@ void ProgramUpdater::handleFinishedRequest()
bool ProgramUpdater::shouldUseFallback() const
{
- using Version = Utils::Version<4, 3>;
-
- const auto remote = Version::fromString(m_remoteVersion);
- const auto fallback = Version::fromString(m_fallbackRemoteVersion);
-
- return fallback > remote;
+ return m_fallbackRemoteVersion > m_remoteVersion;
}
diff --git a/src/gui/programupdater.h b/src/gui/programupdater.h
index 3d046f853..531d12118 100644
--- a/src/gui/programupdater.h
+++ b/src/gui/programupdater.h
@@ -30,9 +30,10 @@
#pragma once
#include
-#include
#include
+#include "base/utils/version.h"
+
namespace Net
{
struct DownloadResult;
@@ -45,9 +46,10 @@ class ProgramUpdater final : public QObject
public:
using QObject::QObject;
+ using Version = Utils::Version<4, 3>;
void checkForUpdates() const;
- QString getNewVersion() const;
+ Version getNewVersion() const;
bool updateProgram() const;
signals:
@@ -62,7 +64,7 @@ private:
bool shouldUseFallback() const;
mutable bool m_hasCompletedOneReq = false;
- QString m_remoteVersion;
- QString m_fallbackRemoteVersion;
+ Version m_remoteVersion;
+ Version m_fallbackRemoteVersion;
QUrl m_updateURL;
};