import net.sf.openrocket.android.thrustcurve.TCQueryAction;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
-import android.app.ProgressDialog;\r
+import net.sf.openrocket.rocketcomponent.Rocket;\r
+import android.app.AlertDialog;\r
+import android.content.DialogInterface;\r
import android.content.Intent;\r
import android.net.Uri;\r
import android.os.Bundle;\r
import android.support.v4.app.FragmentActivity;\r
\r
public class OpenRocketLoaderActivity extends FragmentActivity\r
-implements TCQueryAction.OnComplete\r
+implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
{\r
\r
- private OpenRocketLoaderResult result;\r
- \r
- private Set<ThrustCurveMotorPlaceholder> missingMotors;\r
- private OpenRocketLoaderTask task;\r
- private ProgressDialog progress;\r
- private DialogFragment missingMotorDialog;\r
- private TCMissingMotorDownloadAction missingMotorDownloadAction;\r
+ private final static String MISSING_MOTOR_DIAG_FRAGMENT_TAG = "missingmotordialog";\r
+ private final static String MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG = "missingmotortask";\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
loadOrkFile(file);\r
} else {\r
- progress = ProgressDialog.show(this, "Loading file", "");\r
}\r
}\r
\r
outState.putBoolean("isLoading", true);\r
}\r
\r
- @Override\r
- protected void onDestroy() {\r
- if ( progress != null ) {\r
- if ( progress.isShowing() ) {\r
- progress.dismiss();\r
- }\r
- progress = null;\r
- }\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
File orkFile = new File(path);\r
- progress = ProgressDialog.show(this, "Loading file", "");\r
\r
- task = new OpenRocketLoaderTask(this);\r
-\r
- task.execute(orkFile);\r
+ getSupportFragmentManager().beginTransaction().add( OpenRocketLoaderFragment.newInstance(orkFile), "loader").commit();\r
\r
}\r
\r
* \r
* @param result\r
*/\r
- void finishedLoading(OpenRocketLoaderResult result) {\r
- if ( progress != null && progress.isShowing() ) {\r
- progress.dismiss();\r
- }\r
- this.result = result;\r
- ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
+ public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {\r
+ if ( result.loadingError != null ) {\r
+ \r
+ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);\r
+ dialogBuilder.setTitle("Error Loading File" );\r
+ dialogBuilder.setMessage( result.loadingError.getLocalizedMessage());\r
+ dialogBuilder.setOnCancelListener( new DialogInterface.OnCancelListener() {\r
+ @Override\r
+ public void onCancel(DialogInterface dialog) {\r
+ OpenRocketLoaderActivity.this.finish();\r
+ }\r
+ });\r
+ dialogBuilder.create().show();\r
\r
- updateMissingMotors();\r
+ } else {\r
+ ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
+ ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );\r
\r
+ updateMissingMotors();\r
+ }\r
}\r
\r
private void updateMissingMotors() {\r
- missingMotors = MissingMotorHelpers.findMissingMotors(result.rocket.getRocket());\r
+ Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+ Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
\r
if ( missingMotors.size() > 0 ) {\r
- missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
- missingMotorDialog.show(getSupportFragmentManager(), "missing motors");\r
+ DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
+ getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();\r
return;\r
}\r
\r
* 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
// Need to update the motor references.\r
- MissingMotorHelpers.updateMissingMotors(result.rocket.getRocket(), result.warnings);\r
+ MissingMotorHelpers.updateMissingMotors(rocket, warnings);\r
\r
displayWarningDialog();\r
}\r
\r
private void displayWarningDialog() {\r
- WarningSet warnings = result.warnings;\r
+ WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
if (warnings == null || warnings.isEmpty()) {\r
} else {\r
- // TODO - Build a warning listing dialog\r
DialogFragment newFragment = WarningDialogFragment.newInstance();\r
newFragment.show(getSupportFragmentManager(), "dialog");\r
return;\r
}\r
\r
public void doFixMissingMotors() {\r
+ Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+ Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
\r
- missingMotorDialog.dismiss();\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
public void doNotFixMissingMotors() {\r
- missingMotorDialog.dismiss();\r
displayWarningDialog();\r
}\r
\r
- private void moveOnToViewer() {\r
+ public void moveOnToViewer() {\r
Intent i = new Intent(this,OpenRocketViewer.class);\r
startActivity(i);\r
finish();\r