[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/base/plasma/dataengines/presence
From:       Dariusz Mikulski <dariusz.mikulski () gmail ! com>
Date:       2009-01-12 18:09:58
Message-ID: 1231783798.727829.24041.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 910104 by mikulski:

waiting when account manager is ready

 M  +41 -15    presence.cpp  
 M  +2 -0      presence.h  


--- trunk/playground/base/plasma/dataengines/presence/presence.cpp #910103:910104
@@ -120,6 +120,7 @@
 {
     // Register custom types:
     Telepathy::registerTypes();
+    setIcon(QString());
 }
 
 /**
@@ -127,7 +128,8 @@
  */
 PresenceEngine::~PresenceEngine()
 {
-	delete d->m_accountManager;
+	// \todo: FIXME. Why there is a problem?
+//	delete d->m_accountManager;
 	delete d;
 }
 
@@ -155,13 +157,15 @@
     	new Telepathy::Client::AccountManager(QDBusConnection::sessionBus());
     
     /*
-     * get a list of all the accounts that
-     * are all ready there
+     * connect signal from the account manager
+     * to waiting when it's ready
      */
-    QList<Telepathy::Client::Account *> accounts = d->m_accountManager->allAccounts();
-    kDebug() << "accounts: " << accounts.size();
+    connect(d->m_accountManager->becomeReady(),
+    		SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+    		this,
+    		SLOT(onAccountReady(Telepathy::Client::PendingOperation*))
+    		);
     
-    Telepathy::ObjectPathList objectPathList = d->m_accountManager->allAccountPaths();
     /*
      * connect signals from the account manager
      * to slots within this data engine.
@@ -177,15 +181,6 @@
             this, SLOT(accountValidityChanged(const QDBusObjectPath &, bool)));
     connect(d->m_accountManager, SIGNAL(accountRemoved(const QDBusObjectPath &)),
             this, SLOT(accountRemoved(const QDBusObjectPath &)));
-
-    /*
-     * create a datasource for each
-     * of the accounts we got in the list.
-     */
-    foreach(const QDBusObjectPath &path, objectPathList)
-    {
-        d->createAccountDataSource(path);
-    }
 }
 
 /**
@@ -205,6 +200,37 @@
     return false;
 }
 
+void PresenceEngine::onAccountReady(Telepathy::Client::PendingOperation *operation)
+{
+	kDebug() << "onAccountReady() called";
+	if(operation->isError())
+	{
+		kDebug() << operation->errorName() << ": " << operation->errorMessage();
+		return;
+	}
+	
+    Telepathy::ObjectPathList pathList = d->m_accountManager->allAccountPaths();
+    kDebug() << "All Account Paths: " << pathList.size();
+    
+    /*
+     * get a list of all the accounts that
+     * are all ready there
+     */
+    QList<Telepathy::Client::Account *> accounts = d->m_accountManager->allAccounts();
+    kDebug() << "accounts: " << accounts.size();
+    
+    Telepathy::ObjectPathList objectPathList = d->m_accountManager->allAccountPaths();
+    
+    /*
+     * create a datasource for each
+     * of the accounts we got in the list.
+     */
+    foreach(const QDBusObjectPath &path, objectPathList)
+    {
+        d->createAccountDataSource(path);
+    }
+}
+
 /**
  *  Slot for new account.
  * 
--- trunk/playground/base/plasma/dataengines/presence/presence.h #910103:910104
@@ -20,6 +20,7 @@
 #define PLASMA_DATAENGINE_PRESENCE_H
 
 #include <plasma/dataengine.h>
+#include <TelepathyQt4/Client/PendingOperation>
 
 class QDBusObjectPath;
 
@@ -36,6 +37,7 @@
     bool sourceRequestEvent(const QString & name);
 
 private Q_SLOTS:
+	void onAccountReady(Telepathy::Client::PendingOperation *operation);
     void accountCreated(const QDBusObjectPath &path);
     void accountRemoved(const QDBusObjectPath &path);
     void accountValidityChanged(const QDBusObjectPath &path, bool valid);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic