From 7c1a986e61ec1fffcf56d8080ade295dc310a8b5 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Fri, 25 Mar 2022 14:17:22 +0800 Subject: [PATCH] Implement stringable interface for `Version` type --- src/base/search/searchpluginmanager.cpp | 4 ++-- src/base/utils/foreignapps.cpp | 2 +- src/base/utils/version.h | 5 +++-- src/gui/mainwindow.cpp | 4 ++-- src/gui/search/pluginselectdialog.cpp | 4 ++-- src/webui/api/appcontroller.cpp | 2 +- src/webui/api/searchcontroller.cpp | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/base/search/searchpluginmanager.cpp b/src/base/search/searchpluginmanager.cpp index e3d10bdd3..b2c72de02 100644 --- a/src/base/search/searchpluginmanager.cpp +++ b/src/base/search/searchpluginmanager.cpp @@ -232,7 +232,7 @@ void SearchPluginManager::installPlugin_impl(const QString &name, const Path &pa const PluginInfo *plugin = pluginInfo(name); if (plugin && !(plugin->version < newVersion)) { - LogMsg(tr("Plugin already at version %1, which is greater than %2").arg(plugin->version, newVersion), Log::INFO); + LogMsg(tr("Plugin already at version %1, which is greater than %2").arg(plugin->version.toString(), newVersion.toString()), Log::INFO); emit pluginUpdateFailed(name, tr("A more recent version of this plugin is already installed.")); return; } @@ -536,7 +536,7 @@ void SearchPluginManager::parseVersionInfo(const QByteArray &info) ++numCorrectData; if (isUpdateNeeded(pluginName, version)) { - LogMsg(tr("Plugin \"%1\" is outdated, updating to version %2").arg(pluginName, version), Log::INFO); + LogMsg(tr("Plugin \"%1\" is outdated, updating to version %2").arg(pluginName, version.toString()), Log::INFO); updateInfo[pluginName] = version; } } diff --git a/src/base/utils/foreignapps.cpp b/src/base/utils/foreignapps.cpp index 13f96a7e1..2af79ca15 100644 --- a/src/base/utils/foreignapps.cpp +++ b/src/base/utils/foreignapps.cpp @@ -83,7 +83,7 @@ namespace } LogMsg(QCoreApplication::translate("Utils::ForeignApps", "Python detected, executable name: '%1', version: %2") - .arg(info.executableName, info.version), Log::INFO); + .arg(info.executableName, info.version.toString()), Log::INFO); return true; } diff --git a/src/base/utils/version.h b/src/base/utils/version.h index 9dd24cfe2..b9034c5a5 100644 --- a/src/base/utils/version.h +++ b/src/base/utils/version.h @@ -35,11 +35,12 @@ #include "base/exceptions.h" #include "base/global.h" +#include "base/interfaces/istringable.h" namespace Utils { template - class Version + class Version final : public IStringable { static_assert(N > 0, "The number of version components may not be smaller than 1"); static_assert(N >= Mandatory, @@ -108,7 +109,7 @@ namespace Utils return m_components.at(i); } - operator QString() const + QString toString() const override { // find the last one non-zero component std::size_t lastSignificantIndex = N - 1; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 5a44222e9..18cd09ec0 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1892,14 +1892,14 @@ void MainWindow::on_actionSearchWidget_triggered() #ifdef Q_OS_WIN const QMessageBox::StandardButton buttonPressed = QMessageBox::question(this, tr("Old Python Runtime") , tr("Your Python version (%1) is outdated. Minimum requirement: %2.\nDo you want to install a newer version now?") - .arg(pyInfo.version, QLatin1String("3.5.0")) + .arg(pyInfo.version.toString(), u"3.5.0") , (QMessageBox::Yes | QMessageBox::No), QMessageBox::Yes); if (buttonPressed == QMessageBox::Yes) installPython(); #else QMessageBox::information(this, tr("Old Python Runtime") , tr("Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work.\nMinimum requirement: %2.") - .arg(pyInfo.version, QLatin1String("3.5.0"))); + .arg(pyInfo.version.toString(), u"3.5.0")); #endif return; } diff --git a/src/gui/search/pluginselectdialog.cpp b/src/gui/search/pluginselectdialog.cpp index 0be305a15..ca8b68862 100644 --- a/src/gui/search/pluginselectdialog.cpp +++ b/src/gui/search/pluginselectdialog.cpp @@ -315,7 +315,7 @@ void PluginSelectDialog::addNewPlugin(const QString &pluginName) DownloadRequest(plugin->url + u"/favicon.ico").saveToFile(true) , this, &PluginSelectDialog::iconDownloadFinished); } - item->setText(PLUGIN_VERSION, plugin->version); + item->setText(PLUGIN_VERSION, plugin->version.toString()); } void PluginSelectDialog::startAsyncOp() @@ -483,7 +483,7 @@ void PluginSelectDialog::pluginUpdated(const QString &name) finishAsyncOp(); PluginVersion version = m_pluginManager->pluginInfo(name)->version; QTreeWidgetItem *item = findItemWithID(name); - item->setText(PLUGIN_VERSION, version); + item->setText(PLUGIN_VERSION, version.toString()); m_updatedPlugins.append(name); finishPluginUpdate(); } diff --git a/src/webui/api/appcontroller.cpp b/src/webui/api/appcontroller.cpp index 13112210b..fee2fea95 100644 --- a/src/webui/api/appcontroller.cpp +++ b/src/webui/api/appcontroller.cpp @@ -63,7 +63,7 @@ void AppController::webapiVersionAction() { - setResult(static_cast(API_VERSION)); + setResult(API_VERSION.toString()); } void AppController::versionAction() diff --git a/src/webui/api/searchcontroller.cpp b/src/webui/api/searchcontroller.cpp index 7f130ea3b..5e4c085f1 100644 --- a/src/webui/api/searchcontroller.cpp +++ b/src/webui/api/searchcontroller.cpp @@ -388,7 +388,7 @@ QJsonArray SearchController::getPluginsInfo(const QStringList &plugins) const pluginsArray << QJsonObject { {u"name"_qs, pluginInfo->name}, - {u"version"_qs, QString(pluginInfo->version)}, + {u"version"_qs, pluginInfo->version.toString()}, {u"fullName"_qs, pluginInfo->fullName}, {u"url"_qs, pluginInfo->url}, {u"supportedCategories"_qs, getPluginCategories(pluginInfo->supportedCategories)},