diff --git a/MyTracks/res/values/keys.xml b/MyTracks/res/values/keys.xml index 54c476596..01f56da24 100644 --- a/MyTracks/res/values/keys.xml +++ b/MyTracks/res/values/keys.xml @@ -50,8 +50,7 @@ limitations under the License. backupToSd restoreFromSd - - + resetToDefaults sensorOptions antOptions diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index 40eca8a08..3f8311590 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -194,6 +194,7 @@ limitations under the License. Sharing Not available in your version of Android + Not available while recording a track Announcement frequency Minimum time between two voice announcements @@ -236,6 +237,11 @@ limitations under the License. The default track name will be the date and time at the start of the track Track names will have numbers which increment for each new track. + Reset to defaults + Revert all your settings to the default values + All your settings will be erased and reverted to the default values. Saved tracks will be preserved. Are you sure? + All settings have been reverted to their defaults. + Pace Only supported in Android 2.0 or above @@ -257,7 +263,6 @@ limitations under the License. Write a full copy of all your tracks and settings to the SD card Restore now Restore all tracks and settings from the SD card - Cannot manipulate backups while recording a track. Restoring a backup from the SD card will OVERWRITE all your current tracks and settings. Are you sure? Select the backup to restore diff --git a/MyTracks/res/xml/preferences.xml b/MyTracks/res/xml/preferences.xml index f377cf863..bd0d5ccd4 100644 --- a/MyTracks/res/xml/preferences.xml +++ b/MyTracks/res/xml/preferences.xml @@ -173,4 +173,10 @@ limitations under the License. android:persistent="false" /> + + + diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java index 085b93e46..b97bd311c 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java @@ -15,10 +15,7 @@ */ package com.google.android.apps.mytracks; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import static com.google.android.apps.mytracks.MyTracksConstants.TAG; import com.google.android.apps.mytracks.io.backup.BackupActivityHelper; import com.google.android.apps.mytracks.io.backup.BackupPreferencesListener; @@ -28,18 +25,28 @@ import com.google.android.apps.mytracks.util.ApiFeatures; import com.google.android.apps.mytracks.util.BluetoothDeviceUtils; import com.google.android.maps.mytracks.R; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceActivity; -import android.preference.PreferenceManager; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.provider.Settings; +import android.util.Log; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * An activity that let's the user see and edit the settings. @@ -119,6 +126,16 @@ public class MyTracksSettings extends PreferenceActivity { announcementFrequency.setSummary( R.string.settings_not_available_summary); } + + // Hook up action for resetting all settings + Preference resetPreference = findPreference(getString(R.string.reset_key)); + resetPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference arg0) { + onResetPreferencesClick(); + return true; + } + }); } private void customizeSensorOptionsPreferences() { @@ -177,19 +194,24 @@ public class MyTracksSettings extends PreferenceActivity { findPreference(getString(R.string.backup_to_sd_key)); Preference restoreNowPreference = findPreference(getString(R.string.restore_from_sd_key)); + Preference resetPreference = findPreference(getString(R.string.reset_key)); - // If recording, disable backup/restore + // If recording, disable backup/restore/reset // (we don't want to get to inconsistent states) boolean recording = preferences.getLong(getString(R.string.recording_track_key), -1) != -1; backupNowPreference.setEnabled(!recording); restoreNowPreference.setEnabled(!recording); + resetPreference.setEnabled(!recording); backupNowPreference.setSummary( - recording ? R.string.settings_no_backup_while_recording + recording ? R.string.settings_not_while_recording : R.string.settings_backup_to_sd_summary); restoreNowPreference.setSummary( - recording ? R.string.settings_no_backup_while_recording + recording ? R.string.settings_not_while_recording : R.string.settings_restore_from_sd_summary); + resetPreference.setSummary( + recording ? R.string.settings_not_while_recording + : R.string.settings_reset_summary); // Add actions to the backup preferences backupNowPreference.setOnPreferenceClickListener( @@ -311,4 +333,37 @@ public class MyTracksSettings extends PreferenceActivity { devicesPreference.setEntryValues(entryValuesArray); devicesPreference.setEntries(entriesArray); } + + /** Callback for when user asks to reset all settings. */ + private void onResetPreferencesClick() { + AlertDialog dialog = new AlertDialog.Builder(this) + .setCancelable(true) + .setTitle(R.string.settings_reset) + .setMessage(R.string.settings_reset_dialog_message) + .setPositiveButton(android.R.string.ok, + new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int button) { + onResetPreferencesConfirmed(); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + dialog.show(); + } + + /** Callback for when user confirms resetting all settings. */ + private void onResetPreferencesConfirmed() { + Log.i(TAG, "Resetting all settings"); + + // Actually wipe preferences. + preferences.edit().clear().commit(); + + Toast.makeText(this, R.string.settings_reset_done, Toast.LENGTH_SHORT).show(); + + // Restart the settings activity so all changes are loaded. + Intent intent = getIntent(); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + } }