From 3245ff4ef4d6ad0babc223d100d31742a3380e19 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 6 Jul 2017 23:38:42 +0200 Subject: [PATCH] Ref T103, plugin directory now from CDirectoryUtils::pluginDirectory() Hence we can use const QString & like const QString &CPluginManagerWeatherData::pluginDirectory() --- src/blackcore/pluginmanager.cpp | 4 ++-- src/blackcore/pluginmanager.h | 2 +- src/blackcore/pluginmanagersimulator.cpp | 12 +++++++----- src/blackcore/pluginmanagersimulator.h | 2 +- src/blackcore/pluginmanagerweatherdata.cpp | 6 +++--- src/blackcore/pluginmanagerweatherdata.h | 6 ++---- src/blackmisc/directoryutils.cpp | 6 ++++++ src/blackmisc/directoryutils.h | 3 +++ 8 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/blackcore/pluginmanager.cpp b/src/blackcore/pluginmanager.cpp index 527240a83..886586fb5 100644 --- a/src/blackcore/pluginmanager.cpp +++ b/src/blackcore/pluginmanager.cpp @@ -50,9 +50,9 @@ namespace BlackCore return m_configs.contains(identifier) ? m_configs.value(identifier) : QString(); } - QString IPluginManager::pluginDirectory() const + const QString &IPluginManager::pluginDirectory() const { - return CDirectoryUtils::binDirectory() % QStringLiteral("/plugins"); + return CDirectoryUtils::pluginsDirectory(); } bool IPluginManager::isValid(const QJsonObject &metadata) const diff --git a/src/blackcore/pluginmanager.h b/src/blackcore/pluginmanager.h index b83ef41d6..035efa9da 100644 --- a/src/blackcore/pluginmanager.h +++ b/src/blackcore/pluginmanager.h @@ -56,7 +56,7 @@ namespace BlackCore //! Where to look for plugins, absolute path. //! Default implementation returns `plugins` in the application dir. - virtual QString pluginDirectory() const; + virtual const QString &pluginDirectory() const; //! Defines whether the given plugin is valid or not, based on its metadata. //! The default implementation checks if all values common for all plugins diff --git a/src/blackcore/pluginmanagersimulator.cpp b/src/blackcore/pluginmanagersimulator.cpp index 0f90b60f4..5139bace7 100644 --- a/src/blackcore/pluginmanagersimulator.cpp +++ b/src/blackcore/pluginmanagersimulator.cpp @@ -20,7 +20,6 @@ namespace BlackCore { - using namespace BlackMisc; using namespace BlackMisc::Simulation; @@ -88,7 +87,8 @@ namespace BlackCore for (const QJsonObject &json : plugins) { QString iid = json["IID"].toString(); - if (iid == QStringLiteral("org.swift-project.blackcore.simulatorinterface")) { + if (iid == QStringLiteral("org.swift-project.blackcore.simulatorinterface")) + { auto it = m_plugins.insert(pluginIdentifier(json), {}); it->info.convertFromJson(json); } @@ -97,14 +97,16 @@ namespace BlackCore BlackMisc::CSequence CPluginManagerSimulator::acceptedIids() const { - return { + return + { QStringLiteral("org.swift-project.blackcore.simulatorinterface"), QStringLiteral("org.swift-project.blackgui.pluginconfiginterface") }; } - QString CPluginManagerSimulator::pluginDirectory() const + const QString &CPluginManagerSimulator::pluginDirectory() const { - return CDirectoryUtils::binDirectory() % QStringLiteral("/plugins/simulator"); + static const QString d(CFileUtils::appendFilePaths(CDirectoryUtils::pluginsDirectory(), "simulator")); + return d; } } diff --git a/src/blackcore/pluginmanagersimulator.h b/src/blackcore/pluginmanagersimulator.h index 645cd63e8..3bddd267d 100644 --- a/src/blackcore/pluginmanagersimulator.h +++ b/src/blackcore/pluginmanagersimulator.h @@ -64,7 +64,7 @@ namespace BlackCore virtual BlackMisc::CSequence acceptedIids() const override; //! \copydoc BlackCore::IPluginManager::pluginDirectory() - virtual QString pluginDirectory() const override; + virtual const QString &pluginDirectory() const override; private: /*! diff --git a/src/blackcore/pluginmanagerweatherdata.cpp b/src/blackcore/pluginmanagerweatherdata.cpp index 01fa66a9c..481ab5f70 100644 --- a/src/blackcore/pluginmanagerweatherdata.cpp +++ b/src/blackcore/pluginmanagerweatherdata.cpp @@ -65,9 +65,9 @@ namespace BlackCore }; } - QString CPluginManagerWeatherData::pluginDirectory() const + const QString &CPluginManagerWeatherData::pluginDirectory() const { - return CDirectoryUtils::binDirectory() % QStringLiteral("/plugins/weatherdata"); + static const QString d(CFileUtils::appendFilePaths(CDirectoryUtils::pluginsDirectory(), "weatherdata")); + return d; } - } diff --git a/src/blackcore/pluginmanagerweatherdata.h b/src/blackcore/pluginmanagerweatherdata.h index 6ffe35ce2..391239f64 100644 --- a/src/blackcore/pluginmanagerweatherdata.h +++ b/src/blackcore/pluginmanagerweatherdata.h @@ -24,7 +24,6 @@ #include namespace BlackMisc { class CVariant; } - namespace BlackCore { class IWeatherDataFactory; @@ -33,7 +32,7 @@ namespace BlackCore * Manages plugins of type WeatherData. */ class BLACKCORE_EXPORT CPluginManagerWeatherData : - public BlackCore::IPluginManager + public BlackCore::IPluginManager { Q_OBJECT @@ -55,7 +54,7 @@ namespace BlackCore virtual BlackMisc::CSequence acceptedIids() const override; //! \copydoc BlackCore::IPluginManager::pluginDirectory() - virtual QString pluginDirectory() const override; + virtual const QString &pluginDirectory() const override; private: //! Extended data for plugin @@ -66,7 +65,6 @@ namespace BlackCore QMap m_plugins; //!< Id <-> extended data pairs }; - } // namespace #endif // guard diff --git a/src/blackmisc/directoryutils.cpp b/src/blackmisc/directoryutils.cpp index 09bc6cf5e..20bd1c584 100644 --- a/src/blackmisc/directoryutils.cpp +++ b/src/blackmisc/directoryutils.cpp @@ -39,6 +39,12 @@ namespace BlackMisc return binDir; } + const QString &CDirectoryUtils::pluginsDirectory() + { + static const QString pDir(CFileUtils::appendFilePaths(binDirectory(), "plugins")); + return pDir; + } + QString normalizedApplicationDirectoryImpl() { QString appDir = CDirectoryUtils::binDirectory(); diff --git a/src/blackmisc/directoryutils.h b/src/blackmisc/directoryutils.h index f22369326..f35c56098 100644 --- a/src/blackmisc/directoryutils.h +++ b/src/blackmisc/directoryutils.h @@ -31,6 +31,9 @@ namespace BlackMisc //! \see https://dev.swift-project.org/w/dev/swiftpc/dirstructure/ static const QString &binDirectory(); + //! Plugins directory + static const QString &pluginsDirectory(); + //! swift application data directory, contains 0..n swift installation directories static const QString &applicationDataDirectory();