From 12d55a5636f00280a2afa30da3202b5d3937f3d0 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 14 Nov 2024 13:41:00 +0100 Subject: [PATCH] Plugins: Change a few usages of PluginSpec::name to ::id First, PluginSpec had only field "name". QtC 15 added "id", which became (a lowercase) copy of "name", and which is the future-proof field to use when identifying a plugin. This change turns usages of PluginSpec::name, which are not exclusively used for user display into PluginSpec::id. In case of id string comparisons, the plugin id string turns to lowercase. Change-Id: Ibae3b06a932158cd6946e1b29192b1db0dd78a40 Reviewed-by: Marcus Tillmanns --- src/app/main.cpp | 4 +-- src/libs/extensionsystem/pluginmanager.cpp | 34 +++++++++---------- .../clangformat/clangformatindenter.cpp | 2 +- src/plugins/coreplugin/coreplugin.cpp | 2 +- src/plugins/cppeditor/cpptoolstestcase.cpp | 2 +- .../componentcore/modelnodeoperations.cpp | 2 +- src/plugins/qmldesigner/dynamiclicensecheck.h | 6 ++-- src/plugins/qmldesigner/qmldesignerplugin.cpp | 2 +- .../qmlpreviewplugin/qmlpreviewplugin.cpp | 2 +- .../tests/qmlpreviewplugin_test.cpp | 2 +- .../buildsystem/qmlbuildsystem.cpp | 2 +- .../qmlmultilanguageaspect.cpp | 12 +++---- .../qmlprojectmanager/qmlprojectplugin.cpp | 2 +- src/plugins/studiowelcome/examplecheckout.cpp | 4 +-- .../pluginmanager/tst_pluginmanager.cpp | 6 ++-- .../pluginspec/testspecs/spec1.json | 3 +- .../pluginspec/tst_pluginspec.cpp | 4 ++- 17 files changed, 47 insertions(+), 44 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 9617037e3e6..6d4ca2f8b1b 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -404,8 +404,8 @@ QStringList lastSessionArgument() { // using insider information here is not particularly beautiful, anyhow const bool hasProjectExplorer = Utils::anyOf(PluginManager::plugins(), - Utils::equal(&PluginSpec::name, - QString("ProjectExplorer"))); + Utils::equal(&PluginSpec::id, + QString("projectexplorer"))); return hasProjectExplorer ? QStringList({"-lastsession"}) : QStringList(); } diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 6f9e0e586ae..a9ee6d60cf2 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -374,7 +374,7 @@ const QStringList PluginManager::allErrors() return Utils::transform(Utils::filtered(plugins(), [](const PluginSpec *spec) { return spec->hasError() && spec->isEffectivelyEnabled(); }), [](const PluginSpec *spec) { - return spec->name().append(": ").append(spec->errorString()); + return spec->id().append(": ").append(spec->errorString()); }); } @@ -444,11 +444,11 @@ QString PluginManager::systemInformation() result += "Plugin information:\n\n"; PluginSpec * const longestSpec = Utils::maxElementOrDefault( d->pluginSpecs, [](const PluginSpec *left, const PluginSpec *right) { - return left->name().size() < right->name().size(); + return left->id().size() < right->id().size(); }); - int size = longestSpec->name().size(); + int size = longestSpec->id().size(); for (const PluginSpec *spec : plugins()) { - result += QLatin1String(spec->isEffectivelyEnabled() ? "+ " : " ") + filled(spec->name(), size) + + result += QLatin1String(spec->isEffectivelyEnabled() ? "+ " : " ") + filled(spec->id(), size) + " " + spec->version() + "\n"; } QString settingspath = QFileInfo(settings()->fileName()).path(); @@ -606,7 +606,7 @@ QString PluginManager::serializedArguments() if (!rc.isEmpty()) rc += separator; rc += QLatin1Char(':'); - rc += ps->name(); + rc += ps->id(); rc += separator; rc += ps->arguments().join(separator); } @@ -660,7 +660,7 @@ void PluginManager::remoteArguments(const QString &serializedArgument, QObject * const QStringList arguments = subList(serializedArguments, QLatin1String(argumentKeywordC)); for (const PluginSpec *ps : plugins()) { if (ps->state() == PluginSpec::Running) { - const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->name()); + const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->id()); if (IPlugin *plugin = ps->plugin()) { QObject *socketParent = plugin->remoteCommand(pluginOptions, workingDirectory, arguments); @@ -815,7 +815,7 @@ void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation, void PluginManager::formatPluginVersions(QTextStream &str) { for (PluginSpec *ps : std::as_const(d->pluginSpecs)) - str << " " << ps->name() << ' ' << ps->version() << ' ' << ps->description() << '\n'; + str << " " << ps->id() << ' ' << ps->version() << ' ' << ps->description() << '\n'; } /*! @@ -969,7 +969,7 @@ void PluginManagerPrivate::startDelayedInitialize() NANOTRACE_SCOPE("ExtensionSystem", "DelayedInitialize"); while (!delayedInitializeQueue.empty()) { PluginSpec *spec = delayedInitializeQueue.front(); - const std::string specName = spec->name().toStdString(); + const std::string specName = spec->id().toStdString(); delayedInitializeQueue.pop(); NANOTRACE_SCOPE(specName, specName + "::delayedInitialized"); profilingReport(">delayedInitialize", spec); @@ -1622,7 +1622,7 @@ public: QDir().mkpath(QFileInfo(m_filePath).absolutePath()); QFile f(m_filePath); if (f.open(QIODevice::WriteOnly)) { - f.write(spec->name().toUtf8()); + f.write(spec->id().toUtf8()); f.write("\n"); f.close(); } else { @@ -1744,11 +1744,11 @@ void PluginManagerPrivate::loadPlugin(PluginSpec *spec, PluginSpec::State destSt if (enableCrashCheck && destState < PluginSpec::Stopped) lockFile.reset(new LockFile(this, spec)); - const std::string specName = spec->name().toStdString(); + const std::string specId = spec->id().toStdString(); switch (destState) { case PluginSpec::Running: { - NANOTRACE_SCOPE(specName, specName + "::extensionsInitialized"); + NANOTRACE_SCOPE(specId, specId + "::extensionsInitialized"); profilingReport(">initializeExtensions", spec); spec->initializeExtensions(); profilingReport("loadLibrary", spec); spec->loadLibrary(); profilingReport("performanceData().load); break; } case PluginSpec::Initialized: { - NANOTRACE_SCOPE(specName, specName + "::initialize"); + NANOTRACE_SCOPE(specId, specId + "::initialize"); profilingReport(">initializePlugin", spec); spec->initializePlugin(); profilingReport("performanceData().initialize); @@ -1865,7 +1865,7 @@ void PluginManagerPrivate::addPlugins(const PluginSpecs &specs) enableDependenciesIndirectly(); checkForDuplicatePlugins(); // ensure deterministic plugin load order by sorting - Utils::sort(pluginSpecs, &PluginSpec::name); + Utils::sort(pluginSpecs, &PluginSpec::id); emit q->pluginsChanged(); } @@ -1966,14 +1966,14 @@ void PluginManagerPrivate::profilingReport(const char *what, const PluginSpec *s if (m_profilingVerbosity > 0) { qDebug("%-22s %-40s %8lldms (%8lldms)", what, - qPrintable(spec->name()), + qPrintable(spec->id()), absoluteElapsedMS, elapsedMS); } if (target) { QString tc; *target = elapsedMS; - tc = spec->name() + '_'; + tc = spec->id() + '_'; tc += QString::fromUtf8(QByteArray(what + 1)); Utils::Benchmarker::report("loadPlugins", tc, elapsedMS); } @@ -1997,7 +1997,7 @@ QString PluginManagerPrivate::profilingSummary(qint64 *totalOut) const continue; const qint64 t = s->performanceData().total(); summary += QString("%1 %2ms ( %3% ) (%4)\n") - .arg(s->name(), -34) + .arg(s->id(), -34) .arg(t, 8) .arg(100.0 * t / total, 5, 'f', 2) .arg(s->performanceData().summary()); diff --git a/src/plugins/clangformat/clangformatindenter.cpp b/src/plugins/clangformat/clangformatindenter.cpp index fc213da18ce..1b2d76813f1 100644 --- a/src/plugins/clangformat/clangformatindenter.cpp +++ b/src/plugins/clangformat/clangformatindenter.cpp @@ -37,7 +37,7 @@ static bool isBeautifierPluginActivated() return std::find_if(specs.begin(), specs.end(), [](ExtensionSystem::PluginSpec *spec) { - return spec->name() == "Beautifier" && spec->isEffectivelyEnabled(); + return spec->id() == "beautifier" && spec->isEffectivelyEnabled(); }) != specs.end(); } diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 1b5bad97b5b..68b8ed4bd0b 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -140,7 +140,7 @@ void CorePlugin::loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin) const QJsonValue mimetypes = metaData.value("Mimetypes"); QString mimetypeString; if (Utils::readMultiLineString(mimetypes, &mimetypeString)) - Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8()); + Utils::addMimeTypes(plugin->id() + ".mimetypes", mimetypeString.trimmed().toUtf8()); } static void initProxyAuthDialog() diff --git a/src/plugins/cppeditor/cpptoolstestcase.cpp b/src/plugins/cppeditor/cpptoolstestcase.cpp index 3ac2feeca38..6f9ecfa267c 100644 --- a/src/plugins/cppeditor/cpptoolstestcase.cpp +++ b/src/plugins/cppeditor/cpptoolstestcase.cpp @@ -46,7 +46,7 @@ bool isClangFormatPresent() { using namespace ExtensionSystem; return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) { - return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled(); + return plugin->id() == "clangformat" && plugin->isEffectivelyEnabled(); }); }; diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index eaad9eca6f0..88bbb8fc65e 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1761,7 +1761,7 @@ bool isEffectComposerActivated() { using namespace ExtensionSystem; return Utils::anyOf(PluginManager::plugins(), [](PluginSpec *spec) { - return spec->name() == "EffectComposer" && spec->isEffectivelyEnabled(); + return spec->id() == "effectcomposer" && spec->isEffectivelyEnabled(); }); } diff --git a/src/plugins/qmldesigner/dynamiclicensecheck.h b/src/plugins/qmldesigner/dynamiclicensecheck.h index 35100c8fd91..1a7970ad7ac 100644 --- a/src/plugins/qmldesigner/dynamiclicensecheck.h +++ b/src/plugins/qmldesigner/dynamiclicensecheck.h @@ -26,7 +26,7 @@ inline ExtensionSystem::IPlugin *licenseCheckerPlugin() { const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, QString("LicenseChecker"))); + Utils::equal(&ExtensionSystem::PluginSpec::id, QString("licensechecker"))); if (pluginSpec) return pluginSpec->plugin(); @@ -37,7 +37,7 @@ inline ExtensionSystem::IPlugin *dsLicenseCheckerPlugin() { const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, QString("DSLicense"))); + Utils::equal(&ExtensionSystem::PluginSpec::id, QString("dslicense"))); if (pluginSpec) return pluginSpec->plugin(); @@ -48,7 +48,7 @@ inline bool dsLicenseCheckerPluginExists() { const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, QString("DSLicense"))); + Utils::equal(&ExtensionSystem::PluginSpec::id, QString("dslicense"))); return pluginSpec; } diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 97621d53936..6b3ed8aeefe 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -324,7 +324,7 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString * // uses simplified Telemetry settings page in case of Qt Design Studio ExtensionSystem::PluginSpec *usageStatistic = Utils::findOrDefault(ExtensionSystem::PluginManager::plugins(), [](ExtensionSystem::PluginSpec *p) { - return p->name() == "UsageStatistic"; + return p->id() == "usagestatistic"; }); if (usageStatistic && usageStatistic->plugin()) diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp index 31c6eb05f43..c32848c8c13 100644 --- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp +++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp @@ -170,7 +170,7 @@ QObject *QmlPreviewWidgetPlugin::getPreviewPlugin() const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(), [](const ExtensionSystem::PluginSpec *p) { - return p->name() == "QmlPreview"; + return p->id() == "qmlpreview"; }); if (pluginIt != specs.cend()) diff --git a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp index 0b005d538f7..07f990e3115 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp +++ b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp @@ -31,7 +31,7 @@ static ExtensionSystem::IPlugin *getPlugin() { const ExtensionSystem::PluginSpecs plugins = ExtensionSystem::PluginManager::plugins(); auto it = std::find_if(plugins.begin(), plugins.end(), [](ExtensionSystem::PluginSpec *spec) { - return spec->name() == "QmlPreview"; + return spec->id() == "qmlpreview"; }); return (it == plugins.end()) ? nullptr : (*it)->plugin(); diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp index 2eae7475c83..7d0c3f00a9b 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp @@ -55,7 +55,7 @@ ExtensionSystem::IPlugin *findMcuSupportPlugin() { const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, QString("McuSupport"))); + Utils::equal(&ExtensionSystem::PluginSpec::id, QString("mcusupport"))); if (pluginSpec) return pluginSpec->plugin(); diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index 7b63452c11c..da3a68a1dfe 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -24,17 +24,17 @@ static bool isMultilanguagePresent() const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); return std::find_if(specs.cbegin(), specs.cend(), [](ExtensionSystem::PluginSpec *spec) { - return spec->name() == "MultiLanguage"; + return spec->id() == "multilanguage"; }) != specs.cend(); } -static QObject *getPlugin(const QString &pluginName) +static QObject *getPlugin(const QString &pluginId) { const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); const auto pluginIt = std::find_if( - specs.cbegin(), specs.cend(), [pluginName](const ExtensionSystem::PluginSpec *p) { - return p->name() == pluginName; + specs.cbegin(), specs.cend(), [pluginId](const ExtensionSystem::PluginSpec *p) { + return p->id() == pluginId; }); if (pluginIt != specs.cend()) @@ -81,7 +81,7 @@ void QmlMultiLanguageAspect::setCurrentLocale(const QString &locale) if (m_currentLocale == locale) return; m_currentLocale = locale; - if (auto previewPlugin = getPlugin("QmlPreview")) + if (auto previewPlugin = getPlugin("qmlpreview")) previewPlugin->setProperty("localeIsoCode", locale); } @@ -92,7 +92,7 @@ QString QmlMultiLanguageAspect::currentLocale() const Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const { - if (auto previewPlugin = getPlugin("MultiLanguage")) { + if (auto previewPlugin = getPlugin("multilanguage")) { const auto multilanguageDatabaseFilePath = previewPlugin->property("multilanguageDatabaseFilePath"); return Utils::FilePath::fromString(multilanguageDatabaseFilePath.toString()); } diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index b92574bcbab..42d6b5b62df 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -74,7 +74,7 @@ static bool isQmlDesigner(const ExtensionSystem::PluginSpec *spec) if (!spec) return false; - return spec->name().contains("QmlDesigner"); + return spec->id().contains("qmldesigner"); } static bool qmlDesignerEnabled() diff --git a/src/plugins/studiowelcome/examplecheckout.cpp b/src/plugins/studiowelcome/examplecheckout.cpp index da0c248535d..6f4487e5f86 100644 --- a/src/plugins/studiowelcome/examplecheckout.cpp +++ b/src/plugins/studiowelcome/examplecheckout.cpp @@ -92,8 +92,8 @@ DataModelDownloader::DataModelDownloader(QObject * /* parent */) const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault(ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, - QString("StudioWelcome"))); + Utils::equal(&ExtensionSystem::PluginSpec::id, + QString("studiowelcome"))); if (!pluginSpec) return; diff --git a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp index 35ed6078139..a0efcaa2e4d 100644 --- a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp +++ b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp @@ -143,14 +143,14 @@ void tst_PluginManager::circularPlugins() const PluginSpecs plugins = PluginManager::plugins(); QCOMPARE(plugins.count(), 3); for (PluginSpec *spec : plugins) { - if (spec->name() == "plugin1") { + if (spec->id() == "plugin1") { QVERIFY(spec->hasError()); QCOMPARE(spec->state(), PluginSpec::Resolved); QCOMPARE(spec->plugin(), static_cast(0)); - } else if (spec->name() == "plugin2") { + } else if (spec->id() == "plugin2") { QVERIFY2(!spec->hasError(), qPrintable(spec->errorString())); QCOMPARE(spec->state(), PluginSpec::Running); - } else if (spec->name() == "plugin3") { + } else if (spec->id() == "plugin3") { QVERIFY(spec->hasError()); QCOMPARE(spec->state(), PluginSpec::Resolved); QCOMPARE(spec->plugin(), static_cast(0)); diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json index 20d51febac0..21ef3ad70d4 100644 --- a/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json +++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json @@ -2,7 +2,8 @@ "IID" : "plugin", "MetaData" : { "Id": "test", - "Name" : "test", + "Name" : "TestPlugin", + "DisplayName" : "Test Plugin", "Version" : "1.0.1", "CompatVersion" : "1.0.0", "VendorId": "theqtcompanyltd", diff --git a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp index a735abf348c..ff75bc039c0 100644 --- a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp +++ b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp @@ -92,7 +92,9 @@ void tst_PluginSpec::read() QVERIFY(spec.readMetaData(metaData("testspecs/spec1.json"))); QCOMPARE(spec.errorString(), QString()); QVERIFY(spec.errorString().isEmpty()); - QCOMPARE(spec.name(), QString("test")); + QCOMPARE(spec.id(), QString("test")); + QCOMPARE(spec.name(), QString("TestPlugin")); + QCOMPARE(spec.displayName(), QString("Test Plugin")); QCOMPARE(spec.version(), QString("1.0.1")); QCOMPARE(spec.compatVersion(), QString("1.0.0")); QCOMPARE(spec.isRequired(), false);