[Telepathy-commits] [telepathy-qt4/master] Channel: Changed channel to use QSet of contacts instead of QList.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Tue Feb 24 08:56:57 PST 2009


This make it easy to implement roster support, where contacts from
different channels need to be merged.
---
 TelepathyQt4/Client/channel.cpp |   36 +++++++++++++++---------------
 TelepathyQt4/Client/channel.h   |   14 ++++++------
 tests/dbus/chan-group.cpp       |   46 +++++++++++++++++++-------------------
 3 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/TelepathyQt4/Client/channel.cpp b/TelepathyQt4/Client/channel.cpp
index b273aab..4c9c775 100644
--- a/TelepathyQt4/Client/channel.cpp
+++ b/TelepathyQt4/Client/channel.cpp
@@ -725,9 +725,9 @@ void Channel::Private::processMembersChanged()
 
 void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &contacts)
 {
-    QList<QSharedPointer<Contact> > groupContactsAdded;
-    QList<QSharedPointer<Contact> > groupLocalPendingContactsAdded;
-    QList<QSharedPointer<Contact> > groupRemotePendingContactsAdded;
+    QSet<QSharedPointer<Contact> > groupContactsAdded;
+    QSet<QSharedPointer<Contact> > groupLocalPendingContactsAdded;
+    QSet<QSharedPointer<Contact> > groupRemotePendingContactsAdded;
     QSharedPointer<Contact> actorContact;
     bool selfContactUpdated = false;
 
@@ -737,15 +737,15 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
     foreach (QSharedPointer<Contact> contact, contacts) {
         uint handle = contact->handle()[0];
         if (pendingGroupMembers.contains(handle)) {
-            groupContactsAdded.append(contact);
+            groupContactsAdded.insert(contact);
             groupContacts[handle] = contact;
         } else if (pendingGroupLocalPendingMembers.contains(handle)) {
-            groupLocalPendingContactsAdded.append(contact);
+            groupLocalPendingContactsAdded.insert(contact);
             groupLocalPendingContacts[handle] = contact;
             // FIXME: should set the details and actor here too
             groupLocalPendingContactsChangeInfo[handle] = GroupMemberChangeDetails();
         } else if (pendingGroupRemotePendingMembers.contains(handle)) {
-            groupRemotePendingContactsAdded.append(contact);
+            groupRemotePendingContactsAdded.insert(contact);
             groupRemotePendingContacts[handle] = contact;
         }
 
@@ -787,7 +787,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
 
     // FIXME: use QSet to make the code somewhat easier to comprehend and change
 
-    QList<QSharedPointer<Contact> > groupContactsRemoved;
+    QSet<QSharedPointer<Contact> > groupContactsRemoved;
     QSharedPointer<Contact> contactToRemove;
     foreach (uint handle, groupMembersToRemove) {
         if (groupContacts.contains(handle)) {
@@ -806,7 +806,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
         }
 
         if (contactToRemove) {
-            groupContactsRemoved.append(contactToRemove);
+            groupContactsRemoved.insert(contactToRemove);
         }
     }
     groupMembersToRemove.clear();
@@ -1403,13 +1403,13 @@ PendingOperation *Channel::groupRemoveContacts(const QList<QSharedPointer<Contac
  *
  * \return List of contact objects.
  */
-QList<QSharedPointer<Contact> > Channel::groupContacts() const
+QSet<QSharedPointer<Contact> > Channel::groupContacts() const
 {
     if (!isReady()) {
         warning() << "Channel::groupMembers() used channel not ready";
     }
 
-    return mPriv->groupContacts.values();
+    return mPriv->groupContacts.values().toSet();
 }
 
 /**
@@ -1418,7 +1418,7 @@ QList<QSharedPointer<Contact> > Channel::groupContacts() const
  *
  * \return List of contacts.
  */
-QList<QSharedPointer<Contact> > Channel::groupLocalPendingContacts() const
+QSet<QSharedPointer<Contact> > Channel::groupLocalPendingContacts() const
 {
     if (!isReady()) {
         warning() << "Channel::groupLocalPending() used channel not ready";
@@ -1427,7 +1427,7 @@ QList<QSharedPointer<Contact> > Channel::groupLocalPendingContacts() const
         warning() << "Channel::groupLocalPending() used with no group interface";
     }
 
-    return mPriv->groupLocalPendingContacts.values();
+    return mPriv->groupLocalPendingContacts.values().toSet();
 }
 
 /**
@@ -1436,7 +1436,7 @@ QList<QSharedPointer<Contact> > Channel::groupLocalPendingContacts() const
  *
  * \return List of contacts.
  */
-QList<QSharedPointer<Contact> > Channel::groupRemotePendingContacts() const
+QSet<QSharedPointer<Contact> > Channel::groupRemotePendingContacts() const
 {
     if (!isReady()) {
         warning() << "Channel::groupRemotePending() used channel not ready";
@@ -1446,7 +1446,7 @@ QList<QSharedPointer<Contact> > Channel::groupRemotePendingContacts() const
             "group interface";
     }
 
-    return mPriv->groupRemotePendingContacts.values();
+    return mPriv->groupRemotePendingContacts.values().toSet();
 }
 
 /**
@@ -1618,10 +1618,10 @@ QSharedPointer<Contact> Channel::groupSelfContact() const
 
 /**
  * \fn void Channel::groupMembersChanged(
- *     const QList<QSharedPointer<Contact> > &groupMembersAdded,
- *     const QList<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
- *     const QList<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
- *     const QList<QSharedPointer<Contact> > &groupMembersRemoved,
+ *     const QSet<QSharedPointer<Contact> > &groupMembersAdded,
+ *     const QSet<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
+ *     const QSet<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
+ *     const QSet<QSharedPointer<Contact> > &groupMembersRemoved,
  *     const Channel::GroupMemberChangeDetails &details);
  *
  * Emitted when the value returned by groupContacts(), groupLocalPendingContacts() or
diff --git a/TelepathyQt4/Client/channel.h b/TelepathyQt4/Client/channel.h
index f407bc1..5d5fff0 100644
--- a/TelepathyQt4/Client/channel.h
+++ b/TelepathyQt4/Client/channel.h
@@ -94,9 +94,9 @@ public:
             const QString &message = QString(),
             uint reason = Telepathy::ChannelGroupChangeReasonNone);
 
-    QList<QSharedPointer<Contact> > groupContacts() const;
-    QList<QSharedPointer<Contact> > groupLocalPendingContacts() const;
-    QList<QSharedPointer<Contact> > groupRemotePendingContacts() const;
+    QSet<QSharedPointer<Contact> > groupContacts() const;
+    QSet<QSharedPointer<Contact> > groupLocalPendingContacts() const;
+    QSet<QSharedPointer<Contact> > groupRemotePendingContacts() const;
 
     class GroupMemberChangeDetails
     {
@@ -151,10 +151,10 @@ Q_SIGNALS:
     void groupCanRescindContactsChanged(bool canRescindContacts);
 
     void groupMembersChanged(
-            const QList<QSharedPointer<Contact> > &groupMembersAdded,
-            const QList<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
-            const QList<QSharedPointer<Contact> > &groupLocalPendingMembersRemoved,
-            const QList<QSharedPointer<Contact> > &groupMembersRemoved,
+            const QSet<QSharedPointer<Contact> > &groupMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupMembersRemoved,
             const Channel::GroupMemberChangeDetails &details);
 
     void groupHandleOwnersChanged(const HandleOwnerMap &owners,
diff --git a/tests/dbus/chan-group.cpp b/tests/dbus/chan-group.cpp
index 6aaed4f..0474ac8 100644
--- a/tests/dbus/chan-group.cpp
+++ b/tests/dbus/chan-group.cpp
@@ -42,10 +42,10 @@ protected Q_SLOTS:
     void expectPendingContactsFinished(Telepathy::Client::PendingOperation *);
     void onChannelGroupFlagsChanged(uint, uint, uint);
     void onGroupMembersChanged(
-            const QList<QSharedPointer<Contact> > &groupMembersAdded,
-            const QList<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
-            const QList<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
-            const QList<QSharedPointer<Contact> > &groupMembersRemoved,
+            const QSet<QSharedPointer<Contact> > &groupMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
+            const QSet<QSharedPointer<Contact> > &groupMembersRemoved,
             const Channel::GroupMemberChangeDetails &details);
 
 private Q_SLOTS:
@@ -62,7 +62,7 @@ private Q_SLOTS:
     void cleanupTestCase();
 
 private:
-    void checkExpectedIds(const QList<QSharedPointer<Contact> > &contacts,
+    void checkExpectedIds(const QSet<QSharedPointer<Contact> > &contacts,
         const QStringList &expectedIds);
     void debugContacts();
     void doTestCreateChannel();
@@ -77,10 +77,10 @@ private:
     ReferencedHandles mRoomHandles;
     ReferencedHandles mContactHandles;
     QList<QSharedPointer<Contact> > mContacts;
-    QList<QSharedPointer<Contact> > mChangedCurrent;
-    QList<QSharedPointer<Contact> > mChangedLP;
-    QList<QSharedPointer<Contact> > mChangedRP;
-    QList<QSharedPointer<Contact> > mChangedRemoved;
+    QSet<QSharedPointer<Contact> > mChangedCurrent;
+    QSet<QSharedPointer<Contact> > mChangedLP;
+    QSet<QSharedPointer<Contact> > mChangedRP;
+    QSet<QSharedPointer<Contact> > mChangedRemoved;
     Channel::GroupMemberChangeDetails mDetails;
     bool mRequested;
 };
@@ -229,10 +229,10 @@ void TestChanGroup::onChannelGroupFlagsChanged(uint flags, uint added, uint remo
 }
 
 void TestChanGroup::onGroupMembersChanged(
-        const QList<QSharedPointer<Contact> > &groupMembersAdded,
-        const QList<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
-        const QList<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
-        const QList<QSharedPointer<Contact> > &groupMembersRemoved,
+        const QSet<QSharedPointer<Contact> > &groupMembersAdded,
+        const QSet<QSharedPointer<Contact> > &groupLocalPendingMembersAdded,
+        const QSet<QSharedPointer<Contact> > &groupRemotePendingMembersAdded,
+        const QSet<QSharedPointer<Contact> > &groupMembersRemoved,
         const Channel::GroupMemberChangeDetails &details)
 {
     qDebug() << "group members changed";
@@ -245,7 +245,7 @@ void TestChanGroup::onGroupMembersChanged(
     mLoop->exit(0);
 }
 
-void TestChanGroup::checkExpectedIds(const QList<QSharedPointer<Contact> > &contacts,
+void TestChanGroup::checkExpectedIds(const QSet<QSharedPointer<Contact> > &contacts,
         const QStringList &expectedIds)
 {
     QStringList ids;
@@ -437,16 +437,16 @@ void TestChanGroup::doTestCreateChannel()
 
     QVERIFY(connect(mChan.data(),
                     SIGNAL(groupMembersChanged(
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
                             const Channel::GroupMemberChangeDetails &)),
                     SLOT(onGroupMembersChanged(
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
-                            const QList<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
+                            const QSet<QSharedPointer<Contact> > &,
                             const Channel::GroupMemberChangeDetails &))));
 
     if (mChan->groupContacts().count() != 5) {
@@ -484,7 +484,7 @@ void TestChanGroup::doTestCreateChannel()
 
     QCOMPARE(mContacts.size(), 3);
     ids.sort();
-    checkExpectedIds(mContacts, ids);
+    checkExpectedIds(QSet<QSharedPointer<Contact> >::fromList(mContacts), ids);
 
     QString message("I want to add them");
     mChan->groupAddContacts(mContacts, message);
-- 
1.5.6.5




More information about the telepathy-commits mailing list