[Telepathy-commits] [telepathy-qt4/master] Changed ConnectionManager class to return a list of protocols.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Mon Jan 5 08:56:30 PST 2009


Changed ConnectionManager class to return const reference of the list of
supported protocols. This makes the API uniform between ProtocolInfo and
ConnectionManager regarding getting supported protocols and parameters.
---
 TelepathyQt4/cli-connection-manager.cpp |   38 ++++++++++++++++++++----------
 TelepathyQt4/cli-connection-manager.h   |    4 ++-
 2 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/TelepathyQt4/cli-connection-manager.cpp b/TelepathyQt4/cli-connection-manager.cpp
index 4870635..9208bd9 100644
--- a/TelepathyQt4/cli-connection-manager.cpp
+++ b/TelepathyQt4/cli-connection-manager.cpp
@@ -159,8 +159,17 @@ struct ConnectionManager::Private
     QQueue<QString> protocolQueue;
 
     QStringList interfaces;
+    ProtocolInfoList protocols;;
 
-    QMap<QString,ProtocolInfo*> protocols;
+    ProtocolInfo *protocol(const QString &protocolName)
+    {
+        Q_FOREACH (ProtocolInfo *info, protocols) {
+            if (info->protocolName() == protocolName) {
+                return info;
+            }
+        }
+        return NULL;
+    }
 
     static inline QString makeBusName(const QString& name)
     {
@@ -176,8 +185,8 @@ struct ConnectionManager::Private
 
     ~Private()
     {
-        Q_FOREACH (ProtocolInfo* protocol, protocols) {
-            delete protocol;
+        Q_FOREACH (ProtocolInfo* info, protocols) {
+            delete info;
         }
     }
 
@@ -269,14 +278,17 @@ QStringList ConnectionManager::interfaces() const
 
 QStringList ConnectionManager::supportedProtocols() const
 {
-    return mPriv->protocols.keys();
+    QStringList protocols;
+    Q_FOREACH (const ProtocolInfo *info, mPriv->protocols) {
+        protocols.append(info->protocolName());
+    }
+    return protocols;
 }
 
 
-const ProtocolInfo* ConnectionManager::protocolInfo(
-        const QString& protocol) const
+const ProtocolInfoList &ConnectionManager::protocols() const
 {
-    return mPriv->protocols.value(protocol);
+    return mPriv->protocols;
 }
 
 
@@ -331,11 +343,11 @@ void ConnectionManager::onListProtocolsReturn(
             reply.error().name() << ": " << reply.error().message();
     }
 
-    Q_FOREACH (const QString& protocol, protocols) {
-        mPriv->protocols.insert(protocol, new ProtocolInfo(mPriv->cmName,
-                    protocol));
+    Q_FOREACH (const QString &protocolName, protocols) {
+        mPriv->protocols.append(new ProtocolInfo(mPriv->cmName,
+                                                 protocolName));
 
-        mPriv->getParametersQueue.enqueue(protocol);
+        mPriv->getParametersQueue.enqueue(protocolName);
         mPriv->introspectQueue.enqueue(&Private::callGetParameters);
     }
     continueIntrospection();
@@ -347,8 +359,8 @@ void ConnectionManager::onGetParametersReturn(
 {
     QDBusPendingReply<ParamSpecList> reply = *watcher;
     ParamSpecList parameters;
-    QString protocol = mPriv->protocolQueue.dequeue();
-    ProtocolInfo* info = mPriv->protocols.value(protocol);
+    QString protocolName = mPriv->protocolQueue.dequeue();
+    ProtocolInfo *info = mPriv->protocol(protocolName);
 
     if (!reply.isError()) {
         debug() << "Got reply to ConnectionManager.GetParameters";
diff --git a/TelepathyQt4/cli-connection-manager.h b/TelepathyQt4/cli-connection-manager.h
index 7cbb8b1..d77f198 100644
--- a/TelepathyQt4/cli-connection-manager.h
+++ b/TelepathyQt4/cli-connection-manager.h
@@ -53,8 +53,10 @@ namespace Client
 {
 
 class ProtocolParameter;
+class ProtocolInfo;
 
 typedef QList<ProtocolParameter*> ProtocolParameterList;
+typedef QList<ProtocolInfo*> ProtocolInfoList;
 
 class ProtocolParameter
 {
@@ -178,7 +180,7 @@ public:
 
     QStringList supportedProtocols() const;
 
-    const ProtocolInfo* protocolInfo(const QString& protocol) const;
+    const ProtocolInfoList &protocols() const;
 
     /**
      * Convenience function for getting a Properties interface proxy. The
-- 
1.5.6.5




More information about the Telepathy-commits mailing list