Рефакторинг
This commit is contained in:
parent
a605b7bf74
commit
dc5a778c7e
|
@ -15,11 +15,8 @@ IPlugin::IPlugin(const QString& depInterfaces)
|
|||
|
||||
IPlugin::~IPlugin()
|
||||
{
|
||||
// NOTE: Возможно надо сделать на цикле for
|
||||
for (IPlugin *plug : PluginManager::instance()->dependentPlugins(this)) {
|
||||
if (!PluginManager::instance()->dependentPlugins(this).isEmpty())
|
||||
if (plug)
|
||||
delete plug;
|
||||
delete plug;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,28 +52,30 @@ QList<IPlugin *> PluginManager::dependPlugins(IPlugin *plugin)
|
|||
{
|
||||
QHash<QString, IPlugin *> pluginList;
|
||||
|
||||
if (plugin)
|
||||
for (const QString &depInterfaceName : plugin->depModulList())
|
||||
if (plugin) {
|
||||
for (const QString &depInterfaceName : plugin->depModulList()) {
|
||||
for (QObject *objInterfacePlugin : interfaceObjects(depInterfaceName)) {
|
||||
IPlugin *interfacePlugin = qobject_cast<IPlugin *>(objInterfacePlugin);
|
||||
if (interfacePlugin)
|
||||
pluginList[objInterfacePlugin->objectName()] = interfacePlugin;
|
||||
}
|
||||
}
|
||||
}
|
||||
return pluginList.values();
|
||||
}
|
||||
|
||||
QList<IPlugin *> PluginManager::dependentPlugins(IPlugin *plugin)
|
||||
{
|
||||
QHash<QString, IPlugin *> pluginList;
|
||||
QList<IPlugin *> pluginList;
|
||||
|
||||
for (QObject *objPlug : m_interfaces.values("IPlugin")) {
|
||||
IPlugin *dependPlugin = qobject_cast<IPlugin *>(objPlug);
|
||||
if (dependPlugin != nullptr && dependPlugin != plugin) {
|
||||
if (dependPlugins(dependPlugin).contains(plugin))
|
||||
pluginList[objPlug->objectName()] = dependPlugin;
|
||||
IPlugin *somePlugin = qobject_cast<IPlugin *>(objPlug);
|
||||
if (somePlugin != nullptr && somePlugin != plugin) {
|
||||
if (dependPlugins(somePlugin).contains(plugin))
|
||||
pluginList.append(somePlugin);
|
||||
}
|
||||
}
|
||||
return pluginList.values();
|
||||
return pluginList;
|
||||
}
|
||||
|
||||
bool PluginManager::loadPlugins()
|
||||
|
|
|
@ -93,7 +93,6 @@ public:
|
|||
void setPluginsDir(const QDir &pluginsDir);
|
||||
|
||||
signals:
|
||||
|
||||
//! Сигнал о загрузке плагина
|
||||
void loadedPlugin(QObject *plugin);
|
||||
|
||||
|
@ -108,7 +107,7 @@ private slots:
|
|||
void removePlugin(QObject *obj);
|
||||
|
||||
private:
|
||||
|
||||
//! Структура файла с плагином
|
||||
struct FileList {
|
||||
QString filename;
|
||||
bool lock;
|
||||
|
|
Reference in New Issue