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 */