aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2016-06-30 23:08:55 +0200
committerChristian Schneppe <christian@pix-art.de>2016-07-01 16:26:04 +0200
commitf0151ac61a67df4a630c01a37f7a51142b9a9ea1 (patch)
tree6e0a2edcdb4da28f5c154cccfb3099872188c21f /src/main/java/eu/siacs/conversations/entities
parent63731c4567806d7809b4486fc44dd7ca954199a9 (diff)
use dnd as overriding status
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Contact.java11
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Presences.java13
2 files changed, 13 insertions, 11 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java
index fa6c79ece..f48a052f8 100644
--- a/src/main/java/eu/siacs/conversations/entities/Contact.java
+++ b/src/main/java/eu/siacs/conversations/entities/Contact.java
@@ -148,7 +148,7 @@ public class Contact implements ListItem, Blockable {
for (final String group : getGroups()) {
tags.add(new Tag(group, UIHelper.getColorForName(group)));
}
- Presence.Status status = getMostAvailableStatus();
+ Presence.Status status = getShownStatus();
if (status != Presence.Status.OFFLINE) {
tags.add(UIHelper.getTagForStatus(context, status));
}
@@ -237,13 +237,8 @@ public class Contact implements ListItem, Blockable {
this.resetOption(Options.PENDING_SUBSCRIPTION_REQUEST);
}
- public Presence.Status getMostAvailableStatus() {
- Presence p = this.presences.getMostAvailablePresence();
- if (p == null) {
- return Presence.Status.OFFLINE;
- }
-
- return p.getStatus();
+ public Presence.Status getShownStatus() {
+ return this.presences.getShownStatus();
}
public boolean setPhotoUri(String uri) {
diff --git a/src/main/java/eu/siacs/conversations/entities/Presences.java b/src/main/java/eu/siacs/conversations/entities/Presences.java
index b3e8966a7..b9e3e3ab1 100644
--- a/src/main/java/eu/siacs/conversations/entities/Presences.java
+++ b/src/main/java/eu/siacs/conversations/entities/Presences.java
@@ -30,11 +30,18 @@ public class Presences {
}
}
- public Presence getMostAvailablePresence() {
+ public Presence.Status getShownStatus() {
+ Presence.Status status = Presence.Status.OFFLINE;
synchronized (this.presences) {
- if (presences.size() < 1) { return null; }
- return Collections.min(presences.values());
+ for(Presence p : presences.values()) {
+ if (p.getStatus() == Presence.Status.DND) {
+ return p.getStatus();
+ } else if (p.getStatus().compareTo(status) < 0){
+ status = p.getStatus();
+ }
+ }
}
+ return status;
}
public int size() {