Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / OpenRocketViewer.java
index c621dab23a1b931a941cba1830da3e2dc9366502..635d5264349e02e4f0b3190fa94820bdd448d30b 100644 (file)
@@ -4,6 +4,7 @@ package net.sf.openrocket.android.rocket;
 import net.sf.openrocket.R;\r
 import net.sf.openrocket.android.ActivityHelpers;\r
 import net.sf.openrocket.android.CurrentRocketHolder;\r
+import net.sf.openrocket.android.events.ChangeEventBroadcastReceiver;\r
 import net.sf.openrocket.android.simulation.SimulationChart;\r
 import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
 import net.sf.openrocket.android.simulation.SimulationViewFragment;\r
@@ -47,6 +48,9 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
        private boolean loadAfterSave = false;\r
        private String autoSaveEnabledKey;\r
        private boolean autoSaveEnabled = false;\r
+       \r
+       private RocketChangedEventHandler handler = new RocketChangedEventHandler();\r
+\r
 \r
        @Override\r
        protected void onCreate(Bundle savedInstanceState) {\r
@@ -80,7 +84,7 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
 \r
        @Override\r
        protected void onPause() {\r
-               CurrentRocketHolder.getCurrentRocket().setHandler(null);\r
+               handler.unregister(this);\r
                SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);\r
                pref.unregisterOnSharedPreferenceChangeListener(this);\r
                super.onPause();\r
@@ -95,8 +99,7 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
 \r
                pref.registerOnSharedPreferenceChangeListener(this);\r
 \r
-               RocketChangedEventHandler handler = new RocketChangedEventHandler();\r
-               CurrentRocketHolder.getCurrentRocket().setHandler(handler);\r
+               handler.register(this);\r
                super.onResume();\r
        }\r
 \r
@@ -111,7 +114,7 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
                MenuInflater inflater = getSupportMenuInflater();\r
                inflater.inflate(R.menu.rocket_viewer_option_menu, menu);\r
                MenuItem saveAction = menu.findItem(R.id.menu_save);\r
-               if ( CurrentRocketHolder.getCurrentRocket().isModified() ) {\r
+               if ( CurrentRocketHolder.getCurrentRocket().canSave() ) {\r
                        saveAction.setVisible(true);\r
                        saveAction.setShowAsAction( MenuItem.SHOW_AS_ACTION_ALWAYS );\r
                } else {\r
@@ -179,10 +182,7 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
                Simulation sim = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getSimulation(simulationId);\r
                // Check if there is data for this simulation.\r
                if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
-                       AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
-                       builder.setMessage("The selected simulation does not have saved data.");\r
-                       builder.setCancelable(true);\r
-                       builder.show();\r
+                       // This shouldn't happen because the Simulations list does the check.\r
                        return;\r
                }\r
 \r
@@ -210,7 +210,7 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
 \r
        private void saveRocketDocument() {\r
                getSupportFragmentManager().beginTransaction()\r
-               .add( OpenRocketSaverFragment.newInstance(false), "saver")\r
+               .add( OpenRocketSaverFragment.newInstance(true), "saver")\r
                .commitAllowingStateLoss();\r
        }\r
 \r
@@ -223,14 +223,19 @@ implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnO
                }\r
        }\r
 \r
-       private class RocketChangedEventHandler extends net.sf.openrocket.android.RocketChangedEventHandler {\r
+       private class RocketChangedEventHandler extends ChangeEventBroadcastReceiver {\r
 \r
                @Override\r
-               protected void doSimsChanged() {\r
-                       if ( autoSaveEnabled ) {\r
+               protected void doSimComplete() {\r
+                       if ( autoSaveEnabled && CurrentRocketHolder.getCurrentRocket().canSave() ) {\r
                                Toast.makeText(OpenRocketViewer.this, R.string.autoSaveMessage, Toast.LENGTH_SHORT).show();\r
                                OpenRocketViewer.this.saveRocketDocument();\r
                        }\r
+                       doSimsChanged();\r
+               }\r
+\r
+               @Override\r
+               protected void doSimsChanged() {\r
                        invalidateOptionsMenu();\r
                        Simulations sims = (Simulations) viewPagerAdapter.getFragmentAtPos(SIMS_POS);\r
                        if ( sims != null ) {\r