From 533c763457356923443123bc4c0d59261d0d703d Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 21 Dec 2018 08:32:26 +0100 Subject: [PATCH] Refactoring --- .../eu/faircode/email/AdapterMessage.java | 59 ++++------ .../eu/faircode/email/FragmentMessages.java | 108 ++++++------------ 2 files changed, 55 insertions(+), 112 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 698dd6d024..4c9efed4cd 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -246,7 +246,6 @@ public class AdapterMessage extends RecyclerView.Adapter 0); - boolean show_expanded = properties.isExpanded(message.id); - boolean show_images = properties.showImages(message.id); + boolean show_expanded = properties.getValue("expanded", message.id); + boolean show_images = properties.getValue("images", message.id); btnHtml.setVisibility(hasWebView && show_expanded ? View.VISIBLE : View.GONE); btnImages.setVisibility(has_images && show_expanded && !show_images ? View.VISIBLE : View.GONE); @@ -803,7 +802,7 @@ public class AdapterMessage extends RecyclerView.Adapter expanded = new ArrayList<>(); - private List frozen = new ArrayList<>(); - private List addresses = new ArrayList<>(); - private List headers = new ArrayList<>(); - private List images = new ArrayList<>(); + private Map> values = new HashMap<>(); private BoundaryCallbackMessages searchCallback = null; @@ -303,69 +301,22 @@ public class FragmentMessages extends FragmentEx { zoom, new AdapterMessage.IProperties() { @Override - public void setExpanded(long id, boolean expand) { - if (expand) { - expanded.add(id); - handleExpand(id); + public void setValue(String name, long id, boolean enabled) { + if (!values.containsKey(name)) + values.put(name, new ArrayList()); + if (enabled) { + values.get(name).add(id); + if ("expanded".equals(name)) + handleExpand(id); } else - expanded.remove(id); + values.get(name).remove(id); } @Override - public void setFrozen(long id, boolean freeze) { - if (freeze) - frozen.add(id); - else - frozen.remove(id); - } - - @Override - public void setAddresses(long id, boolean show) { - if (show) - addresses.remove(id); - else - addresses.add(id); - } - - @Override - public void setHeaders(long id, boolean show) { - if (show) - headers.add(id); - else - headers.remove(id); - } - - @Override - public void setImages(long id, boolean show) { - if (show) - images.add(id); - else - images.remove(id); - } - - @Override - public boolean isExpanded(long id) { - return expanded.contains(id); - } - - @Override - public boolean isFrozen(long id) { - return frozen.contains(id); - } - - @Override - public boolean showAddresses(long id) { - return !addresses.contains(id); - } - - @Override - public boolean showHeaders(long id) { - return headers.contains(id); - } - - @Override - public boolean showImages(long id) { - return images.contains(id); + public boolean getValue(String name, long id) { + if (values.containsKey(name)) + return values.get(name).contains(id); + return false; } @Override @@ -469,7 +420,7 @@ public class FragmentMessages extends FragmentEx { TupleMessageEx message = ((AdapterMessage) rvMessage.getAdapter()).getCurrentList().get(pos); if (message == null || - expanded.contains(message.id) || + (values.containsKey("expanded") && values.get("expanded").contains(message.id)) || EntityFolder.DRAFTS.equals(message.folderType) || EntityFolder.OUTBOX.equals(message.folderType)) return 0; @@ -1201,9 +1152,11 @@ public class FragmentMessages extends FragmentEx { super.onSaveInstanceState(outState); outState.putBoolean("autoExpand", autoExpand); outState.putInt("autoCloseCount", autoCloseCount); - outState.putLongArray("expanded", Helper.toLongArray(expanded)); - outState.putLongArray("headers", Helper.toLongArray(headers)); - outState.putLongArray("images", Helper.toLongArray(images)); + + outState.putStringArray("values", values.keySet().toArray(new String[0])); + for (String name : values.keySet()) + outState.putLongArray(name, Helper.toLongArray(values.get(name))); + if (selectionTracker != null) selectionTracker.onSaveInstanceState(outState); } @@ -1215,9 +1168,14 @@ public class FragmentMessages extends FragmentEx { if (savedInstanceState != null) { autoExpand = savedInstanceState.getBoolean("autoExpand"); autoCloseCount = savedInstanceState.getInt("autoCloseCount"); - expanded = Helper.fromLongArray(savedInstanceState.getLongArray("expanded")); - headers = Helper.fromLongArray(savedInstanceState.getLongArray("headers")); - images = Helper.fromLongArray(savedInstanceState.getLongArray("images")); + + String[] names = savedInstanceState.getStringArray("values"); + for (String name : names) { + values.put(name, new ArrayList()); + for (Long value : savedInstanceState.getLongArray(name)) + values.get(name).add(value); + } + if (selectionTracker != null) selectionTracker.onRestoreInstanceState(savedInstanceState); } @@ -1726,7 +1684,9 @@ public class FragmentMessages extends FragmentEx { if (expand != null && (expand.content || !metered || (expand.size != null && expand.size < download))) { - expanded.add(expand.id); + if (!values.containsKey("expanded")) + values.put("expanded", new ArrayList()); + values.get("expanded").add(expand.id); handleExpand(expand.id); } } else { @@ -1949,8 +1909,8 @@ public class FragmentMessages extends FragmentEx { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); if (prefs.getBoolean("collapse", false)) - if (expanded.size() > 0) { - expanded.clear(); + if (values.containsKey("expanded") && values.get("expanded").size() > 0) { + values.get("expanded").clear(); adapter.notifyDataSetChanged(); return true; }