create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / PreferencesActivity.java
index 66f4d7788b01e5606b179f3b14a982a9d30d92f2..c6e6eee327b74f9831fbc4adb9a57d91cc5cadb6 100644 (file)
@@ -1,29 +1,54 @@
 package net.sf.openrocket.android;\r
 \r
 import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import net.sf.openrocket.unit.UnitGroup;\r
 import android.content.SharedPreferences;\r
 import android.os.Bundle;\r
+import android.preference.Preference;\r
 import android.preference.PreferenceManager;\r
 \r
-public class PreferencesActivity extends android.preference.PreferenceActivity \r
-implements SharedPreferences.OnSharedPreferenceChangeListener {\r
+import com.actionbarsherlock.app.SherlockPreferenceActivity;\r
 \r
+public class PreferencesActivity extends SherlockPreferenceActivity \r
+{\r
+\r
+       \r
        @Override\r
        protected void onCreate( Bundle savedInstanceState ) {\r
                super.onCreate( savedInstanceState );\r
                addPreferencesFromResource(R.xml.preferences);\r
-               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
-               prefs.registerOnSharedPreferenceChangeListener(this);\r
+               \r
+               PreferenceManager prefManager = getPreferenceManager();\r
+               {\r
+                       String key = getApplication().getResources().getString(R.string.PreferenceUnitLengthOption);\r
+                       Preference pref = prefManager.findPreference(key);\r
+                       new UnitPreferenceListener(pref, UnitGroup.UNITS_LENGTH, "Current value ");\r
+                       \r
+               }\r
+               {\r
+                       String key = getApplication().getResources().getString(R.string.PreferenceUnitMassOption);\r
+                       Preference pref = prefManager.findPreference(key);\r
+                       new UnitPreferenceListener(pref, UnitGroup.UNITS_MASS, "Current value ");\r
+                       \r
+               }\r
+               {\r
+                       String key = getApplication().getResources().getString(R.string.PreferenceUnitVelocityOption);\r
+                       Preference pref = prefManager.findPreference(key);\r
+                       new UnitPreferenceListener(pref, UnitGroup.UNITS_VELOCITY, "Current value ");\r
+                       \r
+               }\r
+               {\r
+                       String key = getApplication().getResources().getString(R.string.PreferenceUnitDistanceOption);\r
+                       Preference pref = prefManager.findPreference(key);\r
+                       new UnitPreferenceListener(pref, UnitGroup.UNITS_DISTANCE, "Current value ");\r
+                       \r
+               }\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)\r
-        */\r
        @Override\r
-       public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {\r
-\r
-               initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));\r
+       protected void onDestroy() {\r
+               super.onDestroy();\r
        }\r
 \r
        /**\r
@@ -39,10 +64,43 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
                String len = sharedPreferences.getString(unitLength, "cm");\r
                UnitGroup.UNITS_LENGTH.setDefaultUnit( len );\r
                \r
+               AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");\r
                String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);\r
                String mass = sharedPreferences.getString(unitMass, "g");\r
                UnitGroup.UNITS_MASS.setDefaultUnit( mass );\r
                \r
+               String unitVelocity = app.getResources().getString(R.string.PreferenceUnitVelocityOption);\r
+               String velocity = sharedPreferences.getString(unitVelocity, "m/s");\r
+               UnitGroup.UNITS_VELOCITY.setDefaultUnit( velocity );\r
+               \r
+               String unitDistance = app.getResources().getString(R.string.PreferenceUnitDistanceOption);\r
+               String distance = sharedPreferences.getString(unitDistance, "m");\r
+               UnitGroup.UNITS_DISTANCE.setDefaultUnit( distance );\r
+               \r
+       }\r
+\r
+       private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {\r
+\r
+               private UnitGroup matchedGroup;\r
+               private String message;\r
+               private Preference pref;\r
+               \r
+               private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {\r
+                       this.pref = pref;\r
+                       this.matchedGroup = unit;\r
+                       this.message = message;\r
+                       pref.setSummary(message + unit.getDefaultUnit().getUnit());\r
+                       // todo figure out how to setSummary - need to get initial value.\r
+                       pref.setOnPreferenceChangeListener(this);\r
+               }\r
+               \r
+               @Override\r
+               public boolean onPreferenceChange(Preference preference, Object newValue) {\r
+                       matchedGroup.setDefaultUnit((String)newValue);\r
+                       preference.setSummary(message + newValue);\r
+                       return true;\r
+               }\r
+               \r
        }\r
        \r
 }\r