<string name="PreferenceUseInternalFileBrowserOption">PreferenceUseInternalFileBrowserOpion</string>\r
<string name="PreferenceFileBrowserBaseDirectory">PreferenceFileBrowserBaseDirectory</string>\r
<string name="PreferenceShowOnlyOrkFiles">PreferenceShowOnlyOrkFiles</string>\r
+ <string name="PreferenceAutoSaveOption">PreferenceAutoSaveOption</string>\r
\r
<string-array name="PreferenceMotorBrowserGroupingValues">\r
<item>0</item>\r
<string name="loadWarnUnsaved">Would you like to save the changes to the current model?</string>\r
<string name="no">No</string>\r
<string name="yes">Yes</string>\r
+ <string name="autoSaveMessage">Automatically saving rocket</string>\r
\r
<string-array name="PreferenceMotorBrowserGroupingEntries">\r
<item>Case</item>\r
<string name="simulationSeries1Label">Series 1</string>\r
<string name="simulationSeries2Label">Series 2</string>\r
\r
+ <string name="autosavetitle">Autosave Rocket</string>\r
+ <string name="autosavesummary">Automatically save the rocket document after simulations</string>\r
+ \r
<string name="motorbrowsergrouptitle">Motor Browser Grouping</string>\r
+ <string name="motorbrowsergroupsummary">Set the grouping in Motor Browser</string>\r
+ \r
<string name="motorbrowsertitle">Motor Browser</string>\r
\r
<string name="useinternalfilebrowsertitle">Use Internal File Browser</string>\r
android:entries="@array/PreferenceMotorBrowserGroupingEntries"
android:entryValues="@array/PreferenceMotorBrowserGroupingValues"
android:key="@string/PreferenceMotorBrowserGroupingOption"
- android:summary="Set the grouping in Motor Browser"
+ android:summary="@string/motorbrowsergroupsummary"
android:title="@string/motorbrowsergrouptitle" />
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:title="@string/autosavetitle"
+ android:key="@string/PreferenceAutoSaveOption"
+ android:summary="@string/autosavesummary"/>
+
<CheckBoxPreference
android:defaultValue="true"
android:title="@string/useinternalfilebrowsertitle"
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.view.ViewGroup;\r
+import android.view.Window;\r
+\r
+import com.actionbarsherlock.app.SherlockFragmentActivity;\r
\r
public class OpenRocketSaverFragment extends Fragment {\r
\r
- public static OpenRocketSaverFragment newInstance() {\r
+ public static OpenRocketSaverFragment newInstance( boolean showProgressDialog) {\r
OpenRocketSaverFragment frag = new OpenRocketSaverFragment();\r
Bundle b = new Bundle();\r
+ b.putBoolean(SHOW_PRGRESS_DIALOG_ARG, showProgressDialog);\r
frag.setArguments(b);\r
return frag;\r
}\r
public interface OnOpenRocketFileSaved {\r
public void onOpenRocketFileSaved( Boolean result );\r
}\r
+\r
+ private final static String SHOW_PRGRESS_DIALOG_ARG = "net.sf.openrocket.android.ShowProgressDialog";\r
\r
+ private boolean showProgressDialog = true;\r
private OpenRocketSaverTask task;\r
private OnOpenRocketFileSaved listener;\r
\r
super.onCreate(savedInstanceState);\r
setRetainInstance(true);\r
Bundle b = getArguments();\r
+ if ( b != null ) {\r
+ showProgressDialog = b.getBoolean(SHOW_PRGRESS_DIALOG_ARG, true);\r
+ }\r
if ( task == null ) {\r
// since we retain instance state, task will be non-null if it is already loading.\r
task = new OpenRocketSaverTask();\r
@Override\r
protected void onPreExecute() {\r
super.onPreExecute();\r
- String savingMessage = getActivity().getResources().getString(R.string.saving);\r
- DialogFragment newFragment = ProgressDialogFragment.newInstance("", savingMessage);\r
- newFragment.show(getFragmentManager(), PROGRESS_DIALOG_TAG);\r
+ if ( showProgressDialog ) {\r
+ String savingMessage = getActivity().getResources().getString(R.string.saving);\r
+ DialogFragment newFragment = ProgressDialogFragment.newInstance("", savingMessage);\r
+ newFragment.show(getFragmentManager(), PROGRESS_DIALOG_TAG);\r
+ } else {\r
+ ((SherlockFragmentActivity)getActivity()).setSupportProgressBarIndeterminate(true);\r
+ ((SherlockFragmentActivity)getActivity()).setSupportProgress(0);\r
+ }\r
+ \r
}\r
\r
/* (non-Javadoc)\r
protected void onPostExecute(Boolean result) {\r
super.onPostExecute(result);\r
AndroidLogWrapper.d(OpenRocketSaverFragment.class,"Finished saving " + OpenRocketSaverTask.this);\r
- Fragment progress = getActivity().getSupportFragmentManager().findFragmentByTag(PROGRESS_DIALOG_TAG);\r
- if ( progress != null ) {\r
- // Remove the fragment instead of trying to use DialogFragment.dismiss.\r
- // If the dialog is now currently shown, dismiss fails.\r
- getFragmentManager().beginTransaction().remove(progress).commitAllowingStateLoss();\r
+ if ( showProgressDialog ) {\r
+ Fragment progress = getActivity().getSupportFragmentManager().findFragmentByTag(PROGRESS_DIALOG_TAG);\r
+ if ( progress != null ) {\r
+ // Remove the fragment instead of trying to use DialogFragment.dismiss.\r
+ // If the dialog is now currently shown, dismiss fails.\r
+ getFragmentManager().beginTransaction().remove(progress).commitAllowingStateLoss();\r
+ }\r
+ } else {\r
+ ((SherlockFragmentActivity)getActivity()).setSupportProgress(Window.PROGRESS_END);\r
+ ((SherlockFragmentActivity)getActivity()).setSupportProgressBarVisibility(false);\r
}\r
if ( listener != null ) {\r
listener.onOpenRocketFileSaved(result);\r
import android.app.AlertDialog;\r
import android.content.DialogInterface;\r
import android.content.Intent;\r
+import android.content.SharedPreferences;\r
+import android.content.res.Resources;\r
import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
import android.support.v4.app.Fragment;\r
import android.support.v4.app.FragmentManager;\r
import android.support.v4.app.FragmentPagerAdapter;\r
import android.support.v4.app.FragmentTransaction;\r
import android.support.v4.view.ViewPager;\r
import android.view.View;\r
+import android.widget.Toast;\r
\r
import com.actionbarsherlock.view.Menu;\r
import com.actionbarsherlock.view.MenuInflater;\r
import com.actionbarsherlock.view.MenuItem;\r
+import com.actionbarsherlock.view.Window;\r
\r
public class OpenRocketViewer extends OpenRocketLoaderActivity\r
-implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnOpenRocketFileSaved\r
+implements Simulations.OnSimulationSelectedListener, OpenRocketSaverFragment.OnOpenRocketFileSaved, SharedPreferences.OnSharedPreferenceChangeListener\r
{\r
\r
private final static int OVERVIEW_POS = 0;\r
private final static int TABSIZE = 4;\r
\r
private OpenRocketViewerPagerAdapter viewPagerAdapter;\r
- \r
+\r
private final static String LOAD_AFTER_SAVE = "net.sf.openrocket.android.loadAfterSave";\r
private boolean loadAfterSave = false;\r
+ private String autoSaveEnabledKey;\r
+ private boolean autoSaveEnabled = false;\r
\r
@Override\r
protected void onCreate(Bundle savedInstanceState) {\r
if (savedInstanceState != null ) {\r
loadAfterSave = savedInstanceState.getBoolean(LOAD_AFTER_SAVE);\r
}\r
+ // Must use com.actionbarsherlock.view.Window.FEATURE_INDETERMINATE_PROGRESS\r
+ requestWindowFeature(Window.FEATURE_PROGRESS);\r
+ setSupportProgressBarIndeterminate(true);\r
+\r
setTitle(rocDoc.getRocket().getName());\r
getSupportActionBar().setHomeButtonEnabled(true);\r
\r
@Override\r
protected void onPause() {\r
CurrentRocketHolder.getCurrentRocket().setHandler(null);\r
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);\r
+ pref.unregisterOnSharedPreferenceChangeListener(this);\r
super.onPause();\r
}\r
\r
@Override\r
protected void onResume() {\r
+ Resources resources = this.getResources();\r
+ autoSaveEnabledKey = resources.getString(R.string.PreferenceAutoSaveOption);\r
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);\r
+ autoSaveEnabled = pref.getBoolean(autoSaveEnabledKey, false);\r
+\r
+ pref.registerOnSharedPreferenceChangeListener(this);\r
+\r
RocketChangedEventHandler handler = new RocketChangedEventHandler();\r
CurrentRocketHolder.getCurrentRocket().setHandler(handler);\r
super.onResume();\r
@Override\r
public void onClick(DialogInterface dialog, int which) {\r
OpenRocketViewer.this.loadAfterSave = true;\r
- getSupportFragmentManager().beginTransaction()\r
- .add( OpenRocketSaverFragment.newInstance(), "saver")\r
- .commitAllowingStateLoss();\r
+ OpenRocketViewer.this.saveRocketDocument();\r
}\r
});\r
builder.create().show();\r
}\r
return true;\r
case R.id.menu_save:\r
- getSupportFragmentManager().beginTransaction()\r
- .add( OpenRocketSaverFragment.newInstance(), "saver")\r
- .commitAllowingStateLoss();\r
+ OpenRocketViewer.this.saveRocketDocument();\r
return true;\r
case android.R.id.home:\r
ActivityHelpers.goHome(this);\r
return super.onMenuItemSelected(featureId, item);\r
}\r
\r
+ @Override\r
+ public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+ if ( autoSaveEnabledKey.equals(arg1) ) {\r
+ autoSaveEnabled = arg0.getBoolean(autoSaveEnabledKey, false);\r
+ }\r
+ }\r
+\r
@Override\r
public void onSimulationSelected(int simulationId) {\r
\r
}\r
}\r
\r
+ private void saveRocketDocument() {\r
+ getSupportFragmentManager().beginTransaction()\r
+ .add( OpenRocketSaverFragment.newInstance(false), "saver")\r
+ .commitAllowingStateLoss();\r
+ }\r
+\r
@Override\r
public void onOpenRocketFileSaved(Boolean result) {\r
invalidateOptionsMenu();\r
\r
@Override\r
protected void doSimsChanged() {\r
+ if ( autoSaveEnabled ) {\r
+ Toast.makeText(OpenRocketViewer.this, R.string.autoSaveMessage, Toast.LENGTH_SHORT).show();\r
+ OpenRocketViewer.this.saveRocketDocument();\r
+ }\r
invalidateOptionsMenu();\r
Simulations sims = (Simulations) viewPagerAdapter.getFragmentAtPos(SIMS_POS);\r
if ( sims != null ) {\r