package com.camilstaps.taize; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import com.camilstaps.common.NullListener; public class SettingsActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); } private static Preference.OnPreferenceChangeListener onPreferenceChangeListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference pref, Object newValue) { String stringValue = newValue.toString(); if (pref instanceof ListPreference) { ListPreference listPref = (ListPreference) pref; int index = listPref.findIndexOfValue(stringValue); pref.setSummary(index >= 0 ? listPref.getEntries()[index] : null); // .getEntry() seems to cause problems } else { pref.setSummary(stringValue); } // If the preference actually changed ... if (!PreferenceManager.getDefaultSharedPreferences(pref.getContext()).getString(pref.getKey(), "").equals(stringValue)) { if (pref.getKey().equals(SettingsFragment.PREF_LANGUAGE_READINGS)) { // If we select a new language, set the fetch time to 0 to refetch on next request Taize.forceNewDailyReading(pref.getContext(), new NullListener()); } else if (pref.getKey().equals(SettingsFragment.PREF_VERSION_BIBLE)) { // If we select a new bible, set the fetch time to 0 to refetch on next request Taize.forceNewDailyReadingBibleText(pref.getContext(), new NullListener()); } } return true; } }; private static void bindSummaryToValue(Preference pref) { pref.setOnPreferenceChangeListener(onPreferenceChangeListener); onPreferenceChangeListener.onPreferenceChange(pref, PreferenceManager.getDefaultSharedPreferences(pref.getContext()).getString(pref.getKey(), pref.getSummary().toString())); } public static class SettingsFragment extends PreferenceFragment { public static final String PREF_LANGUAGE_READINGS = "pref_language_reading"; public static final String PREF_VERSION_BIBLE = "pref_version_bible"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); bindSummaryToValue(findPreference(PREF_LANGUAGE_READINGS)); bindSummaryToValue(findPreference(PREF_VERSION_BIBLE)); } } }