From 5cae33468870cdbb7403f26cff91aa86505803da Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 16 Apr 2020 10:53:43 -0500 Subject: [PATCH] Collapsible subtasks for 'My order'ed Google Tasks --- .../com/todoroo/astrid/adapter/AstridTaskAdapter.java | 2 +- .../main/java/com/todoroo/astrid/api/GtasksFilter.java | 9 ++++++--- .../java/org/tasks/tasklist/TaskListRecyclerAdapter.java | 4 +++- app/src/main/java/org/tasks/tasklist/ViewHolder.java | 8 ++++---- app/src/main/java/org/tasks/ui/ChipProvider.java | 8 ++------ 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java index ecee9b7a2..139db670e 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java @@ -25,7 +25,7 @@ public final class AstridTaskAdapter extends TaskAdapter { private final Map> chainedCompletions = Collections.synchronizedMap(new HashMap<>()); - public AstridTaskAdapter( + AstridTaskAdapter( TaskListMetadata list, Filter filter, SubtasksFilterUpdater updater, TaskDao taskDao) { this.list = list; this.filter = filter; diff --git a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java index d48bbd9e8..33d4b68fa 100644 --- a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java +++ b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java @@ -54,13 +54,16 @@ public class GtasksFilter extends Filter { query.replace( "WHERE", "JOIN (SELECT 0 as indent, google_tasks.*, COUNT(c.gt_id) AS children, 0 AS siblings, google_tasks.gt_order AS primary_sort, NULL AS secondary_sort" - + " FROM google_tasks LEFT JOIN google_tasks AS c ON c.gt_parent = google_tasks.gt_task" + + " FROM google_tasks" + + " LEFT JOIN google_tasks AS c ON c.gt_parent = google_tasks.gt_task" + " WHERE google_tasks.gt_parent = 0 GROUP BY google_tasks.gt_task" + " UNION SELECT 1 as indent, c.*, 0 AS children, COUNT(s.gt_id) AS siblings, p.gt_order AS primary_sort, c.gt_order AS secondary_sort" - + " FROM google_tasks AS c LEFT JOIN google_tasks AS p ON c.gt_parent = p.gt_task" - + " LEFT JOIN tasks ON c.gt_parent = tasks._id" + + " FROM google_tasks AS c" + + " INNER JOIN google_tasks AS p ON c.gt_parent = p.gt_task" + + " INNER JOIN tasks ON c.gt_parent = tasks._id" + " LEFT JOIN google_tasks AS s ON s.gt_parent = p.gt_task" + " WHERE c.gt_parent > 0 AND ((tasks.completed=0) AND (tasks.deleted=0)" + + " AND tasks.collapsed = 0" + " AND (tasks.hideUntil<(strftime('%s','now')*1000)))" + " GROUP BY c.gt_task) as g2 ON g2.gt_id = google_tasks.gt_id WHERE"); query = query.replaceAll("ORDER BY .*", ""); diff --git a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java index 14a941d09..9d50b5c5c 100644 --- a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java +++ b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java @@ -9,6 +9,8 @@ import androidx.recyclerview.widget.ListUpdateCallback; import androidx.recyclerview.widget.RecyclerView; import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.adapter.AstridTaskAdapter; +import com.todoroo.astrid.adapter.GoogleTaskManualSortAdapter; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.TaskDao; @@ -48,7 +50,7 @@ public abstract class TaskListRecyclerAdapter extends RecyclerView.Adapter chips = chipProvider.getChips(filter, indent > 0, hideSubtaskChip, task); + private void setupChips(Filter filter) { + List chips = chipProvider.getChips(filter, indent > 0, task); if (chips.isEmpty()) { chipGroup.setVisibility(View.GONE); } else { diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.java b/app/src/main/java/org/tasks/ui/ChipProvider.java index e92b9fa10..979edda7b 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.java +++ b/app/src/main/java/org/tasks/ui/ChipProvider.java @@ -102,15 +102,11 @@ public class ChipProvider { return chip; } - public List getChips( - Filter filter, - boolean isSubtask, - boolean hideSubtaskChip, - TaskContainer task) { + public List getChips(Filter filter, boolean isSubtask, TaskContainer task) { assertMainThread(); List chips = new ArrayList<>(); - if (!hideSubtaskChip && task.hasChildren()) { + if (task.hasChildren()) { chips.add(newSubtaskChip(task, !showText)); } if (task.hasLocation() && !(filter instanceof PlaceFilter)) {