summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2010-10-01 09:27:01 (GMT)
committerKevin Smith <git@kismith.co.uk>2010-10-01 09:27:01 (GMT)
commit1d7b76386202c7df168c088c6acde96718b05975 (patch)
tree0fb9e57d2ff1048181391a74110867091aefb72a /Swiften/Presence/PresenceOracle.cpp
parent7dadfb1d53a789e0b81adfd86aac3e38a9e658a9 (diff)
downloadswift-1d7b76386202c7df168c088c6acde96718b05975.zip
swift-1d7b76386202c7df168c088c6acde96718b05975.tar.bz2
Include contact's status when you start a chat with them.
Resolves: #580
Diffstat (limited to 'Swiften/Presence/PresenceOracle.cpp')
-rw-r--r--Swiften/Presence/PresenceOracle.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/Swiften/Presence/PresenceOracle.cpp b/Swiften/Presence/PresenceOracle.cpp
index 758ae7c..439a84d 100644
--- a/Swiften/Presence/PresenceOracle.cpp
+++ b/Swiften/Presence/PresenceOracle.cpp
@@ -59,5 +59,25 @@ Presence::ref PresenceOracle::getLastPresence(const JID& jid) const {
}
}
+Presence::ref PresenceOracle::getHighestPriorityPresence(const JID& bareJID) const {
+ PresencesMap::const_iterator i = entries_.find(bareJID);
+ if (i == entries_.end()) {
+ return Presence::ref();
+ }
+ PresenceMap presenceMap = i->second;
+ PresenceMap::const_iterator j = presenceMap.begin();
+ Presence::ref highest;
+ for (; j != presenceMap.end(); j++) {
+ Presence::ref current = j->second;
+ if (!highest
+ || current->getPriority() > highest->getPriority()
+ || (current->getPriority() == highest->getPriority()
+ && StatusShow::typeToAvailabilityOrdering(current->getShow()) > StatusShow::typeToAvailabilityOrdering(highest->getShow()))) {
+ highest = current;
+ }
+
+ }
+ return highest;
+}
}