Commit 5189dd00 authored by Marko Mattila's avatar Marko Mattila

[transfer-engine] Fix to account and share method list handling.

Review fixes
parent 04737e5b
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
#include <signal.h> #include <signal.h>
#include <Accounts/Manager>
#define SHARE_PLUGINS_PATH "/usr/lib/nemo-transferengine/plugins" #define SHARE_PLUGINS_PATH "/usr/lib/nemo-transferengine/plugins"
#define CONFIG_PATH "/usr/share/nemo-transferengine/nemo-transfer-engine.conf" #define CONFIG_PATH "/usr/share/nemo-transferengine/nemo-transfer-engine.conf"
#define FILE_WATCHER_TIMEOUT 5000 #define FILE_WATCHER_TIMEOUT 5000
...@@ -153,7 +155,6 @@ TransferEnginePrivate::TransferEnginePrivate(TransferEngine *parent): ...@@ -153,7 +155,6 @@ TransferEnginePrivate::TransferEnginePrivate(TransferEngine *parent):
connect(m_accountManager, SIGNAL(accountCreated(Accounts::AccountId)), this, SLOT(enabledPluginsCheck())); connect(m_accountManager, SIGNAL(accountCreated(Accounts::AccountId)), this, SLOT(enabledPluginsCheck()));
connect(m_accountManager, SIGNAL(accountRemoved(Accounts::AccountId)), this, SLOT(enabledPluginsCheck())); connect(m_accountManager, SIGNAL(accountRemoved(Accounts::AccountId)), this, SLOT(enabledPluginsCheck()));
connect(m_accountManager, SIGNAL(accountUpdated(Accounts::AccountId)), this, SLOT(enabledPluginsCheck())); connect(m_accountManager, SIGNAL(accountUpdated(Accounts::AccountId)), this, SLOT(enabledPluginsCheck()));
connect(m_accountManager, SIGNAL(enabledEvent(Accounts::AccountId)), this, SLOT(enabledPluginsCheck()));
// Exit safely stuff if we recieve certain signal or there are no active transfers // Exit safely stuff if we recieve certain signal or there are no active transfers
Q_Q(TransferEngine); Q_Q(TransferEngine);
...@@ -188,6 +189,11 @@ void TransferEnginePrivate::enabledPluginsCheck() ...@@ -188,6 +189,11 @@ void TransferEnginePrivate::enabledPluginsCheck()
m_fileWatcherTimer->stop(); m_fileWatcherTimer->stop();
} }
if (m_infoObjects.count() > 0) {
qWarning() << Q_FUNC_INFO << "Already quering account info" << m_infoObjects.count();
return;
}
// First clear old data // First clear old data
m_enabledPlugins.clear(); m_enabledPlugins.clear();
qDeleteAll(m_infoObjects); qDeleteAll(m_infoObjects);
...@@ -217,12 +223,20 @@ void TransferEnginePrivate::enabledPluginsCheck() ...@@ -217,12 +223,20 @@ void TransferEnginePrivate::enabledPluginsCheck()
continue; continue;
} }
// Put info object to temporary container to wait that query result if (info->ready()) {
// is returned. These object will be cleaned in pluginInfoReady() slot. if (info->info().count() > 0) {
m_infoObjects << info; m_enabledPlugins << info->info();
connect(info, SIGNAL(infoReady()), this, SLOT(pluginInfoReady())); } else {
connect(info, SIGNAL(infoError(QString)), this, SLOT(pluginInfoError(QString))); // Plugin has nothing to provide, just ignore it
info->query(); delete info;
}
} else {
// These object will be cleaned in pluginInfoReady() slot.
m_infoObjects << info;
connect(info, SIGNAL(infoReady()), this, SLOT(pluginInfoReady()));
connect(info, SIGNAL(infoError(QString)), this, SLOT(pluginInfoError(QString)));
info->query();
}
} }
if (!interface) { if (!interface) {
...@@ -608,10 +622,18 @@ void TransferEnginePrivate::updateProgress(qreal progress) ...@@ -608,10 +622,18 @@ void TransferEnginePrivate::updateProgress(qreal progress)
void TransferEnginePrivate::pluginInfoReady() void TransferEnginePrivate::pluginInfoReady()
{ {
TransferPluginInfo *infoObj = qobject_cast<TransferPluginInfo*>(sender()); TransferPluginInfo *infoObj = qobject_cast<TransferPluginInfo*>(sender());
m_enabledPlugins << infoObj->info();
m_infoObjects.removeOne(infoObj); QList<TransferMethodInfo> infoList = infoObj->info();
delete infoObj; if (!infoList.isEmpty()) {
m_enabledPlugins << infoList;
}
if (m_infoObjects.removeOne(infoObj)) {
delete infoObj;
} else {
qWarning() << Q_FUNC_INFO << "Failed to remove info object!";
delete infoObj;
}
if (m_infoObjects.isEmpty()) { if (m_infoObjects.isEmpty()) {
Q_Q(TransferEngine); Q_Q(TransferEngine);
......
...@@ -35,7 +35,9 @@ ...@@ -35,7 +35,9 @@
#include "mediatransferinterface.h" #include "mediatransferinterface.h"
#include "transfermethodinfo.h" #include "transfermethodinfo.h"
#include <Accounts/Manager> namespace Accounts {
class Manager;
}
class QFileSystemWatcher; class QFileSystemWatcher;
class QTimer; class QTimer;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment