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