1 package net.sf.openrocket.android.rocket;
\r
3 import net.sf.openrocket.R;
\r
4 import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
\r
5 import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
\r
6 import net.sf.openrocket.aerodynamics.FlightConditions;
\r
7 import net.sf.openrocket.aerodynamics.WarningSet;
\r
8 import net.sf.openrocket.android.Application;
\r
9 import net.sf.openrocket.android.util.AndroidLogWrapper;
\r
10 import net.sf.openrocket.document.OpenRocketDocument;
\r
11 import net.sf.openrocket.masscalc.BasicMassCalculator;
\r
12 import net.sf.openrocket.masscalc.MassCalculator;
\r
13 import net.sf.openrocket.masscalc.MassCalculator.MassCalcType;
\r
14 import net.sf.openrocket.rocketcomponent.Configuration;
\r
15 import net.sf.openrocket.rocketcomponent.Rocket;
\r
16 import net.sf.openrocket.rocketcomponent.RocketUtils;
\r
17 import net.sf.openrocket.unit.Unit;
\r
18 import net.sf.openrocket.unit.UnitGroup;
\r
19 import net.sf.openrocket.util.Coordinate;
\r
20 import android.content.SharedPreferences;
\r
21 import android.os.Bundle;
\r
22 import android.preference.PreferenceManager;
\r
23 import android.support.v4.app.Fragment;
\r
24 import android.view.LayoutInflater;
\r
25 import android.view.View;
\r
26 import android.view.ViewGroup;
\r
27 import android.widget.AdapterView;
\r
28 import android.widget.ArrayAdapter;
\r
29 import android.widget.Spinner;
\r
30 import android.widget.TextView;
\r
32 public class Overview extends Fragment
\r
33 implements SharedPreferences.OnSharedPreferenceChangeListener
\r
36 /* Calculation of CP and CG */
\r
37 private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();
\r
38 private MassCalculator massCalculator = new BasicMassCalculator();
\r
40 private Spinner configurationSpinner;
\r
44 public View onCreateView(LayoutInflater inflater, ViewGroup container,
\r
45 Bundle savedInstanceState) {
\r
46 AndroidLogWrapper.d(Overview.class, "Created View");
\r
47 View v = inflater.inflate(R.layout.rocket_overview, container, false);
\r
48 configurationSpinner = (Spinner) v.findViewById(R.id.openrocketviewerConfigurationSpinner);
\r
54 public void onActivityCreated(Bundle savedInstanceState) {
\r
55 super.onActivityCreated(savedInstanceState);
\r
57 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
\r
58 prefs.registerOnSharedPreferenceChangeListener(this);
\r
65 public void onDestroy() {
\r
68 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
\r
69 prefs.unregisterOnSharedPreferenceChangeListener(this);
\r
73 public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
\r
74 if ( this.isVisible() ) {
\r
79 private void setup() {
\r
80 final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
\r
81 final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();
\r
82 Rocket rocket = rocketDocument.getRocket();
\r
84 String[] motorConfigs = rocket.getMotorConfigurationIDs();
\r
85 ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),R.layout.simple_spinner_item);
\r
86 for( String config: motorConfigs ) {
\r
87 spinnerAdapter.add(rocket.getMotorConfigurationNameOrDescription(config));
\r
90 AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);
\r
91 AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);
\r
93 configurationSpinner.setAdapter(spinnerAdapter);
\r
94 configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {
\r
97 * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android.widget.AdapterView, android.view.View, int, long)
\r
100 public void onItemSelected(AdapterView<?> arg0, View arg1,
\r
101 int arg2, long arg3) {
\r
103 String selectedConfigId = rocketDocument.getRocket().getMotorConfigurationIDs()[arg2];
\r
104 rocketConfiguration.setMotorConfigurationID(selectedConfigId);
\r
105 Coordinate cp = aerodynamicCalculator.getWorstCP(rocketConfiguration,
\r
106 new FlightConditions(rocketConfiguration),
\r
109 Coordinate cg = massCalculator.getCG(rocketConfiguration, MassCalcType.LAUNCH_MASS);
\r
111 Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();
\r
112 Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();
\r
113 Unit stabilityUnit = UnitGroup.stabilityUnits(rocketConfiguration).getDefaultUnit();
\r
115 ((TextView)getActivity().findViewById(R.id.openrocketviewerCP)).setText(lengthUnit.toStringUnit(cp.x));
\r
116 ((TextView)getActivity().findViewById(R.id.openrocketviewerCG)).setText(lengthUnit.toStringUnit(cg.x));
\r
117 ((TextView)getActivity().findViewById(R.id.openrocketviewerLiftOffWeight)).setText(massUnit.toStringUnit(cg.weight));
\r
118 ((TextView)getActivity().findViewById(R.id.openrocketviewerStabilityMargin)).setText(stabilityUnit.toStringUnit(cp.x-cg.x));
\r
123 * @see android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(android.widget.AdapterView)
\r
126 public void onNothingSelected(AdapterView<?> arg0) {
\r
127 ((TextView)getActivity().findViewById(R.id.openrocketviewerCP)).setText("");
\r
128 ((TextView)getActivity().findViewById(R.id.openrocketviewerCG)).setText("");
\r
129 ((TextView)getActivity().findViewById(R.id.openrocketviewerLiftOffWeight)).setText("");
\r
130 ((TextView)getActivity().findViewById(R.id.openrocketviewerStabilityMargin)).setText("");
\r
135 Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();
\r
136 Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();
\r
138 Coordinate cg = RocketUtils.getCG(rocket, MassCalcType.NO_MOTORS);
\r
139 double length = RocketUtils.getLength(rocket);
\r
140 ((TextView)getActivity().findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());
\r
141 ((TextView)getActivity().findViewById(R.id.openrocketviewerLength)).setText(lengthUnit.toStringUnit(length));
\r
142 ((TextView)getActivity().findViewById(R.id.openrocketviewerMass)).setText(massUnit.toStringUnit(cg.weight));
\r
143 ((TextView)getActivity().findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));
\r