package net.sf.openrocket.android.thrustcurve;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.db.DbAdapter;\r
-import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
-import android.app.Activity;\r
-import android.app.AlertDialog;\r
-import android.app.ProgressDialog;\r
-import android.content.DialogInterface;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import net.sf.openrocket.android.util.ErrorDialogFragment;\r
import android.os.Bundle;\r
-import android.os.Handler;\r
-import android.util.Log;\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
+import com.actionbarsherlock.app.SherlockFragmentActivity;\r
\r
- private static final String TAG = "ThrustCurveQueryActivity";\r
-\r
- private DbAdapter mDbHelper;\r
-\r
- private ProgressDialog progress;\r
- private Thread downloadThread;\r
- private Handler handler;\r
+public class TCQueryActivity extends SherlockFragmentActivity\r
+implements TCQueryAction.OnTCQueryCompleteListener\r
+{\r
\r
@Override\r
protected void onCreate(Bundle savedInstanceState) {\r
super.onCreate(savedInstanceState);\r
+ setTitle(R.string.TCMotorSearchFormTitle);\r
setContentView(R.layout.tcqueryform);\r
\r
- mDbHelper = new DbAdapter(this);\r
- mDbHelper.open();\r
-\r
final Spinner manufacturerField = (Spinner) findViewById(R.id.TCMotorSearchFormManufacturerField);\r
final Spinner impulseField = (Spinner) findViewById(R.id.TCMotorSearchFormImpulseField);\r
final Spinner diameterField = (Spinner) findViewById(R.id.TCMotorSearchFormDiameterField);\r
new View.OnClickListener() {\r
@Override\r
public void onClick( View v ) {\r
- Log.d(TAG,"submit button clicked");\r
+ AndroidLogWrapper.d(TCQueryActivity.class,"submit button clicked");\r
\r
String commonName = commonNameField.getText().toString();\r
\r
SearchRequest r = new SearchRequest();\r
if ( manufacturerField.getSelectedItemPosition() != 0) {\r
String m = (String) manufacturerField.getSelectedItem();\r
- Log.d(TAG,"manufacturer = " + m);\r
+ AndroidLogWrapper.d(TCQueryActivity.class,"manufacturer = " + m);\r
r.setManufacturer(m);\r
}\r
if ( impulseField.getSelectedItemPosition() != 0 ) {\r
String impulse = (String) impulseField.getSelectedItem();\r
- Log.d(TAG,"impulse = " + impulse);\r
+ AndroidLogWrapper.d(TCQueryActivity.class,"impulse = " + impulse);\r
r.setImpulse_class(impulse);\r
}\r
if ( diameterField.getSelectedItemPosition() != 0 ) {\r
String diameter = (String)diameterField.getSelectedItem();\r
- Log.d(TAG,"diameter = " + diameter);\r
+ AndroidLogWrapper.d(TCQueryActivity.class,"diameter = " + diameter);\r
r.setDiameter(diameter);\r
}\r
r.setCommon_name(commonName);\r
\r
- Downloader d = new Downloader(r);\r
-\r
- handler = new Handler();\r
- progress = ProgressDialog.show(TCQueryActivity.this, null, "");\r
-\r
- downloadThread = new Thread( d );\r
- downloadThread.start();\r
+ TCSearchAction motorfrag = TCSearchAction.newInstance( r );\r
+ getSupportFragmentManager().beginTransaction().add( motorfrag, "dloader").commit();\r
}\r
- }\r
- );\r
+ });\r
}\r
\r
@Override\r
- public Object onRetainNonConfigurationInstance() {\r
- return downloadThread;\r
- }\r
-\r
- @Override\r
- protected void onDestroy() {\r
- mDbHelper.close();\r
- if ( progress != null ) {\r
- if ( progress.isShowing() ) {\r
- progress.dismiss();\r
- }\r
- progress = null;\r
- }\r
- super.onDestroy();\r
- }\r
-\r
- private 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
- }\r
- }\r
-\r
- private class Dismiss implements Runnable {\r
- @Override\r
- public void run() {\r
- progress.dismiss();\r
- TCQueryActivity.this.finish();\r
- }\r
- }\r
-\r
- private class Error implements Runnable {\r
- private String newMessage;\r
- Error( String message ) {\r
- this.newMessage = message;\r
- }\r
- @Override\r
- public void run() {\r
- progress.dismiss();\r
- final AlertDialog dialog = new AlertDialog.Builder(TCQueryActivity.this).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
+ 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
- private class Downloader implements Runnable {\r
-\r
- SearchRequest request;\r
-\r
- Downloader( SearchRequest request ) {\r
- this.request = request;\r
- }\r
-\r
- @Override\r
- public void run() {\r
- try {\r
- handler.post( new UpdateMessage("Quering Thrustcurve"));\r
- SearchResponse res = new ThrustCurveAPI().doSearch(request);\r
-\r
- int total = res.getResults().size();\r
- int count = 1;\r
- for( TCMotor mi : res.getResults() ) {\r
- handler.post(new UpdateMessage("Downloading details " + count + " of " + total));\r
- count++;\r
- if ( mi.getData_files() == null || mi.getData_files().intValue() == 0 ) {\r
- continue;\r
- }\r
\r
- MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
-\r
- Log.d(TAG, 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
-\r
- Log.d(TAG,"adding motor " + m.toString());\r
- // Write motor.\r
- mDbHelper.getMotorDao().insertOrUpdateMotor(m);\r
- }\r
- if ( total < res.getMatches() ) {\r
- handler.post( new Error( total + " motors downloaded, " + res.getMatches() + " matched. Try restricting the query more.") );\r
- } else {\r
- handler.post( new Dismiss());\r
- }\r
- }\r
- catch( Exception ex){\r
- Log.d(TAG,ex.toString());\r
- handler.post( new Error(ex.toString()) );\r
- }\r
-\r
- }\r
- }\r
}\r
\r