]> git.zerfleddert.de Git - FreeShisen/blobdiff - src/de/cwde/freeshisen/SettingsActivity.java
rename package to "freeshisen"
[FreeShisen] / 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 (file)
index 0000000..fbc87ae
--- /dev/null
@@ -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);
+               }
+       }       
+}
Impressum, Datenschutz