]> git.gag.com Git - debian/openrocket/commitdiff
Rewrite the ThrustCurve search and download process to be orientation friendly.
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 9 Feb 2012 04:04:29 +0000 (04:04 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 9 Feb 2012 04:04:29 +0000 (04:04 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@401 180e2498-e6e9-4542-8430-84ac67f01cd8

android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderActivity.java
android/src/net/sf/openrocket/android/thrustcurve/TCMissingMotorDownloadAction.java
android/src/net/sf/openrocket/android/thrustcurve/TCQueryAction.java
android/src/net/sf/openrocket/android/thrustcurve/TCQueryActivity.java
android/src/net/sf/openrocket/android/thrustcurve/TCSearchAction.java
android/src/net/sf/openrocket/android/util/ErrorDialogFragment.java [new file with mode: 0644]
android/src/net/sf/openrocket/android/util/ProgressDialogFragment.java

index 48d6e491794e01a3c82b5177a9df8e712aaccfee..272b4b6d5e75f635b3c6922aef7adde607e296f2 100644 (file)
@@ -18,18 +18,16 @@ import android.support.v4.app.DialogFragment;
 import android.support.v4.app.FragmentActivity;\r
 \r
 public class OpenRocketLoaderActivity extends FragmentActivity\r
-implements TCQueryAction.OnComplete, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
+implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
 {\r
 \r
        private final static String MISSING_MOTOR_DIAG_FRAGMENT_TAG = "missingmotordialog";\r
+       private final static String MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG = "missingmotortask";\r
        \r
-       private TCMissingMotorDownloadAction missingMotorDownloadAction;\r
-\r
        @Override\r
        protected void onCreate(Bundle savedInstanceState) {\r
                super.onCreate(savedInstanceState);\r
                setContentView(R.layout.main);\r
-               missingMotorDownloadAction = new TCMissingMotorDownloadAction(this);\r
                if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {\r
                        Intent i = getIntent();\r
                        Uri file = i.getData();\r
@@ -44,15 +42,6 @@ implements TCQueryAction.OnComplete, OpenRocketLoaderFragment.OnOpenRocketFileLo
                outState.putBoolean("isLoading", true);\r
        }\r
 \r
-       @Override\r
-       protected void onDestroy() {\r
-               if ( missingMotorDownloadAction != null ) {\r
-                       missingMotorDownloadAction.dismiss();\r
-               }\r
-\r
-               super.onDestroy();\r
-       }\r
-\r
        private void loadOrkFile( Uri file ) {\r
                AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);\r
                String path = file.getPath();\r
@@ -93,7 +82,7 @@ implements TCQueryAction.OnComplete, OpenRocketLoaderFragment.OnOpenRocketFileLo
         * Called when the TCMissingMotorDownload process finishes.\r
         */\r
        @Override\r
-       public void onComplete() {\r
+       public void onTCQueryComplete(String message) {\r
 \r
                Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
                WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
@@ -120,8 +109,8 @@ implements TCQueryAction.OnComplete, OpenRocketLoaderFragment.OnOpenRocketFileLo
                Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
                Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
 \r
-               missingMotorDownloadAction.setMissingMotors(missingMotors);\r
-               missingMotorDownloadAction.start();\r
+               TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );\r
+               getSupportFragmentManager().beginTransaction().add( motorfrag, MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG).commit();\r
 \r
        }\r
 \r
index 7f6cb70770aa18fb6e8a365d4e17d1b1e89f0f1e..c64bb02d4505b444c31bddfee7521b24464cf6f0 100644 (file)
@@ -2,29 +2,25 @@ package net.sf.openrocket.android.thrustcurve;
 \r
 import java.util.Set;\r
 \r
-import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
-import android.app.Activity;\r
 \r
 public class TCMissingMotorDownloadAction extends TCQueryAction {\r
 \r
-       private Set<ThrustCurveMotorPlaceholder> missingMotors;\r
-\r
-       public TCMissingMotorDownloadAction(Activity parent) {\r
-               super(parent);\r
-       }\r
-\r
-       public void setMissingMotors( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
-               this.missingMotors = missingMotors;\r
-       }\r
-\r
-       protected Runnable getTask() {\r
-               return new Downloader();\r
+       public static TCMissingMotorDownloadAction newInstance( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
+               TCMissingMotorDownloadAction frag = new TCMissingMotorDownloadAction();\r
+               frag.task = frag.new Downloader(missingMotors);\r
+               return frag;\r
        }\r
 \r
-       private class Downloader implements Runnable {\r
+       private class Downloader extends TCQueryAction.TCQueryTask {\r
 \r
+               private Set<ThrustCurveMotorPlaceholder> missingMotors;\r
+               \r
+               private Downloader( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
+                       this.missingMotors = missingMotors;\r
+               }\r
+               \r
                private void downloadMissingMotor( ThrustCurveMotorPlaceholder motor ) {\r
                        try {\r
                                SearchRequest request = new SearchRequest();\r
@@ -55,55 +51,32 @@ public class TCMissingMotorDownloadAction extends TCQueryAction {
                                                continue;\r
                                        }\r
 \r
-                                       MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
-\r
                                        AndroidLogWrapper.d(TCQueryAction.class, mi.toString());\r
 \r
-                                       ExtendedThrustCurveMotor m = new ExtendedThrustCurveMotor();\r
-\r
-                                       m.setThrustCurveMotor( b.getThrustCurveMotor() );\r
-\r
-                                       // Convert impulse class.  ThrustCurve puts mmx, 1/4a and 1/2a as A.\r
-                                       m.setImpulseClass(mi.getImpulse_class());\r
-                                       if ( "a".equalsIgnoreCase(mi.getImpulse_class())) {\r
-                                               if( mi.getCommon_name().startsWith("1/2A") ) {\r
-                                                       m.setImpulseClass("1/2A");\r
-                                               } else if (mi.getCommon_name().startsWith("1/4A") ) {\r
-                                                       m.setImpulseClass("1/4A");\r
-                                               } else if (mi.getCommon_name().startsWith("Micro") ) {\r
-                                                       m.setImpulseClass("1/8A");\r
-                                               }\r
-                                       }\r
+                                       MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
 \r
-                                       // Convert Case Info.\r
-                                       if ( mi.getCase_info() == null\r
-                                                       || "single use".equalsIgnoreCase(mi.getCase_info())\r
-                                                       || "single-use".equalsIgnoreCase(mi.getCase_info())) {\r
-                                               m.setCaseInfo(mi.getType()+ " " + mi.getDiameter() + "x" + mi.getLength());\r
-                                       } else {\r
-                                               m.setCaseInfo(mi.getCase_info());\r
-                                       }\r
+                                       writeMotor( mi, b);\r
 \r
-                                       AndroidLogWrapper.d(TCQueryAction.class,"adding motor " + m.toString());\r
-                                       // Write motor.\r
-                                       mDbHelper.getMotorDao().insertOrUpdateMotor(m);\r
                                }\r
                        }\r
                        catch( Exception ex){\r
                                AndroidLogWrapper.d(TCQueryAction.class,ex.toString());\r
-                               handler.post( new Error(ex.toString()) );\r
+                               handler.post( new UpdateMessage("Failed") );\r
+\r
                        }\r
 \r
                }\r
 \r
-       @Override\r
-       public void run() {\r
-               for ( ThrustCurveMotorPlaceholder motor : missingMotors ) {\r
-                       AndroidLogWrapper.d(TCMissingMotorDownloadAction.class, "Motor: {}", motor);\r
-                       downloadMissingMotor(motor);\r
+               @Override\r
+               protected String doInBackground(Void... arg0) {\r
+                       for ( ThrustCurveMotorPlaceholder motor : missingMotors ) {\r
+                               AndroidLogWrapper.d(TCMissingMotorDownloadAction.class, "Motor: {}", motor);\r
+                               downloadMissingMotor(motor);\r
+                       }\r
+                       dismiss();\r
+                       return null;\r
                }\r
-               handler.post( new Dismiss() );\r
+\r
        }\r
-}\r
 \r
 }\r
index 6cc486eb6bc13668848ace75650d6ad385793900..d6f266f559452ca65ac98942d370a5488319544b 100644 (file)
@@ -1,11 +1,18 @@
 package net.sf.openrocket.android.thrustcurve;\r
 \r
 import net.sf.openrocket.android.db.DbAdapter;\r
+import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import net.sf.openrocket.android.util.ProgressDialogFragment;\r
 import android.app.Activity;\r
-import android.app.AlertDialog;\r
-import android.app.ProgressDialog;\r
-import android.content.DialogInterface;\r
+import android.os.AsyncTask;\r
+import android.os.Bundle;\r
 import android.os.Handler;\r
+import android.support.v4.app.DialogFragment;\r
+import android.support.v4.app.Fragment;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
 \r
 /**\r
  * TCQueryAction is a class which provides all the functionality required\r
@@ -25,107 +32,125 @@ import android.os.Handler;
  * When the parent Activity is dismissed, it must call TCQueryAction.dismiss() to free resources.\r
  * \r
  */\r
-public abstract class TCQueryAction {\r
+public abstract class TCQueryAction extends Fragment {\r
 \r
-       public interface OnComplete {\r
-               public void onComplete();\r
-       }\r
+       private final static String PROGRESS_DIALOG_TAG = "progress_dialog";\r
 \r
-       protected DbAdapter mDbHelper;\r
+       public interface OnTCQueryCompleteListener {\r
+               public void onTCQueryComplete(String message);\r
+       }\r
 \r
-       private ProgressDialog progress;\r
-       private Thread downloadThread;\r
+       protected AsyncTask<Void,Void,String> task;\r
        protected Handler handler;\r
 \r
-       private final Activity parent;\r
-       private OnComplete onCompleteListener;\r
-\r
-       /**\r
-        * Create a new TCQueryAction.\r
-        * \r
-        * If the parent implements TCQueryAction.OnComplete, it will be used as the\r
-        * onCompleteListener and notified when the process is finished.\r
-        * \r
-        * @param parent\r
-        */\r
-       public TCQueryAction( Activity parent ) {\r
-               this.parent = parent;\r
-\r
-               mDbHelper = new DbAdapter(this.parent);\r
-               mDbHelper.open();\r
+       private OnTCQueryCompleteListener onCompleteListener;\r
 \r
-               if (parent instanceof OnComplete ) {\r
-                       this.onCompleteListener = (OnComplete) parent;\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setRetainInstance(true);\r
+               handler = new Handler();\r
+               if ( savedInstanceState == null ) {\r
+                       // this means we are starting for the first time.\r
+                       task.execute((Void)null);\r
                }\r
        }\r
 \r
-       public void setOnCompleteListener(OnComplete onCompleteListener) {\r
-               this.onCompleteListener = onCompleteListener;\r
+\r
+       @Override\r
+       public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
+                       Bundle savedInstanceState) {\r
+               return null;\r
        }\r
 \r
-       protected abstract Runnable getTask();\r
-       \r
-       public void start() {\r
-               handler = new Handler();\r
-               progress = ProgressDialog.show(parent, null, "");\r
+       @Override\r
+       public void onActivityCreated(Bundle arg0) {\r
+               super.onActivityCreated(arg0);\r
+               Activity parent = getActivity();\r
+               if ( parent instanceof OnTCQueryCompleteListener ) {\r
+                       onCompleteListener = (OnTCQueryCompleteListener) parent;\r
+               }\r
+       }\r
 \r
-               downloadThread = new Thread( getTask() );\r
-               downloadThread.start();\r
+       /**\r
+        * The return value is a message string which may be displayed by the caller.\r
+        *\r
+        */\r
+       protected abstract class TCQueryTask extends AsyncTask<Void,Void,String> {\r
+               @Override\r
+               protected void onPreExecute() {\r
+                       super.onPreExecute();\r
+                       DialogFragment newFragment = ProgressDialogFragment.newInstance("", "");\r
+                       newFragment.show(getFragmentManager(), PROGRESS_DIALOG_TAG);\r
+               }\r
 \r
+               @Override\r
+               protected void onPostExecute(String obj) {\r
+                       super.onPostExecute(obj);\r
+                       AndroidLogWrapper.d(TCQueryAction.class,"Finished loading " + TCQueryAction.this);\r
+                       dismiss();\r
+                       if (onCompleteListener != null ) {\r
+                               onCompleteListener.onTCQueryComplete(obj);\r
+                       }\r
+               }\r
        }\r
 \r
+       protected void writeMotor( TCMotor mi, MotorBurnFile b) throws Exception {\r
 \r
-       public void dismiss() {\r
-               // TODO - need to kill the thread.\r
-\r
-               mDbHelper.close();\r
+               DbAdapter mDbHelper = new DbAdapter(getActivity());\r
+               mDbHelper.open();\r
+               try {\r
+                       ExtendedThrustCurveMotor m = new ExtendedThrustCurveMotor();\r
+\r
+                       m.setThrustCurveMotor( b.getThrustCurveMotor() );\r
+\r
+                       // Convert impulse class.  ThrustCurve puts mmx, 1/4a and 1/2a as A.\r
+                       m.setImpulseClass(mi.getImpulse_class());\r
+                       if ( "a".equalsIgnoreCase(mi.getImpulse_class())) {\r
+                               if( mi.getCommon_name().startsWith("1/2A") ) {\r
+                                       m.setImpulseClass("1/2A");\r
+                               } else if (mi.getCommon_name().startsWith("1/4A") ) {\r
+                                       m.setImpulseClass("1/4A");\r
+                               } else if (mi.getCommon_name().startsWith("Micro") ) {\r
+                                       m.setImpulseClass("1/8A");\r
+                               }\r
+                       }\r
 \r
-               if ( progress != null && progress.isShowing() ) {\r
-                       progress.dismiss();\r
-               }\r
-       }\r
+                       // Convert Case Info.\r
+                       if ( mi.getCase_info() == null\r
+                                       || "single use".equalsIgnoreCase(mi.getCase_info())\r
+                                       || "single-use".equalsIgnoreCase(mi.getCase_info())) {\r
+                               m.setCaseInfo(mi.getType()+ " " + mi.getDiameter() + "x" + mi.getLength());\r
+                       } else {\r
+                               m.setCaseInfo(mi.getCase_info());\r
+                       }\r
 \r
-       protected class UpdateMessage implements Runnable {\r
-               private String newMessage;\r
-               UpdateMessage( String message ) {\r
-                       this.newMessage = message;\r
-               }\r
-               @Override\r
-               public void run() {\r
-                       progress.setMessage(newMessage);\r
+                       AndroidLogWrapper.d(TCQueryAction.class,"adding motor " + m.toString());\r
+                       // Write motor.\r
+                       mDbHelper.getMotorDao().insertOrUpdateMotor(m);\r
+               } finally {\r
+                       mDbHelper.close();\r
                }\r
        }\r
 \r
-       protected class Dismiss implements Runnable {\r
-               @Override\r
-               public void run() {\r
+       protected void dismiss() {\r
+               AndroidLogWrapper.d(TCQueryAction.class,"dismiss the progress");\r
+               ProgressDialogFragment progress = (ProgressDialogFragment) getActivity().getSupportFragmentManager().findFragmentByTag(PROGRESS_DIALOG_TAG);\r
+               if ( progress != null ) {\r
                        progress.dismiss();\r
-                       if (onCompleteListener != null ) {\r
-                               onCompleteListener.onComplete();\r
-                       }\r
-                       //                      TCQueryActivity.this.finish();\r
                }\r
        }\r
 \r
-       protected class Error implements Runnable {\r
+       protected class UpdateMessage implements Runnable {\r
                private String newMessage;\r
-               Error( String message ) {\r
+               UpdateMessage( String message ) {\r
                        this.newMessage = message;\r
                }\r
                @Override\r
                public void run() {\r
-                       progress.dismiss();\r
-                       final AlertDialog dialog = new AlertDialog.Builder(parent).create();\r
-                       dialog.setMessage(newMessage);\r
-                       dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"Dismiss", new DialogInterface.OnClickListener() {\r
-\r
-                               @Override\r
-                               public void onClick(DialogInterface arg0, int arg1) {\r
-                                       dialog.dismiss();\r
-                               }\r
-\r
-                       });\r
-                       dialog.show();\r
+                       ProgressDialogFragment progress = (ProgressDialogFragment) getActivity().getSupportFragmentManager().findFragmentByTag(PROGRESS_DIALOG_TAG);\r
+                       if ( progress != null )\r
+                               progress.setMessage(newMessage);\r
                }\r
        }\r
 \r
index 619ed7a3ec0b19824ddc84e340559c843aafd4e5..681ca0c1cbd58a8a77354c1c6db6e6fa888467bc 100644 (file)
@@ -2,25 +2,23 @@ package net.sf.openrocket.android.thrustcurve;
 \r
 import net.sf.openrocket.R;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
-import android.app.Activity;\r
+import net.sf.openrocket.android.util.ErrorDialogFragment;\r
+import android.content.DialogInterface;\r
 import android.os.Bundle;\r
+import android.support.v4.app.FragmentActivity;\r
 import android.view.View;\r
 import android.widget.Button;\r
 import android.widget.EditText;\r
 import android.widget.Spinner;\r
 \r
-public class TCQueryActivity extends Activity\r
-implements TCQueryAction.OnComplete\r
+public class TCQueryActivity extends FragmentActivity\r
+implements TCQueryAction.OnTCQueryCompleteListener\r
 {\r
 \r
-       private TCSearchAction queryAction;\r
-\r
        @Override\r
        protected void onCreate(Bundle savedInstanceState) {\r
                super.onCreate(savedInstanceState);\r
                setContentView(R.layout.tcqueryform);\r
-               \r
-               queryAction = new TCSearchAction(this);\r
 \r
                final Spinner manufacturerField = (Spinner) findViewById(R.id.TCMotorSearchFormManufacturerField);\r
                final Spinner impulseField = (Spinner) findViewById(R.id.TCMotorSearchFormImpulseField);\r
@@ -33,7 +31,7 @@ implements TCQueryAction.OnComplete
                                        @Override\r
                                        public void onClick( View v ) {\r
                                                AndroidLogWrapper.d(TCQueryActivity.class,"submit button clicked");\r
-                                               \r
+\r
                                                String commonName = commonNameField.getText().toString();\r
 \r
                                                SearchRequest r = new SearchRequest();\r
@@ -54,29 +52,20 @@ implements TCQueryAction.OnComplete
                                                }\r
                                                r.setCommon_name(commonName);\r
 \r
-                                               queryAction.setRequest(r);\r
-                                               queryAction.start();\r
+                                               TCSearchAction motorfrag = TCSearchAction.newInstance( r );\r
+                                               getSupportFragmentManager().beginTransaction().add( motorfrag, "dloader").commit();\r
                                        }\r
-                               }\r
-                               );\r
+                               });\r
        }\r
 \r
        @Override\r
-       public void onComplete() {\r
-               finish();\r
-       }\r
-\r
-       /*\r
-        * TODO - ??\r
-       @Override\r
-       public Object onRetainNonConfigurationInstance() {\r
-               return downloadThread;\r
-       }\r
-        */\r
-       @Override\r
-       protected void onDestroy() {\r
-               queryAction.dismiss();\r
-               super.onDestroy();\r
+       public void onTCQueryComplete(String message) {\r
+               if ( message != null) {\r
+                       ErrorDialogFragment error = ErrorDialogFragment.newInstance(message);\r
+                       error.show(getSupportFragmentManager(), "ErrorDialog");\r
+               } else {\r
+                       finish();\r
+               }\r
        }\r
 \r
 }\r
index 33ca9e99e6405a70e47735833b77ecc79a35d78c..1354e872fd83cbdfe11e55728d8f7ec1fa3c26d3 100644 (file)
@@ -1,32 +1,28 @@
 package net.sf.openrocket.android.thrustcurve;\r
 \r
-import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
-import android.app.Activity;\r
 \r
 public class TCSearchAction extends TCQueryAction {\r
 \r
-       private SearchRequest request;\r
-       \r
-       public TCSearchAction(Activity parent) {\r
-               super(parent);\r
-       }\r
-       \r
-       public void setRequest( SearchRequest request ) {\r
-               this.request = request;\r
+       public static TCSearchAction newInstance( SearchRequest searchRequest ) {\r
+               TCSearchAction frag = new TCSearchAction();\r
+               frag.task = frag.new Downloader(searchRequest);\r
+               return frag;\r
        }\r
 \r
-       protected Runnable getTask() {\r
-               return new Downloader();\r
-       }\r
-       \r
-       private class Downloader implements Runnable {\r
+       private class Downloader extends TCQueryAction.TCQueryTask {\r
+\r
+               private SearchRequest searchRequest;\r
+               \r
+               private Downloader( SearchRequest searchRequest ) {\r
+                       this.searchRequest = searchRequest;\r
+               }\r
 \r
                @Override\r
-               public void run() {\r
+               protected String doInBackground(Void... params) {\r
                        try {\r
                                handler.post( new UpdateMessage("Quering Thrustcurve"));\r
-                               SearchResponse res = new ThrustCurveAPI().doSearch(request);\r
+                               SearchResponse res = new ThrustCurveAPI().doSearch(searchRequest);\r
 \r
                                int total = res.getResults().size();\r
                                int count = 1;\r
@@ -48,50 +44,24 @@ public class TCSearchAction extends TCQueryAction {
                                                continue;\r
                                        }\r
 \r
-                                       MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
-\r
                                        AndroidLogWrapper.d(TCQueryAction.class, mi.toString());\r
 \r
-                                       ExtendedThrustCurveMotor m = new ExtendedThrustCurveMotor();\r
-\r
-                                       m.setThrustCurveMotor( b.getThrustCurveMotor() );\r
-\r
-                                       // Convert impulse class.  ThrustCurve puts mmx, 1/4a and 1/2a as A.\r
-                                       m.setImpulseClass(mi.getImpulse_class());\r
-                                       if ( "a".equalsIgnoreCase(mi.getImpulse_class())) {\r
-                                               if( mi.getCommon_name().startsWith("1/2A") ) {\r
-                                                       m.setImpulseClass("1/2A");\r
-                                               } else if (mi.getCommon_name().startsWith("1/4A") ) {\r
-                                                       m.setImpulseClass("1/4A");\r
-                                               } else if (mi.getCommon_name().startsWith("Micro") ) {\r
-                                                       m.setImpulseClass("1/8A");\r
-                                               }\r
-                                       }\r
-\r
-                                       // Convert Case Info.\r
-                                       if ( mi.getCase_info() == null\r
-                                                       || "single use".equalsIgnoreCase(mi.getCase_info())\r
-                                                       || "single-use".equalsIgnoreCase(mi.getCase_info())) {\r
-                                               m.setCaseInfo(mi.getType()+ " " + mi.getDiameter() + "x" + mi.getLength());\r
-                                       } else {\r
-                                               m.setCaseInfo(mi.getCase_info());\r
-                                       }\r
+                                       MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
 \r
-                                       AndroidLogWrapper.d(TCQueryAction.class,"adding motor " + m.toString());\r
-                                       // Write motor.\r
-                                       mDbHelper.getMotorDao().insertOrUpdateMotor(m);\r
+                                       writeMotor( mi, b);\r
                                }\r
                                if ( total < res.getMatches() ) {\r
-                                       handler.post( new Error( total + " motors downloaded, " + res.getMatches() + " matched.  Try restricting the query more.") );\r
+                                       dismiss();\r
+                                       return "" + total + " motors downloaded, " + res.getMatches() + " matched.  Try restricting the query more.";\r
                                } else {\r
-                                       handler.post( new Dismiss());\r
+                                       dismiss();\r
+                                       return null;\r
                                }\r
                        }\r
                        catch( Exception ex){\r
-                               AndroidLogWrapper.d(TCQueryAction.class,ex.toString());\r
-                               handler.post( new Error(ex.toString()) );\r
+                               AndroidLogWrapper.d(TCSearchAction.class,ex.toString());\r
+                               return ex.toString();\r
                        }\r
-\r
                }\r
        }\r
 \r
diff --git a/android/src/net/sf/openrocket/android/util/ErrorDialogFragment.java b/android/src/net/sf/openrocket/android/util/ErrorDialogFragment.java
new file mode 100644 (file)
index 0000000..57e7142
--- /dev/null
@@ -0,0 +1,46 @@
+package net.sf.openrocket.android.util;\r
+\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.content.DialogInterface;\r
+import android.os.Bundle;\r
+import android.support.v4.app.DialogFragment;\r
+\r
+public class ErrorDialogFragment extends DialogFragment {\r
+\r
+       public static ErrorDialogFragment newInstance( String message ) {\r
+               ErrorDialogFragment dialog = new ErrorDialogFragment();\r
+               Bundle b = new Bundle();\r
+               b.putString("message",message);\r
+               dialog.setArguments(b);\r
+               return dialog;\r
+       }\r
+\r
+\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+       }\r
+       \r
+       @Override\r
+       public Dialog onCreateDialog(Bundle savedInstanceState) {\r
+               String message = getArguments().getString("message");\r
+               final AlertDialog dialog = new AlertDialog.Builder(getActivity()).create();\r
+               dialog.setOwnerActivity(getActivity());\r
+               dialog.setMessage(message);\r
+               dialog.setCancelable(false);\r
+               dialog.setCanceledOnTouchOutside(false);\r
+               dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"Dismiss", new DialogInterface.OnClickListener() {\r
+\r
+                       @Override\r
+                       public void onClick(DialogInterface arg0, int arg1) {\r
+                               dialog.dismiss();\r
+                       }\r
+\r
+               });\r
+               return dialog;\r
+       }\r
+\r
+}\r
+\r
index bb2c29e137c4995d7150be66b210515be4366ff2..d095a5c9efd0515ad11895055ac535f81856013c 100644 (file)
@@ -6,6 +6,8 @@ import android.support.v4.app.DialogFragment;
 \r
 public class ProgressDialogFragment extends DialogFragment {\r
 \r
+       ProgressDialog progressDialog;\r
+\r
        public static ProgressDialogFragment newInstance(String title, String message) {\r
                ProgressDialogFragment fragment = new ProgressDialogFragment();\r
                Bundle args = new Bundle();\r
@@ -16,20 +18,35 @@ public class ProgressDialogFragment extends DialogFragment {
                return fragment;\r
        }\r
 \r
+\r
        @Override\r
-       public ProgressDialog onCreateDialog(Bundle savedInstanceState) {\r
-               String title = getArguments().getString("title");\r
-               String message = getArguments().getString("message");\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+       }\r
 \r
-               ProgressDialog progressDialog = new ProgressDialog(getActivity());\r
+       @Override\r
+       public ProgressDialog onCreateDialog(Bundle savedInstanceState) {\r
+               String title = null;\r
+               String message = null;\r
+               Bundle args = getArguments();\r
+               if ( args != null ) {\r
+                       title = getArguments().getString("title");\r
+                       message = getArguments().getString("message");\r
+               }\r
+\r
+               AndroidLogWrapper.d(ProgressDialogFragment.class, "onCreateDialog");\r
+               progressDialog = new ProgressDialog(getActivity());\r
                progressDialog.setTitle(title);\r
                progressDialog.setMessage(message);\r
 \r
                progressDialog.setCancelable(false);\r
+               progressDialog.setCanceledOnTouchOutside(false);\r
 \r
                progressDialog.show();\r
-\r
                return progressDialog;\r
        }\r
 \r
+       public void setMessage( String message ) {\r
+               progressDialog.setMessage(message);\r
+       }\r
 }\r