1 package net.sf.openrocket.android.rocket;
\r
4 import java.util.Set;
\r
6 import net.sf.openrocket.R;
\r
7 import net.sf.openrocket.aerodynamics.WarningSet;
\r
8 import net.sf.openrocket.android.Application;
\r
9 import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;
\r
10 import net.sf.openrocket.android.thrustcurve.TCQueryAction;
\r
11 import net.sf.openrocket.android.util.AndroidLogWrapper;
\r
12 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;
\r
13 import net.sf.openrocket.rocketcomponent.Rocket;
\r
14 import android.app.AlertDialog;
\r
15 import android.content.DialogInterface;
\r
16 import android.content.Intent;
\r
17 import android.net.Uri;
\r
18 import android.os.Bundle;
\r
19 import android.support.v4.app.DialogFragment;
\r
20 import android.support.v4.app.FragmentActivity;
\r
22 public class OpenRocketLoaderActivity extends FragmentActivity
\r
23 implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded
\r
26 private final static String MISSING_MOTOR_DIAG_FRAGMENT_TAG = "missingmotordialog";
\r
27 private final static String MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG = "missingmotortask";
\r
30 protected void onCreate(Bundle savedInstanceState) {
\r
31 super.onCreate(savedInstanceState);
\r
32 setContentView(R.layout.main);
\r
33 if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {
\r
34 Intent i = getIntent();
\r
35 Uri file = i.getData();
\r
42 protected void onSaveInstanceState(Bundle outState) {
\r
43 super.onSaveInstanceState(outState);
\r
44 outState.putBoolean("isLoading", true);
\r
47 private void loadOrkFile( Uri file ) {
\r
48 AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);
\r
49 String path = file.getPath();
\r
50 File orkFile = new File(path);
\r
52 getSupportFragmentManager().beginTransaction().add( OpenRocketLoaderFragment.newInstance(orkFile), "loader").commit();
\r
57 * Called by the OpenRocketLoaderTask when it completes.
\r
58 * is default visibility so it can be called from this package.
\r
62 public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {
\r
63 if ( result.loadingError != null ) {
\r
65 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
\r
66 dialogBuilder.setTitle("Error Loading File" );
\r
67 dialogBuilder.setMessage( result.loadingError.getLocalizedMessage());
\r
68 dialogBuilder.setOnCancelListener( new DialogInterface.OnCancelListener() {
\r
70 public void onCancel(DialogInterface dialog) {
\r
71 OpenRocketLoaderActivity.this.finish();
\r
74 dialogBuilder.create().show();
\r
77 ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );
\r
78 ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );
\r
80 updateMissingMotors();
\r
84 private void updateMissingMotors() {
\r
85 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();
\r
86 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);
\r
88 if ( missingMotors.size() > 0 ) {
\r
89 DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );
\r
90 getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();
\r
94 displayWarningDialog();
\r
98 * Called when the TCMissingMotorDownload process finishes.
\r
101 public void onTCQueryComplete(String message) {
\r
103 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();
\r
104 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();
\r
105 // Need to update the motor references.
\r
106 MissingMotorHelpers.updateMissingMotors(rocket, warnings);
\r
108 displayWarningDialog();
\r
111 private void displayWarningDialog() {
\r
112 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();
\r
113 if (warnings == null || warnings.isEmpty()) {
\r
115 // TODO - Build a warning listing dialog
\r
116 DialogFragment newFragment = WarningDialogFragment.newInstance();
\r
117 newFragment.show(getSupportFragmentManager(), "dialog");
\r
124 public void doFixMissingMotors() {
\r
125 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();
\r
126 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);
\r
128 TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );
\r
129 getSupportFragmentManager().beginTransaction().add( motorfrag, MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG).commit();
\r
133 public void doNotFixMissingMotors() {
\r
134 displayWarningDialog();
\r
137 private void moveOnToViewer() {
\r
138 Intent i = new Intent(this,OpenRocketViewer.class);
\r