Fix up the unit preferences correctly. The preferences now show the current setting...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 2 Feb 2012 02:49:44 +0000 (02:49 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 2 Feb 2012 02:49:44 +0000 (02:49 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@383 180e2498-e6e9-4542-8430-84ac67f01cd8

android/src/net/sf/openrocket/android/PreferencesActivity.java
android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java
android/src/net/sf/openrocket/android/rocket/Overview.java
android/src/net/sf/openrocket/android/rocket/Simulations.java

index 9680c9e859acaddb9f46eec2a7a939562750b0f9..5aa544ad71f0a9d2a800634c4ef15884e9b933c2 100644 (file)
@@ -1,29 +1,52 @@
 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
+{\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,6 +62,7 @@ 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
@@ -53,12 +77,28 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
                \r
        }\r
 \r
-       @Override\r
-       protected void onStop() {\r
-               initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));\r
-               super.onStop();\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
-       \r
 }\r
index 8584c763dae4bc95598384331ee08a000caa765c..9362c8bf24401d3ecac80aea12601a78fd435de7 100644 (file)
@@ -13,9 +13,7 @@ import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.document.Simulation;\r
 import net.sf.openrocket.rocketcomponent.Configuration;\r
 import android.content.Intent;\r
-import android.content.SharedPreferences;\r
 import android.os.Bundle;\r
-import android.preference.PreferenceManager;\r
 import android.support.v4.app.Fragment;\r
 import android.support.v4.app.FragmentActivity;\r
 import android.support.v4.app.FragmentTransaction;\r
@@ -27,8 +25,7 @@ import android.view.View;
 import android.widget.TabHost;\r
 \r
 public class OpenRocketViewer extends FragmentActivity\r
-implements SharedPreferences.OnSharedPreferenceChangeListener,\r
-Simulations.OnSimulationSelectedListener\r
+implements Simulations.OnSimulationSelectedListener\r
 {\r
 \r
        OpenRocketDocument rocketDocument;\r
@@ -48,9 +45,6 @@ Simulations.OnSimulationSelectedListener
 \r
                setContentView(R.layout.openrocketviewer);\r
 \r
-               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
-               prefs.registerOnSharedPreferenceChangeListener(this);\r
-\r
                mTabHost = (TabHost)findViewById(android.R.id.tabhost);\r
                mTabHost.setup();\r
 \r
@@ -76,15 +70,6 @@ Simulations.OnSimulationSelectedListener
                outState.putString("tab", mTabHost.getCurrentTabTag());\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
-               // just in case the user changed the units, we redraw.\r
-               //      TODO =  updateContents();  redraw all children..\r
-       }\r
-\r
        @Override\r
        public boolean onCreateOptionsMenu(Menu menu) {\r
                MenuInflater inflater = getMenuInflater();\r
index d1b7a9ce89829c8d34a0b39cffdb9011905d661d..d287a8165051518157ceec473562a1e6cd59b829 100644 (file)
@@ -17,7 +17,9 @@ import net.sf.openrocket.rocketcomponent.RocketUtils;
 import net.sf.openrocket.unit.Unit;\r
 import net.sf.openrocket.unit.UnitGroup;\r
 import net.sf.openrocket.util.Coordinate;\r
+import android.content.SharedPreferences;\r
 import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
 import android.support.v4.app.Fragment;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
@@ -27,7 +29,9 @@ import android.widget.ArrayAdapter;
 import android.widget.Spinner;\r
 import android.widget.TextView;\r
 \r
-public class Overview extends Fragment {\r
+public class Overview extends Fragment\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
 \r
        /* Calculation of CP and CG */\r
        private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();\r
@@ -46,11 +50,33 @@ public class Overview extends Fragment {
                return v;\r
        }\r
 \r
-       \r
        @Override\r
        public void onActivityCreated(Bundle savedInstanceState) {\r
                super.onActivityCreated(savedInstanceState);\r
+               \r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+               setup();\r
+\r
+       }\r
 \r
+       @Override\r
+       public void onDestroy() {\r
+               super.onDestroy();\r
+\r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.unregisterOnSharedPreferenceChangeListener(this);\r
+}\r
+\r
+       @Override\r
+       public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+               if ( this.isVisible() ) {\r
+                       setup();\r
+               }\r
+       }\r
+       \r
+       private void setup() {\r
                final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
                final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();\r
                Rocket rocket = rocketDocument.getRocket();\r
@@ -63,7 +89,7 @@ public class Overview extends Fragment {
 \r
                AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);\r
                AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);\r
-               \r
+\r
                configurationSpinner.setAdapter(spinnerAdapter);\r
                configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {\r
 \r
@@ -108,16 +134,13 @@ public class Overview extends Fragment {
 \r
                Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();\r
                Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();\r
-\r
+               \r
                Coordinate cg = RocketUtils.getCG(rocket, MassCalcType.NO_MOTORS);\r
                double length = RocketUtils.getLength(rocket);\r
                ((TextView)getActivity().findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());\r
                ((TextView)getActivity().findViewById(R.id.openrocketviewerLength)).setText(lengthUnit.toStringUnit(length));\r
                ((TextView)getActivity().findViewById(R.id.openrocketviewerMass)).setText(massUnit.toStringUnit(cg.weight));\r
                ((TextView)getActivity().findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));\r
-\r
-\r
        }\r
 \r
-\r
 }\r
index f36c1dd6852f8f9e90f5416b17d5bd8a329745a5..b306141754964d4eeb8a5305c749b98d692258ad 100644 (file)
@@ -8,7 +8,9 @@ import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.unit.Unit;\r
 import net.sf.openrocket.unit.UnitGroup;\r
 import android.app.Activity;\r
+import android.content.SharedPreferences;\r
 import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
 import android.support.v4.app.Fragment;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
@@ -19,12 +21,14 @@ import android.widget.ArrayAdapter;
 import android.widget.ListView;\r
 import android.widget.TextView;\r
 \r
-public class Simulations extends Fragment {\r
+public class Simulations extends Fragment\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
 \r
        public interface OnSimulationSelectedListener {\r
                public void onSimulationSelected( int simulationId );\r
        }\r
-       \r
+\r
        private ListView simulationList;\r
        private OnSimulationSelectedListener listener;\r
 \r
@@ -54,6 +58,30 @@ public class Simulations extends Fragment {
        public void onActivityCreated(Bundle savedInstanceState) {\r
                super.onActivityCreated(savedInstanceState);\r
 \r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+               setup();\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onDestroy() {\r
+               super.onDestroy();\r
+\r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.unregisterOnSharedPreferenceChangeListener(this);\r
+       }\r
+\r
+       @Override\r
+       public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+               if ( this.isVisible() ) {\r
+                       setup();\r
+               }\r
+       }\r
+\r
+\r
+       private void setup() {\r
                final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
                AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
 \r