151a6e0f63753339b2a3111aa1c911f055e3a4a5
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / OpenRocketLoaderActivity.java
1 package net.sf.openrocket.android.rocket;\r
2 \r
3 import java.io.File;\r
4 import java.util.Set;\r
5 \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.actionbarcompat.ActionBarFragmentActivity;\r
10 import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;\r
11 import net.sf.openrocket.android.thrustcurve.TCQueryAction;\r
12 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
13 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
14 import net.sf.openrocket.rocketcomponent.Rocket;\r
15 import android.app.AlertDialog;\r
16 import android.content.DialogInterface;\r
17 import android.content.Intent;\r
18 import android.net.Uri;\r
19 import android.os.Bundle;\r
20 import android.support.v4.app.DialogFragment;\r
21 \r
22 public class OpenRocketLoaderActivity extends ActionBarFragmentActivity\r
23 implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
24 {\r
25 \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
28 \r
29         @Override\r
30         protected void onCreate(Bundle savedInstanceState) {\r
31                 super.onCreate(savedInstanceState);\r
32                 setTitle("");\r
33                 setContentView(R.layout.main);\r
34                 if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {\r
35                         Intent i = getIntent();\r
36                         Uri file = i.getData();\r
37                         loadOrkFile(file);\r
38                 } else {\r
39                 }\r
40         }\r
41 \r
42         @Override\r
43         protected void onSaveInstanceState(Bundle outState) {\r
44                 super.onSaveInstanceState(outState);\r
45                 outState.putBoolean("isLoading", true);\r
46         }\r
47 \r
48         private void loadOrkFile( Uri file ) {\r
49                 AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);\r
50                 String path = file.getPath();\r
51                 File orkFile = new File(path);\r
52 \r
53                 getSupportFragmentManager().beginTransaction().add( OpenRocketLoaderFragment.newInstance(orkFile), "loader").commit();\r
54 \r
55         }\r
56 \r
57         /**\r
58          * Called by the OpenRocketLoaderTask when it completes.\r
59          * is default visibility so it can be called from this package.\r
60          * \r
61          * @param result\r
62          */\r
63         public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {\r
64                 if ( result.loadingError != null ) {\r
65                         \r
66                         AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);\r
67                         dialogBuilder.setTitle("Error Loading File" );\r
68                         dialogBuilder.setMessage( result.loadingError.getLocalizedMessage());\r
69                         dialogBuilder.setOnCancelListener( new DialogInterface.OnCancelListener() {\r
70                                 @Override\r
71                                 public void onCancel(DialogInterface dialog) {\r
72                                         OpenRocketLoaderActivity.this.finish();\r
73                                 }\r
74                         });\r
75                         dialogBuilder.create().show();\r
76 \r
77                 } else {\r
78                         ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
79                         ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );\r
80 \r
81                         updateMissingMotors();\r
82                 }\r
83         }\r
84 \r
85         private void updateMissingMotors() {\r
86                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
87                 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
88 \r
89                 if ( missingMotors.size() > 0 ) {\r
90                         DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
91                         getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();\r
92                         return;\r
93                 }\r
94 \r
95                 displayWarningDialog();\r
96         }\r
97 \r
98         /**\r
99          * Called when the TCMissingMotorDownload process finishes.\r
100          */\r
101         @Override\r
102         public void onTCQueryComplete(String message) {\r
103 \r
104                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
105                 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
106                 // Need to update the motor references.\r
107                 MissingMotorHelpers.updateMissingMotors(rocket, warnings);\r
108 \r
109                 displayWarningDialog();\r
110         }\r
111 \r
112         private void displayWarningDialog() {\r
113                 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
114                 if (warnings == null || warnings.isEmpty()) {\r
115                 } else {\r
116                         DialogFragment newFragment = WarningDialogFragment.newInstance();\r
117                         newFragment.show(getSupportFragmentManager(), "dialog");\r
118                         return;\r
119                 }\r
120 \r
121                 moveOnToViewer();\r
122         }\r
123 \r
124         public void doFixMissingMotors() {\r
125                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
126                 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
127 \r
128                 TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );\r
129                 getSupportFragmentManager().beginTransaction().add( motorfrag, MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG).commit();\r
130 \r
131         }\r
132 \r
133         public void doNotFixMissingMotors() {\r
134                 displayWarningDialog();\r
135         }\r
136 \r
137         public void moveOnToViewer() {\r
138                 Intent i = new Intent(this,OpenRocketViewer.class);\r
139                 startActivity(i);\r
140                 finish();\r
141         }\r
142 }\r