[Telepathy-commits] [telepathy-qt4/master] Propagate the details fully for MembersChangedDetailed

Olli Salli olli.salli at collabora.co.uk
Wed Feb 11 05:17:31 PST 2009


---
 TelepathyQt4/Client/channel.cpp |   37 +++++++++++++------------------------
 tests/dbus/chan-group.cpp       |    6 ++----
 2 files changed, 15 insertions(+), 28 deletions(-)

diff --git a/TelepathyQt4/Client/channel.cpp b/TelepathyQt4/Client/channel.cpp
index 0b65b0d..f7c7bfc 100644
--- a/TelepathyQt4/Client/channel.cpp
+++ b/TelepathyQt4/Client/channel.cpp
@@ -166,19 +166,16 @@ struct Channel::Private::GroupMembersChangedInfo
 {
     GroupMembersChangedInfo(const Telepathy::UIntList &added, const Telepathy::UIntList &removed,
             const Telepathy::UIntList &localPending, const Telepathy::UIntList &remotePending,
-            uint actor, uint reason, const QString &message,
-            const HandleIdentifierMap &contactIds = HandleIdentifierMap(),
-            const QString &error = QString(), const QString &debugMessage = QString())
+            const QVariantMap &details)
         : added(added),
           removed(removed),
           localPending(localPending),
           remotePending(remotePending),
-          actor(actor),
-          reason(reason),
-          message(message),
-          contactIds(contactIds),
-          error(error),
-          debugMessage(debugMessage)
+          details(details),
+          // TODO most of these probably should be removed once the rest of the code using them is sanitized
+          actor(qdbus_cast<uint>(details.value("actor"))),
+          reason(qdbus_cast<uint>(details.value("change-reason"))),
+          message(qdbus_cast<QString>(details.value("message")))
     {
     }
 
@@ -186,12 +183,10 @@ struct Channel::Private::GroupMembersChangedInfo
     Telepathy::UIntList removed;
     Telepathy::UIntList localPending;
     Telepathy::UIntList remotePending;
+    QVariantMap details;
     uint actor;
     uint reason;
     QString message;
-    HandleIdentifierMap contactIds;
-    QString error;
-    QString debugMessage;
 };
 
 class Channel::Private::PendingReady : public PendingOperation
@@ -565,7 +560,6 @@ void Channel::Private::buildContacts()
     buildingContacts = true;
 
     ContactManager *manager = connection->contactManager();
-
     UIntList toBuild = QSet<uint>(pendingGroupMembers +
             pendingGroupLocalPendingMembers +
             pendingGroupRemotePendingMembers).toList();
@@ -577,7 +571,7 @@ void Channel::Private::buildContacts()
     }
 
     if (currentGroupMembersChangedInfo &&
-        currentGroupMembersChangedInfo->actor != 0) {
+            currentGroupMembersChangedInfo->actor != 0) {
         toBuild.append(currentGroupMembersChangedInfo->actor);
     }
 
@@ -746,9 +740,10 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
             // TODO: Transfer the variant map too - SHOULDN'T BE FLATTENED TO LocalPendingInfo!
             if (groupLocalPendingContactsChangeInfo.contains(info.toBeAdded)) {
                 groupLocalPendingContactsChangeInfo[info.toBeAdded] =
-                    GroupMemberChangeDetails(actorContact, QVariantMap());
+                    GroupMemberChangeDetails(actorContact, currentGroupMembersChangedInfo->details);
             } else if (handle == groupSelfHandle) {
-                groupSelfContactRemoveInfo = GroupMemberChangeDetails(actorContact, QVariantMap());
+                groupSelfContactRemoveInfo = GroupMemberChangeDetails(actorContact,
+                        currentGroupMembersChangedInfo->details);
             }
         }
     }
@@ -818,10 +813,9 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
         !groupLocalPendingContactsAdded.isEmpty() ||
         !groupRemotePendingContactsAdded.isEmpty() ||
         !groupContactsRemoved.isEmpty()) {
-        // TODO: Transfer the actual variantmap - shouldn't be unpacked in between!
         GroupMemberChangeDetails details(
                 actorContact,
-                QVariantMap());
+                currentGroupMembersChangedInfo->details);
         emit parent->groupMembersChanged(
                 groupContactsAdded,
                 groupLocalPendingContactsAdded,
@@ -2159,12 +2153,7 @@ void Channel::onMembersChangedDetailed(
             new Private::GroupMembersChangedInfo(
                 added, removed,
                 localPending, remotePending,
-                details.value("actor").value<uint>(),
-                details.value("change-reason").value<uint>(),
-                details.value("message").value<QString>(),
-                details.value("contact-ids").value<HandleIdentifierMap>(),
-                details.value("error").value<QString>(),
-                details.value("debug-message").value<QString>()));
+                details));
 
     if (!mPriv->buildingContacts) {
         // if we are building contacts, we should wait it to finish so we don't
diff --git a/tests/dbus/chan-group.cpp b/tests/dbus/chan-group.cpp
index 7a3f774..006fc5a 100644
--- a/tests/dbus/chan-group.cpp
+++ b/tests/dbus/chan-group.cpp
@@ -247,8 +247,7 @@ void TestChanGroup::onGroupMembersChanged(
                             QString("anonymous coward@") + roomName);
             ret = 0;
         } else if (mChan->groupContacts().count() == 6) {
-            // TODO: re-enable when details are properly transferred
-            // QCOMPARE(details.message(), QString("Invitation accepted"));
+            QCOMPARE(details.message(), QString("Invitation accepted"));
             QCOMPARE(ids, QStringList() <<
                             QString("me@") + roomName <<
                             QString("alice@") + roomName <<
@@ -261,8 +260,7 @@ void TestChanGroup::onGroupMembersChanged(
     } else {
         if (mChan->groupRemotePendingContacts().count() == 1) {
             QCOMPARE(details.actor(), mChan->groupSelfContact());
-            // TODO: re-enable when details are properly transferred
-            // QCOMPARE(details.message(), QString("I want to add john"));
+            QCOMPARE(details.message(), QString("I want to add john"));
             QCOMPARE(mChan->groupRemotePendingContacts().first()->id(),
                      QString("john@" + roomName));
             ret = 1;
-- 
1.5.6.5




More information about the telepathy-commits mailing list