Рефакторинг

This commit is contained in:
Andrey Rodionov 2020-05-13 20:34:24 +03:00
parent d68283b5a4
commit a5449d4708
2 changed files with 18 additions and 17 deletions

View File

@ -24,12 +24,12 @@ PluginManager *PluginManager::instance()
return m_instance; return m_instance;
} }
QObject *PluginManager::interfaceObject(QString interfaceName) QObject *PluginManager::interfaceObject(const QString &interfaceName)
{ {
return m_interfaces.value(interfaceName, nullptr); return m_interfaces.value(interfaceName, nullptr);
} }
QList<QObject *> PluginManager::interfaceObjects(QString interfaceName) QList<QObject *> PluginManager::interfaceObjects(const QString &interfaceName)
{ {
return m_interfaces.values(interfaceName); return m_interfaces.values(interfaceName);
} }
@ -88,7 +88,7 @@ bool PluginManager::loadPlugins()
} }
for (const QString &filename : m_pluginsDir.entryList(QDir::Files)) for (const QString &filename : m_pluginsDir.entryList(QDir::Files))
m_fileList.append({filename, false}); m_fileList.emplace_back<FileList>({filename, false});
nextLoadPlugins(); nextLoadPlugins();
emit endLoadingPlugins(); emit endLoadingPlugins();
@ -96,7 +96,7 @@ bool PluginManager::loadPlugins()
return true; return true;
} }
bool PluginManager::nextLoadPlugins(QString iid) bool PluginManager::nextLoadPlugins(const QString &iid)
{ {
bool result = false; bool result = false;
for (FileList &file : m_fileList) { for (FileList &file : m_fileList) {
@ -110,15 +110,15 @@ bool PluginManager::nextLoadPlugins(QString iid)
return result; return result;
} }
bool PluginManager::loadPlugin(QString fileName, QString iid) bool PluginManager::loadPlugin(const QString &fileName, const QString &iid)
{ {
fileName = m_pluginsDir.absoluteFilePath(fileName); QString filePath = m_pluginsDir.absoluteFilePath(fileName);
if (!QLibrary::isLibrary(fileName)) { if (!QLibrary::isLibrary(filePath)) {
qCWarning(lcPlugin) << tr("Файл не является модулем ") + fileName; qCWarning(lcPlugin) << tr("Файл не является модулем ") + filePath;
return false; return false;
} }
QPluginLoader loader(fileName); QPluginLoader loader(filePath);
QString plugIid = loader.metaData().value("IID").toString(); QString plugIid = loader.metaData().value("IID").toString();
QRegExp checkIid("\\."+iid+"([\\.\\][0-9]+.?[0-9]*)?"); QRegExp checkIid("\\."+iid+"([\\.\\][0-9]+.?[0-9]*)?");

View File

@ -4,6 +4,7 @@
#include <QObject> #include <QObject>
#include <QSettings> #include <QSettings>
#include <QDir> #include <QDir>
#include <vector>
#include "pluginglobal.h" #include "pluginglobal.h"
@ -47,16 +48,16 @@ public:
~PluginManager(); ~PluginManager();
//! Получение объекта для указанного интерфейса //! Получение объекта для указанного интерфейса
QObject *interfaceObject(QString interfaceName); QObject *interfaceObject(const QString &interfaceName);
//! Получение объекта для указанного интерфейса с приведением типа //! Получение объекта для указанного интерфейса с приведением типа
template<typename T> T interfaceObject(QString interfaceName) template<typename T> T interfaceObject(const QString &interfaceName)
{ {
return qobject_cast<T>(m_interfaces.value(interfaceName, nullptr)); return qobject_cast<T>(m_interfaces.value(interfaceName, nullptr));
} }
//! Получение объектов для указанного интерфейса //! Получение объектов для указанного интерфейса
QList<QObject *> interfaceObjects(QString interfaceName); QList<QObject *> interfaceObjects(const QString &interfaceName);
//! Получить зависимые плагины //! Получить зависимые плагины
/*! Позволяет получить список зависимых плагинов от указанного /*! Позволяет получить список зависимых плагинов от указанного
@ -75,10 +76,10 @@ public:
bool loadPlugins(); 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); void setSettings(QSettings *s);
@ -109,8 +110,8 @@ private slots:
private: private:
//! Структура файла с плагином //! Структура файла с плагином
struct FileList { struct FileList {
QString filename; QString filename; //! Имя файла
bool lock; bool lock; //! Флаг блокировки загрузки файла
}; };
//! Экземпляр менеджера плагинов //! Экземпляр менеджера плагинов
@ -129,7 +130,7 @@ private:
QDir m_pluginsDir; QDir m_pluginsDir;
//! Список файлов в каталоге плагина //! Список файлов в каталоге плагина
QList<FileList> m_fileList; std::vector<FileList> m_fileList;
}; };
}} }}