Refresh drawer if filter preferences change

pull/253/head
Alex Baker 11 years ago
parent 8f27d8a270
commit d78f038ecd

@ -10,6 +10,7 @@ import org.tasks.injection.InjectingPreferenceActivity;
public class AppearancePreferences extends InjectingPreferenceActivity { public class AppearancePreferences extends InjectingPreferenceActivity {
public static String FORCE_REFRESH = "force_refresh"; public static String FORCE_REFRESH = "force_refresh";
public static String FILTERS_CHANGED = "filters_changed";
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -17,16 +18,19 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
addPreferencesFromResource(R.xml.preferences_appearance); addPreferencesFromResource(R.xml.preferences_appearance);
setRefreshOnChange(R.string.p_use_dark_theme); setExtraOnChange(R.string.p_use_dark_theme, FORCE_REFRESH);
setRefreshOnChange(R.string.p_fontSize); setExtraOnChange(R.string.p_fontSize, FORCE_REFRESH);
setRefreshOnChange(R.string.p_fullTaskTitle); 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() { findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { 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; return true;
} }
}); });

@ -115,10 +115,12 @@ public class NavigationDrawerFragment extends InjectingFragment {
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ACTIVITY_SETTINGS) { if (requestCode == ACTIVITY_SETTINGS && resultCode == Activity.RESULT_OK) {
if (resultCode == Activity.RESULT_OK && data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) { if (data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) {
getActivity().finish(); getActivity().finish();
getActivity().startActivity(getActivity().getIntent()); getActivity().startActivity(getActivity().getIntent());
} else if (data.getBooleanExtra(AppearancePreferences.FILTERS_CHANGED, false)) {
refresh();
} }
} else { } else {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);

Loading…
Cancel
Save