From 3100328014fe0332681e2cea6d743e426357854f Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Fri, 18 Jan 2013 10:01:12 -0800 Subject: [PATCH] Update backup and reset settings --- MyTracks/AndroidManifest.xml | 2 +- MyTracks/res/values/keys.xml | 4 +- MyTracks/res/values/strings.xml | 85 ++++++------ ...settings.xml => backup_reset_settings.xml} | 10 +- MyTracks/res/xml/settings.xml | 8 +- ....java => BackupResetSettingsActivity.java} | 129 +++++++++++++----- .../mytracks/settings/SettingsActivity.java | 79 +---------- 7 files changed, 149 insertions(+), 168 deletions(-) rename MyTracks/res/xml/{backup_settings.xml => backup_reset_settings.xml} (76%) rename MyTracks/src/com/google/android/apps/mytracks/settings/{BackupSettingsActivity.java => BackupResetSettingsActivity.java} (51%) diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml index 6162cfcdd..0a7e83581 100755 --- a/MyTracks/AndroidManifest.xml +++ b/MyTracks/AndroidManifest.xml @@ -208,7 +208,7 @@ limitations under the License. - + diff --git a/MyTracks/res/values/keys.xml b/MyTracks/res/values/keys.xml index 631f15b66..ed696f8b2 100644 --- a/MyTracks/res/values/keys.xml +++ b/MyTracks/res/values/keys.xml @@ -71,8 +71,7 @@ limitations under the License. settingsBackup - settingsBackupNow - settingsBackupRestore + settingsBackupReset settingsChart settingsGoogle settingsMap @@ -81,6 +80,7 @@ limitations under the License. settingsMapSlowDisplay settingsRecording settingsReset + settingsRestore settingsSensor settingsSensorAnt settingsSensorAntResetBikeCadenceSensor diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index 6dd719d6f..5e7db06cf 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -1585,7 +1585,7 @@ limitations under the License. - Not available while recording a track. + Not available while recording a track - Backup + Backup & reset Backup now @@ -1616,15 +1615,15 @@ limitations under the License. Unable to backup. + translation_description="In the 'Backup and reset' settings, after pressing the 'Backup now' + option, the progress message telling the user that it is writing all tracks and settings to + the external storage."> Writing all tracks and settings… - Write a full copy of all your tracks and settings to the external storage. + translation_description="In the 'Backup and reset' settings, the summary for the 'Backup now' + option explaining that all tracks and settings will be written to the external storage."> + Write a full copy of all your tracks and settings to the external storage @@ -1633,16 +1632,16 @@ limitations under the License. Restore now + translation_description="In the 'Backup and reset' settings, after pressing the 'Restore now' + option, the message in the alert dialog asking the user to confirm that he wants to restore + from a backup and it will overwrite all the current tracks and settings."> Restoring a backup from the external storage will overwrite all your current tracks and settings. @@ -1651,25 +1650,26 @@ limitations under the License. Unable to restore from backup. + translation_description="In the 'Backup and reset' settings, after pressing the 'Restore now' + option, the message in the alert dialog informing the user that there is no backup to restore + from."> No backup found. + translation_description="In the 'Backup and reset' settings, after pressing the 'Restore now' + option, the progress message informing that My Tracks is reading all tracks and settings from + the backup on the external storage."> Reading all tracks and settings… + translation_description="In the 'Backup and reset' settings, after pressing the 'Restore now' + option, the title in the picker dialog asking the user to select a backup."> Select a backup to restore - Restore all tracks and settings from the external storage. + translation_description="In the 'Backup and reset' settings, the summary for the 'Restore now' + option explaining that it restores all tracks and settings from the external storage."> + Restore all tracks and settings from the external storage @@ -1943,27 +1943,27 @@ limitations under the License. Reset - All your settings will be erased and reverted to the default values. Saved tracks will be - preserved. + translation_description="In the 'Backup and reset' settings, after pressing the 'Reset' option, + the confirmation dialog message informing the user that all settings will be reverted."> + All settings will be erased and reverted to the default values. Saved tracks will be preserved. - All settings have been reverted to their defaults. + translation_description="In the 'Backup and reset' settings, after pressing the 'Reset' option, + the confirmation dialog informing the user that all settings have been reverted to the default + values."> + All settings have been reverted to the default values. - Revert all your settings to the default values. + translation_description="In the 'Backup and reset' settings, the summary for the 'Reset' option + explaining it will revert all settings to the default values."> + Revert all your settings to the default values @@ -2047,7 +2047,6 @@ limitations under the License. %1$s: sensor name. E.g., 'Polar Bluetooth'."> Connected to %1$s - diff --git a/MyTracks/res/xml/backup_settings.xml b/MyTracks/res/xml/backup_reset_settings.xml similarity index 76% rename from MyTracks/res/xml/backup_settings.xml rename to MyTracks/res/xml/backup_reset_settings.xml index e336832e9..f4341c29b 100644 --- a/MyTracks/res/xml/backup_settings.xml +++ b/MyTracks/res/xml/backup_reset_settings.xml @@ -15,13 +15,17 @@ See the License for the specific language governing permissions and limitations under the License. --> + android:title="@string/settings_backup_reset" > + \ No newline at end of file diff --git a/MyTracks/res/xml/settings.xml b/MyTracks/res/xml/settings.xml index fdaf0ae82..b0a0028f0 100644 --- a/MyTracks/res/xml/settings.xml +++ b/MyTracks/res/xml/settings.xml @@ -45,11 +45,7 @@ limitations under the License. android:persistent="false" android:title="@string/settings_sensor" /> - + android:title="@string/settings_backup_reset" /> \ No newline at end of file diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/BackupSettingsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/settings/BackupResetSettingsActivity.java similarity index 51% rename from MyTracks/src/com/google/android/apps/mytracks/settings/BackupSettingsActivity.java rename to MyTracks/src/com/google/android/apps/mytracks/settings/BackupResetSettingsActivity.java index 52b5abad6..1835dbfb7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/settings/BackupSettingsActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/BackupResetSettingsActivity.java @@ -33,19 +33,24 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; +import android.util.Log; +import android.widget.Toast; /** - * An activity for accessing the backup settings. + * An activity for accessing the backup and reset settings. * * @author Jimmy Shih */ -public class BackupSettingsActivity extends AbstractSettingsActivity { +public class BackupResetSettingsActivity extends AbstractSettingsActivity { + private static final String TAG = BackupResetSettingsActivity.class.getSimpleName(); private static final int DIALOG_CONFIRM_RESTORE_ID = 0; + private static final int DIALOG_CONFIRM_RESET_ID = 1; private SharedPreferences sharedPreferences; private Preference backupPreference; - private Preference restorePreference; + private Preference restoreNowPreference; + private Preference resetPreference; private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; @@ -57,12 +62,10 @@ public class BackupSettingsActivity extends AbstractSettingsActivity { sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null || key.equals(PreferencesUtils.getKey( - BackupSettingsActivity.this, R.string.recording_track_id_key))) { + if (key != null && key.equals(PreferencesUtils.getKey( + BackupResetSettingsActivity.this, R.string.recording_track_id_key))) { recordingTrackId = PreferencesUtils.getLong( - BackupSettingsActivity.this, R.string.recording_track_id_key); - } - if (key != null) { + BackupResetSettingsActivity.this, R.string.recording_track_id_key); runOnUiThread(new Runnable() { @Override public void run() { @@ -77,60 +80,81 @@ public class BackupSettingsActivity extends AbstractSettingsActivity { @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); + addPreferencesFromResource(R.xml.backup_reset_settings); + sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - addPreferencesFromResource(R.xml.backup_settings); - backupPreference = findPreference(getString(R.string.settings_backup_now_key)); + backupPreference = findPreference(getString(R.string.settings_backup_key)); backupPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent intent = IntentUtils.newIntent(BackupSettingsActivity.this, BackupActivity.class); + Intent intent = IntentUtils.newIntent( + BackupResetSettingsActivity.this, BackupActivity.class); startActivity(intent); return true; } }); - restorePreference = findPreference(getString(R.string.settings_backup_restore_key)); - restorePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + restoreNowPreference = findPreference(getString(R.string.settings_restore_key)); + restoreNowPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { showDialog(DIALOG_CONFIRM_RESTORE_ID); return true; } }); + + resetPreference = findPreference(getString(R.string.settings_reset_key)); + resetPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference arg0) { + showDialog(DIALOG_CONFIRM_RESET_ID); + return true; + } + }); } @Override protected Dialog onCreateDialog(int id) { - if (id != DIALOG_CONFIRM_RESTORE_ID) { - return null; + Dialog dialog; + switch (id) { + case DIALOG_CONFIRM_RESTORE_ID: + dialog = DialogUtils.createConfirmationDialog(this, + R.string.settings_backup_restore_confirm_message, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + Intent intent = IntentUtils.newIntent( + BackupResetSettingsActivity.this, RestoreChooserActivity.class); + startActivity(intent); + } + }); + break; + case DIALOG_CONFIRM_RESET_ID: + dialog = DialogUtils.createConfirmationDialog( + this, R.string.settings_reset_confirm_message, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int button) { + onResetPreferencesConfirmed(); + } + }); + break; + default: + dialog = null; } - return DialogUtils.createConfirmationDialog(this, - R.string.settings_backup_restore_confirm_message, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = IntentUtils.newIntent( - BackupSettingsActivity.this, RestoreChooserActivity.class); - startActivity(intent); - } - }); - } - - @Override - protected void onStart() { - super.onStart(); - sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); - sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null); + return dialog; } @Override protected void onResume() { super.onResume(); + sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + recordingTrackId = PreferencesUtils.getLong(this, R.string.recording_track_id_key); updateUi(); } @Override - protected void onStop() { - super.onStop(); + protected void onPause() { + super.onPause(); sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } @@ -140,10 +164,45 @@ public class BackupSettingsActivity extends AbstractSettingsActivity { private void updateUi() { boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; backupPreference.setEnabled(!isRecording); - restorePreference.setEnabled(!isRecording); backupPreference.setSummary( isRecording ? R.string.settings_not_while_recording : R.string.settings_backup_now_summary); - restorePreference.setSummary(isRecording ? R.string.settings_not_while_recording + + restoreNowPreference.setEnabled(!isRecording); + restoreNowPreference.setSummary(isRecording ? R.string.settings_not_while_recording : R.string.settings_backup_restore_summary); + + resetPreference.setEnabled(!isRecording); + resetPreference.setSummary( + isRecording ? R.string.settings_not_while_recording : R.string.settings_reset_summary); + } + + /** + * Callback when the user confirms resetting all settings. + */ + private void onResetPreferencesConfirmed() { + // Change preferences in a separate thread + new Thread() { + @Override + public void run() { + Log.i(TAG, "Resetting all settings"); + + // Actually wipe preferences and save synchronously + sharedPreferences.edit().clear().commit(); + + // Give UI feedback in the UI thread + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText( + BackupResetSettingsActivity.this, R.string.settings_reset_done, Toast.LENGTH_SHORT) + .show(); + // Restart the settings activity so all changes are loaded + Intent intent = getIntent() + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + }); + } + }.start(); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java index f679e983b..c2ca2982a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java @@ -16,22 +16,13 @@ package com.google.android.apps.mytracks.settings; -import com.google.android.apps.mytracks.Constants; -import com.google.android.apps.mytracks.util.DialogUtils; import com.google.android.apps.mytracks.util.IntentUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; -import android.util.Log; -import android.widget.Toast; /** * An activity for accessing settings. @@ -41,11 +32,6 @@ import android.widget.Toast; */ public class SettingsActivity extends AbstractSettingsActivity { - private static final String TAG = SettingsActivity.class.getSimpleName(); - private static final int DIALOG_CONFIRM_RESET_ID = 0; - - private Preference resetPreference; - @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle bundle) { @@ -59,16 +45,7 @@ public class SettingsActivity extends AbstractSettingsActivity { configPreference(R.string.settings_recording_key, RecordingSettingsActivity.class); configPreference(R.string.settings_sharing_key, SharingSettingsActivity.class); configPreference(R.string.settings_sensor_key, SensorSettingsActivity.class); - configPreference(R.string.settings_backup_key, BackupSettingsActivity.class); - - resetPreference = findPreference(getString(R.string.settings_reset_key)); - resetPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference arg0) { - showDialog(DIALOG_CONFIRM_RESET_ID); - return true; - } - }); + configPreference(R.string.settings_backup_reset_key, BackupResetSettingsActivity.class); } /** @@ -88,58 +65,4 @@ public class SettingsActivity extends AbstractSettingsActivity { } }); } - - @Override - protected void onResume() { - super.onResume(); - boolean isRecording = PreferencesUtils.getLong(this, R.string.recording_track_id_key) - != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; - resetPreference.setEnabled(!isRecording); - resetPreference.setSummary(isRecording ? R.string.settings_not_while_recording - : R.string.settings_reset_summary); - } - - @Override - protected Dialog onCreateDialog(int id) { - if (id != DIALOG_CONFIRM_RESET_ID) { - return null; - } - return DialogUtils.createConfirmationDialog( - this, R.string.settings_reset_confirm_message, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int button) { - onResetPreferencesConfirmed(); - } - }); - } - - /** - * Callback when the user confirms resetting all settings. - */ - private void onResetPreferencesConfirmed() { - // Change preferences in a separate thread - new Thread() { - @Override - public void run() { - Log.i(TAG, "Resetting all settings"); - SharedPreferences sharedPreferences = getSharedPreferences( - Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - // Actually wipe preferences and save synchronously - sharedPreferences.edit().clear().commit(); - - // Give UI feedback in the UI thread - runOnUiThread(new Runnable() { - @Override - public void run() { - Toast.makeText(SettingsActivity.this, R.string.settings_reset_done, Toast.LENGTH_SHORT) - .show(); - // Restart the settings activity so all changes are loaded - Intent intent = getIntent() - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - }); - } - }.start(); - } }