1 package net.sf.openrocket.android;
\r
3 import net.sf.openrocket.R;
\r
4 import net.sf.openrocket.android.util.AndroidLogWrapper;
\r
5 import net.sf.openrocket.unit.UnitGroup;
\r
6 import android.content.SharedPreferences;
\r
7 import android.os.Bundle;
\r
8 import android.preference.Preference;
\r
9 import android.preference.PreferenceManager;
\r
11 public class PreferencesActivity extends android.preference.PreferenceActivity
\r
16 protected void onCreate( Bundle savedInstanceState ) {
\r
17 super.onCreate( savedInstanceState );
\r
18 addPreferencesFromResource(R.xml.preferences);
\r
20 PreferenceManager prefManager = getPreferenceManager();
\r
22 String key = getApplication().getResources().getString(R.string.PreferenceUnitLengthOption);
\r
23 Preference pref = prefManager.findPreference(key);
\r
24 new UnitPreferenceListener(pref, UnitGroup.UNITS_LENGTH, "Current value ");
\r
28 String key = getApplication().getResources().getString(R.string.PreferenceUnitMassOption);
\r
29 Preference pref = prefManager.findPreference(key);
\r
30 new UnitPreferenceListener(pref, UnitGroup.UNITS_MASS, "Current value ");
\r
34 String key = getApplication().getResources().getString(R.string.PreferenceUnitVelocityOption);
\r
35 Preference pref = prefManager.findPreference(key);
\r
36 new UnitPreferenceListener(pref, UnitGroup.UNITS_VELOCITY, "Current value ");
\r
40 String key = getApplication().getResources().getString(R.string.PreferenceUnitDistanceOption);
\r
41 Preference pref = prefManager.findPreference(key);
\r
42 new UnitPreferenceListener(pref, UnitGroup.UNITS_DISTANCE, "Current value ");
\r
48 protected void onDestroy() {
\r
53 * This method is to be called from Application setup to pull the saved preference
\r
54 * values into the various datastructures used in OpenRocket.
\r
55 * This method is located in this class because it is probably best to have as much
\r
56 * of the code in the same place as possible.
\r
57 * @param sharedPreferences
\r
59 public static void initializePreferences( android.app.Application app, SharedPreferences sharedPreferences ) {
\r
61 String unitLength = app.getResources().getString(R.string.PreferenceUnitLengthOption);
\r
62 String len = sharedPreferences.getString(unitLength, "cm");
\r
63 UnitGroup.UNITS_LENGTH.setDefaultUnit( len );
\r
65 AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");
\r
66 String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);
\r
67 String mass = sharedPreferences.getString(unitMass, "g");
\r
68 UnitGroup.UNITS_MASS.setDefaultUnit( mass );
\r
70 String unitVelocity = app.getResources().getString(R.string.PreferenceUnitVelocityOption);
\r
71 String velocity = sharedPreferences.getString(unitVelocity, "m/s");
\r
72 UnitGroup.UNITS_VELOCITY.setDefaultUnit( velocity );
\r
74 String unitDistance = app.getResources().getString(R.string.PreferenceUnitDistanceOption);
\r
75 String distance = sharedPreferences.getString(unitDistance, "m");
\r
76 UnitGroup.UNITS_DISTANCE.setDefaultUnit( distance );
\r
80 private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {
\r
82 private UnitGroup matchedGroup;
\r
83 private String message;
\r
84 private Preference pref;
\r
86 private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {
\r
88 this.matchedGroup = unit;
\r
89 this.message = message;
\r
90 pref.setSummary(message + unit.getDefaultUnit().getUnit());
\r
91 // todo figure out how to setSummary - need to get initial value.
\r
92 pref.setOnPreferenceChangeListener(this);
\r
96 public boolean onPreferenceChange(Preference preference, Object newValue) {
\r
97 matchedGroup.setDefaultUnit((String)newValue);
\r
98 preference.setSummary(message + newValue);
\r