blob: 96d8ef8c61b8a4fd2d039ae5e093598eedaed4bb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
package com.camilstaps.taize;
import android.content.Context;
import android.content.SharedPreferences;
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.DatedStringPreferenceSet;
/**
* Simple preferences activity for app settings
* @author Camil Staps
*/
public class SettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
/**
* OnPreferenceChangeListener to bind the summary of a preference to its value
*/
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);
}
return true;
}
};
/**
* Bind the summary of a preference to its value
* @param pref
*/
private static void bindSummaryToValue(Preference pref) {
pref.setOnPreferenceChangeListener(onPreferenceChangeListener);
onPreferenceChangeListener.onPreferenceChange(pref, PreferenceManager.getDefaultSharedPreferences(pref.getContext()).getString(pref.getKey(), pref.getSummary().toString()));
}
/**
* The settings fragment
*/
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";
public static final String PREF_THEME_WIDGET = "pref_theme_widget";
private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener;
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity();
addPreferencesFromResource(R.xml.preferences);
bindSummaryToValue(findPreference(PREF_LANGUAGE_READINGS));
bindSummaryToValue(findPreference(PREF_VERSION_BIBLE));
bindSummaryToValue(findPreference(PREF_THEME_WIDGET));
sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(SettingsFragment.PREF_LANGUAGE_READINGS)) {
DatedStringPreferenceSet.clear(context, "dailyreadings");
DatedStringPreferenceSet.clear(context, "dailymeditations");
} else if (key.equals(SettingsFragment.PREF_VERSION_BIBLE)) {
DatedStringPreferenceSet.clear(context, "dailyreadingbibletexts");
}
}
};
PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
}
}
|