From a5449d470826b1350df20570a48486377ae4b0d6 Mon Sep 17 00:00:00 2001 From: Andrey Rodionov Date: Wed, 13 May 2020 20:34:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pluginmanager.cpp | 18 +++++++++--------- src/pluginmanager.h | 17 +++++++++-------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/pluginmanager.cpp b/src/pluginmanager.cpp index cde12bc..b6b2a8f 100644 --- a/src/pluginmanager.cpp +++ b/src/pluginmanager.cpp @@ -24,12 +24,12 @@ PluginManager *PluginManager::instance() return m_instance; } -QObject *PluginManager::interfaceObject(QString interfaceName) +QObject *PluginManager::interfaceObject(const QString &interfaceName) { return m_interfaces.value(interfaceName, nullptr); } -QList PluginManager::interfaceObjects(QString interfaceName) +QList PluginManager::interfaceObjects(const QString &interfaceName) { return m_interfaces.values(interfaceName); } @@ -88,7 +88,7 @@ bool PluginManager::loadPlugins() } for (const QString &filename : m_pluginsDir.entryList(QDir::Files)) - m_fileList.append({filename, false}); + m_fileList.emplace_back({filename, false}); nextLoadPlugins(); emit endLoadingPlugins(); @@ -96,7 +96,7 @@ bool PluginManager::loadPlugins() return true; } -bool PluginManager::nextLoadPlugins(QString iid) +bool PluginManager::nextLoadPlugins(const QString &iid) { bool result = false; for (FileList &file : m_fileList) { @@ -110,15 +110,15 @@ bool PluginManager::nextLoadPlugins(QString iid) return result; } -bool PluginManager::loadPlugin(QString fileName, QString iid) +bool PluginManager::loadPlugin(const QString &fileName, const QString &iid) { - fileName = m_pluginsDir.absoluteFilePath(fileName); - if (!QLibrary::isLibrary(fileName)) { - qCWarning(lcPlugin) << tr("Файл не является модулем ") + fileName; + QString filePath = m_pluginsDir.absoluteFilePath(fileName); + if (!QLibrary::isLibrary(filePath)) { + qCWarning(lcPlugin) << tr("Файл не является модулем ") + filePath; return false; } - QPluginLoader loader(fileName); + QPluginLoader loader(filePath); QString plugIid = loader.metaData().value("IID").toString(); QRegExp checkIid("\\."+iid+"([\\.\\][0-9]+.?[0-9]*)?"); diff --git a/src/pluginmanager.h b/src/pluginmanager.h index fc039d9..f0e8ebb 100644 --- a/src/pluginmanager.h +++ b/src/pluginmanager.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "pluginglobal.h" @@ -47,16 +48,16 @@ public: ~PluginManager(); //! Получение объекта для указанного интерфейса - QObject *interfaceObject(QString interfaceName); + QObject *interfaceObject(const QString &interfaceName); //! Получение объекта для указанного интерфейса с приведением типа - template T interfaceObject(QString interfaceName) + template T interfaceObject(const QString &interfaceName) { return qobject_cast(m_interfaces.value(interfaceName, nullptr)); } //! Получение объектов для указанного интерфейса - QList interfaceObjects(QString interfaceName); + QList interfaceObjects(const QString &interfaceName); //! Получить зависимые плагины /*! Позволяет получить список зависимых плагинов от указанного @@ -75,10 +76,10 @@ public: bool loadPlugins(); //! Загрузка указанного плагина - bool loadPlugin(QString fileName, QString iid = ""); + bool loadPlugin(const QString &fileName, const QString &iid = ""); //! Загрузка следующего плагина - bool nextLoadPlugins(QString iid = ""); + bool nextLoadPlugins(const QString &iid = ""); //! Устанавливает ссылку на объект для сохранения настроек void setSettings(QSettings *s); @@ -109,8 +110,8 @@ private slots: private: //! Структура файла с плагином struct FileList { - QString filename; - bool lock; + QString filename; //! Имя файла + bool lock; //! Флаг блокировки загрузки файла }; //! Экземпляр менеджера плагинов @@ -129,7 +130,7 @@ private: QDir m_pluginsDir; //! Список файлов в каталоге плагина - QList m_fileList; + std::vector m_fileList; }; }}