From 1276ff17b116cf6c53aff54e8e96921018e56d09 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 15 May 2012 20:58:48 +0000 Subject: [PATCH] Enhance the Simulation Events Dialog so it shows more like a table with altitude and velocity values as well as time. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@680 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../res/layout-land/simulation_event_item.xml | 34 +++++++++++ .../res/layout/simulation_event_dialog.xml | 17 +++--- android/res/layout/simulation_event_item.xml | 40 +++++++++++++ .../simulation/SimulationEventsDialog.java | 60 ++++++++++--------- 4 files changed, 114 insertions(+), 37 deletions(-) create mode 100644 android/res/layout-land/simulation_event_item.xml create mode 100644 android/res/layout/simulation_event_item.xml diff --git a/android/res/layout-land/simulation_event_item.xml b/android/res/layout-land/simulation_event_item.xml new file mode 100644 index 00000000..8d3c123f --- /dev/null +++ b/android/res/layout-land/simulation_event_item.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/res/layout/simulation_event_dialog.xml b/android/res/layout/simulation_event_dialog.xml index 1fc4426f..d92b42f7 100644 --- a/android/res/layout/simulation_event_dialog.xml +++ b/android/res/layout/simulation_event_dialog.xml @@ -1,12 +1,13 @@ - - - + + + android:layout_width="match_parent" + android:layout_height="wrap_content" > + + - \ No newline at end of file + diff --git a/android/res/layout/simulation_event_item.xml b/android/res/layout/simulation_event_item.xml new file mode 100644 index 00000000..e50a2c26 --- /dev/null +++ b/android/res/layout/simulation_event_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/net/sf/openrocket/android/simulation/SimulationEventsDialog.java b/android/src/net/sf/openrocket/android/simulation/SimulationEventsDialog.java index 21a7e78d..5cbae80a 100644 --- a/android/src/net/sf/openrocket/android/simulation/SimulationEventsDialog.java +++ b/android/src/net/sf/openrocket/android/simulation/SimulationEventsDialog.java @@ -1,22 +1,27 @@ package net.sf.openrocket.android.simulation; +import java.util.List; + import net.sf.openrocket.R; import net.sf.openrocket.android.Application; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.simulation.FlightDataBranch; +import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.unit.UnitGroup; +import net.sf.openrocket.util.MathUtil; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; +import android.widget.TableLayout; import android.widget.TextView; public class SimulationEventsDialog extends DialogFragment { private SimulationChart chart; - private ListView eventList; + private TableLayout eventList; public static SimulationEventsDialog newInstance( SimulationChart chart ) { SimulationEventsDialog d = new SimulationEventsDialog(); @@ -29,32 +34,29 @@ public class SimulationEventsDialog extends DialogFragment { View v = inflater.inflate(R.layout.simulation_event_dialog, container, false); - eventList = (ListView) v.findViewById(R.id.simulationEventsList); - - OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument(); - // Initialize the eventList - ArrayAdapter events = new ArrayAdapter( - getActivity(), - android.R.layout.simple_list_item_1, - chart.getFlightDataBranch(rocketDocument).getEvents() ) { - - @Override - public View getView(int position, View convertView, - ViewGroup parent) { - View v = convertView; - if ( v == null ) { - LayoutInflater li = inflater; - v = li.inflate(android.R.layout.simple_list_item_1,null); - } - FlightEvent event = this.getItem(position); - ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" ); - return v; - } - - }; - // Events are not selectable for plotting right now. - //eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); - eventList.setAdapter(events); + eventList = (TableLayout) v.findViewById(R.id.simulationEventsList); + eventList.setColumnShrinkable(0, true); + + final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument(); + + List events = chart.getFlightDataBranch(rocketDocument).getEvents(); + + for ( FlightEvent event : events ) { + + View tableRow = inflater.inflate(R.layout.simulation_event_item,null); + ((TextView)tableRow.findViewById(R.id.eventName)).setText( event.getType().toString() ); + ((TextView)tableRow.findViewById(R.id.eventTime)).setText( event.getTime() + " (s)" ); + + FlightDataBranch data = chart.getFlightDataBranch(rocketDocument); + double vel = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_VELOCITY_TOTAL), event.getTime()); + ((TextView)tableRow.findViewById(R.id.eventVelocity)).setText( UnitGroup.UNITS_VELOCITY.getDefaultUnit().toStringUnit(vel) ); + + double alt = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_ALTITUDE), event.getTime()); + ((TextView)tableRow.findViewById(R.id.eventAltitude)).setText( UnitGroup.UNITS_DISTANCE.getDefaultUnit().toStringUnit(alt) ); + + eventList.addView( tableRow ); + } + return v; } -- 2.47.2