Correctly change configurations without changing the default configuration id. Also...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Fri, 25 May 2012 18:41:53 +0000 (18:41 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Fri, 25 May 2012 18:41:53 +0000 (18:41 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@723 180e2498-e6e9-4542-8430-84ac67f01cd8

android/src/net/sf/openrocket/android/rocket/Overview.java

index 61f4c1564f39eb9fdb22df17f757ce05ef5eda60..2f5c3dd6660916032c402f1718efb86237e10f84 100644 (file)
@@ -25,7 +25,6 @@ import android.view.LayoutInflater;
 import android.view.View;\r
 import android.view.ViewGroup;\r
 import android.widget.AdapterView;\r
-import android.widget.ArrayAdapter;\r
 import android.widget.Spinner;\r
 import android.widget.TextView;\r
 \r
@@ -53,7 +52,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
        @Override\r
        public void onActivityCreated(Bundle savedInstanceState) {\r
                super.onActivityCreated(savedInstanceState);\r
-               \r
+\r
                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
                prefs.registerOnSharedPreferenceChangeListener(this);\r
 \r
@@ -67,7 +66,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
 \r
                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
                prefs.unregisterOnSharedPreferenceChangeListener(this);\r
-}\r
+       }\r
 \r
        @Override\r
        public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
@@ -75,19 +74,36 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                        setup();\r
                }\r
        }\r
-       \r
+\r
        private void setup() {\r
                final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
-               // FIXME - here is the reason why the default configuration gets dorked with.\r
-               final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();\r
                Rocket rocket = rocketDocument.getRocket();\r
 \r
+               // Find the index of the default configuration so we can preselect it.\r
+               Configuration defaultConfiguration = rocketDocument.getDefaultConfiguration();\r
+               int selectedIndex = 0;\r
+               if ( defaultConfiguration != null ) {\r
+                       String defaultConfigId = defaultConfiguration.getMotorConfigurationID();\r
+                       if ( defaultConfigId != null ) {\r
+                               for( String s : rocket.getMotorConfigurationIDs() ) {\r
+                                       // Note - s may be null since it is a valid id.\r
+                                       if ( defaultConfigId.equals(s) ) {\r
+                                               break;\r
+                                       }\r
+                                       selectedIndex++;\r
+                               }\r
+                       }\r
+               }\r
+               if( selectedIndex > rocket.getMotorConfigurationIDs().length ) {\r
+                       selectedIndex = 0;\r
+               }\r
                MotorConfigSpinnerAdapter spinnerAdapter = new MotorConfigSpinnerAdapter(getActivity(),rocket);\r
 \r
                AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);\r
                AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);\r
 \r
                configurationSpinner.setAdapter(spinnerAdapter);\r
+               configurationSpinner.setSelection(selectedIndex);\r
                configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {\r
 \r
                        /* (non-Javadoc)\r
@@ -98,16 +114,17 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                                        int arg2, long arg3) {\r
 \r
                                String selectedConfigId = rocketDocument.getRocket().getMotorConfigurationIDs()[arg2];\r
-                               rocketConfiguration.setMotorConfigurationID(selectedConfigId);\r
-                               Coordinate cp = aerodynamicCalculator.getWorstCP(rocketConfiguration,\r
-                                               new FlightConditions(rocketConfiguration),\r
+                               Configuration config = new Configuration(rocketDocument.getRocket());\r
+                               config.setMotorConfigurationID(selectedConfigId);\r
+                               Coordinate cp = aerodynamicCalculator.getWorstCP(config,\r
+                                               new FlightConditions(config),\r
                                                new WarningSet());\r
 \r
-                               Coordinate cg = massCalculator.getCG(rocketConfiguration, MassCalcType.LAUNCH_MASS);\r
+                               Coordinate cg = massCalculator.getCG(config, MassCalcType.LAUNCH_MASS);\r
 \r
                                Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();\r
                                Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();\r
-                               Unit stabilityUnit = UnitGroup.stabilityUnits(rocketConfiguration).getDefaultUnit();\r
+                               Unit stabilityUnit = UnitGroup.stabilityUnits(config).getDefaultUnit();\r
 \r
                                ((TextView)getActivity().findViewById(R.id.openrocketviewerCP)).setText(lengthUnit.toStringUnit(cp.x));\r
                                ((TextView)getActivity().findViewById(R.id.openrocketviewerCG)).setText(lengthUnit.toStringUnit(cg.x));\r
@@ -131,7 +148,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
 \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