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
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
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
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
@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
\r
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
prefs.unregisterOnSharedPreferenceChangeListener(this);\r
-}\r
+ }\r
\r
@Override\r
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
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
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
\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