From e297dbd8052ef4e66f069e2dd1865ae7fa8af28e Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Thu, 21 Mar 2013 11:01:59 +0100 Subject: Imported Upstream version 0.3.1.0 --- CopyListener.cpp | 75 ++++++++++++++++++++------------------------------------ 1 file changed, 27 insertions(+), 48 deletions(-) (limited to 'CopyListener.cpp') diff --git a/CopyListener.cpp b/CopyListener.cpp index 4387156..c648b97 100755 --- a/CopyListener.cpp +++ b/CopyListener.cpp @@ -7,11 +7,11 @@ #include "CopyListener.h" - -CopyListener::CopyListener(QObject *parent) : - QObject(parent) +CopyListener::CopyListener(OptionDialog *optionDialog) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); + this->optionDialog=optionDialog; + pluginLoader=new PluginLoader(optionDialog); //load the options tryListen=false; QList > KeysList; @@ -19,14 +19,15 @@ CopyListener::CopyListener(QObject *parent) : options->addOptionGroup("CopyListener",KeysList); plugins->lockPluginListEdition(); QList list=plugins->getPluginsByCategory(PluginType_Listener); - foreach(PluginsAvailable currentPlugin,list) - onePluginAdded(currentPlugin); qRegisterMetaType("PluginsAvailable"); qRegisterMetaType("ListeningState"); - 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(&pluginLoader,SIGNAL(pluginLoaderReady(CatchState,bool,bool)), this,SIGNAL(pluginLoaderReady(CatchState,bool,bool))); + connect(plugins,SIGNAL(pluginListingIsfinish()), this,SLOT(allPluginIsloaded()),Qt::QueuedConnection); + connect(pluginLoader,SIGNAL(pluginLoaderReady(CatchState,bool,bool)), this,SIGNAL(pluginLoaderReady(CatchState,bool,bool))); + foreach(PluginsAvailable currentPlugin,list) + emit previouslyPluginAdded(currentPlugin); plugins->unlockPluginListEdition(); last_state=NotListening; last_have_plugin=false; @@ -39,6 +40,7 @@ CopyListener::~CopyListener() QList list=plugins->getPluginsByCategory(PluginType_Listener); foreach(PluginsAvailable currentPlugin,list) onePluginWillBeRemoved(currentPlugin); + delete pluginLoader; } void CopyListener::resendState() @@ -46,7 +48,7 @@ void CopyListener::resendState() if(plugins->allPluginHaveBeenLoaded()) { sendState(true); - pluginLoader.resendState(); + pluginLoader->resendState(); } } @@ -56,8 +58,8 @@ void CopyListener::onePluginAdded(const PluginsAvailable &plugin) return; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"try load: "+plugin.path+PluginsManager::getResolvedPluginName("listener")); //setFileName - QPluginLoader *pluginLoader=new QPluginLoader(plugin.path+PluginsManager::getResolvedPluginName("listener")); - QObject *pluginInstance = pluginLoader->instance(); + QPluginLoader *pluginOfPluginLoader=new QPluginLoader(plugin.path+PluginsManager::getResolvedPluginName("listener")); + QObject *pluginInstance = pluginOfPluginLoader->instance(); if(pluginInstance) { PluginInterface_Listener *listen = qobject_cast(pluginInstance); @@ -67,8 +69,8 @@ void CopyListener::onePluginAdded(const PluginsAvailable &plugin) { if(pluginList.at(index).listenInterface==listen) { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Plugin already found")); - pluginLoader->unload(); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Plugin already found %1 for %2").arg(pluginList.at(index).path).arg(plugin.path)); + pluginOfPluginLoader->unload(); return; } index++; @@ -85,12 +87,14 @@ void CopyListener::onePluginAdded(const PluginsAvailable &plugin) connect(listen,SIGNAL(newMove(quint32,QStringList,QString)), this,SLOT(newPluginMove(quint32,QStringList,QString))); PluginListener newPluginListener; newPluginListener.listenInterface = listen; - newPluginListener.pluginLoader = pluginLoader; + newPluginListener.pluginLoader = pluginOfPluginLoader; newPluginListener.path = plugin.path+PluginsManager::getResolvedPluginName("listener"); newPluginListener.state = NotListening; newPluginListener.inWaitOfReply = false; newPluginListener.options=new LocalPluginOptions("Listener-"+plugin.name); newPluginListener.listenInterface->setResources(newPluginListener.options,plugin.writablePath,plugin.path,ULTRACOPIER_VERSION_PORTABLE_BOOL); + optionDialog->addPluginOptionWidget(PluginType_Listener,plugin.name,newPluginListener.listenInterface->options()); + connect(languages,SIGNAL(newLanguageLoaded(QString)),newPluginListener.listenInterface,SLOT(newLanguageLoaded())); pluginList << newPluginListener; connect(pluginList.last().listenInterface,SIGNAL(newState(ListeningState)),this,SLOT(newState(ListeningState))); if(tryListen) @@ -100,10 +104,10 @@ void CopyListener::onePluginAdded(const PluginsAvailable &plugin) } } else - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to cast the plugin: "+pluginLoader->errorString()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to cast the plugin: "+pluginOfPluginLoader->errorString()); } else - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to load the plugin: "+pluginLoader->errorString()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to load the plugin: "+pluginOfPluginLoader->errorString()); } #ifdef ULTRACOPIER_DEBUG @@ -184,14 +188,14 @@ void CopyListener::listen() pluginList.at(index).listenInterface->listen(); index++; } - pluginLoader.load(); + pluginLoader->load(); } void CopyListener::close() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); tryListen=false; - pluginLoader.unload(); + pluginLoader->unload(); int index=0; while(index