From 82f3fa4860c37c10c656ec0f62283f1b94b8a3b4 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 28 Apr 2010 21:33:47 -0700 Subject: [PATCH] try/catch around backup service, get backup update status and save the summary off. --- res/values/strings.xml | 8 ++++++ .../astrid/activities/EditPreferences.java | 7 +++++ .../timsu/astrid/utilities/BackupService.java | 21 ++++++++++++--- .../timsu/astrid/utilities/Preferences.java | 26 ++++++++++++++++--- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4f634292c..34ceea169 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -465,8 +465,16 @@ Skipped %d tasks.\n # of days from now to set new deadlines Automatic Backups + + Perform daily backups to sdcard. + + Backup failed: %s + + + Latest backup: %s + Displayed Fields Select the fields to show in task list diff --git a/src/com/timsu/astrid/activities/EditPreferences.java b/src/com/timsu/astrid/activities/EditPreferences.java index b222e91c3..35ee23b8a 100644 --- a/src/com/timsu/astrid/activities/EditPreferences.java +++ b/src/com/timsu/astrid/activities/EditPreferences.java @@ -20,11 +20,13 @@ package com.timsu.astrid.activities; import android.os.Bundle; +import android.preference.Preference; import android.preference.PreferenceActivity; import com.flurry.android.FlurryAgent; import com.timsu.astrid.R; import com.timsu.astrid.utilities.Constants; +import com.timsu.astrid.utilities.Preferences; /** * Displays the preference screen for users to edit their preferences @@ -38,6 +40,11 @@ public class EditPreferences extends PreferenceActivity { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); + + Preference backupPreference = findPreference(getString(R.string.p_backup)); + String backupSummary = Preferences.getBackupSummary(this); + if(backupSummary != null && backupPreference != null) + backupPreference.setSummary(backupSummary); } @Override diff --git a/src/com/timsu/astrid/utilities/BackupService.java b/src/com/timsu/astrid/utilities/BackupService.java index 09d35b879..a212c25e4 100644 --- a/src/com/timsu/astrid/utilities/BackupService.java +++ b/src/com/timsu/astrid/utilities/BackupService.java @@ -2,6 +2,7 @@ package com.timsu.astrid.utilities; import java.io.File; import java.io.FilenameFilter; +import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; @@ -10,6 +11,8 @@ import android.content.Context; import android.content.Intent; import android.os.IBinder; +import com.timsu.astrid.R; + /** * Inspired heavily by SynchronizationService */ @@ -44,10 +47,20 @@ public class BackupService extends Service { if (!Preferences.isBackupEnabled(ctx)) { return; } - deleteOldBackups(); - TasksXmlExporter exporter = new TasksXmlExporter(true); - exporter.setContext(ctx); - exporter.exportTasks(); + try { + deleteOldBackups(); + TasksXmlExporter exporter = new TasksXmlExporter(true); + exporter.setContext(ctx); + exporter.exportTasks(); + Preferences.setBackupSummary(ctx, + ctx.getString(R.string.prefs_backup_desc_success, + DateUtilities.getFormattedDate(ctx.getResources(), new Date()))); + } catch (Exception e) { + // unable to backup. + Preferences.setBackupSummary(ctx, + ctx.getString(R.string.prefs_backup_desc_failure, + e.getMessage())); + } } public static void scheduleService(Context ctx) { diff --git a/src/com/timsu/astrid/utilities/Preferences.java b/src/com/timsu/astrid/utilities/Preferences.java index d554ccd35..ed122c301 100644 --- a/src/com/timsu/astrid/utilities/Preferences.java +++ b/src/com/timsu/astrid/utilities/Preferences.java @@ -1,15 +1,16 @@ package com.timsu.astrid.utilities; +import java.text.SimpleDateFormat; +import java.util.Date; + import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.res.Resources; import android.net.Uri; import android.preference.PreferenceManager; -import com.timsu.astrid.R; -import java.text.SimpleDateFormat; -import java.util.Date; +import com.timsu.astrid.R; public class Preferences { @@ -24,6 +25,7 @@ public class Preferences { private static final String P_LOCALE_LAST_NOTIFY = "locnot"; private static final String P_DID_ANDROID_AND_ME_SURVEY = "aamsurvey"; private static final String P_TASK_KILLER_HELP = "taskkiller"; + private static final String P_BACKUP_ERROR = "backupError"; // pref values public static final int ICON_SET_PINK = 0; @@ -62,6 +64,9 @@ public class Preferences { if (!prefs.contains(r.getString(R.string.p_backup))) { editor.putBoolean(r.getString(R.string.p_backup), true); } + if (!prefs.contains(P_BACKUP_ERROR)) { + editor.putString(P_BACKUP_ERROR, null); + } setVisibilityPreferences(prefs, editor, r); @@ -281,11 +286,26 @@ public class Preferences { } // --- backup preferences + public static boolean isBackupEnabled(Context context) { Resources r = context.getResources(); return getPrefs(context).getBoolean(r.getString(R.string.p_backup), true); } + /** + * @return error when doing backup, empty string if successful, or null + * if no backup has been attempted + */ + public static String getBackupSummary(Context context) { + return getPrefs(context).getString(P_BACKUP_ERROR, null); + } + + public static void setBackupSummary(Context context, String newValue) { + Editor editor = getPrefs(context).edit(); + editor.putString(P_BACKUP_ERROR, newValue); + editor.commit(); + } + // --- synchronization preferences /** RTM authentication token, or null if doesn't exist */