Рефакторинг

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;
}
QObject *PluginManager::interfaceObject(QString interfaceName)
QObject *PluginManager::interfaceObject(const QString &interfaceName)
{
return m_interfaces.value(interfaceName, nullptr);
}
QList<QObject *> PluginManager::interfaceObjects(QString interfaceName)
QList<QObject *> 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<FileList>({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]*)?");

View File

@ -4,6 +4,7 @@
#include <QObject>
#include <QSettings>
#include <QDir>
#include <vector>
#include "pluginglobal.h"
@ -47,16 +48,16 @@ public:
~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));
}
//! Получение объектов для указанного интерфейса
QList<QObject *> interfaceObjects(QString interfaceName);
QList<QObject *> 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<FileList> m_fileList;
std::vector<FileList> m_fileList;
};
}}