Rework the motor browser functionality to make it more tablet friendly.
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 6 Feb 2012 01:31:51 +0000 (01:31 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 6 Feb 2012 01:31:51 +0000 (01:31 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@398 180e2498-e6e9-4542-8430-84ac67f01cd8

13 files changed:
android/AndroidManifest.xml
android/res/layout-xlarge-land/motorbrowser.xml [new file with mode: 0644]
android/res/layout-xlarge-port/motorbrowser.xml [new file with mode: 0644]
android/res/layout/motor_detail.xml [deleted file]
android/res/layout/motor_detail_form.xml
android/res/layout/motorbrowser.xml [new file with mode: 0644]
android/res/menu/motor_details_option_menu.xml [deleted file]
android/src/net/sf/openrocket/android/motor/BurnPlotActivity.java [new file with mode: 0644]
android/src/net/sf/openrocket/android/motor/BurnPlotFragment.java
android/src/net/sf/openrocket/android/motor/MotorBrowserActivity.java
android/src/net/sf/openrocket/android/motor/MotorDetailsActivity.java [deleted file]
android/src/net/sf/openrocket/android/motor/MotorDetailsFragment.java
android/src/net/sf/openrocket/android/motor/MotorListFragment.java

index db3d21f0d574e164eb892d74886609653e6a761a..010f71bdb0289f0aa88a397eb908e3e3b6169841 100644 (file)
@@ -72,7 +72,7 @@
             </intent-filter>\r
         </activity>\r
         <activity android:name=".android.motor.MotorBrowserActivity" />\r
-        <activity android:name=".android.motor.MotorDetailsActivity" />\r
+        <activity android:name=".android.motor.BurnPlotActivity" />\r
         <activity android:name=".android.thrustcurve.TCQueryActivity" />\r
         <activity android:name=".android.simulation.SimulationViewActivity" />\r
         <activity android:name=".android.filebrowser.SimpleFileBrowser" />\r
diff --git a/android/res/layout-xlarge-land/motorbrowser.xml b/android/res/layout-xlarge-land/motorbrowser.xml
new file mode 100644 (file)
index 0000000..5cd0136
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="horizontal" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/motorBrowserList"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="match_parent"\r
+        android:layout_weight="4"/>\r
+\r
+    <LinearLayout\r
+        android:id="@+id/sidepane"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_weight="1"\r
+        android:orientation="vertical" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/android/res/layout-xlarge-port/motorbrowser.xml b/android/res/layout-xlarge-port/motorbrowser.xml
new file mode 100644 (file)
index 0000000..61f8395
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/motorBrowserList"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="match_parent"\r
+        android:layout_weight="3" />\r
+\r
+    <LinearLayout\r
+        android:id="@+id/sidepane"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_weight="1"\r
+        android:orientation="vertical" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/android/res/layout/motor_detail.xml b/android/res/layout/motor_detail.xml
deleted file mode 100644 (file)
index b36a44a..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical" >
-
-    <fragment
-        android:id="@+id/burnPlotFragment"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:layout_marginLeft="0px"
-        android:layout_marginRight="0px"
-        android:layout_marginTop="5px"
-        class="net.sf.openrocket.android.motor.BurnPlotFragment"
-        title="Burn Plot" />
-
-    <SlidingDrawer
-        android:id="@+id/drawer"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_weight="0.4"
-        android:content="@+id/motorDetailForm"
-        android:handle="@+id/handle" >
-
-        <ImageView
-            android:id="@+id/handle"
-            android:layout_width="match_parent"
-            android:layout_height="30px"
-            android:src="@drawable/arrow_up_float"
-            android:text="" />
-
-        <fragment
-            android:id="@+id/motorDetailForm"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            class="net.sf.openrocket.android.motor.MotorDetailsFragment" />
-    </SlidingDrawer>
-
-</FrameLayout>
\ No newline at end of file
index 751fb279e4d5b55240cc15253caf18cdadd69dc1..551dab580bef4da21db50d56a1c7573c0998890b 100644 (file)
 <?xml version="1.0" encoding="utf-8"?>
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/motorDetailForm"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@android:color/black"
-    android:orientation="vertical"
-    android:paddingTop="10px" >
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Manufacturer" />
-
-        <EditText
-            android:id="@+id/motorDetailsManufacturer"
-            android:layout_width="match_parent"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <TableLayout
+        android:id="@+id/motorDetailForm"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@android:color/black"
+        android:orientation="vertical"
+        android:paddingTop="10dp" >
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Manufacturer" />
+
+            <EditText
+                android:id="@+id/motorDetailsManufacturer"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Name" />
+
+            <EditText
+                android:id="@+id/motorDetailsName"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Delays" />
+
+            <EditText
+                android:id="@+id/motorDetailsDelays"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="number" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Case Info" />
+
+            <EditText
+                android:id="@+id/motorDetailsCaseInfo"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Impulse Class" />
+
+            <EditText
+                android:id="@+id/motorDetailsImpuseClass"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Diameter" />
+
+            <EditText
+                android:id="@+id/motorDetailsDiameter"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+
+        <TableRow>
+
+            <TextView
+                android:paddingRight="10dp"
+                android:text="Length" />
+
+            <EditText
+                android:id="@+id/motorDetailsLength"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.04"
+                android:editable="false"
+                android:inputType="text" />
+        </TableRow>
+    </TableLayout>
+    <!--
+        <Button
+            android:id="@+id/motorDetailsSaveButton"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
+            android:text="@string/save" />
+    -->
 
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Name" />
-
-        <EditText
-            android:id="@+id/motorDetailsName"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Delays" />
-
-        <EditText
-            android:id="@+id/motorDetailsDelays"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Case Info" />
-
-        <EditText
-            android:id="@+id/motorDetailsCaseInfo"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Impulse Class" />
-
-        <EditText
-            android:id="@+id/motorDetailsImpuseClass"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Diameter" />
-
-        <EditText
-            android:id="@+id/motorDetailsDiameter"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-    <TableRow >
-
-        <TextView
-            android:paddingRight="10px"
-            android:text="Length" />
-
-        <EditText
-            android:id="@+id/motorDetailsLength"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.04"
-            android:editable="false" />
-    </TableRow>
-
-</TableLayout>
\ No newline at end of file
+</ScrollView>
\ No newline at end of file
diff --git a/android/res/layout/motorbrowser.xml b/android/res/layout/motorbrowser.xml
new file mode 100644 (file)
index 0000000..0240e15
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="horizontal" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/motorBrowserList"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="match_parent" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/android/res/menu/motor_details_option_menu.xml b/android/res/menu/motor_details_option_menu.xml
deleted file mode 100644 (file)
index c2df357..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu
-  xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:enabled="true" android:id="@+id/save" android:visible="true" android:title="@string/save"/>
-    
-</menu>
diff --git a/android/src/net/sf/openrocket/android/motor/BurnPlotActivity.java b/android/src/net/sf/openrocket/android/motor/BurnPlotActivity.java
new file mode 100644 (file)
index 0000000..f1d00cf
--- /dev/null
@@ -0,0 +1,23 @@
+package net.sf.openrocket.android.motor;\r
+\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.support.v4.app.FragmentActivity;\r
+\r
+public class BurnPlotActivity extends FragmentActivity {\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               AndroidLogWrapper.d(BurnPlotActivity.class,"onCreate Bundle = "+ String.valueOf(savedInstanceState));\r
+\r
+               Intent i = getIntent();\r
+               long motorId = i.getLongExtra("Motor",-1);\r
+\r
+               BurnPlotFragment burnPlot = BurnPlotFragment.newInstance(motorId);\r
+               getSupportFragmentManager().beginTransaction().replace(android.R.id.content, burnPlot).commit();\r
+               \r
+       }\r
+       \r
+}\r
index 5f777dc14250a9b8e9adf98a268d3d8ac6062df1..7600f2a0dfd330fbbb2fdb0a1bf26eceb42ef0cb 100644 (file)
@@ -5,6 +5,7 @@ import java.util.List;
 import java.util.Vector;\r
 \r
 import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.db.DbAdapter;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import android.graphics.Color;\r
 import android.graphics.PointF;\r
@@ -27,6 +28,7 @@ import com.androidplot.xy.YValueMarker;
 public class BurnPlotFragment extends Fragment implements OnTouchListener {\r
 \r
        private ExtendedThrustCurveMotor motor;\r
+       private long motorId;\r
 \r
        private XYPlot mySimpleXYPlot;\r
        private SimpleXYSeries mySeries;\r
@@ -39,12 +41,44 @@ public class BurnPlotFragment extends Fragment implements OnTouchListener {
        private ScaleGestureDetector mScaleDetector;\r
        private float mScaleFactor = 1.f;\r
 \r
+       public static BurnPlotFragment newInstance( long motorId ) {\r
+               BurnPlotFragment frag = new BurnPlotFragment();\r
+               Bundle bundle = new Bundle();\r
+               bundle.putLong("motorId", motorId);\r
+               frag.setArguments(bundle);\r
+               return frag;\r
+       }\r
+       \r
        @Override\r
        public void onCreate(Bundle savedInstanceState) {\r
                AndroidLogWrapper.d(BurnPlotFragment.class,"onCreate");\r
+               \r
+               if ( savedInstanceState!= null) {\r
+                       motorId = savedInstanceState.getLong("motorId",-1);\r
+               } else {\r
+                       Bundle b = getArguments();\r
+                       motorId = b.getLong("motorId");\r
+               }\r
+               \r
+               DbAdapter mDbHelper = new DbAdapter(getActivity());\r
+               mDbHelper.open();\r
+\r
+               try {\r
+                       motor = mDbHelper.getMotorDao().fetchMotor(motorId);\r
+               } catch ( Exception e ) {\r
+                       \r
+               }\r
+\r
+               mDbHelper.close();\r
                super.onCreate(savedInstanceState);\r
        }\r
 \r
+       @Override\r
+       public void onSaveInstanceState(Bundle outState) {\r
+               super.onSaveInstanceState(outState);\r
+               outState.putLong("motorId", motorId);\r
+       }\r
+\r
        @Override\r
        public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
                        Bundle savedInstanceState) {\r
@@ -53,6 +87,7 @@ public class BurnPlotFragment extends Fragment implements OnTouchListener {
                mySimpleXYPlot = (XYPlot) v.findViewById(R.id.xyplot);\r
                mySimpleXYPlot.setOnTouchListener(this);\r
                mScaleDetector = new ScaleGestureDetector(v.getContext(), new ScaleListener());\r
+               init(motor);\r
                return v;\r
        }\r
 \r
@@ -63,7 +98,8 @@ public class BurnPlotFragment extends Fragment implements OnTouchListener {
                }\r
                return l;\r
        }\r
-       void init( ExtendedThrustCurveMotor motor ) {\r
+       \r
+       private void init( ExtendedThrustCurveMotor motor ) {\r
 \r
                mySimpleXYPlot.setUserDomainOrigin(0);\r
                mySimpleXYPlot.setUserRangeOrigin(0);\r
index 469c712aaff2c1136035e728d2764ce5b7acf0e8..4fc0c2c9d20e45f4bed45359165973acf3fe5a6b 100644 (file)
@@ -6,6 +6,7 @@ import net.sf.openrocket.android.PreferencesActivity;
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import android.content.Intent;\r
 import android.os.Bundle;\r
+import android.support.v4.app.Fragment;\r
 import android.support.v4.app.FragmentActivity;\r
 import android.support.v4.app.FragmentTransaction;\r
 import android.view.Menu;\r
@@ -23,13 +24,8 @@ implements MotorListFragment.OnMotorSelectedListener
        @Override\r
        public void onCreate(Bundle savedInstanceState) {\r
                super.onCreate(savedInstanceState);\r
-\r
-        if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {\r
-               motorList = MotorListFragment.newInstance();\r
-               FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
-               ft.add(android.R.id.content, motorList);\r
-               ft.commit();\r
-        }\r
+               setContentView(R.layout.motorbrowser);\r
+               getSupportFragmentManager().beginTransaction().add( R.id.motorBrowserList, new MotorListFragment()).commit();\r
        }\r
 \r
        @Override\r
@@ -59,23 +55,19 @@ implements MotorListFragment.OnMotorSelectedListener
                \r
                View sidepane = findViewById(R.id.sidepane);\r
                if ( /* if multi pane */ sidepane != null ) {\r
-                       /*\r
-                       Simulation sim = app.getRocketDocument().getSimulation(simulationId);\r
-                       SimulationChart chart = new SimulationChart(simulationId);\r
-\r
-                       Fragment graph = SimulationFragment.newInstance(chart);\r
+                       \r
+                       Fragment graph = BurnPlotFragment.newInstance(motorId);\r
 \r
                        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
                        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
                        // probably only want to update back stack for first time.\r
-                       ft.addToBackStack("simulationplot");\r
+                       ft.addToBackStack("burnplot");\r
                        ft.replace(R.id.sidepane, graph);\r
                        ft.show(graph);\r
                        ft.commit();\r
-*/\r
 \r
                } else {\r
-                       Intent i = new Intent(this,MotorDetailsActivity.class);\r
+                       Intent i = new Intent(this,BurnPlotActivity.class);\r
                        i.putExtra("Motor", motorId);\r
                        startActivity(i);\r
                }\r
diff --git a/android/src/net/sf/openrocket/android/motor/MotorDetailsActivity.java b/android/src/net/sf/openrocket/android/motor/MotorDetailsActivity.java
deleted file mode 100644 (file)
index 684ebc4..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-package net.sf.openrocket.android.motor;\r
-\r
-import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.db.DbAdapter;\r
-import net.sf.openrocket.android.util.AndroidLogWrapper;\r
-import android.content.Intent;\r
-import android.os.Bundle;\r
-import android.support.v4.app.FragmentActivity;\r
-import android.view.Menu;\r
-import android.view.MenuInflater;\r
-import android.view.MenuItem;\r
-import android.widget.ImageView;\r
-import android.widget.SlidingDrawer;\r
-\r
-public class MotorDetailsActivity extends FragmentActivity\r
-implements SlidingDrawer.OnDrawerCloseListener, SlidingDrawer.OnDrawerOpenListener {\r
-\r
-       private SlidingDrawer slidingDrawer;\r
-       private ImageView handle;\r
-       \r
-       private ExtendedThrustCurveMotor motor;\r
-       \r
-       @Override\r
-       public void onCreate(Bundle savedInstanceState) {\r
-               super.onCreate(savedInstanceState);\r
-               AndroidLogWrapper.d(MotorDetailsActivity.class,"onCreate Bundle = "+ String.valueOf(savedInstanceState));\r
-               setContentView(R.layout.motor_detail);\r
-\r
-               Intent i = getIntent();\r
-               long motorId = i.getLongExtra("Motor",-1);\r
-\r
-               DbAdapter mDbHelper = new DbAdapter(this);\r
-               mDbHelper.open();\r
-\r
-               try {\r
-                       motor = mDbHelper.getMotorDao().fetchMotor(motorId);\r
-               } catch ( Exception e ) {\r
-                       \r
-               }\r
-\r
-               mDbHelper.close();\r
-               \r
-               BurnPlotFragment burnPlot = (BurnPlotFragment) getSupportFragmentManager().findFragmentById(R.id.burnPlotFragment);\r
-               burnPlot.init(motor);\r
-               \r
-               MotorDetailsFragment motorDetails = (MotorDetailsFragment) getSupportFragmentManager().findFragmentById(R.id.motorDetailForm);\r
-               motorDetails.init(motor);\r
-               \r
-               slidingDrawer = (SlidingDrawer) findViewById(R.id.drawer);\r
-               \r
-               slidingDrawer.setOnDrawerOpenListener(this);\r
-               slidingDrawer.setOnDrawerCloseListener(this);\r
-               \r
-               handle = (ImageView) findViewById(R.id.handle);\r
-               \r
-       }\r
-       \r
-       @Override\r
-       public void onDrawerOpened() {\r
-               handle.setImageResource(R.drawable.arrow_down_float);\r
-       }\r
-       \r
-       @Override\r
-       public void onDrawerClosed() {\r
-               handle.setImageResource(R.drawable.arrow_up_float);\r
-       }\r
-\r
-       @Override\r
-       public boolean onCreateOptionsMenu(Menu menu) {\r
-       MenuInflater inflater = getMenuInflater();\r
-       inflater.inflate(R.menu.motor_details_option_menu, menu);\r
-               return true;\r
-       }\r
-\r
-       @Override\r
-       public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
-               switch(item.getItemId()) {\r
-               case R.id.save:\r
-                       // Extract form data to Motor.\r
-                       // Save motor.\r
-                       return true;\r
-               }\r
-               return super.onMenuItemSelected(featureId, item);\r
-       }\r
-\r
-\r
-}\r
index f9083b6465048f3813790e8bf20388ccbf4bb0aa..b1fac2cb5e5a1eb2651ef8f80ff858d6ceb59494 100644 (file)
@@ -2,15 +2,17 @@ package net.sf.openrocket.android.motor;
 \r
 import net.sf.openrocket.R;\r
 import net.sf.openrocket.android.db.ConversionUtils;\r
+import net.sf.openrocket.android.db.DbAdapter;\r
 import net.sf.openrocket.motor.ThrustCurveMotor;\r
 import android.os.Bundle;\r
-import android.support.v4.app.Fragment;\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.Button;\r
 import android.widget.EditText;\r
 \r
-public class MotorDetailsFragment extends Fragment {\r
+public class MotorDetailsFragment extends DialogFragment {\r
 \r
        EditText manuField;\r
        EditText nameField;\r
@@ -19,7 +21,44 @@ public class MotorDetailsFragment extends Fragment {
        EditText impulseClassField;\r
        EditText diameterField;\r
        EditText lengthField;\r
-       \r
+\r
+       ExtendedThrustCurveMotor motor;\r
+\r
+       public static MotorDetailsFragment newInstance( long motorId ) {\r
+               MotorDetailsFragment fragment = new MotorDetailsFragment();\r
+               Bundle b = new Bundle();\r
+               b.putLong("motorId", motorId);\r
+               fragment.setArguments(b);\r
+               return fragment;\r
+       }\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setStyle(DialogFragment.STYLE_NO_TITLE,getTheme());\r
+\r
+               Long motorId;\r
+               if ( savedInstanceState != null ) {\r
+                       motorId = savedInstanceState.getLong("motorId");\r
+               } else {\r
+                       Bundle b = getArguments();\r
+                       motorId = b.getLong("motorId");\r
+               }\r
+               DbAdapter mDbHelper = new DbAdapter(getActivity());\r
+               mDbHelper.open();\r
+               try {\r
+                       motor = mDbHelper.getMotorDao().fetchMotor(motorId);\r
+               } catch ( Exception e ) {\r
+               }\r
+               mDbHelper.close();\r
+       }\r
+\r
+       @Override\r
+       public void onSaveInstanceState(Bundle arg0) {\r
+               super.onSaveInstanceState(arg0);\r
+               arg0.putLong("motorId", motor.getId());\r
+       }\r
+\r
        @Override\r
        public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
                        Bundle savedInstanceState) {\r
@@ -31,19 +70,37 @@ public class MotorDetailsFragment extends Fragment {
                impulseClassField = (EditText) v.findViewById(R.id.motorDetailsImpuseClass);\r
                diameterField = (EditText) v.findViewById(R.id.motorDetailsDiameter);\r
                lengthField = (EditText) v.findViewById(R.id.motorDetailsLength);\r
+               init();\r
+               /* TODO - enable saving.\r
+               ((Button) v.findViewById(R.id.motorDetailsSaveButton)).setOnClickListener(\r
+                               new View.OnClickListener() {\r
+                                       @Override\r
+                                       public void onClick(View v) {\r
+                                               MotorDetailsFragment.this.saveChanges();\r
+                                       }\r
+                               });\r
+                               */\r
                return v;\r
        }\r
 \r
-       public void init( ExtendedThrustCurveMotor m ) {\r
-               ThrustCurveMotor tcm = m.getThrustCurveMotor();\r
+       private void init( ) {\r
+               ThrustCurveMotor tcm = motor.getThrustCurveMotor();\r
                manuField.setText( tcm.getManufacturer().getDisplayName());\r
                nameField.setText( tcm.getDesignation() );\r
                delaysField.setText( ConversionUtils.delaysToString(tcm.getStandardDelays()) );\r
-               caseField.setText( m.getCaseInfo());\r
-               impulseClassField.setText( m.getImpulseClass());\r
+               caseField.setText( motor.getCaseInfo());\r
+               impulseClassField.setText( motor.getImpulseClass());\r
                diameterField.setText( String.valueOf(tcm.getDiameter()*1000.0) );\r
                lengthField.setText( String.valueOf(tcm.getLength()*1000.0) );\r
-               \r
        }\r
-       \r
+\r
+       private void saveChanges() {\r
+               DbAdapter mDbHelper = new DbAdapter(getActivity());\r
+               mDbHelper.open();\r
+               try {\r
+                       mDbHelper.getMotorDao().insertOrUpdateMotor(motor);\r
+               } catch ( Exception e ) {\r
+               }\r
+\r
+       }\r
 }\r
index 3f0bf5d6d1f3cfc5249e665b0f89f699d35786f3..c480cbb85b3c76c63f89a139a7150f5eb5e444d3 100644 (file)
@@ -12,6 +12,9 @@ import android.content.res.Resources;
 import android.database.Cursor;\r
 import android.os.Bundle;\r
 import android.preference.PreferenceManager;\r
+import android.support.v4.app.DialogFragment;\r
+import android.support.v4.app.Fragment;\r
+import android.support.v4.app.FragmentTransaction;\r
 import android.view.ContextMenu;\r
 import android.view.ContextMenu.ContextMenuInfo;\r
 import android.view.Menu;\r
@@ -35,12 +38,12 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
        }\r
 \r
        public static MotorListFragment newInstance( ) {\r
-\r
                MotorListFragment frag = new MotorListFragment();\r
                return frag;\r
        }\r
 \r
        private static final int CONTEXTMENU_DELETE = Menu.FIRST+1;\r
+       private static final int CONTEXTMENU_EDIT = Menu.FIRST+2;\r
 \r
        private String groupColumnPreferenceKey;\r
        private String groupColumn = MotorDao.CASE_INFO;\r
@@ -165,6 +168,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {\r
                menu.setHeaderTitle("Motor Operations");\r
                menu.add(Menu.NONE,CONTEXTMENU_DELETE,CONTEXTMENU_DELETE,"Delete");\r
+               menu.add(Menu.NONE,CONTEXTMENU_EDIT,CONTEXTMENU_EDIT,"Edit");\r
                super.onCreateContextMenu(menu, v, menuInfo);\r
        }\r
 \r
@@ -178,6 +182,21 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                        mDbHelper.getMotorDao().deleteMotor(motorId);\r
                        refreshData();\r
                        return true;\r
+               case CONTEXTMENU_EDIT:\r
+                       // DialogFragment.show() will take care of adding the fragment\r
+                       // in a transaction.  We also want to remove any currently showing\r
+                       // dialog, so make our own transaction and take care of that here.\r
+                       FragmentTransaction ft = getFragmentManager().beginTransaction();\r
+                       Fragment prev = getFragmentManager().findFragmentByTag("dialog");\r
+                       if (prev != null) {\r
+                               ft.remove(prev);\r
+                       }\r
+                       ft.addToBackStack(null);\r
+\r
+                       // Create and show the dialog.\r
+                       DialogFragment newFragment = MotorDetailsFragment.newInstance(motorId);\r
+                       newFragment.show(ft, "dialog");\r
+                       return true;\r
                }\r
                return super.onContextItemSelected(item);\r
        }\r
@@ -236,5 +255,5 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
                        setListAdapter(mAdapter);\r
                }\r
        }\r
-       \r
+\r
 }\r