Рефакторинг
This commit is contained in:
parent
d68283b5a4
commit
a5449d4708
|
@ -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]*)?");
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
Reference in New Issue