Correctly change configurations without changing the default configuration id. Also, select in the spinner the default configuration when constructed.

This commit is contained in:
Kevin Ruland 2012-05-25 18:41:53 +00:00
parent 134031de24
commit 9a54fbdb88

View File

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