From 2f37c76d9386d4aa3cb0754bf903e12f04e1f316 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 16 Dec 2019 14:23:42 -0600 Subject: [PATCH] Force sort order on recently modified filter --- .../todoroo/astrid/activity/TaskListFragment.java | 7 ++++++- .../main/java/com/todoroo/astrid/api/Filter.java | 8 ++++++++ .../org/tasks/filters/RecentlyModifiedFilter.java | 15 ++++++++++++++- .../main/java/org/tasks/ui/TaskListViewModel.java | 6 ++++-- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 166c61d16..a4de660e7 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -321,7 +321,12 @@ public final class TaskListFragment extends InjectingFragment hidden.setChecked(preferences.getBoolean(R.string.p_show_hidden_tasks, false)); completed.setChecked(preferences.getBoolean(R.string.p_show_completed_tasks, false)); } - if (taskAdapter.supportsManualSorting()) { + MenuItem sortMenu = menu.findItem(R.id.menu_sort); + if (!filter.supportsSorting()) { + sortMenu.setEnabled(false); + sortMenu.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + } + if (!filter.supportSubtasks() || taskAdapter.supportsManualSorting()) { menu.findItem(R.id.menu_collapse_subtasks).setVisible(false); menu.findItem(R.id.menu_expand_subtasks).setVisible(false); } diff --git a/app/src/main/java/com/todoroo/astrid/api/Filter.java b/app/src/main/java/com/todoroo/astrid/api/Filter.java index 12b2dcb16..9a577e9f5 100644 --- a/app/src/main/java/com/todoroo/astrid/api/Filter.java +++ b/app/src/main/java/com/todoroo/astrid/api/Filter.java @@ -189,6 +189,14 @@ public class Filter extends FilterListItem { return true; } + public boolean supportSubtasks() { + return true; + } + + public boolean supportsSorting() { + return true; + } + public boolean hasMenu() { return getMenu() != 0; } diff --git a/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.java b/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.java index 5dfb97b85..dd272acca 100644 --- a/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.java +++ b/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.java @@ -3,8 +3,10 @@ package org.tasks.filters; import android.os.Parcel; import android.os.Parcelable; import com.todoroo.andlib.sql.Criterion; +import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.data.Task; import org.tasks.time.DateTime; @@ -40,11 +42,22 @@ public class RecentlyModifiedFilter extends Filter { Criterion.and( Task.DELETION_DATE.lte(0), Task.MODIFICATION_DATE.gt( - new DateTime().minusDays(1).startOfMinute().getMillis()))); + new DateTime().minusDays(1).startOfMinute().getMillis()))) + .orderBy(Order.desc(Task.MODIFICATION_DATE)); } @Override public boolean supportsHiddenTasks() { return false; } + + @Override + public boolean supportSubtasks() { + return false; + } + + @Override + public boolean supportsSorting() { + return false; + } } diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.java b/app/src/main/java/org/tasks/ui/TaskListViewModel.java index 2d4b0c162..46d06a414 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.java +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.java @@ -107,7 +107,8 @@ public class TaskListViewModel extends ViewModel { boolean includeCaldavSubtasks) { List fields = newArrayList(TASKS, GTASK, CALDAV, GEOFENCE, PLACE); - if ((includeGoogleTaskSubtasks || includeCaldavSubtasks) + if (filter.supportSubtasks() + && (includeGoogleTaskSubtasks || includeCaldavSubtasks) && !(preferences.isManualSort() && filter.supportsManualSort())) { String tagQuery = Query.select(field("group_concat(distinct(tag_uid))")) @@ -242,7 +243,8 @@ public class TaskListViewModel extends ViewModel { + filter.getSqlQuery(); String query = - SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, preferences.getSortMode()); + SortHelper.adjustQueryForFlagsAndSort( + preferences, joinedQuery, preferences.getSortMode()); String groupedQuery = query.contains("ORDER BY")