summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/MUC/MUC.cpp5
-rw-r--r--Swiften/MUC/MUC.h2
-rw-r--r--Swiften/Roster/ContactRosterItem.cpp11
-rw-r--r--Swiften/Roster/ContactRosterItem.h5
-rw-r--r--Swiften/Roster/Roster.cpp4
-rw-r--r--Swiften/Roster/Roster.h2
-rw-r--r--Swiften/Roster/UnitTest/RosterTest.cpp24
7 files changed, 33 insertions, 20 deletions
diff --git a/Swiften/MUC/MUC.cpp b/Swiften/MUC/MUC.cpp
index 60b81a0..b4265b5 100644
--- a/Swiften/MUC/MUC.cpp
+++ b/Swiften/MUC/MUC.cpp
@@ -88,16 +88,17 @@ void MUC::handleIncomingPresence(boost::shared_ptr<Presence> presence) {
}
else if (presence->getType() == Presence::Available) {
std::map<String, MUCOccupant>::iterator it = occupants.find(nick);
+ MUCOccupant occupant(nick, role, affiliation);
if (it != occupants.end()) {
MUCOccupant oldOccupant = it->second;
if (oldOccupant.getRole() != role) {
- onOccupantRoleChanged(nick, role, oldOccupant.getRole());
+ onOccupantRoleChanged(nick, occupant, oldOccupant.getRole());
}
if (oldOccupant.getAffiliation() != affiliation) {
onOccupantAffiliationChanged(nick, affiliation, oldOccupant.getAffiliation());
}
}
- std::pair<std::map<String, MUCOccupant>::iterator, bool> result = occupants.insert(std::make_pair(nick, MUCOccupant(nick, role, affiliation)));
+ std::pair<std::map<String, MUCOccupant>::iterator, bool> result = occupants.insert(std::make_pair(nick, occupant));
if (result.second) {
onOccupantJoined(result.first->second);
}
diff --git a/Swiften/MUC/MUC.h b/Swiften/MUC/MUC.h
index 4bf56c9..40fc2f6 100644
--- a/Swiften/MUC/MUC.h
+++ b/Swiften/MUC/MUC.h
@@ -41,7 +41,7 @@ namespace Swift {
boost::signal<void (const String& /*nick*/)> onJoinComplete;
boost::signal<void (boost::shared_ptr<ErrorPayload>)> onJoinFailed;
boost::signal<void (boost::shared_ptr<Presence>)> onOccupantPresenceChange;
- boost::signal<void (const String&, const MUCOccupant::Role& /*new*/, const MUCOccupant::Role& /*old*/)> onOccupantRoleChanged;
+ boost::signal<void (const String&, const MUCOccupant& /*now*/, const MUCOccupant::Role& /*old*/)> onOccupantRoleChanged;
boost::signal<void (const String&, const MUCOccupant::Affiliation& /*new*/, const MUCOccupant::Affiliation& /*old*/)> onOccupantAffiliationChanged;
boost::signal<void (const MUCOccupant&)> onOccupantJoined;
boost::signal<void (const MUCOccupant&, LeavingType, const String& /*reason*/)> onOccupantLeft;
diff --git a/Swiften/Roster/ContactRosterItem.cpp b/Swiften/Roster/ContactRosterItem.cpp
index 2d5082c..a9591a5 100644
--- a/Swiften/Roster/ContactRosterItem.cpp
+++ b/Swiften/Roster/ContactRosterItem.cpp
@@ -10,7 +10,7 @@
namespace Swift {
-ContactRosterItem::ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent) : RosterItem(name, parent), jid_(jid) {
+ContactRosterItem::ContactRosterItem(const JID& jid, const JID& displayJID, const String& name, GroupRosterItem* parent) : RosterItem(name, parent), jid_(jid), displayJID_(displayJID) {
}
ContactRosterItem::~ContactRosterItem() {
@@ -48,6 +48,15 @@ const JID& ContactRosterItem::getJID() const {
return jid_;
}
+void ContactRosterItem::setDisplayJID(const JID& jid) {
+ displayJID_ = jid;
+}
+
+const JID& ContactRosterItem::getDisplayJID() const {
+ return displayJID_;
+}
+
+
typedef std::pair<String, boost::shared_ptr<Presence> > StringPresencePair;
void ContactRosterItem::calculateShownPresence() {
diff --git a/Swiften/Roster/ContactRosterItem.h b/Swiften/Roster/ContactRosterItem.h
index d4c92aa..21f6024 100644
--- a/Swiften/Roster/ContactRosterItem.h
+++ b/Swiften/Roster/ContactRosterItem.h
@@ -22,7 +22,7 @@ namespace Swift {
class GroupRosterItem;
class ContactRosterItem : public RosterItem {
public:
- ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent);
+ ContactRosterItem(const JID& jid, const JID& displayJID, const String& name, GroupRosterItem* parent);
virtual ~ContactRosterItem();
StatusShow::Type getStatusShow() const;
@@ -31,11 +31,14 @@ class ContactRosterItem : public RosterItem {
void setAvatarPath(const String& path);
const String& getAvatarPath() const;
const JID& getJID() const;
+ void setDisplayJID(const JID& jid);
+ const JID& getDisplayJID() const;
void applyPresence(const String& resource, boost::shared_ptr<Presence> presence);
void clearPresence();
void calculateShownPresence();
private:
JID jid_;
+ JID displayJID_;
String avatarPath_;
bool hidden_;
std::map<String, boost::shared_ptr<Presence> > presences_;
diff --git a/Swiften/Roster/Roster.cpp b/Swiften/Roster/Roster.cpp
index 9291421..b7ed6c4 100644
--- a/Swiften/Roster/Roster.cpp
+++ b/Swiften/Roster/Roster.cpp
@@ -67,9 +67,9 @@ void Roster::handleChildrenChanged(GroupRosterItem* item) {
onChildrenChanged(item);
}
-void Roster::addContact(const JID& jid, const String& name, const String& groupName) {
+void Roster::addContact(const JID& jid, const JID& displayJID, const String& name, const String& groupName) {
GroupRosterItem* group(getGroup(groupName));
- ContactRosterItem *item = new ContactRosterItem(jid, name, group);
+ ContactRosterItem *item = new ContactRosterItem(jid, displayJID, name, group);
group->addChild(item);
itemMap_[fullJIDMapping_ ? jid : jid.toBare()].push_back(item);
item->onDataChanged.connect(boost::bind(&Roster::handleDataChanged, this, item));
diff --git a/Swiften/Roster/Roster.h b/Swiften/Roster/Roster.h
index 78606e8..346157e 100644
--- a/Swiften/Roster/Roster.h
+++ b/Swiften/Roster/Roster.h
@@ -28,7 +28,7 @@ class Roster {
Roster(bool fullJIDMapping = false);
~Roster();
- void addContact(const JID& jid, const String& name, const String& group);
+ void addContact(const JID& jid, const JID& displayJID, const String& name, const String& group);
void removeContact(const JID& jid);
void removeContactFromGroup(const JID& jid, const String& group);
void applyOnItems(const RosterItemOperation& operation);
diff --git a/Swiften/Roster/UnitTest/RosterTest.cpp b/Swiften/Roster/UnitTest/RosterTest.cpp
index d170396..13a4ab0 100644
--- a/Swiften/Roster/UnitTest/RosterTest.cpp
+++ b/Swiften/Roster/UnitTest/RosterTest.cpp
@@ -43,9 +43,9 @@ class RosterTest : public CppUnit::TestFixture
}
void testGetGroup() {
- roster_->addContact(jid1_, "Bert", "group1");
- roster_->addContact(jid2_, "Ernie", "group2");
- roster_->addContact(jid3_, "Cookie", "group1");
+ roster_->addContact(jid1_, JID(), "Bert", "group1");
+ roster_->addContact(jid2_, JID(), "Ernie", "group2");
+ roster_->addContact(jid3_, JID(), "Cookie", "group1");
CPPUNIT_ASSERT_EQUAL(2, (int)roster_->getRoot()->getChildren().size());
CPPUNIT_ASSERT_EQUAL(String("group1"), roster_->getRoot()->getChildren()[0]->getDisplayName());
@@ -57,7 +57,7 @@ class RosterTest : public CppUnit::TestFixture
}
void testRemoveContact() {
- roster_->addContact(jid1_, "Bert", "group1");
+ roster_->addContact(jid1_, jid1_, "Bert", "group1");
CPPUNIT_ASSERT_EQUAL(String("Bert"), ((GroupRosterItem*)roster_->getRoot()->getChildren()[0])->getChildren()[0]->getDisplayName());
roster_->removeContact(jid1_);
@@ -65,8 +65,8 @@ class RosterTest : public CppUnit::TestFixture
}
void testRemoveSecondContact() {
- roster_->addContact(jid1_, "Bert", "group1");
- roster_->addContact(jid2_, "Cookie", "group1");
+ roster_->addContact(jid1_, jid1_, "Bert", "group1");
+ roster_->addContact(jid2_, jid2_, "Cookie", "group1");
CPPUNIT_ASSERT_EQUAL(String("Cookie"), ((GroupRosterItem*)roster_->getRoot()->getChildren()[0])->getChildren()[1]->getDisplayName());
roster_->removeContact(jid2_);
@@ -77,8 +77,8 @@ class RosterTest : public CppUnit::TestFixture
void testRemoveSecondContactSameBare() {
JID jid4a("a@b/c");
JID jid4b("a@b/d");
- roster_->addContact(jid4a, "Bert", "group1");
- roster_->addContact(jid4b, "Cookie", "group1");
+ roster_->addContact(jid4a, JID(), "Bert", "group1");
+ roster_->addContact(jid4b, JID(), "Cookie", "group1");
CPPUNIT_ASSERT_EQUAL(String("Cookie"), ((GroupRosterItem*)roster_->getRoot()->getChildren()[0])->getChildren()[1]->getDisplayName());
roster_->removeContact(jid4b);
@@ -90,11 +90,11 @@ class RosterTest : public CppUnit::TestFixture
JID jid4a("a@b/c");
JID jid4b("a@b/d");
JID jid4c("a@b/e");
- roster_->addContact(jid4a, "Bird", "group1");
- roster_->addContact(jid4b, "Cookie", "group1");
+ roster_->addContact(jid4a, JID(), "Bird", "group1");
+ roster_->addContact(jid4b, JID(), "Cookie", "group1");
roster_->removeContact(jid4b);
- roster_->addContact(jid4c, "Bert", "group1");
- roster_->addContact(jid4b, "Ernie", "group1");
+ roster_->addContact(jid4c, JID(), "Bert", "group1");
+ roster_->addContact(jid4b, JID(), "Ernie", "group1");
boost::shared_ptr<Presence> presence(new Presence());
presence->setShow(StatusShow::DND);
presence->setFrom(jid4a);