Enhance the Simulation Events Dialog so it shows more like a table with altitude...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 15 May 2012 20:58:48 +0000 (20:58 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 15 May 2012 20:58:48 +0000 (20:58 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@680 180e2498-e6e9-4542-8430-84ac67f01cd8

android/res/layout-land/simulation_event_item.xml [new file with mode: 0644]
android/res/layout/simulation_event_dialog.xml
android/res/layout/simulation_event_item.xml [new file with mode: 0644]
android/src/net/sf/openrocket/android/simulation/SimulationEventsDialog.java

diff --git a/android/res/layout-land/simulation_event_item.xml b/android/res/layout-land/simulation_event_item.xml
new file mode 100644 (file)
index 0000000..8d3c123
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<TableRow xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="wrap_content"\r
+    android:layout_height="match_parent" >\r
+\r
+    <TextView\r
+        android:id="@+id/eventName"\r
+        style="@style/labelTextStyle"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventName" />\r
+\r
+    <TextView\r
+        android:id="@+id/eventTime"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventTime"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+\r
+    <TextView\r
+        android:id="@+id/eventVelocity"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventVelocity"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+\r
+    <TextView\r
+        android:id="@+id/eventAltitude"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventAltitude"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+\r
+</TableRow>
\ No newline at end of file
index 1fc4426f52cc92ffacc5d0eb7d056ed6151a8a75..d92b42f76ccfe5ca15c9b7481ec1c847078fedaf 100644 (file)
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical" >
-
-    <ListView
+    android:layout_height="match_parent">
+    
+    <TableLayout
         android:id="@+id/simulationEventsList"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent" />
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" >
+    </TableLayout>
+
 
-</LinearLayout>
\ No newline at end of file
+</ScrollView>
diff --git a/android/res/layout/simulation_event_item.xml b/android/res/layout/simulation_event_item.xml
new file mode 100644 (file)
index 0000000..e50a2c2
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<TableRow xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="wrap_content"\r
+    android:layout_height="match_parent" >\r
+\r
+    <TextView\r
+        android:id="@+id/eventName"\r
+        style="@style/labelTextStyle"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventName" />\r
+\r
+    <LinearLayout\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:orientation="vertical">\r
+        \r
+    <TextView\r
+        android:id="@+id/eventTime"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventTime"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+\r
+    <TextView\r
+        android:id="@+id/eventVelocity"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventVelocity"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+\r
+    <TextView\r
+        android:id="@+id/eventAltitude"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="eventAltitude"\r
+        android:textAppearance="?android:attr/textAppearanceSmall" />\r
+    </LinearLayout>\r
+    \r
+</TableRow>
\ No newline at end of file
index 21a7e78d9454b68b51135d2b8ef05e792e0b08a9..5cbae80a581f886c054a2e426fc3720b7c518539 100644 (file)
@@ -1,22 +1,27 @@
 package net.sf.openrocket.android.simulation;\r
 \r
+import java.util.List;\r
+\r
 import net.sf.openrocket.R;\r
 import net.sf.openrocket.android.Application;\r
 import net.sf.openrocket.document.OpenRocketDocument;\r
+import net.sf.openrocket.simulation.FlightDataBranch;\r
+import net.sf.openrocket.simulation.FlightDataType;\r
 import net.sf.openrocket.simulation.FlightEvent;\r
+import net.sf.openrocket.unit.UnitGroup;\r
+import net.sf.openrocket.util.MathUtil;\r
 import android.os.Bundle;\r
 import android.support.v4.app.DialogFragment;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
 import android.view.ViewGroup;\r
-import android.widget.ArrayAdapter;\r
-import android.widget.ListView;\r
+import android.widget.TableLayout;\r
 import android.widget.TextView;\r
 \r
 public class SimulationEventsDialog extends DialogFragment {\r
 \r
        private SimulationChart chart;\r
-       private ListView eventList;\r
+       private TableLayout eventList;\r
 \r
        public static SimulationEventsDialog newInstance( SimulationChart chart ) {\r
                SimulationEventsDialog d = new SimulationEventsDialog();\r
@@ -29,32 +34,29 @@ public class SimulationEventsDialog extends DialogFragment {
 \r
                View v = inflater.inflate(R.layout.simulation_event_dialog, container, false);\r
 \r
-               eventList = (ListView) v.findViewById(R.id.simulationEventsList);\r
-\r
-               OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
-               // Initialize the eventList\r
-               ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(\r
-                               getActivity(),\r
-                               android.R.layout.simple_list_item_1,\r
-                               chart.getFlightDataBranch(rocketDocument).getEvents() ) {\r
-\r
-                       @Override\r
-                       public View getView(int position, View convertView,\r
-                                       ViewGroup parent) {\r
-                               View v = convertView;\r
-                               if ( v == null ) {\r
-                                       LayoutInflater li = inflater;\r
-                                       v = li.inflate(android.R.layout.simple_list_item_1,null);\r
-                               }\r
-                               FlightEvent event = this.getItem(position);\r
-                               ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" );\r
-                               return v;\r
-                       }\r
-\r
-               };\r
-               // Events are not selectable for plotting right now.\r
-               //eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);\r
-               eventList.setAdapter(events);\r
+               eventList = (TableLayout) v.findViewById(R.id.simulationEventsList);\r
+               eventList.setColumnShrinkable(0, true);\r
+\r
+               final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+\r
+               List<FlightEvent> events = chart.getFlightDataBranch(rocketDocument).getEvents();\r
+               \r
+               for ( FlightEvent event : events ) {\r
+\r
+                       View tableRow = inflater.inflate(R.layout.simulation_event_item,null);\r
+                       ((TextView)tableRow.findViewById(R.id.eventName)).setText( event.getType().toString() );\r
+                       ((TextView)tableRow.findViewById(R.id.eventTime)).setText( event.getTime() + " (s)" );\r
+                       \r
+                       FlightDataBranch data = chart.getFlightDataBranch(rocketDocument);\r
+                       double vel = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_VELOCITY_TOTAL), event.getTime());\r
+                       ((TextView)tableRow.findViewById(R.id.eventVelocity)).setText( UnitGroup.UNITS_VELOCITY.getDefaultUnit().toStringUnit(vel) );\r
+\r
+                       double alt = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_ALTITUDE), event.getTime());\r
+                       ((TextView)tableRow.findViewById(R.id.eventAltitude)).setText( UnitGroup.UNITS_DISTANCE.getDefaultUnit().toStringUnit(alt) );\r
+\r
+                       eventList.addView( tableRow );\r
+               }\r
+               \r
                return v;\r
        }\r
 \r