diff --git a/app/src/main/java/eu/faircode/email/Contributor.java b/app/src/main/java/eu/faircode/email/Contributor.java index 0e5a74c8bc..79e921a9f7 100644 --- a/app/src/main/java/eu/faircode/email/Contributor.java +++ b/app/src/main/java/eu/faircode/email/Contributor.java @@ -25,8 +25,12 @@ import android.text.TextUtils; import org.xmlpull.v1.XmlPullParser; +import java.text.Collator; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.Locale; public class Contributor { public String name; @@ -37,7 +41,7 @@ public class Contributor { } static List loadContributors(Context context) { - List result = null; + List result = new ArrayList<>(); try { Contributor contributor = null; XmlResourceParser xml = context.getResources().getXml(R.xml.contributors); @@ -67,6 +71,19 @@ public class Contributor { Log.e(ex); } + final Collator collator = Collator.getInstance(Locale.getDefault()); + collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc + Collections.sort(result, new Comparator() { + @Override + public int compare(Contributor c1, Contributor c2) { + String n1 = (TextUtils.isEmpty(c1.name) ? c1.alias : c1.name); + String n2 = (TextUtils.isEmpty(c2.name) ? c2.alias : c2.name); + return collator.compare( + n1 == null ? "" : n1, + n2 == null ? "" : n2); + } + }); + return result; }