[Telepathy-commits] [telepathy-qt4/master] PendingAccount: Added objectPath().

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Tue Mar 17 09:59:48 PDT 2009


Added objectPath method on PendingAccount so custom accounts can be constructed.
---
 TelepathyQt4/Client/pending-account.cpp |   37 +++++++++++++++++++++++++------
 TelepathyQt4/Client/pending-account.h   |    3 ++
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/TelepathyQt4/Client/pending-account.cpp b/TelepathyQt4/Client/pending-account.cpp
index cbb4783..3221f36 100644
--- a/TelepathyQt4/Client/pending-account.cpp
+++ b/TelepathyQt4/Client/pending-account.cpp
@@ -51,13 +51,13 @@ namespace Client
 struct PendingAccount::Private
 {
     Private(AccountManager *manager) :
-        manager(manager),
-        account(0)
+        manager(manager)
     {
     }
 
     AccountManager *manager;
     QSharedPointer<Account> account;
+    QDBusObjectPath objectPath;
 };
 
 /**
@@ -126,19 +126,42 @@ QSharedPointer<Account> PendingAccount::account() const
         return QSharedPointer<Account>();
     }
 
+    if (!mPriv->account) {
+        mPriv->account = QSharedPointer<Account>(
+                new Account(mPriv->manager, mPriv->objectPath.path()));
+    }
+
     return mPriv->account;
 }
 
+/**
+ * Returns the account object path or an empty string on error.
+ *
+ * This method is useful for creating custom Account objects, so instead of using
+ * PendingAccount::account, one could construct a new custom account with
+ * the object path.
+ *
+ * \return Account object path.
+ */
+QString PendingAccount::objectPath() const
+{
+    if (!isFinished()) {
+        warning() << "PendingAccount::account called before finished";
+    } else if (!isValid()) {
+        warning() << "PendingAccount::account called when not valid";
+    }
+
+    return mPriv->objectPath.path();
+}
+
 void PendingAccount::onCallFinished(QDBusPendingCallWatcher *watcher)
 {
     QDBusPendingReply<QDBusObjectPath> reply = *watcher;
 
     if (!reply.isError()) {
-        debug() << "Got reply to AccountManager.CreateAccount";
-        QDBusObjectPath objectPath = reply.value();
-        debug() << "Creating account for objectPath: " << objectPath.path();
-        mPriv->account = QSharedPointer<Account>(
-                new Account(mPriv->manager, objectPath.path()));
+        mPriv->objectPath = reply.value();
+        debug() << "Got reply to AccountManager.CreateAccount - object path:" <<
+            mPriv->objectPath.path();
         setFinished();
     } else {
         debug().nospace() <<
diff --git a/TelepathyQt4/Client/pending-account.h b/TelepathyQt4/Client/pending-account.h
index c483497..1c54c5c 100644
--- a/TelepathyQt4/Client/pending-account.h
+++ b/TelepathyQt4/Client/pending-account.h
@@ -50,8 +50,11 @@ public:
     ~PendingAccount();
 
     AccountManager *manager() const;
+
     QSharedPointer<Account> account() const;
 
+    QString objectPath() const;
+
 private Q_SLOTS:
     void onCallFinished(QDBusPendingCallWatcher *watcher);
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list