From bb815e145ae27f5edda289233b1bc35c5572aa09 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 8 Jul 2011 16:37:11 -0700 Subject: [PATCH] Moved purge/delete to its own preference file and operations to their own threads. Renamed extended => Manage Old Tasks --- astrid/AndroidManifest.xml | 8 + .../astrid/core/OldTaskPreferences.java | 137 ++++++++++++++++++ astrid/res/values-de/strings.xml | 18 +-- astrid/res/values/strings-core.xml | 26 ++-- astrid/res/xml/preferences.xml | 12 +- astrid/res/xml/preferences_manage.xml | 16 ++ .../astrid/activity/EditPreferences.java | 78 ---------- 7 files changed, 185 insertions(+), 110 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/core/OldTaskPreferences.java create mode 100644 astrid/res/xml/preferences_manage.xml diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 398516bb7..a1d0115b7 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -215,6 +215,14 @@ + + + + + + diff --git a/astrid/plugin-src/com/todoroo/astrid/core/OldTaskPreferences.java b/astrid/plugin-src/com/todoroo/astrid/core/OldTaskPreferences.java new file mode 100644 index 000000000..cf9172cc1 --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/core/OldTaskPreferences.java @@ -0,0 +1,137 @@ +/** + * See the file "LICENSE" for the full license governing this code. + */ +package com.todoroo.astrid.core; + +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceScreen; + +import com.timsu.astrid.R; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.andlib.utility.TodorooPreferenceActivity; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.MetadataService; +import com.todoroo.astrid.service.TaskService; + +/** + * Displays the preference screen for users to edit their preferences + * + * @author Tim Su + * + */ +public class OldTaskPreferences extends TodorooPreferenceActivity { + + @Autowired private TaskService taskService; + @Autowired private MetadataService metadataService; + + @Override + public int getPreferenceResource() { + return R.xml.preferences_manage; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + PreferenceScreen screen = getPreferenceScreen(); + DependencyInjectionService.getInstance().inject(this); + + // Extended prefs + Preference extpreference_completed = screen.findPreference(getString(R.string.EPr_manage_delete_completed)); + extpreference_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference p) { + showDeleteCompletedDialog(); + return true; + } + }); + + Preference extpreference_purged = screen.findPreference(getString(R.string.EPr_manage_purge_deleted)); + extpreference_purged.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference p) { + showPurgeDeletedDialog(); + return true; + } + }); + } + + /** Show the dialog to delete completed tasks */ + private void showDeleteCompletedDialog() { + DialogUtilities.okCancelDialog( + this, + getResources().getString( + R.string.EPr_manage_delete_completed_message), + new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + runWithDialog(new Runnable() { + @Override + public void run() { + Task template = new Task(); + template.setValue(Task.DELETION_DATE, + DateUtilities.now()); + int result = taskService.update( + Task.COMPLETION_DATE.gt(0), template); + showResult( + R.string.EPr_manage_delete_completed_status, + result); + } + }); + } + }, null); + } + + /** Show the dialog to purge deleted tasks */ + private void showPurgeDeletedDialog() { + DialogUtilities.okCancelDialog( + this, + getResources().getString( + R.string.EPr_manage_purge_deleted_message), + new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + runWithDialog(new Runnable() { + @Override + public void run() { + int result = taskService.deleteWhere(Task.DELETION_DATE.gt(0)); + metadataService.cleanup(); + showResult( + R.string.EPr_manage_purge_deleted_status, + result); + } + }); + } + }, null); + } + + /** Run runnable with progress dialog */ + protected void runWithDialog(final Runnable runnable) { + final ProgressDialog pd = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); + new Thread(new Runnable() { + @Override + public void run() { + try { + runnable.run(); + } finally { + DialogUtilities.dismissDialog(OldTaskPreferences.this, pd); + } + } + }).start(); + } + + protected void showResult(int resourceText, int result) { + DialogUtilities.okDialog(this, getString(resourceText, result), null); + } + + @Override + public void updatePreferences(Preference preference, Object value) { + // :) + } + +} \ No newline at end of file diff --git a/astrid/res/values-de/strings.xml b/astrid/res/values-de/strings.xml index 6afa51feb..64d60f0fa 100644 --- a/astrid/res/values-de/strings.xml +++ b/astrid/res/values-de/strings.xml @@ -723,16 +723,16 @@ Am Stichtag oder überfällig - Erweitert - Alle erledigten Aufgaben löschen - Wollen Sie wirklich alle erledigten Aufgaben löschen? - Hiermit gelöschte Aufgaben können einzeln wiederhergestellt werden - Es wurden %d erledigte Aufgaben gelöscht! - Alle gelöschten Aufgaben endgültig entfernen - Wollen Sie wirklich alle gelöschten Aufgaben endgültig entfernen?\n + Erweitert + Alle erledigten Aufgaben löschen + Wollen Sie wirklich alle erledigten Aufgaben löschen? + Hiermit gelöschte Aufgaben können einzeln wiederhergestellt werden + Es wurden %d erledigte Aufgaben gelöscht! + Alle gelöschten Aufgaben endgültig entfernen + Wollen Sie wirklich alle gelöschten Aufgaben endgültig entfernen?\n Achtung: diese Aufgaben sind unwiederbringlich verloren, wenn Sie kein Backup gemacht haben! - Achtung: diese Aufgaben können nur mit der Backupfunktion wiederhergestellt werden! - Es wurden %d gelöschte Aufgaben endgültig entfernt! + Achtung: diese Aufgaben können nur mit der Backupfunktion wiederhergestellt werden! + Es wurden %d gelöschte Aufgaben endgültig entfernt! diff --git a/astrid/res/values/strings-core.xml b/astrid/res/values/strings-core.xml index afe002352..c5224ab8b 100644 --- a/astrid/res/values/strings-core.xml +++ b/astrid/res/values/strings-core.xml @@ -431,6 +431,20 @@ At deadline or overdue + + + + Manage Old Tasks + Delete Completed Tasks + Do you really want to delete all your completed tasks? + This deleted tasks can be undeleted individually + Deleted %d tasks! + Purge Deleted Tasks + Do you really want to purge all your deleted tasks?\n +Attention: these tasks will be lost forever, if you did not create a recent backup! + Purged %d tasks! + Attention: these purged tasks can\'t be recovered without a backup! + @@ -496,16 +510,4 @@ Astrid is the much loved open-source todo list / task manager designed to help you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget and more. - - Extended - Delete completed tasks - Do you really want to delete all your completed tasks? - This deleted tasks can be undeleted individually - Deleted %d tasks! - Purge deleted tasks - Do you really want to purge all your deleted tasks?\n -Attention: these tasks will be lost forever, if you did not create a recent backup! - Purged %d tasks! - Attention: these purged tasks can\'t be recovered without a backup! - diff --git a/astrid/res/xml/preferences.xml b/astrid/res/xml/preferences.xml index 1a87dca91..7b84266c3 100644 --- a/astrid/res/xml/preferences.xml +++ b/astrid/res/xml/preferences.xml @@ -49,16 +49,6 @@ - - - - - + android:defaultValue="true" /> diff --git a/astrid/res/xml/preferences_manage.xml b/astrid/res/xml/preferences_manage.xml new file mode 100644 index 000000000..cf7f10249 --- /dev/null +++ b/astrid/res/xml/preferences_manage.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java index baaa322ba..b5f97d5d0 100644 --- a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java +++ b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java @@ -32,7 +32,6 @@ import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.TodorooPreferenceActivity; @@ -41,7 +40,6 @@ import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.MetadataHelper; import com.todoroo.astrid.service.AddOnService; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.ui.ContactListAdapter; @@ -64,7 +62,6 @@ public class EditPreferences extends TodorooPreferenceActivity { // --- instance variables @Autowired private TaskService taskService; - @Autowired private MetadataService metadataService; @Autowired private AddOnService addOnService; @Autowired @@ -105,26 +102,6 @@ public class EditPreferences extends TodorooPreferenceActivity { } }); -// PreferenceGroup extended = (PreferenceGroup) screen.findPreference(r.getString(R.string.EPr_extended_header)); -// extended.setOrder(screen.getPreferenceCount()); - - // Extended prefs - Preference extpreference_completed = screen.findPreference(r.getString(R.string.EPr_extended_delete_completed)); - extpreference_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() { - public boolean onPreferenceClick(Preference p) { - showDeleteCompletedDialog(); - return true; - } - }); - - Preference extpreference_purged = screen.findPreference(r.getString(R.string.EPr_extended_purge_deleted)); - extpreference_purged.setOnPreferenceClickListener(new OnPreferenceClickListener() { - public boolean onPreferenceClick(Preference p) { - showPurgeDeletedDialog(); - return true; - } - }); - addDebugPreferences(); addPreferenceListeners(); @@ -141,61 +118,6 @@ public class EditPreferences extends TodorooPreferenceActivity { About.showAbout(this, version); } - /** Show the dialog to delete completed tasks */ - private void showDeleteCompletedDialog () { - DialogUtilities.okCancelDialog(this, - getResources().getString(R.string.EPr_extended_delete_completed_message), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Task template = new Task(); - template.setValue(Task.DELETION_DATE, DateUtilities.now()); - int result = taskService.update(Task.COMPLETION_DATE.gt(0), template); - DialogUtilities.okDialog(EditPreferences.this, - getResources().getString(R.string.EPr_extended_delete_completed_status, result), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - } - }, - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - } - - /** Show the dialog to purge deleted tasks */ - private void showPurgeDeletedDialog () { - DialogUtilities.okCancelDialog(this, - getResources().getString(R.string.EPr_extended_purge_deleted_message), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - int result = taskService.deleteWhere(Task.DELETION_DATE.gt(0)); - metadataService.cleanup(); - DialogUtilities.okDialog(EditPreferences.this, - getResources().getString(R.string.EPr_extended_purge_deleted_status, result), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - } - }, - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - } - private void addPluginPreferences(PreferenceScreen screen) { Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS); PackageManager pm = getPackageManager();