From 06fceb07cc6ffa90f10c00337f8e3c0e2328abcc Mon Sep 17 00:00:00 2001 From: Rodrigo Damazio Date: Fri, 11 Mar 2011 23:55:53 -0300 Subject: [PATCH] Merging to head --- MyTracks/res/values-ca/strings.xml | 1 - MyTracks/res/values-es/strings.xml | 1 - MyTracks/res/values-fr/strings.xml | 2 - MyTracks/res/values-ja/strings.xml | 1 - MyTracks/res/values-pl/strings.xml | 1 - MyTracks/res/values-pt-rBR/strings.xml | 2 + MyTracks/res/values-zh-rCN/strings.xml | 1 - MyTracks/res/values/keys.xml | 3 +- MyTracks/res/values/strings.xml | 7 +- MyTracks/res/xml/preferences.xml | 7 ++ .../apps/mytracks/MyTracksSettings.java | 89 +++++++++++++++++-- .../mytracks/content/MyTracksProvider.java | 9 ++ 12 files changed, 105 insertions(+), 19 deletions(-) diff --git a/MyTracks/res/values-ca/strings.xml b/MyTracks/res/values-ca/strings.xml index e2ca5f58d..6ac1e8525 100644 --- a/MyTracks/res/values-ca/strings.xml +++ b/MyTracks/res/values-ca/strings.xml @@ -225,7 +225,6 @@ limitations under the License. Escriu una còpia completa de totes les rutes i els paràmetres a la targeta SD Restaura ara Restaura totes les rutes i els paràmetres des de la targeta SD. - No es poden gestionar les còpies de seguretat mentre s\'enregistra una ruta. La restauració d\'una còpia de seguretat des de la targeta SD sobreescriurà totes les rutes i paràmetres. Esteu segur? diff --git a/MyTracks/res/values-es/strings.xml b/MyTracks/res/values-es/strings.xml index e4cc06155..f9e786542 100644 --- a/MyTracks/res/values-es/strings.xml +++ b/MyTracks/res/values-es/strings.xml @@ -212,7 +212,6 @@ limitations under the License. Hacer una copia total de sus recorridos y configuraciones a la tarjeta SD Restaurar Restaurar todos los recorridos y configuraciones desde la tarjeta SD - No se pueden manejar backups mientras se está registrando un recorrido. Restaurar un backup desde la tarjeta SD SOBREESCRIBIRÁ todos sus recorridos y configuraciones actuales. ¿Está usted seguro? Seleccionar el backup para restaurar diff --git a/MyTracks/res/values-fr/strings.xml b/MyTracks/res/values-fr/strings.xml index 86c470297..f2e634c30 100644 --- a/MyTracks/res/values-fr/strings.xml +++ b/MyTracks/res/values-fr/strings.xml @@ -213,8 +213,6 @@ limitations under the License. Copier tous vos parcours et paramètres sur la carte SD Restaurer Restaurer tous les parcours et paramètres depuis la carte SD - Sauvegarde impossible lors de l\'enregistrement d\'un parcours. - Restaurer une sauvegarde depuis la carte SD écrasera tous vos parcours et paramètres actuels. Choisissez la sauvegarde à restaurer diff --git a/MyTracks/res/values-ja/strings.xml b/MyTracks/res/values-ja/strings.xml index 7ae58dc2c..2a8023462 100644 --- a/MyTracks/res/values-ja/strings.xml +++ b/MyTracks/res/values-ja/strings.xml @@ -256,7 +256,6 @@ limitations under the License. SDカードに全てのトラックと設定をバックアップします 今すぐ復元 SDカードから全てのトラックと設定を復元します - トラック記録中はバックアップ操作はできません. SDカードからの復元を実行すると、現在のトラックと設定は *全て上書き* されてしまいます.よろしいですか? 復元するバックアップの選択 diff --git a/MyTracks/res/values-pl/strings.xml b/MyTracks/res/values-pl/strings.xml index 63b9cde9c..d019ce3b4 100644 --- a/MyTracks/res/values-pl/strings.xml +++ b/MyTracks/res/values-pl/strings.xml @@ -217,7 +217,6 @@ limitations under the License. Tworzy kopię zapasową wszystkich tras i ustawień i zapisuje je na karcie SD Odtwórz z kopii Odtwarza wszystkie trasy i ustawienia z kopii zapasowej z karty SD - Nie można tworzyć/odtwarzać kopii zapasowej podczas rejestrowania trasy. Odtworzenie z kopii zapasowej z karty SD zastąpi wszystkie bieżące trasy i ustawienia. Jesteś tego pewien? diff --git a/MyTracks/res/values-pt-rBR/strings.xml b/MyTracks/res/values-pt-rBR/strings.xml index f9ee674ca..2f60a4a9c 100644 --- a/MyTracks/res/values-pt-rBR/strings.xml +++ b/MyTracks/res/values-pt-rBR/strings.xml @@ -157,6 +157,8 @@ limitations under the License. Exibição Gravação Compartilhamento + Não disponível na sua versão do Android + Não disponível durante a gravação de uma trilha Tempo entre anúncios Tempo mínimo entre dois anúncios de voz Dist. mín. entre pontos diff --git a/MyTracks/res/values-zh-rCN/strings.xml b/MyTracks/res/values-zh-rCN/strings.xml index 0da162428..befedd9c7 100644 --- a/MyTracks/res/values-zh-rCN/strings.xml +++ b/MyTracks/res/values-zh-rCN/strings.xml @@ -219,7 +219,6 @@ limitations under the License. 将你所有轨迹和设置的完整备份写入到 SD 存储卡 立即恢复 从 SD 存储卡恢复所有轨迹和设置 - 在记录轨迹时无法处理备份数据. 从 SD 存储卡恢复备份数据将覆盖掉你当前的所有轨迹和设置. 确定要继续吗? 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 524dad3ed..8d7c37b0f 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -196,6 +196,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 @@ -238,6 +239,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 @@ -259,7 +265,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..e4d0b093f 100644 --- a/MyTracks/res/xml/preferences.xml +++ b/MyTracks/res/xml/preferences.xml @@ -173,4 +173,11 @@ 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 85e6a04b5..0e02d05f8 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( @@ -315,4 +337,53 @@ 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() { + // Change preferences in a separate thread. + new Thread() { + @Override + public void run() { + Log.i(TAG, "Resetting all settings"); + + // Actually wipe preferences (and save synchronously). + preferences.edit().clear().commit(); + + // Give UI feedback in the UI thread. + runOnUiThread(new Runnable() { + @Override + public void run() { + // Give feedback to the user. + Toast.makeText( + MyTracksSettings.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); + } + }); + } + }.start(); + } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java index d94be1329..e1c26901a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java @@ -193,12 +193,14 @@ public class MyTracksProvider extends ContentProvider { @Override public int delete(Uri url, String where, String[] selectionArgs) { String table; + boolean shouldVacuum = false; switch (urlMatcher.match(url)) { case TRACKPOINTS: table = TRACKPOINTS_TABLE; break; case TRACKS: table = TRACKS_TABLE; + shouldVacuum = true; break; case WAYPOINTS: table = WAYPOINTS_TABLE; @@ -210,6 +212,13 @@ public class MyTracksProvider extends ContentProvider { Log.w(MyTracksProvider.TAG, "provider delete in " + table + "!"); int count = db.delete(table, where, selectionArgs); getContext().getContentResolver().notifyChange(url, null, true); + + if (shouldVacuum) { + // If a potentially large amount of data was deleted, we want to reclaim its space. + Log.i(TAG, "Vacuuming the database"); + db.execSQL("VACUUM"); + } + return count; }