From d78f038ecdcde889a3bd506f5a1b229662f25e13 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 21 Mar 2015 08:55:06 -0500 Subject: [PATCH] Refresh drawer if filter preferences change --- .../tasks/preferences/AppearancePreferences.java | 14 +++++++++----- .../org/tasks/ui/NavigationDrawerFragment.java | 6 ++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/tasks/preferences/AppearancePreferences.java b/src/main/java/org/tasks/preferences/AppearancePreferences.java index a606d238e..e88d1f8a1 100644 --- a/src/main/java/org/tasks/preferences/AppearancePreferences.java +++ b/src/main/java/org/tasks/preferences/AppearancePreferences.java @@ -10,6 +10,7 @@ import org.tasks.injection.InjectingPreferenceActivity; public class AppearancePreferences extends InjectingPreferenceActivity { public static String FORCE_REFRESH = "force_refresh"; + public static String FILTERS_CHANGED = "filters_changed"; @Override public void onCreate(Bundle savedInstanceState) { @@ -17,16 +18,19 @@ public class AppearancePreferences extends InjectingPreferenceActivity { addPreferencesFromResource(R.xml.preferences_appearance); - setRefreshOnChange(R.string.p_use_dark_theme); - setRefreshOnChange(R.string.p_fontSize); - setRefreshOnChange(R.string.p_fullTaskTitle); + setExtraOnChange(R.string.p_use_dark_theme, FORCE_REFRESH); + setExtraOnChange(R.string.p_fontSize, FORCE_REFRESH); + setExtraOnChange(R.string.p_fullTaskTitle, FORCE_REFRESH); + setExtraOnChange(R.string.p_show_today_filter, FILTERS_CHANGED); + setExtraOnChange(R.string.p_show_recently_modified_filter, FILTERS_CHANGED); + setExtraOnChange(R.string.p_show_not_in_list_filter, FILTERS_CHANGED); } - private void setRefreshOnChange(int resId) { + private void setExtraOnChange(int resId, final String extra) { findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - setResult(RESULT_OK, new Intent().putExtra(FORCE_REFRESH, true)); + setResult(RESULT_OK, new Intent().putExtra(extra, true)); return true; } }); diff --git a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java index 2c1771151..982bb849c 100644 --- a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java +++ b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java @@ -115,10 +115,12 @@ public class NavigationDrawerFragment extends InjectingFragment { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == ACTIVITY_SETTINGS) { - if (resultCode == Activity.RESULT_OK && data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) { + if (requestCode == ACTIVITY_SETTINGS && resultCode == Activity.RESULT_OK) { + if (data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) { getActivity().finish(); getActivity().startActivity(getActivity().getIntent()); + } else if (data.getBooleanExtra(AppearancePreferences.FILTERS_CHANGED, false)) { + refresh(); } } else { super.onActivityResult(requestCode, resultCode, data);