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 import com.actionbarsherlock.app.SherlockPreferenceActivity;
\r
13 public class PreferencesActivity extends SherlockPreferenceActivity
\r
18 protected void onCreate( Bundle savedInstanceState ) {
\r
19 super.onCreate( savedInstanceState );
\r
20 addPreferencesFromResource(R.xml.preferences);
\r
22 PreferenceManager prefManager = getPreferenceManager();
\r
24 String key = getApplication().getResources().getString(R.string.PreferenceUnitLengthOption);
\r
25 Preference pref = prefManager.findPreference(key);
\r
26 new UnitPreferenceListener(pref, UnitGroup.UNITS_LENGTH, "Current value ");
\r
30 String key = getApplication().getResources().getString(R.string.PreferenceUnitMassOption);
\r
31 Preference pref = prefManager.findPreference(key);
\r
32 new UnitPreferenceListener(pref, UnitGroup.UNITS_MASS, "Current value ");
\r
36 String key = getApplication().getResources().getString(R.string.PreferenceUnitVelocityOption);
\r
37 Preference pref = prefManager.findPreference(key);
\r
38 new UnitPreferenceListener(pref, UnitGroup.UNITS_VELOCITY, "Current value ");
\r
42 String key = getApplication().getResources().getString(R.string.PreferenceUnitDistanceOption);
\r
43 Preference pref = prefManager.findPreference(key);
\r
44 new UnitPreferenceListener(pref, UnitGroup.UNITS_DISTANCE, "Current value ");
\r
50 protected void onDestroy() {
\r
55 * This method is to be called from Application setup to pull the saved preference
\r
56 * values into the various datastructures used in OpenRocket.
\r
57 * This method is located in this class because it is probably best to have as much
\r
58 * of the code in the same place as possible.
\r
59 * @param sharedPreferences
\r
61 public static void initializePreferences( android.app.Application app, SharedPreferences sharedPreferences ) {
\r
63 String unitLength = app.getResources().getString(R.string.PreferenceUnitLengthOption);
\r
64 String len = sharedPreferences.getString(unitLength, "cm");
\r
65 UnitGroup.UNITS_LENGTH.setDefaultUnit( len );
\r
67 AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");
\r
68 String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);
\r
69 String mass = sharedPreferences.getString(unitMass, "g");
\r
70 UnitGroup.UNITS_MASS.setDefaultUnit( mass );
\r
72 String unitVelocity = app.getResources().getString(R.string.PreferenceUnitVelocityOption);
\r
73 String velocity = sharedPreferences.getString(unitVelocity, "m/s");
\r
74 UnitGroup.UNITS_VELOCITY.setDefaultUnit( velocity );
\r
76 String unitDistance = app.getResources().getString(R.string.PreferenceUnitDistanceOption);
\r
77 String distance = sharedPreferences.getString(unitDistance, "m");
\r
78 UnitGroup.UNITS_DISTANCE.setDefaultUnit( distance );
\r
82 private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {
\r
84 private UnitGroup matchedGroup;
\r
85 private String message;
\r
86 private Preference pref;
\r
88 private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {
\r
90 this.matchedGroup = unit;
\r
91 this.message = message;
\r
92 pref.setSummary(message + unit.getDefaultUnit().getUnit());
\r
93 // todo figure out how to setSummary - need to get initial value.
\r
94 pref.setOnPreferenceChangeListener(this);
\r
98 public boolean onPreferenceChange(Preference preference, Object newValue) {
\r
99 matchedGroup.setDefaultUnit((String)newValue);
\r
100 preference.setSummary(message + newValue);
\r