\r
<string name="app_name">OpenRocket</string>\r
<string name="version">version 12.07-b7</string>\r
+ <string name="cancel">Cancel</string>\r
+ <string name="ok">OK</string>\r
+ <string name="dismiss">Dismiss</string>\r
<string name="load">Load</string>\r
<string name="save">Save</string>\r
<string name="Add">Add</string>\r
<string name="Download">Download</string>\r
<string name="About">About</string>\r
<string name="Preferences">Preferences</string>\r
+ <string name="missingMotors">Missing Motors</string>\r
+ <string name="missingMotorsMessageStart">The following motors are missing:</string>\r
+ <string name="missingMotorsMessageEnd">Would you like to download them from Thrustcurve?</string>\r
<string name="configurePlot">Change Plot</string>\r
<string name="view_events">View Events</string>\r
<string name="simulationPlotDialogTitle">Select Series And Events</string>\r
\r
public static void goHome( Activity parent ) {\r
Intent i = new Intent(parent, Main.class);\r
- i.putExtra(Main.restartFlag, true);\r
i.addFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP + Intent.FLAG_ACTIVITY_NEW_TASK );\r
parent.startActivity(i);\r
}\r
\r
import net.sf.openrocket.R;\r
import net.sf.openrocket.android.rocket.OpenRocketLoaderActivity;\r
-import android.content.Intent;\r
import android.os.Bundle;\r
import android.view.View;\r
import android.widget.Button;\r
\r
public class Main extends OpenRocketLoaderActivity {\r
\r
- public final static String restartFlag = "restart";\r
-\r
/** Called when the activity is first created. */\r
@Override\r
public void onCreate(Bundle icicle) {\r
super.onCreate(icicle);\r
- Intent i = getIntent();\r
- // Rocket already loaded. go to viewer unless we want to restart.\r
- if ( ( i.getBooleanExtra(restartFlag, false) == false) && CurrentRocketHolder.getCurrentRocket().getRocketDocument() != null ) {\r
- moveOnToViewer();\r
- }\r
setContentView(R.layout.main);\r
((Button) findViewById(R.id.main_open)).setOnClickListener(\r
new View.OnClickListener() {\r
});\r
}\r
\r
+ @Override\r
+ protected void onPostResume() {\r
+ super.onPostResume();\r
+ // Rocket already loaded.\r
+ if ( !isLoading() && CurrentRocketHolder.getCurrentRocket().getRocketDocument() != null ) {\r
+ moveOnToViewer();\r
+ }\r
+ }\r
+\r
@Override\r
public boolean onCreateOptionsMenu(Menu menu) {\r
MenuInflater inflater = getSupportMenuInflater();\r
--- /dev/null
+package net.sf.openrocket.android.rocket;\r
+\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.content.DialogInterface;\r
+import android.os.Bundle;\r
+\r
+import com.actionbarsherlock.app.SherlockDialogFragment;\r
+\r
+public class ErrorLoadingFileDialogFragment extends SherlockDialogFragment {\r
+\r
+ public static ErrorLoadingFileDialogFragment newInstance( int titleRes, String message ) {\r
+ ErrorLoadingFileDialogFragment dialog = new ErrorLoadingFileDialogFragment();\r
+ Bundle b = new Bundle();\r
+ b.putString("message", message);\r
+ b.putInt("titleRes", titleRes);\r
+ dialog.setArguments(b);\r
+ dialog.setCancelable(true);\r
+ return dialog;\r
+ }\r
+ \r
+\r
+ @Override\r
+ public void onCancel(DialogInterface dialog) {\r
+ ((OpenRocketLoaderActivity)getActivity()).doDismissErrorDialog();\r
+ }\r
+\r
+\r
+ @Override\r
+ public Dialog onCreateDialog(Bundle savedInstanceState) {\r
+ AndroidLogWrapper.d(ErrorLoadingFileDialogFragment.class,"onCreateDialog");\r
+\r
+ String message = getArguments().getString("message");\r
+ final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
+\r
+ if ( getArguments().containsKey("titleRes") ) {\r
+ int titleRes = getArguments().getInt("titleRes");\r
+ builder.setTitle(titleRes);\r
+ }\r
+ \r
+ builder.setMessage(message);\r
+ builder.setNeutralButton(R.string.dismiss, new DialogInterface.OnClickListener() {\r
+\r
+ @Override\r
+ public void onClick(DialogInterface arg0, int arg1) {\r
+ ((OpenRocketLoaderActivity)getActivity()).doDismissErrorDialog();\r
+ }\r
+\r
+ });\r
+ \r
+ final AlertDialog dialog = builder.create();\r
+ dialog.setOwnerActivity(getActivity());\r
+ return dialog;\r
+ }\r
+\r
+\r
+}\r
\r
import java.util.Set;\r
\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
import android.app.AlertDialog;\r
import android.app.Dialog;\r
import com.actionbarsherlock.app.SherlockDialogFragment;\r
\r
public class MissingMotorDialogFragment extends SherlockDialogFragment {\r
- \r
- private final static String MESSAGE_ARG_KEY = "message";\r
+\r
+ private final static String MESSAGES_ARG_KEY = "messages";\r
\r
public static MissingMotorDialogFragment newInstance( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
MissingMotorDialogFragment frag = new MissingMotorDialogFragment();\r
Bundle b = new Bundle();\r
- b.putString(MESSAGE_ARG_KEY, buildMessage(missingMotors));\r
+ String[] messages = new String[ missingMotors.size() ];\r
+ int index = 0;\r
+ for( ThrustCurveMotorPlaceholder m : missingMotors ) {\r
+ messages[index++] = m.getManufacturer() + " " + m.getDesignation();\r
+ }\r
+ b.putStringArray(MESSAGES_ARG_KEY, messages);\r
frag.setArguments(b);\r
+ frag.setCancelable(false);\r
return frag;\r
}\r
\r
- private static String buildMessage( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
+ private String buildMessage( String[] missingMotors ) {\r
StringBuilder sb = new StringBuilder();\r
- sb.append("The following motors are missing:");\r
- for( ThrustCurveMotorPlaceholder m : missingMotors ) {\r
- sb.append("\n").append(m.getManufacturer()).append(" ").append(m.getDesignation());\r
+ sb.append(this.getString(R.string.missingMotorsMessageStart));\r
+ for( String m : missingMotors ) {\r
+ sb.append("\n").append(m);\r
}\r
- sb.append("\nWould you like to download them from Thrustcurve?");\r
+ sb.append("\n").append(this.getString(R.string.missingMotorsMessageEnd));\r
return sb.toString();\r
}\r
- \r
+\r
@Override\r
- public void onCreate(Bundle savedInstanceState) {\r
- super.onCreate(savedInstanceState);\r
- setRetainInstance(true);\r
- setCancelable(false);\r
+ public void onCancel(DialogInterface dialog) {\r
+ ((OpenRocketLoaderActivity)getActivity()).doNotFixMissingMotors();\r
+ super.onCancel(dialog);\r
}\r
\r
-\r
@Override\r
public Dialog onCreateDialog(Bundle savedInstanceState) {\r
\r
- String message = getArguments().getString(MESSAGE_ARG_KEY);\r
- \r
+ AndroidLogWrapper.d(MissingMotorDialogFragment.class,"onCreateDialog");\r
+\r
+ String[] messages = getArguments().getStringArray(MESSAGES_ARG_KEY);\r
+\r
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
// .setIcon(android.R.drawable.alert_dialog_icon)\r
- builder.setTitle("Missing Motors");\r
- builder.setMessage(message);\r
- builder.setPositiveButton("OK",\r
+ builder.setTitle(R.string.missingMotors);\r
+ builder.setMessage(buildMessage(messages));\r
+ builder.setPositiveButton(R.string.yes,\r
new DialogInterface.OnClickListener() {\r
public void onClick(DialogInterface dialog, int whichButton) {\r
((OpenRocketLoaderActivity)getActivity()).doFixMissingMotors();\r
}\r
- }\r
- );\r
- builder.setNegativeButton("Cancel",\r
+ });\r
+\r
+ builder.setNegativeButton(R.string.no,\r
new DialogInterface.OnClickListener() {\r
public void onClick(DialogInterface dialog, int whichButton) {\r
((OpenRocketLoaderActivity)getActivity()).doNotFixMissingMotors();\r
}\r
- }\r
- );\r
- return builder.create();\r
- }\r
+ });\r
\r
- /**\r
- * Work around for dialog getting dismissed on orientation change. See code.google.com/p/android/issues/detail?id=17423\r
- */\r
- @Override\r
- public void onDestroyView() {\r
- if ( getDialog() != null && getRetainInstance() ) {\r
- getDialog().setDismissMessage(null);\r
- }\r
- super.onDestroyView();\r
+ AlertDialog dialog = builder.create();\r
+ dialog.setOwnerActivity(getActivity());\r
+ return dialog;\r
}\r
- \r
- \r
+\r
}\r
\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
import net.sf.openrocket.rocketcomponent.Rocket;\r
-import android.app.AlertDialog;\r
-import android.app.Dialog;\r
import android.content.ActivityNotFoundException;\r
import android.content.Intent;\r
import android.content.SharedPreferences;\r
* Set to the Uri of the file we are supposed to load. Is saved in InstanceState.\r
*/\r
private Uri fileToLoad = null;\r
+ \r
+ protected boolean isLoading() {\r
+ AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "isLoading " + this.hashCode());\r
+ AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "isLoading = " + isLoading);\r
+ return isLoading;\r
+ }\r
\r
@Override\r
protected void onPostCreate(Bundle savedInstanceState) {\r
\r
@Override\r
protected void onSaveInstanceState(Bundle outState) {\r
- AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "onSaveInstanceState");\r
+ AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "onSaveInstanceState " + this.hashCode());\r
+ AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "isLoading = " + isLoading);\r
outState.putBoolean("isLoading", isLoading);\r
if ( fileToLoad != null ) {\r
outState.putParcelable("fileToLoad", fileToLoad);\r
protected void onRestoreInstanceState(Bundle savedInstanceState) {\r
AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "onRestoreInstanceState");\r
isLoading = savedInstanceState.getBoolean("isLoading",false);\r
+ AndroidLogWrapper.d(OpenRocketLoaderActivity.class, "isLoading = " + isLoading);\r
if ( savedInstanceState.containsKey("fileToLoad") ) {\r
fileToLoad = savedInstanceState.getParcelable("fileToLoad");\r
}\r
* @param result\r
*/\r
public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {\r
- isLoading = false;\r
if ( result.loadingError != null ) {\r
\r
- AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);\r
- dialogBuilder.setTitle( R.string.loadingErrorMessage );\r
- dialogBuilder.setMessage( result.loadingError.getLocalizedMessage());\r
- dialogBuilder.setCancelable(true);\r
- Dialog d = dialogBuilder.create();\r
- d.setCanceledOnTouchOutside(true);\r
- d.show();\r
+ ErrorLoadingFileDialogFragment errorDialog = ErrorLoadingFileDialogFragment.newInstance(R.string.loadingErrorMessage, result.loadingError.getLocalizedMessage());\r
+ errorDialog.show(getSupportFragmentManager(),"errorDialog");\r
\r
} else {\r
CurrentRocketHolder.getCurrentRocket().setRocketDocument( result.rocket );\r
Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
\r
if ( missingMotors.size() > 0 ) {\r
- DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
- getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();\r
+ MissingMotorDialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
+ missingMotorDialog.show(getSupportFragmentManager(), MISSING_MOTOR_DIAG_FRAGMENT_TAG);\r
return;\r
}\r
\r
displayWarningDialog();\r
}\r
\r
+ public void doDismissErrorDialog() {\r
+ isLoading = false;\r
+ fileToLoad = null;\r
+ }\r
+ \r
public void moveOnToViewer() {\r
+ isLoading = false;\r
Intent i = new Intent(this,OpenRocketViewer.class);\r
startActivity(i);\r
finish();\r
import android.view.View;\r
import android.view.ViewGroup;\r
\r
-public class OpenRocketLoaderFragment extends Fragment {\r
+import com.actionbarsherlock.app.SherlockFragment;\r
+\r
+public class OpenRocketLoaderFragment extends SherlockFragment {\r
\r
private final static String FILE_ARG_KEY = "file";\r
\r
WarningDialogFragment frag = new WarningDialogFragment();\r
Bundle args = new Bundle();\r
frag.setArguments(args);\r
+ frag.setCancelable(false);\r
return frag;\r
}\r
\r
((OpenRocketLoaderActivity)getActivity()).moveOnToViewer();\r
}\r
});\r
- builder.setOnCancelListener(new DialogInterface.OnCancelListener() {\r
- public void onCancel(DialogInterface dialog) {\r
- ((OpenRocketLoaderActivity)getActivity()).moveOnToViewer();\r
- }\r
- });\r
- return builder.create();\r
+ Dialog dialog = builder.create();\r
+ return dialog;\r
}\r
}\r