Enhance the Simulation Events Dialog so it shows more like a table with altitude and velocity values as well as time.

This commit is contained in:
Kevin Ruland 2012-05-15 20:58:48 +00:00
parent fe5b8018de
commit 99d215fdd3
4 changed files with 111 additions and 34 deletions

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<TextView
android:id="@+id/eventName"
style="@style/labelTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventName" />
<TextView
android:id="@+id/eventTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventTime"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/eventVelocity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventVelocity"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/eventAltitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventAltitude"
android:textAppearance="?android:attr/textAppearanceSmall" />
</TableRow>

View 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>
</ScrollView>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<TextView
android:id="@+id/eventName"
style="@style/labelTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventName" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/eventTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventTime"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/eventVelocity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventVelocity"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/eventAltitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="eventAltitude"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>

View File

@ -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);
eventList = (TableLayout) v.findViewById(R.id.simulationEventsList);
eventList.setColumnShrinkable(0, true);
OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
// Initialize the eventList
ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(
getActivity(),
android.R.layout.simple_list_item_1,
chart.getFlightDataBranch(rocketDocument).getEvents() ) {
final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
@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;
}
List<FlightEvent> events = chart.getFlightDataBranch(rocketDocument).getEvents();
for ( FlightEvent event : events ) {
};
// Events are not selectable for plotting right now.
//eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
eventList.setAdapter(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;
}