From f9600b950fb8a038e8ebd325454b10e163202b82 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 14 Jun 2016 14:41:32 +0200 Subject: [PATCH] sort muc users by affiliation, name. fixes #1913 --- .../conversations/entities/MucOptions.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index c71afd99e..6f6cdf918 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -296,16 +296,22 @@ public class MucOptions { @Override public int compareTo(User another) { - Contact ourContact = getContact(); - Contact anotherContact = another.getContact(); - if (ourContact != null && anotherContact != null) { - return ourContact.compareTo(anotherContact); - } else if (ourContact == null && anotherContact != null) { - return getName().compareToIgnoreCase(anotherContact.getDisplayName()); - } else if (ourContact != null) { - return ourContact.getDisplayName().compareToIgnoreCase(another.getName()); + if (another.getAffiliation().outranks(getAffiliation())) { + return 1; + } else if (getAffiliation().outranks(another.getAffiliation())) { + return -1; } else { - return getName().compareToIgnoreCase(another.getName()); + Contact ourContact = getContact(); + Contact anotherContact = another.getContact(); + if (ourContact != null && anotherContact != null) { + return ourContact.compareTo(anotherContact); + } else if (ourContact == null && anotherContact != null) { + return getName().compareToIgnoreCase(anotherContact.getDisplayName()); + } else if (ourContact != null) { + return ourContact.getDisplayName().compareToIgnoreCase(another.getName()); + } else { + return getName().compareToIgnoreCase(another.getName()); + } } }