Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / Overview.java
index 8692abf5a84746802ab2c237deee372d4920d88d..33cedaeb7b9744995bc802f8934a7fd6551a6769 100644 (file)
@@ -5,7 +5,7 @@ import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
 import net.sf.openrocket.aerodynamics.BarrowmanCalculator;\r
 import net.sf.openrocket.aerodynamics.FlightConditions;\r
 import net.sf.openrocket.aerodynamics.WarningSet;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import net.sf.openrocket.document.OpenRocketDocument;\r
 import net.sf.openrocket.masscalc.BasicMassCalculator;\r
@@ -25,8 +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
 public class Overview extends Fragment\r
@@ -37,7 +35,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
        private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();\r
        private MassCalculator massCalculator  = new BasicMassCalculator();\r
 \r
-       private Spinner configurationSpinner;\r
+       private MotorConfigSpinner configurationSpinner;\r
 \r
 \r
        @Override\r
@@ -45,7 +43,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                        Bundle savedInstanceState) {\r
                AndroidLogWrapper.d(Overview.class, "Created View");\r
                View v = inflater.inflate(R.layout.rocket_overview, container, false);\r
-               configurationSpinner = (Spinner) v.findViewById(R.id.openrocketviewerConfigurationSpinner);\r
+               configurationSpinner = (MotorConfigSpinner) v.findViewById(R.id.openrocketviewerConfigurationSpinner);\r
 \r
                return v;\r
        }\r
@@ -53,10 +51,15 @@ 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
+       }\r
+\r
+       @Override\r
+       public void onResume() {\r
+               super.onResume();\r
                setup();\r
 \r
        }\r
@@ -67,7 +70,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,22 +78,19 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                        setup();\r
                }\r
        }\r
-       \r
+\r
        private void setup() {\r
-               final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
-               final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();\r
+               final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
                Rocket rocket = rocketDocument.getRocket();\r
 \r
-               String[] motorConfigs = rocket.getMotorConfigurationIDs();\r
-               ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),R.layout.simple_spinner_item);\r
-               for( String config: motorConfigs ) {\r
-                       spinnerAdapter.add(rocket.getMotorConfigurationNameOrDescription(config));\r
-               }\r
-\r
-               AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);\r
+               // Find the index of the default configuration so we can preselect it.\r
+               Configuration defaultConfiguration = rocketDocument.getDefaultConfiguration();\r
+               configurationSpinner.createAdapter(rocket);\r
                AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);\r
 \r
-               configurationSpinner.setAdapter(spinnerAdapter);\r
+               if ( defaultConfiguration != null ) {\r
+                       configurationSpinner.setSelectedConfiguration(defaultConfiguration.getMotorConfigurationID());\r
+               }\r
                configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {\r
 \r
                        /* (non-Javadoc)\r
@@ -101,16 +101,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
@@ -134,7 +135,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