summaryrefslogtreecommitdiff
path: root/PluginLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'PluginLoader.cpp')
-rwxr-xr-xPluginLoader.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/PluginLoader.cpp b/PluginLoader.cpp
index 2a59cb9..1e63633 100755
--- a/PluginLoader.cpp
+++ b/PluginLoader.cpp
@@ -7,22 +7,23 @@
#include "PluginLoader.h"
-PluginLoader::PluginLoader(QObject *parent) :
- QObject(parent)
+PluginLoader::PluginLoader(OptionDialog *optionDialog)
{
ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
+ this->optionDialog=optionDialog;
//load the overall instance
plugins=PluginsManager::getInstance();
//load the plugin
plugins->lockPluginListEdition();
- QList<PluginsAvailable> list=plugins->getPluginsByCategory(PluginType_PluginLoader);
- foreach(PluginsAvailable currentPlugin,list)
- onePluginAdded(currentPlugin);
qRegisterMetaType<PluginsAvailable>("PluginsAvailable");
qRegisterMetaType<CatchState>("CatchState");
- connect(plugins,SIGNAL(onePluginAdded(PluginsAvailable)), this,SLOT(onePluginAdded(PluginsAvailable)));
+ connect(this,SIGNAL(previouslyPluginAdded(PluginsAvailable)), this,SLOT(onePluginAdded(PluginsAvailable)),Qt::QueuedConnection);
+ connect(plugins,SIGNAL(onePluginAdded(PluginsAvailable)), this,SLOT(onePluginAdded(PluginsAvailable)),Qt::QueuedConnection);
connect(plugins,SIGNAL(onePluginWillBeRemoved(PluginsAvailable)), this,SLOT(onePluginWillBeRemoved(PluginsAvailable)),Qt::DirectConnection);
- connect(plugins,SIGNAL(pluginListingIsfinish()), this,SLOT(allPluginIsloaded()));
+ connect(plugins,SIGNAL(pluginListingIsfinish()), this,SLOT(allPluginIsloaded()),Qt::QueuedConnection);
+ QList<PluginsAvailable> list=plugins->getPluginsByCategory(PluginType_PluginLoader);
+ foreach(PluginsAvailable currentPlugin,list)
+ emit previouslyPluginAdded(currentPlugin);
plugins->unlockPluginListEdition();
needEnable=false;
last_state=Uncaught;
@@ -83,7 +84,9 @@ void PluginLoader::onePluginAdded(const PluginsAvailable &plugin)
newEntry.inWaitOfReply = false;
pluginList << newEntry;
PluginLoader->setResources(newEntry.options,plugin.writablePath,plugin.path,ULTRACOPIER_VERSION_PORTABLE_BOOL);
+ optionDialog->addPluginOptionWidget(PluginType_PluginLoader,plugin.name,newEntry.PluginLoaderInterface->options());
connect(pluginList.last().PluginLoaderInterface,SIGNAL(newState(CatchState)),this,SLOT(newState(CatchState)));
+ connect(languages,SIGNAL(newLanguageLoaded(QString)),newEntry.PluginLoaderInterface,SLOT(newLanguageLoaded()));
if(needEnable)
{
pluginList.last().inWaitOfReply=true;
@@ -133,6 +136,7 @@ void PluginLoader::load()
pluginList.at(index).PluginLoaderInterface->setEnabled(true);
index++;
}
+ sendState(true);
}
void PluginLoader::unload()
@@ -146,6 +150,7 @@ void PluginLoader::unload()
pluginList.at(index).PluginLoaderInterface->setEnabled(false);
index++;
}
+ sendState(true);
}
#ifdef ULTRACOPIER_DEBUG
@@ -185,7 +190,12 @@ void PluginLoader::sendState(bool force)
ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("current_state: %1").arg(current_state));
if(current_state==Uncaught)
{
- if(found_not_listen && !found_listen)
+ if(!found_not_listen && !found_listen)
+ {
+ if(needEnable)
+ current_state=Caught;
+ }
+ else if(found_not_listen && !found_listen)
current_state=Uncaught;
else if(!found_not_listen && found_listen)
current_state=Caught;
@@ -200,7 +210,7 @@ void PluginLoader::sendState(bool force)
}
else
ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Skip the signal sending"));
- last_state=Uncaught;
+ last_state=current_state;
last_have_plugin=have_plugin;
last_inWaitOfReply=found_inWaitOfReply;
}