[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