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 android.app.ProgressDialog;
\r
14 import android.content.Intent;
\r
15 import android.net.Uri;
\r
16 import android.os.Bundle;
\r
17 import android.support.v4.app.DialogFragment;
\r
18 import android.support.v4.app.FragmentActivity;
\r
20 public class OpenRocketLoaderActivity extends FragmentActivity
\r
21 implements TCQueryAction.OnComplete
\r
24 private OpenRocketLoaderResult result;
\r
26 private Set<ThrustCurveMotorPlaceholder> missingMotors;
\r
27 private OpenRocketLoaderTask task;
\r
28 private ProgressDialog progress;
\r
29 private DialogFragment missingMotorDialog;
\r
30 private TCMissingMotorDownloadAction missingMotorDownloadAction;
\r
33 protected void onCreate(Bundle savedInstanceState) {
\r
34 super.onCreate(savedInstanceState);
\r
35 setContentView(R.layout.main);
\r
36 missingMotorDownloadAction = new TCMissingMotorDownloadAction(this);
\r
37 if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {
\r
38 Intent i = getIntent();
\r
39 Uri file = i.getData();
\r
42 progress = ProgressDialog.show(this, "Loading file", "");
\r
47 protected void onSaveInstanceState(Bundle outState) {
\r
48 super.onSaveInstanceState(outState);
\r
49 outState.putBoolean("isLoading", true);
\r
53 protected void onDestroy() {
\r
54 if ( progress != null ) {
\r
55 if ( progress.isShowing() ) {
\r
60 if ( missingMotorDownloadAction != null ) {
\r
61 missingMotorDownloadAction.dismiss();
\r
67 private void loadOrkFile( Uri file ) {
\r
68 AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);
\r
69 String path = file.getPath();
\r
70 File orkFile = new File(path);
\r
71 progress = ProgressDialog.show(this, "Loading file", "");
\r
73 task = new OpenRocketLoaderTask(this);
\r
75 task.execute(orkFile);
\r
80 * Called by the OpenRocketLoaderTask when it completes.
\r
81 * is default visibility so it can be called from this package.
\r
85 void finishedLoading(OpenRocketLoaderResult result) {
\r
86 if ( progress != null && progress.isShowing() ) {
\r
89 this.result = result;
\r
90 ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );
\r
92 updateMissingMotors();
\r
96 private void updateMissingMotors() {
\r
97 missingMotors = MissingMotorHelpers.findMissingMotors(result.rocket.getRocket());
\r
99 if ( missingMotors.size() > 0 ) {
\r
100 missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );
\r
101 missingMotorDialog.show(getSupportFragmentManager(), "missing motors");
\r
105 displayWarningDialog();
\r
109 * Called when the TCMissingMotorDownload process finishes.
\r
112 public void onComplete() {
\r
114 // Need to update the motor references.
\r
115 MissingMotorHelpers.updateMissingMotors(result.rocket.getRocket(), result.warnings);
\r
117 displayWarningDialog();
\r
120 private void displayWarningDialog() {
\r
121 WarningSet warnings = result.warnings;
\r
122 if (warnings == null || warnings.isEmpty()) {
\r
124 // TODO - Build a warning listing dialog
\r
125 DialogFragment newFragment = WarningDialogFragment.newInstance();
\r
126 newFragment.show(getSupportFragmentManager(), "dialog");
\r
133 public void doFixMissingMotors() {
\r
135 missingMotorDialog.dismiss();
\r
137 missingMotorDownloadAction.setMissingMotors(missingMotors);
\r
138 missingMotorDownloadAction.start();
\r
142 public void doNotFixMissingMotors() {
\r
143 missingMotorDialog.dismiss();
\r
144 displayWarningDialog();
\r
147 private void moveOnToViewer() {
\r
148 Intent i = new Intent(this,OpenRocketViewer.class);
\r