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
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
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