From b835dd08b4bd97e12050dbb9ce2d6b7e40d2fd0d Mon Sep 17 00:00:00 2001 From: Kevin Ruland Date: Mon, 2 Jul 2012 02:15:34 +0000 Subject: [PATCH] Added dialog to load new file when the current file is modified. --- android/res/values/strings.xml | 7 +++- .../android/rocket/OpenRocketViewer.java | 42 +++++++++++++++++-- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index eafe701e2..074c7a886 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -14,8 +14,11 @@ View Events Select Series And Events Plot - Saving file... - Loading file... + Saving file… + Loading file… + Would you like to save the changes to the current model? + No + Yes Case diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java index 2dc2f4595..b04f40eef 100644 --- a/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java +++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java @@ -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 {