Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / motor / MotorDetailsFragment.java
index 874f43439bf2f2518bfff2afb8f1a31d832e5019..5bd42b9af43dca571fc32aa8de6f82539e13679a 100644 (file)
@@ -1,17 +1,17 @@
 package net.sf.openrocket.android.motor;\r
 \r
-import java.util.Arrays;\r
-\r
 import net.sf.openrocket.R;\r
-import net.sf.openrocket.motor.ThrustCurveMotor;\r
+import net.sf.openrocket.android.db.ConversionUtils;\r
+import net.sf.openrocket.android.db.DbAdapter;\r
+import net.sf.openrocket.unit.UnitGroup;\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.EditText;\r
 \r
-public class MotorDetailsFragment extends Fragment {\r
+public class MotorDetailsFragment extends DialogFragment {\r
 \r
        EditText manuField;\r
        EditText nameField;\r
@@ -20,7 +20,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
@@ -32,19 +69,36 @@ 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
-               manuField.setText( tcm.getManufacturer().getDisplayName());\r
-               nameField.setText( tcm.getDesignation() );\r
-               delaysField.setText( Arrays.toString(tcm.getStandardDelays()) );\r
-               caseField.setText( m.getCaseInfo());\r
-               impulseClassField.setText( m.getImpulseClass());\r
-               diameterField.setText( String.valueOf(tcm.getDiameter()*1000.0) );\r
-               lengthField.setText( String.valueOf(tcm.getLength()*1000.0) );\r
-               \r
+       private void init( ) {\r
+               manuField.setText( motor.getManufacturer().getDisplayName());\r
+               nameField.setText( motor.getDesignation() );\r
+               delaysField.setText( ConversionUtils.delaysToString(motor.getStandardDelays()) );\r
+               caseField.setText( motor.getCaseInfo());\r
+               impulseClassField.setText( motor.getImpulseClass());\r
+               diameterField.setText( UnitGroup.UNITS_MOTOR_DIMENSIONS.toString(motor.getDiameter()) );\r
+               lengthField.setText( UnitGroup.UNITS_LENGTH.getUnit("mm").toString(motor.getLength()) );\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
 }\r