272b4b6d5e75f635b3c6922aef7adde607e296f2
[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.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.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
19 \r
20 public class OpenRocketLoaderActivity extends FragmentActivity\r
21 implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
22 {\r
23 \r
24         private final static String MISSING_MOTOR_DIAG_FRAGMENT_TAG = "missingmotordialog";\r
25         private final static String MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG = "missingmotortask";\r
26         \r
27         @Override\r
28         protected void onCreate(Bundle savedInstanceState) {\r
29                 super.onCreate(savedInstanceState);\r
30                 setContentView(R.layout.main);\r
31                 if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {\r
32                         Intent i = getIntent();\r
33                         Uri file = i.getData();\r
34                         loadOrkFile(file);\r
35                 } else {\r
36                 }\r
37         }\r
38 \r
39         @Override\r
40         protected void onSaveInstanceState(Bundle outState) {\r
41                 super.onSaveInstanceState(outState);\r
42                 outState.putBoolean("isLoading", true);\r
43         }\r
44 \r
45         private void loadOrkFile( Uri file ) {\r
46                 AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);\r
47                 String path = file.getPath();\r
48                 File orkFile = new File(path);\r
49                 \r
50                 getSupportFragmentManager().beginTransaction().add( OpenRocketLoaderFragment.newInstance(orkFile), "loader").commit();\r
51                 \r
52         }\r
53 \r
54         /**\r
55          * Called by the OpenRocketLoaderTask when it completes.\r
56          * is default visibility so it can be called from this package.\r
57          * \r
58          * @param result\r
59          */\r
60         public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {\r
61                 ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
62                 ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );\r
63                 \r
64                 updateMissingMotors();\r
65 \r
66         }\r
67 \r
68         private void updateMissingMotors() {\r
69                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
70                 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
71 \r
72                 if ( missingMotors.size() > 0 ) {\r
73                         DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
74                         getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();\r
75                         return;\r
76                 }\r
77 \r
78                 displayWarningDialog();\r
79         }\r
80 \r
81         /**\r
82          * Called when the TCMissingMotorDownload process finishes.\r
83          */\r
84         @Override\r
85         public void onTCQueryComplete(String message) {\r
86 \r
87                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
88                 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
89                 // Need to update the motor references.\r
90                 MissingMotorHelpers.updateMissingMotors(rocket, warnings);\r
91 \r
92                 displayWarningDialog();\r
93         }\r
94 \r
95         private void displayWarningDialog() {\r
96                 WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
97                 if (warnings == null || warnings.isEmpty()) {\r
98                 } else {\r
99                         // TODO - Build a warning listing dialog\r
100                         DialogFragment newFragment = WarningDialogFragment.newInstance();\r
101                         newFragment.show(getSupportFragmentManager(), "dialog");\r
102                         return;\r
103                 }\r
104 \r
105                 moveOnToViewer();\r
106         }\r
107 \r
108         public void doFixMissingMotors() {\r
109                 Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
110                 Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
111 \r
112                 TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );\r
113                 getSupportFragmentManager().beginTransaction().add( motorfrag, MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG).commit();\r
114 \r
115         }\r
116 \r
117         public void doNotFixMissingMotors() {\r
118                 displayWarningDialog();\r
119         }\r
120 \r
121         private void moveOnToViewer() {\r
122                 Intent i = new Intent(this,OpenRocketViewer.class);\r
123                 startActivity(i);\r
124                 finish();\r
125         }\r
126 }\r