Collapsible subtasks for 'My order'ed Google Tasks

pull/996/head
Alex Baker 6 years ago
parent 6f09bc6484
commit 5cae334688

@ -25,7 +25,7 @@ public final class AstridTaskAdapter extends TaskAdapter {
private final Map<String, ArrayList<String>> chainedCompletions =
Collections.synchronizedMap(new HashMap<>());
public AstridTaskAdapter(
AstridTaskAdapter(
TaskListMetadata list, Filter filter, SubtasksFilterUpdater updater, TaskDao taskDao) {
this.list = list;
this.filter = filter;

@ -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 .*", "");

@ -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<ViewH
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
TaskContainer task = getItem(position);
if (task != null) {
holder.bindView(task, taskList.getFilter(), adapter.supportsManualSorting());
holder.bindView(task, taskList.getFilter());
holder.setMoving(false);
int indent = adapter.getIndent(task);
task.setIndent(indent);

@ -195,7 +195,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
return Math.round(indent * getShiftSize());
}
void bindView(TaskContainer task, Filter filter, boolean hideSubtasks) {
void bindView(TaskContainer task, Filter filter) {
this.task = task;
this.indent = task.indent;
@ -204,7 +204,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
setupTitleAndCheckbox();
setupDueDate();
if (preferences.getBoolean(R.string.p_show_list_indicators, true)) {
setupChips(filter, hideSubtasks);
setupChips(filter);
}
if (preferences.getBoolean(R.string.p_show_description, true)) {
description.setText(task.getNotes());
@ -260,8 +260,8 @@ public class ViewHolder extends RecyclerView.ViewHolder {
}
}
private void setupChips(Filter filter, boolean hideSubtaskChip) {
List<Chip> chips = chipProvider.getChips(filter, indent > 0, hideSubtaskChip, task);
private void setupChips(Filter filter) {
List<Chip> chips = chipProvider.getChips(filter, indent > 0, task);
if (chips.isEmpty()) {
chipGroup.setVisibility(View.GONE);
} else {

@ -102,15 +102,11 @@ public class ChipProvider {
return chip;
}
public List<Chip> getChips(
Filter filter,
boolean isSubtask,
boolean hideSubtaskChip,
TaskContainer task) {
public List<Chip> getChips(Filter filter, boolean isSubtask, TaskContainer task) {
assertMainThread();
List<Chip> chips = new ArrayList<>();
if (!hideSubtaskChip && task.hasChildren()) {
if (task.hasChildren()) {
chips.add(newSubtaskChip(task, !showText));
}
if (task.hasLocation() && !(filter instanceof PlaceFilter)) {

Loading…
Cancel
Save