diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index c1cd14bd30..666e1e89ea 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -1350,22 +1350,7 @@ public class AdapterMessage extends PagedListAdapter() { - @Override - public int compare(EntityFolder f1, EntityFolder f2) { - int s = Integer.compare( - EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), - EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); - if (s != 0) - return s; - return collator.compare( - f1.name == null ? "" : f1.name, - f2.name == null ? "" : f2.name); - } - }); + EntityFolder.sort(targets); return targets; } diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index 8f4d885292..158afeffed 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -23,8 +23,12 @@ import org.json.JSONException; import org.json.JSONObject; import java.io.Serializable; +import java.text.Collator; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.Locale; import androidx.annotation.NonNull; import androidx.room.Entity; @@ -194,4 +198,26 @@ public class EntityFolder implements Serializable { folder.unified = json.getBoolean("unified"); return folder; } + + static void sort(List folders) { + final Collator collator = Collator.getInstance(Locale.getDefault()); + collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc + + Collections.sort(folders, new Comparator() { + @Override + public int compare(EntityFolder f1, EntityFolder f2) { + int s = Integer.compare( + EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), + EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); + if (s != 0) + return s; + int c = -f1.synchronize.compareTo(f2.synchronize); + if (c != 0) + return c; + return collator.compare( + f1.name == null ? "" : f1.name, + f2.name == null ? "" : f2.name); + } + }); + } } diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 9359383d02..f601f77223 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -68,13 +68,9 @@ import org.xbill.DNS.Record; import org.xbill.DNS.SRVRecord; import org.xbill.DNS.Type; -import java.text.Collator; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Properties; import javax.mail.AuthenticationFailedException; @@ -1082,25 +1078,7 @@ public class FragmentAccount extends FragmentEx { } private void setFolders(List folders) { - final Collator collator = Collator.getInstance(Locale.getDefault()); - collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc - - Collections.sort(folders, new Comparator() { - @Override - public int compare(EntityFolder f1, EntityFolder f2) { - int s = Integer.compare( - EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), - EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); - if (s != 0) - return s; - int c = -f1.synchronize.compareTo(f2.synchronize); - if (c != 0) - return c; - return collator.compare( - f1.name == null ? "" : f1.name, - f2.name == null ? "" : f2.name); - } - }); + EntityFolder.sort(folders); EntityFolder none = new EntityFolder(); none.name = ""; diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 5851555c1d..2d301a8c2e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -56,12 +56,8 @@ import org.xbill.DNS.Record; import org.xbill.DNS.SRVRecord; import org.xbill.DNS.Type; -import java.text.Collator; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.Locale; import java.util.Properties; import javax.mail.AuthenticationFailedException; @@ -771,25 +767,7 @@ public class FragmentIdentity extends FragmentEx { result.identity = db.identity().getIdentity(iid); result.folders = db.folder().getFolders(aid); - final Collator collator = Collator.getInstance(Locale.getDefault()); - collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc - - Collections.sort(result.folders, new Comparator() { - @Override - public int compare(EntityFolder f1, EntityFolder f2) { - int s = Integer.compare( - EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), - EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); - if (s != 0) - return s; - int c = -f1.synchronize.compareTo(f2.synchronize); - if (c != 0) - return c; - return collator.compare( - f1.name == null ? "" : f1.name, - f2.name == null ? "" : f2.name); - } - }); + EntityFolder.sort(result.folders); return result; } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 18e0e67543..ffbf7ea600 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -45,12 +45,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import java.io.Serializable; -import java.text.Collator; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.Locale; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -591,22 +587,7 @@ public class FragmentMessages extends FragmentEx { if (!f.id.equals(folder) && !EntityFolder.DRAFTS.equals(f.type)) targets.add(f); - final Collator collator = Collator.getInstance(Locale.getDefault()); - collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc - - Collections.sort(targets, new Comparator() { - @Override - public int compare(EntityFolder f1, EntityFolder f2) { - int s = Integer.compare( - EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), - EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); - if (s != 0) - return s; - return collator.compare( - f1.name == null ? "" : f1.name, - f2.name == null ? "" : f2.name); - } - }); + EntityFolder.sort(targets); return targets; }