diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2024-05-07 08:33:02 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2024-05-08 10:29:59 +0000 |
commit | 657ce51467d74462b030f0a89f74c91b5b36c662 (patch) | |
tree | 30d9992faa3f1f8346f7c5ea7c02f27b6416f7d8 /src/libs | |
parent | aad2f6ecac5f7d7522bec7e509a2ce984a5161af (diff) |
ExtensionSystem: FilePath'ify
Change IPlugin::fileName() and IPlugin::location to use
FilePath instead of QString.
Change-Id: If473ab1e258951735f93221cbd62c505f0727eb2
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/extensionsystem/plugindetailsview.cpp | 2 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginmanager.cpp | 32 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginmanager.h | 5 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginmanager_p.h | 4 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginspec.cpp | 26 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginspec.h | 14 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginview.cpp | 2 |
7 files changed, 45 insertions, 40 deletions
diff --git a/src/libs/extensionsystem/plugindetailsview.cpp b/src/libs/extensionsystem/plugindetailsview.cpp index 291b385219..35e646bad7 100644 --- a/src/libs/extensionsystem/plugindetailsview.cpp +++ b/src/libs/extensionsystem/plugindetailsview.cpp @@ -146,7 +146,7 @@ void PluginDetailsView::update(PluginSpec *spec) d->vendor->setText(spec->vendor()); d->component->setText(spec->category().isEmpty() ? Tr::tr("None") : spec->category()); d->url->setText(QString::fromLatin1("<a href=\"%1\">%1</a>").arg(spec->url())); - d->location->setText(QDir::toNativeSeparators(spec->filePath())); + d->location->setText(spec->filePath().toUserOutput()); const QString pattern = spec->platformSpecification().pattern(); const QString platform = pattern.isEmpty() ? Tr::tr("All") : pattern; const QString platformString = Tr::tr("%1 (current: \"%2\")") diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 85dbf62983..718a66a727 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -443,7 +443,7 @@ FutureSynchronizer *PluginManager::futureSynchronizer() \sa setPluginPaths() */ -QStringList PluginManager::pluginPaths() +FilePaths PluginManager::pluginPaths() { return d->pluginPaths; } @@ -455,7 +455,7 @@ QStringList PluginManager::pluginPaths() \sa pluginPaths() \sa loadPlugins() */ -void PluginManager::setPluginPaths(const QStringList &paths) +void PluginManager::setPluginPaths(const FilePaths &paths) { d->setPluginPaths(paths); } @@ -1732,7 +1732,7 @@ void PluginManagerPrivate::loadPlugin(PluginSpec *spec, PluginSpec::State destSt /*! \internal */ -void PluginManagerPrivate::setPluginPaths(const QStringList &paths) +void PluginManagerPrivate::setPluginPaths(const FilePaths &paths) { qCDebug(pluginLog) << "Plugin search paths:" << paths; qCDebug(pluginLog) << "Required IID:" << pluginIID; @@ -1741,17 +1741,18 @@ void PluginManagerPrivate::setPluginPaths(const QStringList &paths) readPluginPaths(); } -static const QStringList pluginFiles(const QStringList &pluginPaths) +static const FilePaths pluginFiles(const FilePaths &pluginPaths) { - QStringList pluginFiles; - QStringList searchPaths = pluginPaths; + FilePaths pluginFiles; + FilePaths searchPaths = pluginPaths; while (!searchPaths.isEmpty()) { - const QDir dir(searchPaths.takeFirst()); - const QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::NoSymLinks); - const QStringList absoluteFilePaths = Utils::transform(files, &QFileInfo::absoluteFilePath); - pluginFiles += Utils::filtered(absoluteFilePaths, [](const QString &path) { return QLibrary::isLibrary(path); }); - const QFileInfoList dirs = dir.entryInfoList(QDir::Dirs|QDir::NoDotAndDotDot); - searchPaths += Utils::transform(dirs, &QFileInfo::absoluteFilePath); + const FilePath dir = searchPaths.takeFirst().absoluteFilePath(); + const FilePaths files = dir.dirEntries(QDir::Files | QDir::NoSymLinks); + pluginFiles += Utils::filtered(files, [](const FilePath &path) { + return QLibrary::isLibrary(path.toFSPathString()); + }); + const FilePaths dirs = dir.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot); + searchPaths += dirs; } return pluginFiles; } @@ -1793,11 +1794,12 @@ void PluginManagerPrivate::readPluginPaths() QVector<PluginSpec *> newSpecs; // from the file system - for (const QString &pluginFile : pluginFiles(pluginPaths)) { + for (const FilePath &pluginFile : pluginFiles(pluginPaths)) { expected_str<PluginSpec *> spec = readCppPluginSpec(pluginFile); if (!spec) { - qCInfo(pluginLog).noquote() - << QString("Ignoring plugin \"%1\" because: %2").arg(pluginFile).arg(spec.error()); + qCInfo(pluginLog).noquote() << QString("Ignoring plugin \"%1\" because: %2") + .arg(pluginFile.toUserOutput()) + .arg(spec.error()); continue; } newSpecs.append(*spec); diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h index b35df535b7..c5045e7187 100644 --- a/src/libs/extensionsystem/pluginmanager.h +++ b/src/libs/extensionsystem/pluginmanager.h @@ -6,6 +6,7 @@ #include "extensionsystem_global.h" #include <aggregation/aggregate.h> +#include <utils/filepath.h> #include <utils/qtcsettings.h> #include <QObject> @@ -69,8 +70,8 @@ public: static QVector<PluginSpec *> loadQueue(); static void loadPlugins(); static void loadPluginsAtRuntime(const QSet<PluginSpec *> &plugins); - static QStringList pluginPaths(); - static void setPluginPaths(const QStringList &paths); + static Utils::FilePaths pluginPaths(); + static void setPluginPaths(const Utils::FilePaths &paths); static QString pluginIID(); static void setPluginIID(const QString &iid); static const QVector<PluginSpec *> plugins(); diff --git a/src/libs/extensionsystem/pluginmanager_p.h b/src/libs/extensionsystem/pluginmanager_p.h index 074400bd6d..a761614223 100644 --- a/src/libs/extensionsystem/pluginmanager_p.h +++ b/src/libs/extensionsystem/pluginmanager_p.h @@ -53,7 +53,7 @@ public: void addPlugins(const QVector<PluginSpec *> &specs); void shutdown(); - void setPluginPaths(const QStringList &paths); + void setPluginPaths(const Utils::FilePaths &paths); const QVector<ExtensionSystem::PluginSpec *> loadQueue(); void loadPlugin(PluginSpec *spec, PluginSpec::State destState); void resolveDependencies(); @@ -91,7 +91,7 @@ public: QHash<QString, QVector<PluginSpec *>> pluginCategories; QVector<PluginSpec *> pluginSpecs; std::vector<TestSpec> testSpecs; - QStringList pluginPaths; + Utils::FilePaths pluginPaths; QString pluginIID; QVector<QObject *> allObjects; // ### make this a QVector<QPointer<QObject> > > ? QStringList defaultDisabledPlugins; // Plugins/Ignored from install settings diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp index 3e77732328..2d492c385f 100644 --- a/src/libs/extensionsystem/pluginspec.cpp +++ b/src/libs/extensionsystem/pluginspec.cpp @@ -201,8 +201,8 @@ public: QVector<ExtensionSystem::PluginDependency> dependencies; PluginSpec::PluginArgumentDescriptions argumentDescriptions; - QString location; - QString filePath; + FilePath location; + FilePath filePath; bool experimental{false}; bool deprecated{false}; @@ -491,7 +491,7 @@ PluginSpec::PluginArgumentDescriptions PluginSpec::argumentDescriptions() const /*! Returns the absolute path to the directory containing the plugin. */ -QString PluginSpec::location() const +FilePath PluginSpec::location() const { return d->location; } @@ -499,7 +499,7 @@ QString PluginSpec::location() const /*! Returns the absolute path to the plugin. */ -QString PluginSpec::filePath() const +FilePath PluginSpec::filePath() const { return d->filePath; } @@ -692,19 +692,20 @@ namespace { \internal Returns false if the file does not represent a Qt Creator plugin. */ -expected_str<PluginSpec *> readCppPluginSpec(const QString &fileName) +expected_str<PluginSpec *> readCppPluginSpec(const FilePath &fileName) { auto spec = new CppPluginSpec; - QFileInfo fileInfo(fileName); - spec->setLocation(fileInfo.absolutePath()); - spec->setFilePath(fileInfo.absoluteFilePath()); + const FilePath absPath = fileName.absoluteFilePath(); + + spec->setLocation(absPath.parentDir()); + spec->setFilePath(absPath); spec->d->loader.emplace(); if (Utils::HostOsInfo::isMacHost()) spec->d->loader->setLoadHints(QLibrary::ExportExternalSymbolsHint); - spec->d->loader->setFileName(fileInfo.absoluteFilePath()); + spec->d->loader->setFileName(absPath.toFSPathString()); if (spec->d->loader->fileName().isEmpty()) return make_unexpected(::ExtensionSystem::Tr::tr("Cannot open file")); @@ -1110,12 +1111,12 @@ void PluginSpec::setState(State state) d->state = state; } -void PluginSpec::setLocation(const QString &location) +void PluginSpec::setLocation(const FilePath &location) { d->location = location; } -void PluginSpec::setFilePath(const QString &filePath) +void PluginSpec::setFilePath(const FilePath &filePath) { d->filePath = filePath; } @@ -1142,8 +1143,7 @@ bool CppPluginSpec::loadLibrary() return false; } if (d->loader && !d->loader->load()) { - setError(QDir::toNativeSeparators(filePath()) + QString::fromLatin1(": ") - + d->loader->errorString()); + setError(filePath().toUserOutput() + QString::fromLatin1(": ") + d->loader->errorString()); return false; } auto *pluginObject = d->loader ? qobject_cast<IPlugin *>(d->loader->instance()) diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h index becb70f579..7d45fe82c1 100644 --- a/src/libs/extensionsystem/pluginspec.h +++ b/src/libs/extensionsystem/pluginspec.h @@ -8,6 +8,7 @@ #include "iplugin.h" #include <utils/expected.h> +#include <utils/filepath.h> #include <QHash> #include <QStaticPlugin> @@ -120,8 +121,8 @@ public: virtual QJsonObject metaData() const; virtual PerformanceData &performanceData() const; virtual PluginArgumentDescriptions argumentDescriptions() const; - virtual QString location() const; - virtual QString filePath() const; + virtual Utils::FilePath location() const; + virtual Utils::FilePath filePath() const; virtual QStringList arguments() const; virtual void setArguments(const QStringList &arguments); virtual void addArgument(const QString &argument); @@ -160,8 +161,8 @@ protected: protected: virtual void setState(State state); - virtual void setLocation(const QString &location); - virtual void setFilePath(const QString &filePath); + virtual void setLocation(const Utils::FilePath &location); + virtual void setFilePath(const Utils::FilePath &filePath); virtual Utils::expected_str<void> readMetaData(const QJsonObject &metaData); Utils::expected_str<void> reportError(const QString &error); @@ -169,14 +170,15 @@ private: std::unique_ptr<Internal::PluginSpecPrivate> d; }; -EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readCppPluginSpec(const QString &filePath); +EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readCppPluginSpec( + const Utils::FilePath &filePath); EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readCppPluginSpec( const QStaticPlugin &plugin); class EXTENSIONSYSTEM_TEST_EXPORT CppPluginSpec : public PluginSpec { friend EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readCppPluginSpec( - const QString &filePath); + const Utils::FilePath &filePath); friend EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readCppPluginSpec( const QStaticPlugin &plugin); diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp index 07fa11c7a9..902f90aca4 100644 --- a/src/libs/extensionsystem/pluginview.cpp +++ b/src/libs/extensionsystem/pluginview.cpp @@ -119,7 +119,7 @@ public: toolTip = Tr::tr("Path: %1\nPlugin is disabled by command line argument."); else toolTip = Tr::tr("Path: %1"); - return toolTip.arg(QDir::toNativeSeparators(m_spec->filePath())); + return toolTip.arg(m_spec->filePath().toUserOutput()); } if (role == Qt::DecorationRole) { bool ok = !m_spec->hasError(); |