osm-focus/src/dk/network42/osmfocus/SettingsFragment.java

67 lines
2.5 KiB
Java

package dk.network42.osmfocus;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.MultiSelectListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (getActivity() != null)
updateSummary(findPreference(key));
}
@Override
public void onResume() {
super.onResume();
for (int ii = 0; ii < getPreferenceScreen().getPreferenceCount(); ii++) {
Preference preference = getPreferenceScreen().getPreference(ii);
if (preference instanceof PreferenceGroup) {
PreferenceGroup preferenceGroup = (PreferenceGroup) preference;
for (int jj = 0; jj < preferenceGroup.getPreferenceCount(); jj++) {
updateSummary(preferenceGroup.getPreference(jj));
}
} else {
updateSummary(preference);
}
}
}
private void updateSummary(Preference p) {
if (p instanceof ListPreference) {
ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry());
}
if (p instanceof EditTextPreference) {
EditTextPreference editTextPref = (EditTextPreference) p;
p.setSummary(editTextPref.getText());
}
if (p instanceof MultiSelectListPreference) {
EditTextPreference editTextPref = (EditTextPreference) p;
p.setSummary(editTextPref.getText());
}
if (p instanceof CheckBoxPreference) {
CheckBoxPreference chkPref = (CheckBoxPreference) p;
if (chkPref.isChecked()) {
p.setSummary(this.getString(R.string.info_enabled));
} else {
p.setSummary(this.getString(R.string.info_disabled));
}
}
}
}