Implement stringable interface for Version type

This commit is contained in:
Chocobo1 2022-03-25 14:17:22 +08:00
parent c6b772da11
commit 7c1a986e61
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
7 changed files with 12 additions and 11 deletions

View file

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

View file

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

View file

@ -35,11 +35,12 @@
#include "base/exceptions.h"
#include "base/global.h"
#include "base/interfaces/istringable.h"
namespace Utils
{
template <typename T, std::size_t N, std::size_t Mandatory = N>
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;

View file

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

View file

@ -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();
}

View file

@ -63,7 +63,7 @@
void AppController::webapiVersionAction()
{
setResult(static_cast<QString>(API_VERSION));
setResult(API_VERSION.toString());
}
void AppController::versionAction()

View file

@ -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)},