diff --git a/src/androidTest/java/org/tasks/scheduling/BackupServiceTests.java b/src/androidTest/java/org/tasks/scheduling/BackupServiceTests.java
index 158c85afa..958b3359b 100644
--- a/src/androidTest/java/org/tasks/scheduling/BackupServiceTests.java
+++ b/src/androidTest/java/org/tasks/scheduling/BackupServiceTests.java
@@ -6,7 +6,6 @@
package org.tasks.scheduling;
import com.todoroo.andlib.utility.AndroidUtilities;
-import com.todoroo.astrid.backup.BackupPreferences;
import com.todoroo.astrid.backup.TasksXmlExporter;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
@@ -74,7 +73,7 @@ public class BackupServiceTests extends DatabaseTestCase {
public void disabled_testBackup() {
assertEquals(0, temporaryDirectory.list().length);
- preferences.setLong(BackupPreferences.PREF_BACKUP_LAST_DATE, 0);
+ preferences.setLong(TasksXmlExporter.PREF_BACKUP_LAST_DATE, 0);
// create a backup
BackupIntentService service = new BackupIntentService();
@@ -89,7 +88,7 @@ public class BackupServiceTests extends DatabaseTestCase {
assertTrue(files[0].getName().matches(BackupIntentService.BACKUP_FILE_NAME_REGEX));
// assert summary updated
- assertTrue(preferences.getLong(BackupPreferences.PREF_BACKUP_LAST_DATE, 0) > 0);
+ assertTrue(preferences.getLong(TasksXmlExporter.PREF_BACKUP_LAST_DATE, 0) > 0);
}
public void testDeletion() throws IOException {
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index e65366d29..64e2c4553 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -171,10 +171,6 @@
android:name="com.todoroo.astrid.activity.EditPreferences"
android:theme="@android:style/Theme" />
-
-
@@ -395,8 +391,11 @@
+ android:name="org.tasks.activities.ExportTaskActivity"
+ android:theme="@style/ReminderDialog" />
+
preferences = new ArrayList() {{
- add(getPreference(AppearancePreferences.class, R.string.EPr_appearance_header));
- add(getPreference(ReminderPreferences.class, R.string.notifications));
- add(getPreference(DefaultsPreferences.class, R.string.task_defaults));
- add(getPreference(GtasksPreferences.class, R.string.gtasks_GPr_header));
- add(getPreference(BackupPreferences.class, R.string.backup_BPr_header));
- add(getPreference(OldTaskPreferences.class, R.string.EPr_manage_header));
- add(getPreference(MiscellaneousPreferences.class, R.string.miscellaneous));
- }};
-
PreferenceScreen screen= getPreferenceScreen();
- for (Preference preference : preferences) {
- screen.addPreference(preference);
- }
+ addPreferencesFromResource(R.xml.preferences_appearance);
+ screen.addPreference(getPreference(ReminderPreferences.class, R.string.notifications));
+ screen.addPreference(getPreference(DefaultsPreferences.class, R.string.task_defaults));
+ screen.addPreference(getPreference(GtasksPreferences.class, R.string.gtasks_GPr_header));
+ addPreferencesFromResource(R.xml.preferences_backup);
+ screen.addPreference(getPreference(OldTaskPreferences.class, R.string.EPr_manage_header));
+ screen.addPreference(getPreference(MiscellaneousPreferences.class, R.string.miscellaneous));
}
private Preference getPreference(final Class extends PreferenceActivity> klass, final int label) {
diff --git a/src/main/java/com/todoroo/astrid/backup/BackupPreferences.java b/src/main/java/com/todoroo/astrid/backup/BackupPreferences.java
deleted file mode 100644
index c27ed26f9..000000000
--- a/src/main/java/com/todoroo/astrid/backup/BackupPreferences.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Copyright (c) 2012 Todoroo Inc
- *
- * See the file "LICENSE" for the full license governing this code.
- */
-package com.todoroo.astrid.backup;
-
-import android.content.res.Resources;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.view.View;
-import android.view.ViewGroup.OnHierarchyChangeListener;
-
-import com.todoroo.andlib.utility.DateUtilities;
-import com.todoroo.andlib.utility.DialogUtilities;
-import com.todoroo.astrid.utility.Flags;
-import com.todoroo.astrid.utility.TodorooPreferenceActivity;
-
-import org.tasks.R;
-import org.tasks.preferences.Preferences;
-
-import javax.inject.Inject;
-
-import static org.tasks.date.DateTimeUtils.newDate;
-
-/**
- * Displays synchronization preferences and an action panel so users can
- * initiate actions from the menu.
- *
- * @author timsu
- *
- */
-public class BackupPreferences extends TodorooPreferenceActivity {
-
- public static final String PREF_BACKUP_LAST_DATE = "backupDate"; //$NON-NLS-1$
-
- public static final String PREF_BACKUP_LAST_ERROR = "backupError"; //$NON-NLS-1$
-
- private int statusColor = Color.BLACK;
-
- @Inject Preferences preferences;
- @Inject TasksXmlImporter xmlImporter;
- @Inject TasksXmlExporter xmlExporter;
-
- @Override
- public int getPreferenceResource() {
- return R.xml.preferences_backup;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
-
- @Override
- public void onChildViewRemoved(View parent, View child) {
- //
- }
-
- @Override
- public void onChildViewAdded(View parent, View child) {
- View view = findViewById(R.id.status);
- if(view != null) {
- view.setBackgroundColor(statusColor);
- }
- }
- });
-
- findPreference(getString(R.string.backup_BAc_import)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- importTasks();
- return true;
- }
- });
-
- findPreference(getString(R.string.backup_BAc_export)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- xmlExporter.exportTasks(BackupPreferences.this, TasksXmlExporter.ExportType.EXPORT_TYPE_MANUAL, null);
- return true;
- }
- });
- }
-
- @Override
- public void updatePreferences(Preference preference, Object value) {
- final Resources r = getResources();
-
- if (r.getString(R.string.backup_BPr_status_key).equals(preference.getKey())) {
- String status;
- String subtitle = ""; //$NON-NLS-1$
-
- // last backup was error
- final long last = preferences.getLong(PREF_BACKUP_LAST_DATE, 0);
- final String error = preferences.getStringValue(PREF_BACKUP_LAST_ERROR);
- if(error != null) {
- status = r.getString(R.string.backup_status_failed);
- subtitle = r.getString(R.string.backup_status_failed_subtitle);
- statusColor = Color.rgb(100, 0, 0);
- preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference p) {
- DialogUtilities.okDialog(BackupPreferences.this, error, null);
- return true;
- }
- });
- } else if(last > 0) {
- status = r.getString(R.string.backup_status_success,
- DateUtilities.getDateStringWithTime(BackupPreferences.this,
- newDate(last)));
- statusColor = Color.rgb(0, 100, 0);
- preference.setOnPreferenceClickListener(null);
- } else {
- status = r.getString(R.string.backup_status_never);
- statusColor = Color.rgb(0, 0, 100);
- preference.setOnPreferenceClickListener(null);
- }
- preference.setTitle(status);
- preference.setSummary(subtitle);
-
- View view = findViewById(R.id.status);
- if(view != null) {
- view.setBackgroundColor(statusColor);
- }
- }
- }
-
- private void importTasks() {
- FilePickerBuilder.OnFilePickedListener listener = new FilePickerBuilder.OnFilePickedListener() {
- @Override
- public void onFilePicked(String filePath) {
- xmlImporter.importTasks(BackupPreferences.this, filePath, new Runnable() {
- @Override
- public void run() {
- Flags.set(Flags.REFRESH);
- }
- });
- }
- };
- new FilePickerBuilder(this,
- getString(R.string.import_file_prompt),
- BackupConstants.defaultExportDirectory(),
- listener).show();
- }
-}
diff --git a/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java b/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java
index 44fdc6320..1ee399f6e 100644
--- a/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java
+++ b/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java
@@ -26,12 +26,12 @@ public class FilePickerBuilder extends AlertDialog.Builder implements DialogInte
void onFilePicked(String filePath);
}
- private final OnFilePickedListener callback;
+ private OnFilePickedListener onFilePickedListener;
+ private File path;
private String[] files;
- private String path;
private FilenameFilter filter;
- public FilePickerBuilder(Context ctx, String title, File path, OnFilePickedListener callback) {
+ public FilePickerBuilder(Context ctx, int titleRes, File path) {
super(ctx);
filter = new FilenameFilter() {
@Override
@@ -40,15 +40,17 @@ public class FilePickerBuilder extends AlertDialog.Builder implements DialogInte
return file.isFile();
}
};
- this.callback = callback;
- setTitle(title);
+ setTitle(ctx.getString(titleRes));
setPath(path);
}
- private void setPath(File path) {
- if (path != null && path.exists()) {
- this.path = path.getAbsolutePath();
+ public void setOnFilePickedListener(OnFilePickedListener onFilePickedListener) {
+ this.onFilePickedListener = onFilePickedListener;
+ }
+ private void setPath(final File path) {
+ if (path != null && path.exists()) {
+ this.path = path;
File[] filesAsFile = path.listFiles(filter);
AndroidUtilities.sortFilesByDateDesc(filesAsFile);
@@ -65,9 +67,9 @@ public class FilePickerBuilder extends AlertDialog.Builder implements DialogInte
}
@Override
- public void onClick(DialogInterface dialogInterface, int i) {
- if (callback != null) {
- callback.onFilePicked(path + "/" + files[i]);
+ public void onClick(DialogInterface dialog, int which) {
+ if (onFilePickedListener != null) {
+ onFilePickedListener.onFilePicked(path.getAbsolutePath() + "/" + files[which]);
}
}
}
diff --git a/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java b/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java
index 0713c361b..d28297250 100644
--- a/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java
+++ b/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java
@@ -48,6 +48,8 @@ public class TasksXmlExporter {
private static final Logger log = LoggerFactory.getLogger(TasksXmlExporter.class);
+ public static final String PREF_BACKUP_LAST_DATE = "backupDate"; //$NON-NLS-1$
+
// --- public interface
public static enum ExportType {
@@ -132,8 +134,7 @@ public class TasksXmlExporter {
doTasksExport(output);
}
- preferences.setLong(BackupPreferences.PREF_BACKUP_LAST_DATE, DateUtilities.now());
- preferences.setString(BackupPreferences.PREF_BACKUP_LAST_ERROR, null);
+ preferences.setLong(PREF_BACKUP_LAST_DATE, DateUtilities.now());
if (exportType == ExportType.EXPORT_TYPE_MANUAL) {
onFinishExport(output);
@@ -146,6 +147,7 @@ public class TasksXmlExporter {
public void run() {
if(progressDialog.isShowing() && context instanceof Activity) {
DialogUtilities.dismissDialog((Activity) context, progressDialog);
+ ((Activity) context).finish();
}
}
});
diff --git a/src/main/java/org/tasks/activities/ExportTaskActivity.java b/src/main/java/org/tasks/activities/ExportTaskActivity.java
new file mode 100644
index 000000000..0eef8256b
--- /dev/null
+++ b/src/main/java/org/tasks/activities/ExportTaskActivity.java
@@ -0,0 +1,20 @@
+package org.tasks.activities;
+
+import android.os.Bundle;
+
+import com.todoroo.astrid.backup.TasksXmlExporter;
+
+import org.tasks.injection.InjectingActivity;
+
+import javax.inject.Inject;
+
+public class ExportTaskActivity extends InjectingActivity {
+
+ @Inject TasksXmlExporter xmlExporter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ xmlExporter.exportTasks(ExportTaskActivity.this, TasksXmlExporter.ExportType.EXPORT_TYPE_MANUAL, null);
+ }
+}
diff --git a/src/main/java/org/tasks/activities/ImportTaskActivity.java b/src/main/java/org/tasks/activities/ImportTaskActivity.java
new file mode 100644
index 000000000..d1b544fce
--- /dev/null
+++ b/src/main/java/org/tasks/activities/ImportTaskActivity.java
@@ -0,0 +1,51 @@
+package org.tasks.activities;
+
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import com.todoroo.astrid.backup.BackupConstants;
+import com.todoroo.astrid.backup.FilePickerBuilder;
+import com.todoroo.astrid.backup.TasksXmlImporter;
+import com.todoroo.astrid.utility.Flags;
+
+import org.tasks.R;
+import org.tasks.injection.InjectingActivity;
+
+import javax.inject.Inject;
+
+public class ImportTaskActivity extends InjectingActivity {
+
+ @Inject TasksXmlImporter xmlImporter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ FilePickerBuilder filePickerBuilder = new FilePickerBuilder(this,
+ R.string.import_file_prompt, BackupConstants.defaultExportDirectory());
+ filePickerBuilder.setOnFilePickedListener(new FilePickerBuilder.OnFilePickedListener() {
+ @Override
+ public void onFilePicked(String filePath) {
+ xmlImporter.importTasks(ImportTaskActivity.this, filePath, new Runnable() {
+ @Override
+ public void run() {
+ Flags.set(Flags.REFRESH);
+ finish();
+ }
+ });
+ }
+ });
+ filePickerBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+ });
+ filePickerBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ finish();
+ }
+ });
+ filePickerBuilder.show();
+ }
+}
diff --git a/src/main/java/org/tasks/injection/ActivityModule.java b/src/main/java/org/tasks/injection/ActivityModule.java
index dc1590e71..700fd9fd9 100644
--- a/src/main/java/org/tasks/injection/ActivityModule.java
+++ b/src/main/java/org/tasks/injection/ActivityModule.java
@@ -10,7 +10,6 @@ import com.todoroo.astrid.activity.FilterShortcutActivity;
import com.todoroo.astrid.activity.ShareLinkActivity;
import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskListActivity;
-import com.todoroo.astrid.backup.BackupPreferences;
import com.todoroo.astrid.calls.MissedCallActivity;
import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.DefaultsPreferences;
@@ -26,6 +25,8 @@ import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.widget.WidgetConfigActivity;
+import org.tasks.activities.ExportTaskActivity;
+import org.tasks.activities.ImportTaskActivity;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.SnoozeActivity;
import org.tasks.voice.VoiceCommandActivity;
@@ -55,14 +56,15 @@ import dagger.Provides;
EditPreferences.class,
GtasksPreferences.class,
OldTaskPreferences.class,
- BackupPreferences.class,
FilterShortcutActivity.class,
BeastModePreferences.class,
DefaultsPreferences.class,
ReminderPreferences.class,
AACRecordingActivity.class,
SnoozeActivity.class,
- MiscellaneousPreferences.class
+ MiscellaneousPreferences.class,
+ ImportTaskActivity.class,
+ ExportTaskActivity.class
})
public class ActivityModule {
diff --git a/src/main/java/org/tasks/preferences/AppearancePreferences.java b/src/main/java/org/tasks/preferences/AppearancePreferences.java
deleted file mode 100644
index ac356db3d..000000000
--- a/src/main/java/org/tasks/preferences/AppearancePreferences.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.tasks.preferences;
-
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-
-import org.tasks.R;
-
-public class AppearancePreferences extends PreferenceActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- addPreferencesFromResource(R.xml.preferences_appearance);
- }
-}
diff --git a/src/main/java/org/tasks/scheduling/BackupIntentService.java b/src/main/java/org/tasks/scheduling/BackupIntentService.java
index 9fb4e68e5..9313bd328 100644
--- a/src/main/java/org/tasks/scheduling/BackupIntentService.java
+++ b/src/main/java/org/tasks/scheduling/BackupIntentService.java
@@ -3,7 +3,6 @@ package org.tasks.scheduling;
import android.content.Context;
import com.todoroo.astrid.backup.BackupConstants;
-import com.todoroo.astrid.backup.BackupPreferences;
import com.todoroo.astrid.backup.TasksXmlExporter;
import org.slf4j.Logger;
@@ -38,7 +37,7 @@ public class BackupIntentService extends MidnightIntentService {
@Override
String getLastRunPreference() {
- return BackupPreferences.PREF_BACKUP_LAST_DATE;
+ return TasksXmlExporter.PREF_BACKUP_LAST_DATE;
}
/**
@@ -65,7 +64,6 @@ public class BackupIntentService extends MidnightIntentService {
backupDirectorySetting.getBackupDirectory());
} catch (Exception e) {
log.error(e.getMessage(), e);
- preferences.setString(BackupPreferences.PREF_BACKUP_LAST_ERROR, e.toString());
}
}
diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml
index 2454da093..afed4c5d7 100644
--- a/src/main/res/values/keys.xml
+++ b/src/main/res/values/keys.xml
@@ -216,9 +216,6 @@
-
- backup_status
-
default_calendar_id
diff --git a/src/main/res/values/strings-backup.xml b/src/main/res/values/strings-backup.xml
index 80f3134d0..c92309e31 100644
--- a/src/main/res/values/strings-backup.xml
+++ b/src/main/res/values/strings-backup.xml
@@ -8,18 +8,6 @@
Backups
-
- Status
-
-
- Latest backup:\n%s
-
- Last backup failed
-
- (tap to show error)
-
- Never backed up!
-
Import tasks
diff --git a/src/main/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml
index 63be5635c..cf2353942 100644
--- a/src/main/res/xml/preferences_appearance.xml
+++ b/src/main/res/xml/preferences_appearance.xml
@@ -2,69 +2,72 @@
-
+
-
-
-
-
+ android:key="@string/p_use_dark_theme"
+ android:title="@string/EPr_use_dark_theme" />
-
+
+
-
-
-
-
+
-
+
-
+
+
+
+
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/main/res/xml/preferences_backup.xml b/src/main/res/xml/preferences_backup.xml
index 48cc77fea..025b18470 100644
--- a/src/main/res/xml/preferences_backup.xml
+++ b/src/main/res/xml/preferences_backup.xml
@@ -1,29 +1,28 @@
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+