mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-01 22:56:33 +02:00
Added rule sort options
This commit is contained in:
@@ -53,10 +53,14 @@ import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.Collator;
|
||||
import java.text.DateFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
@@ -70,6 +74,7 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> {
|
||||
private NumberFormat NF = NumberFormat.getNumberInstance();
|
||||
|
||||
private int protocol = -1;
|
||||
private String sort;
|
||||
private String search = null;
|
||||
private List<TupleRuleEx> all = new ArrayList<>();
|
||||
private List<TupleRuleEx> selected = new ArrayList<>();
|
||||
@@ -574,9 +579,37 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> {
|
||||
});
|
||||
}
|
||||
|
||||
public void set(int protocol, @NonNull List<TupleRuleEx> rules) {
|
||||
public void set(int protocol, String sort, @NonNull List<TupleRuleEx> rules) {
|
||||
this.protocol = protocol;
|
||||
Log.i("Set protocol=" + protocol + " rules=" + rules.size() + " search=" + search);
|
||||
this.sort = sort;
|
||||
Log.i("Set protocol=" + protocol + " rules=" + rules.size() + " sort=" + sort + " search=" + search);
|
||||
|
||||
final Collator collator = Collator.getInstance(Locale.getDefault());
|
||||
collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc
|
||||
|
||||
Collections.sort(rules, new Comparator<TupleRuleEx>() {
|
||||
@Override
|
||||
public int compare(TupleRuleEx r1, TupleRuleEx r2) {
|
||||
int order;
|
||||
if ("last_applied".equals(sort))
|
||||
order = -Long.compare(
|
||||
r1.last_applied == null ? 0 : r1.last_applied,
|
||||
r2.last_applied == null ? 0 : r2.last_applied);
|
||||
else if ("applied".equals(sort)) {
|
||||
order = -Integer.compare(
|
||||
r1.applied == null ? 0 : r1.applied,
|
||||
r2.applied == null ? 0 : r2.applied);
|
||||
} else
|
||||
order = Integer.compare(r1.order, r2.order);
|
||||
|
||||
if (order == 0)
|
||||
return collator.compare(
|
||||
r1.name == null ? "" : r1.name,
|
||||
r2.name == null ? "" : r2.name);
|
||||
else
|
||||
return order;
|
||||
}
|
||||
});
|
||||
|
||||
all = rules;
|
||||
|
||||
@@ -624,10 +657,16 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> {
|
||||
}
|
||||
}
|
||||
|
||||
public void setSort(String sort) {
|
||||
this.sort = sort;
|
||||
set(protocol, sort, all);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void search(String query) {
|
||||
Log.i("Rules query=" + query);
|
||||
search = query;
|
||||
set(protocol, all);
|
||||
set(protocol, sort, all);
|
||||
}
|
||||
|
||||
private static class DiffCallback extends DiffUtil.Callback {
|
||||
|
||||
Reference in New Issue
Block a user