[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