X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/FreeShisen/blobdiff_plain/ce8b3d2450bd5d04eeb8c60b043c66dd4a1fc670..92b19250a620252d642c0abaf8dd3d733c299f3d:/src/de/cwde/freeshisen/SettingsActivity.java diff --git a/src/de/cwde/freeshisen/SettingsActivity.java b/src/de/cwde/freeshisen/SettingsActivity.java new file mode 100644 index 0000000..fbc87ae --- /dev/null +++ b/src/de/cwde/freeshisen/SettingsActivity.java @@ -0,0 +1,74 @@ +package de.cwde.freeshisen; + +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; +import android.content.res.Resources; +import android.os.Bundle; +import android.preference.*; + +public class SettingsActivity extends PreferenceActivity +implements OnSharedPreferenceChangeListener { + + private ShisenSho app; + + private static final String KEY_PREF_DIFF = "pref_diff"; + private static final String KEY_PREF_SIZE = "pref_size"; + //private static final String KEY_PREF_GRAV = "pref_grav"; + //private static final String KEY_PREF_TIME = "pref_time"; + + @SuppressWarnings("deprecation") + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + app = ShisenSho.app(); + addPreferencesFromResource(R.xml.preferences); + SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences(); + + sharedPreferences.registerOnSharedPreferenceChangeListener(this); + updateSummary(sharedPreferences, KEY_PREF_DIFF, KEY_PREF_DIFF, R.array.difficulties); + updateSummary(sharedPreferences, KEY_PREF_SIZE, KEY_PREF_SIZE, R.array.sizes); + } + + @Override + public void onBackPressed() { + app.setOptions(); + super.onBackPressed(); + } + + @SuppressWarnings("deprecation") + @Override + protected void onResume() { + super.onResume(); + getPreferenceScreen().getSharedPreferences() + .registerOnSharedPreferenceChangeListener(this); + } + + @SuppressWarnings("deprecation") + @Override + protected void onPause() { + super.onPause(); + getPreferenceScreen().getSharedPreferences() + .unregisterOnSharedPreferenceChangeListener(this); + } + + + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + updateSummary(sharedPreferences, key, KEY_PREF_DIFF, R.array.difficulties); + updateSummary(sharedPreferences, key, KEY_PREF_SIZE, R.array.sizes); + } + + private void updateSummary(SharedPreferences sharedPreferences, String changedkey, String mykey, int myresource) { + if (changedkey.equals(mykey)) { + // FIXME: handle NumberFormatException here? + int i = Integer.parseInt(sharedPreferences.getString(changedkey, "1")); + + Resources res = getResources(); + String[] mystrings = res.getStringArray(myresource); + String name = mystrings[i-1]; + + @SuppressWarnings("deprecation") + Preference myPref = findPreference(changedkey); + myPref.setSummary("Currently: " + name); + } + } +}