Added dialog to load new file when the current file is modified.

This commit is contained in:
Kevin Ruland 2012-07-02 02:15:34 +00:00
parent cb601364d0
commit b835dd08b4
2 changed files with 44 additions and 5 deletions

View File

@ -14,8 +14,11 @@
<string name="view_events">View Events</string>
<string name="simulationPlotDialogTitle">Select Series And Events</string>
<string name="plot">Plot</string>
<string name="saving">Saving file...</string>
<string name="loading">Loading file...</string>
<string name="saving">Saving file…</string>
<string name="loading">Loading file…</string>
<string name="loadWarnUnsaved">Would you like to save the changes to the current model?</string>
<string name="no">No</string>
<string name="yes">Yes</string>
<string-array name="PreferenceMotorBrowserGroupingEntries">
<item>Case</item>

View File

@ -12,6 +12,7 @@ import net.sf.openrocket.android.util.AndroidLogWrapper;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.document.Simulation;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@ -36,6 +37,9 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
private final static int TABSIZE = 4;
private OpenRocketViewerPagerAdapter viewPagerAdapter;
private final static String LOAD_AFTER_SAVE = "net.sf.openrocket.android.loadAfterSave";
private boolean loadAfterSave = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -51,6 +55,9 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
finish();
return;
}
if (savedInstanceState != null ) {
loadAfterSave = savedInstanceState.getBoolean(LOAD_AFTER_SAVE);
}
setTitle(rocDoc.getRocket().getName());
getSupportActionBar().setHomeButtonEnabled(true);
@ -73,6 +80,12 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(LOAD_AFTER_SAVE, loadAfterSave);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
@ -93,11 +106,30 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
AndroidLogWrapper.d(OpenRocketViewer.class,"onMenuItemSelected" + item.getItemId());
switch(item.getItemId()) {
case R.id.menu_load:
// FIXME - Might want to prompt for save here.
pickOrkFiles();
if ( CurrentRocketHolder.getCurrentRocket().isModified() ) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.loadWarnUnsaved);
builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pickOrkFiles();
}
});
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
OpenRocketViewer.this.loadAfterSave = true;
getSupportFragmentManager().beginTransaction()
.add( OpenRocketSaverFragment.newInstance(), "saver")
.commitAllowingStateLoss();
}
});
builder.create().show();
} else {
pickOrkFiles();
}
return true;
case R.id.menu_save:
// FIXME - Probably want to open a dialog here.
getSupportFragmentManager().beginTransaction()
.add( OpenRocketSaverFragment.newInstance(), "saver")
.commitAllowingStateLoss();
@ -156,6 +188,10 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
@Override
public void onOpenRocketFileSaved(Boolean result) {
invalidateOptionsMenu();
if ( loadAfterSave ) {
loadAfterSave = false;
pickOrkFiles();
}
}
private class RocketChangedEventHandler extends net.sf.openrocket.android.RocketChangedEventHandler {