create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / PreferencesActivity.java
1 package net.sf.openrocket.android;\r
2 \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
10 \r
11 import com.actionbarsherlock.app.SherlockPreferenceActivity;\r
12 \r
13 public class PreferencesActivity extends SherlockPreferenceActivity \r
14 {\r
15 \r
16         \r
17         @Override\r
18         protected void onCreate( Bundle savedInstanceState ) {\r
19                 super.onCreate( savedInstanceState );\r
20                 addPreferencesFromResource(R.xml.preferences);\r
21                 \r
22                 PreferenceManager prefManager = getPreferenceManager();\r
23                 {\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
27                         \r
28                 }\r
29                 {\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
33                         \r
34                 }\r
35                 {\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
39                         \r
40                 }\r
41                 {\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
45                         \r
46                 }\r
47         }\r
48 \r
49         @Override\r
50         protected void onDestroy() {\r
51                 super.onDestroy();\r
52         }\r
53 \r
54         /**\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
60          */\r
61         public static void initializePreferences( android.app.Application app, SharedPreferences sharedPreferences ) {\r
62                 \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
66                 \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
71                 \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
75                 \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
79                 \r
80         }\r
81 \r
82         private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {\r
83 \r
84                 private UnitGroup matchedGroup;\r
85                 private String message;\r
86                 private Preference pref;\r
87                 \r
88                 private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {\r
89                         this.pref = pref;\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
95                 }\r
96                 \r
97                 @Override\r
98                 public boolean onPreferenceChange(Preference preference, Object newValue) {\r
99                         matchedGroup.setDefaultUnit((String)newValue);\r
100                         preference.setSummary(message + newValue);\r
101                         return true;\r
102                 }\r
103                 \r
104         }\r
105         \r
106 }\r