Rework the motor browser functionality to make it more tablet friendly.
[debian/openrocket] / android / src / net / sf / openrocket / android / motor / MotorDetailsFragment.java
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