summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/Controllers/Roster/Roster.cpp')
-rw-r--r--Swift/Controllers/Roster/Roster.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/Swift/Controllers/Roster/Roster.cpp b/Swift/Controllers/Roster/Roster.cpp
index 9c9b9e3..f6f6ce0 100644
--- a/Swift/Controllers/Roster/Roster.cpp
+++ b/Swift/Controllers/Roster/Roster.cpp
@@ -137,64 +137,64 @@ struct JIDEqualsTo {
JID jid;
};
void Roster::removeAll() {
root_->removeAll();
itemMap_.clear();
onChildrenChanged(root_.get());
onDataChanged(root_.get());
}
void Roster::removeContact(const JID& jid) {
ItemMap::iterator item = itemMap_.find(fullJIDMapping_ ? jid : jid.toBare());
if (item != itemMap_.end()) {
std::vector<ContactRosterItem*>& items = item->second;
items.erase(std::remove_if(items.begin(), items.end(), JIDEqualsTo(jid)), items.end());
if (items.empty()) {
itemMap_.erase(item);
}
}
//Causes the delete
root_->removeChild(jid);
}
void Roster::removeContactFromGroup(const JID& jid, const std::string& groupName) {
std::vector<RosterItem*> children = root_->getChildren();
std::vector<RosterItem*>::iterator it = children.begin();
ItemMap::iterator itemIt = itemMap_.find(fullJIDMapping_ ? jid : jid.toBare());
while (it != children.end()) {
GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it);
if (group && group->getDisplayName() == groupName) {
- ContactRosterItem* deleted = group->removeChild(jid);
+ auto deleted = group->removeChild(jid);
if (itemIt != itemMap_.end()) {
std::vector<ContactRosterItem*>& items = itemIt->second;
- items.erase(std::remove(items.begin(), items.end(), deleted), items.end());
+ items.erase(std::remove(items.begin(), items.end(), deleted.get()), items.end());
}
}
++it;
}
if (itemIt != itemMap_.end()) {
for (auto* item : itemIt->second) {
item->removeGroup(groupName);
}
}
}
void Roster::applyOnItems(const RosterItemOperation& operation) {
if (operation.requiresLookup()) {
applyOnItem(operation, operation.lookupJID());
}
else {
applyOnAllItems(operation);
}
}
void Roster::applyOnItem(const RosterItemOperation& operation, const JID& jid) {
ItemMap::iterator i = itemMap_.find(fullJIDMapping_ ? jid : jid.toBare());
if (i == itemMap_.end()) {
return;
}
for (auto* item : i->second) {
operation(item);
filterContact(item, item->getParent());