[Telepathy-commits] [telepathy-qt4/master] ConnectionManager: Added features param on isReady/becomeReady.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Fri Feb 13 11:23:33 PST 2009


---
 TelepathyQt4/Client/connection-manager-internal.h |    1 +
 TelepathyQt4/Client/connection-manager.cpp        |   12 +++++++-----
 TelepathyQt4/Client/connection-manager.h          |    9 +++++++--
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/TelepathyQt4/Client/connection-manager-internal.h b/TelepathyQt4/Client/connection-manager-internal.h
index d1a5aaa..f640013 100644
--- a/TelepathyQt4/Client/connection-manager-internal.h
+++ b/TelepathyQt4/Client/connection-manager-internal.h
@@ -59,6 +59,7 @@ struct ConnectionManager::Private
     QStringList interfaces;
     ProtocolInfoList protocols;
     PendingReady *pendingReady;
+    ConnectionManager::Features features;
 };
 
 class ConnectionManager::Private::PendingReady : public PendingOperation
diff --git a/TelepathyQt4/Client/connection-manager.cpp b/TelepathyQt4/Client/connection-manager.cpp
index 153511b..bc1f26c 100644
--- a/TelepathyQt4/Client/connection-manager.cpp
+++ b/TelepathyQt4/Client/connection-manager.cpp
@@ -291,7 +291,8 @@ ConnectionManager::Private::Private(const QString &name, ConnectionManager *pare
                             parent->busName(), parent->objectPath(), parent)),
       name(name),
       ready(false),
-      pendingReady(0)
+      pendingReady(0),
+      features(0)
 {
     debug() << "Creating new ConnectionManager:" << parent->busName();
 }
@@ -466,9 +467,10 @@ PendingConnection *ConnectionManager::requestConnection(const QString &protocol,
  *
  * \return \c true if the object has finished initial setup.
  */
-bool ConnectionManager::isReady() const
+bool ConnectionManager::isReady(Features features) const
 {
-    return mPriv->ready;
+    return mPriv->ready
+        && ((mPriv->features & features) == features);
 }
 
 /**
@@ -479,14 +481,14 @@ bool ConnectionManager::isReady() const
  * \return A PendingOperation which will emit PendingOperation::finished
  *         when this object has finished or failed its initial setup.
  */
-PendingOperation *ConnectionManager::becomeReady()
+PendingOperation *ConnectionManager::becomeReady(Features features)
 {
     if (!isValid()) {
         return new PendingFailure(this, TELEPATHY_ERROR_NOT_AVAILABLE,
                 "ConnectionManager is invalid");
     }
 
-    if (mPriv->ready) {
+    if (isReady(features)) {
         return new PendingSuccess(this);
     }
 
diff --git a/TelepathyQt4/Client/connection-manager.h b/TelepathyQt4/Client/connection-manager.h
index cb68b3e..c4b3302 100644
--- a/TelepathyQt4/Client/connection-manager.h
+++ b/TelepathyQt4/Client/connection-manager.h
@@ -118,6 +118,11 @@ class ConnectionManager : public StatelessDBusProxy,
     Q_OBJECT
 
 public:
+    enum Feature {
+        _Padding = 0xFFFFFFFF
+    };
+    Q_DECLARE_FLAGS(Features, Feature)
+
     ConnectionManager(const QString &name, QObject *parent = 0);
     ConnectionManager(const QDBusConnection &bus,
             const QString &name, QObject *parent = 0);
@@ -139,9 +144,9 @@ public:
         return OptionalInterfaceFactory<ConnectionManager>::interface<DBus::PropertiesInterface>();
     }
 
-    bool isReady() const;
+    bool isReady(Features features = 0) const;
 
-    PendingOperation *becomeReady();
+    PendingOperation *becomeReady(Features features = 0);
 
     static PendingStringList *listNames(const QDBusConnection &bus = QDBusConnection::sessionBus());
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list