From bb34444ddca39bb76c7319fcdec8913c35ebdbbe Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Mon, 30 Jun 2025 10:08:22 +0300 Subject: [PATCH] Store version numbers in the appropriate type --- src/gui/mainwindow.cpp | 6 +++--- src/gui/programupdater.cpp | 33 +++++++++++++-------------------- src/gui/programupdater.h | 10 ++++++---- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 92c8bc848..dd07ea2ef 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1660,11 +1660,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; };