From 65ca2958c9f6d2980c5724cb19119fc208740fdc Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 9 Sep 2023 10:10:27 +0200 Subject: [PATCH] Batch update preferences --- .../main/java/eu/faircode/email/FragmentOptions.java | 2 ++ .../eu/faircode/email/FragmentOptionsBackup.java | 12 +++++++++++- .../eu/faircode/email/FragmentOptionsBehavior.java | 10 +++++++++- .../eu/faircode/email/FragmentOptionsConnection.java | 10 +++++++++- .../eu/faircode/email/FragmentOptionsDisplay.java | 10 +++++++++- .../eu/faircode/email/FragmentOptionsEncryption.java | 10 +++++++++- .../java/eu/faircode/email/FragmentOptionsMisc.java | 10 +++++++++- .../faircode/email/FragmentOptionsNotifications.java | 10 +++++++++- .../eu/faircode/email/FragmentOptionsPrivacy.java | 10 +++++++++- .../java/eu/faircode/email/FragmentOptionsSend.java | 10 +++++++++- .../faircode/email/FragmentOptionsSynchronize.java | 10 +++++++++- 11 files changed, 94 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index 2fd767dc6f..da4debf82c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -68,6 +68,8 @@ public class FragmentOptions extends FragmentBase { private String searching = null; private SuggestData data = null; + static final long DELAY_SETOPTIONS = 20; // ms + private static final int[] TAB_PAGES = { R.layout.fragment_setup, R.layout.fragment_options_synchronize, diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBackup.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBackup.java index c78c18bbfe..50f92b1bbe 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBackup.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBackup.java @@ -285,6 +285,15 @@ public class FragmentOptionsBackup extends FragmentBase implements SharedPrefere "cloud_activated".equals(key) || "cloud_busy".equals(key) || "cloud_last_sync".equals(key)) { + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); + } + } + + private Runnable update = new RunnableEx("backup") { + @Override + protected void delegate() { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); String user = prefs.getString("cloud_user", null); String password = prefs.getString("cloud_password", null); boolean auth = !(TextUtils.isEmpty(user) || TextUtils.isEmpty(password)); @@ -301,8 +310,9 @@ public class FragmentOptionsBackup extends FragmentBase implements SharedPrefere grpLogin.setVisibility(auth ? View.GONE : View.VISIBLE); grpActivate.setVisibility(auth && !activated && !busy ? View.VISIBLE : View.GONE); grpLogout.setVisibility(auth ? View.VISIBLE : View.GONE); + } - } + }; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index 9efb716e71..b9fbad6fa3 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -633,9 +633,17 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe if ("default_snooze".equals(key)) return; - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("behavior") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java index c4770aa237..dc03d62c66 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java @@ -381,9 +381,17 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre if ("timeout".equals(key)) return; - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("connection") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onResume() { super.onResume(); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index 8ca37b7646..c8b2adc058 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -1409,9 +1409,17 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer if ("message_zoom".equals(key)) return; - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("display") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java index 8d544d3599..f52369a7bf 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java @@ -624,9 +624,17 @@ public class FragmentOptionsEncryption extends FragmentBase @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("encryption") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 356fb5f747..868ebd51e6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -2386,9 +2386,17 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc if ("native_arc_whitelist".equals(key)) return; - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("misc") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java index 73f1cf4afe..399407007a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java @@ -792,9 +792,17 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("notifications") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index e4fd9df6b2..3876c77ff7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -568,9 +568,17 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("privacy") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index ccf3c7c476..27f4d3c8a9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -722,9 +722,17 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("send") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index 493954c684..1318697aac 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -569,9 +569,17 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - setOptions(); + getMainHandler().removeCallbacks(update); + getMainHandler().postDelayed(update, FragmentOptions.DELAY_SETOPTIONS); } + private Runnable update = new RunnableEx("sync") { + @Override + protected void delegate() { + setOptions(); + } + }; + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_options, menu);