From 7e0e6fe983a2027c07a57221c7fdbaeb3c783b87 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 22 Jun 2015 14:26:35 -0500 Subject: [PATCH] Toggle deleted tasks from preferences --- .../activity/SortSelectionActivity.java | 6 ---- .../astrid/activity/TaskListFragment.java | 2 +- .../astrid/core/OldTaskPreferences.java | 28 +++++++++++++++++++ .../com/todoroo/astrid/core/SortHelper.java | 9 ++++-- .../astrid/widget/WidgetUpdateService.java | 2 +- .../tasks/preferences/BasicPreferences.java | 18 ++++++------ .../tasks/ui/NavigationDrawerFragment.java | 5 +++- .../tasks/widget/ScrollableViewsFactory.java | 2 +- src/main/res/layout/sort_selection_dialog.xml | 5 ---- src/main/res/values/keys.xml | 1 + src/main/res/values/strings.xml | 1 + src/main/res/xml/preferences.xml | 8 ++---- src/main/res/xml/preferences_oldtasks.xml | 6 ++++ 13 files changed, 62 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/activity/SortSelectionActivity.java b/src/main/java/com/todoroo/astrid/activity/SortSelectionActivity.java index 9662e59a6..23d1bca1c 100644 --- a/src/main/java/com/todoroo/astrid/activity/SortSelectionActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/SortSelectionActivity.java @@ -53,9 +53,6 @@ public class SortSelectionActivity { if((flags & SortHelper.FLAG_SHOW_HIDDEN) > 0) { ((CheckBox) body.findViewById(R.id.hidden)).setChecked(true); } - if((flags & SortHelper.FLAG_SHOW_DELETED) > 0) { - ((CheckBox) body.findViewById(R.id.deleted)).setChecked(true); - } if(!showDragDrop) { body.findViewById(R.id.sort_drag).setVisibility(View.GONE); @@ -135,9 +132,6 @@ public class SortSelectionActivity { if(((CheckBox)body.findViewById(R.id.hidden)).isChecked()) { flags |= SortHelper.FLAG_SHOW_HIDDEN; } - if(((CheckBox)body.findViewById(R.id.deleted)).isChecked()) { - flags |= SortHelper.FLAG_SHOW_DELETED; - } if(((RadioButton)body.findViewById(R.id.sort_drag)).isChecked()) { flags |= SortHelper.FLAG_DRAG_DROP; } diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index a2f30c167..a7b9b1cf4 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -695,7 +695,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel + filter.getSqlQuery(); sqlQueryTemplate.set(SortHelper.adjustQueryForFlagsAndSort( - joinedQuery, sortFlags, sortSort)); + preferences, joinedQuery, sortFlags, sortSort)); String groupedQuery; if (sqlQueryTemplate.get().contains("GROUP BY")) { diff --git a/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java b/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java index 7299d0d07..b62d0df79 100644 --- a/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java +++ b/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java @@ -5,25 +5,53 @@ */ package com.todoroo.astrid.core; +import android.content.Intent; import android.os.Bundle; +import android.preference.Preference; import com.todoroo.astrid.service.StartupService; import org.tasks.R; import org.tasks.injection.InjectingPreferenceActivity; +import org.tasks.preferences.Preferences; import javax.inject.Inject; public class OldTaskPreferences extends InjectingPreferenceActivity { + private static final String EXTRA_RESULT = "extra_result"; + + public static String TOGGLE_DELETED = "toggle_deleted"; + + private Bundle result; + @Inject StartupService startupService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + result = savedInstanceState == null ? new Bundle() : savedInstanceState.getBundle(EXTRA_RESULT); + startupService.onStartupApplication(this); addPreferencesFromResource(R.xml.preferences_oldtasks); + + findPreference(getString(R.string.p_show_deleted_tasks)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + result.putBoolean(TOGGLE_DELETED, true); + setResult(RESULT_OK, new Intent().putExtras(result)); + return true; + } + }); } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBundle(EXTRA_RESULT, result); + } + + } diff --git a/src/main/java/com/todoroo/astrid/core/SortHelper.java b/src/main/java/com/todoroo/astrid/core/SortHelper.java index 57f679e97..cb7270220 100644 --- a/src/main/java/com/todoroo/astrid/core/SortHelper.java +++ b/src/main/java/com/todoroo/astrid/core/SortHelper.java @@ -12,6 +12,9 @@ import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskApiDao.TaskCriteria; +import org.tasks.R; +import org.tasks.preferences.Preferences; + /** * Helpers for sorting a list of tasks * @@ -23,6 +26,8 @@ public class SortHelper { public static final int FLAG_REVERSE_SORT = 1; public static final int FLAG_SHOW_COMPLETED = 1 << 1; public static final int FLAG_SHOW_HIDDEN = 1 << 2; + @SuppressWarnings("UnusedDeclaration") + @Deprecated public static final int FLAG_SHOW_DELETED = 1 << 3; public static final int FLAG_DRAG_DROP = 1 << 4; @SuppressWarnings("UnusedDeclaration") @@ -39,7 +44,7 @@ public class SortHelper { /** * Takes a SQL query, and if there isn't already an order, creates an order. */ - public static String adjustQueryForFlagsAndSort(String originalSql, int flags, int sort) { + public static String adjustQueryForFlagsAndSort(Preferences preferences, String originalSql, int flags, int sort) { // sort if(originalSql == null) { originalSql = ""; @@ -65,7 +70,7 @@ public class SortHelper { originalSql = originalSql.replace(TaskCriteria.isVisible().toString(), Criterion.all.toString()); } - if((flags & FLAG_SHOW_DELETED) > 0) { + if (preferences.getBoolean(R.string.p_show_deleted_tasks, false)) { originalSql = originalSql.replace(Task.DELETION_DATE.eq(0).toString(), Criterion.all.toString()); } diff --git a/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java b/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java index 9c119085c..c2573cf02 100644 --- a/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java +++ b/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java @@ -124,7 +124,7 @@ public class WidgetUpdateService extends InjectingService { int flags = preferences.getSortFlags(); int sort = preferences.getSortMode(); - String query = SortHelper.adjustQueryForFlagsAndSort( + String query = SortHelper.adjustQueryForFlagsAndSort(preferences, filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks; String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); diff --git a/src/main/java/org/tasks/preferences/BasicPreferences.java b/src/main/java/org/tasks/preferences/BasicPreferences.java index b21bd0ea2..6bb882019 100644 --- a/src/main/java/org/tasks/preferences/BasicPreferences.java +++ b/src/main/java/org/tasks/preferences/BasicPreferences.java @@ -6,6 +6,7 @@ import android.net.Uri; import android.os.Bundle; import android.preference.Preference; +import com.todoroo.astrid.core.OldTaskPreferences; import com.todoroo.astrid.reminders.ReminderPreferences; import org.tasks.R; @@ -30,17 +31,16 @@ public class BasicPreferences extends InjectingPreferenceActivity { if (!getResources().getBoolean(R.bool.sync_enabled)) { getPreferenceScreen().removePreference(findPreference(getString(R.string.synchronization))); } - findPreference(getString(R.string.EPr_appearance_header)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - startActivityForResult(new Intent(BasicPreferences.this, AppearancePreferences.class), RC_PREFS); - return true; - } - }); - findPreference(getString(R.string.notifications)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + setupActivity(R.string.EPr_appearance_header, AppearancePreferences.class); + setupActivity(R.string.notifications, ReminderPreferences.class); + setupActivity(R.string.EPr_manage_header, OldTaskPreferences.class); + } + + private void setupActivity(int key, final Class target) { + findPreference(getString(key)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - startActivityForResult(new Intent(BasicPreferences.this, ReminderPreferences.class), RC_PREFS); + startActivityForResult(new Intent(BasicPreferences.this, target), RC_PREFS); return true; } }); diff --git a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java index f06200e18..64ca8d7b0 100644 --- a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java +++ b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java @@ -22,6 +22,7 @@ import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; +import com.todoroo.astrid.core.OldTaskPreferences; import com.todoroo.astrid.reminders.ReminderPreferences; import org.slf4j.Logger; @@ -99,10 +100,12 @@ public class NavigationDrawerFragment extends InjectingFragment { } else if (data.getBooleanExtra(ReminderPreferences.RESET_GEOFENCES, false)) { geofenceService.setupGeofences(); } + if (data.getBooleanExtra(AppearancePreferences.FILTERS_CHANGED, false)) { refresh(); } - if (data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) { + if (data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false) || + data.getBooleanExtra(OldTaskPreferences.TOGGLE_DELETED, false)) { getActivity().finish(); getActivity().startActivity(getActivity().getIntent()); } diff --git a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index 8a440f019..96418b7f3 100644 --- a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -210,7 +210,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac sort = SortHelper.SORT_WIDGET; } - String query = SortHelper.adjustQueryForFlagsAndSort( + String query = SortHelper.adjustQueryForFlagsAndSort(preferences, filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", ""); String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); diff --git a/src/main/res/layout/sort_selection_dialog.xml b/src/main/res/layout/sort_selection_dialog.xml index 7dc07bc84..3ebbceee6 100644 --- a/src/main/res/layout/sort_selection_dialog.xml +++ b/src/main/res/layout/sort_selection_dialog.xml @@ -85,11 +85,6 @@ android:layout_height="wrap_content" android:text="@string/SSD_completed" /> - - diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml index b02a6b657..588d277bb 100644 --- a/src/main/res/values/keys.xml +++ b/src/main/res/values/keys.xml @@ -242,6 +242,7 @@ geolocation_radius geofence_responsiveness geofence_reminders_enabled + show_deleted_tasks @string/TEA_ctrl_when_pref diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 3e4478274..7a76bfec6 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -120,6 +120,7 @@ Tag Settings Delete Filter Settings + This setting will be removed in a future update diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 137b180eb..eeb5fa45f 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -35,11 +35,9 @@ android:targetPackage="org.tasks" /> - - - + + +