From ed434a3e835b6c1948e0af9f86349c84d628c8e3 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 6 Mar 2019 09:06:20 -0600 Subject: [PATCH] Move task adapter subclasses to separate files --- .../astrid/adapter/AstridTaskAdapter.java | 71 +++++++++++++++++++ .../astrid/adapter/GoogleTaskAdapter.java | 67 +++++++++++++++++ .../todoroo/astrid/adapter/TaskAdapter.java | 2 +- .../astrid/gtasks/GtasksTaskListUpdater.java | 2 +- .../OrderedMetadataListFragmentHelper.java | 58 +-------------- .../AstridOrderedListFragmentHelper.java | 59 +-------------- .../subtasks/SubtasksFilterUpdater.java | 4 +- 7 files changed, 146 insertions(+), 117 deletions(-) create mode 100644 app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java create mode 100644 app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java diff --git a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java new file mode 100644 index 000000000..879d1dce2 --- /dev/null +++ b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.java @@ -0,0 +1,71 @@ +package com.todoroo.astrid.adapter; + +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.subtasks.SubtasksFilterUpdater; +import org.tasks.data.TaskListMetadata; +import timber.log.Timber; + +public final class AstridTaskAdapter extends TaskAdapter { + + private final TaskListMetadata list; + private final Filter filter; + private final SubtasksFilterUpdater updater; + + public AstridTaskAdapter(TaskListMetadata list, Filter filter, SubtasksFilterUpdater updater) { + this.list = list; + this.filter = filter; + this.updater = updater; + } + + @Override + public int getIndent(Task task) { + return updater.getIndentForTask(task.getUuid()); + } + + @Override + public boolean canIndent(int position, Task task) { + String parentUuid = getItemUuid(position - 1); + int parentIndent = updater.getIndentForTask(parentUuid); + return getIndent(task) <= parentIndent; + } + + @Override + public boolean isManuallySorted() { + return true; + } + + @Override + public void moved(int from, int to) { + String targetTaskId = getItemUuid(from); + if (!Task.isValidUuid(targetTaskId)) { + return; // This can happen with gestures on empty parts of the list (e.g. extra space below + // tasks) + } + + try { + if (to >= getCount()) { + updater.moveTo(list, filter, targetTaskId, "-1"); // $NON-NLS-1$ + } else { + String destinationTaskId = getItemUuid(to); + updater.moveTo(list, filter, targetTaskId, destinationTaskId); + } + } catch (Exception e) { + Timber.e(e); + } + } + + @Override + public void indented(int which, int delta) { + String targetTaskId = getItemUuid(which); + if (!Task.isValidUuid(targetTaskId)) { + return; // This can happen with gestures on empty parts of the list (e.g. extra space below + // tasks) + } + try { + updater.indent(list, filter, targetTaskId, delta); + } catch (Exception e) { + Timber.e(e); + } + } +} diff --git a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java new file mode 100644 index 000000000..8c838edd6 --- /dev/null +++ b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java @@ -0,0 +1,67 @@ +package com.todoroo.astrid.adapter; + +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.gtasks.GtasksTaskListUpdater; +import org.tasks.data.GoogleTaskList; +import timber.log.Timber; + +public final class GoogleTaskAdapter extends TaskAdapter { + + private final GoogleTaskList list; + private final GtasksTaskListUpdater updater; + + public GoogleTaskAdapter(GoogleTaskList list, GtasksTaskListUpdater updater) { + this.list = list; + this.updater = updater; + } + + @Override + public int getIndent(Task task) { + return task.getIndent(); + } + + @Override + public boolean canIndent(int position, Task task) { + Task parent = getTask(position - 1); + return parent != null && getIndent(task) == 0; + } + + @Override + public boolean isManuallySorted() { + return true; + } + + @Override + public void moved(int from, int to) { + long targetTaskId = getTaskId(from); + if (targetTaskId <= 0) { + return; // This can happen with gestures on empty parts of the list (e.g. extra space below + // tasks) + } + + try { + if (to >= getCount()) { + updater.moveTo(list, targetTaskId, -1); + } else { + long destinationTaskId = getTaskId(to); + updater.moveTo(list, targetTaskId, destinationTaskId); + } + } catch (Exception e) { + Timber.e(e); + } + } + + @Override + public void indented(int which, int delta) { + long targetTaskId = getTaskId(which); + if (targetTaskId <= 0) { + return; // This can happen with gestures on empty parts of the list (e.g. extra space below + // tasks) + } + try { + updater.indent(list, targetTaskId, delta); + } catch (Exception e) { + Timber.e(e); + } + } +} diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index 9c3cc7e99..1151369b9 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -107,7 +107,7 @@ public class TaskAdapter { public void indented(int position, int delta) {} - public long getTaskId(int position) { + long getTaskId(int position) { return getTask(position).getId(); } diff --git a/app/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/app/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java index 7b64d65a4..a8e8a13dd 100644 --- a/app/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java +++ b/app/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -213,7 +213,7 @@ public class GtasksTaskListUpdater { * Move a task and all its children to the position right above taskIdToMoveto. Will change the * indent level to match taskIdToMoveTo. */ - void moveTo(GoogleTaskList list, final long targetTaskId, final long moveBeforeTaskId) { + public void moveTo(GoogleTaskList list, final long targetTaskId, final long moveBeforeTaskId) { if (list == null) { return; } diff --git a/app/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/app/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java index bff0cfc68..1fe51ea18 100644 --- a/app/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java +++ b/app/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java @@ -9,6 +9,7 @@ package com.todoroo.astrid.gtasks; import android.text.TextUtils; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.adapter.GoogleTaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.TaskDao; @@ -21,7 +22,6 @@ import javax.inject.Inject; import org.tasks.data.GoogleTask; import org.tasks.data.GoogleTaskDao; import org.tasks.data.GoogleTaskList; -import timber.log.Timber; class OrderedMetadataListFragmentHelper { @@ -31,7 +31,6 @@ class OrderedMetadataListFragmentHelper { private final TaskDao taskDao; private final Map> chainedCompletions = Collections.synchronizedMap(new HashMap<>()); - private DraggableTaskAdapter taskAdapter; private TaskListFragment fragment; private GoogleTaskList list; @@ -52,7 +51,7 @@ class OrderedMetadataListFragmentHelper { } TaskAdapter createTaskAdapter() { - taskAdapter = new DraggableTaskAdapter(); + GoogleTaskAdapter taskAdapter = new GoogleTaskAdapter(list, updater); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); @@ -109,57 +108,4 @@ class OrderedMetadataListFragmentHelper { updater.onDeleteTask(list, task.getId()); fragment.loadTaskListContent(); } - - private final class DraggableTaskAdapter extends TaskAdapter { - - @Override - public int getIndent(Task task) { - return task.getIndent(); - } - - @Override - public boolean canIndent(int position, Task task) { - Task parent = taskAdapter.getTask(position - 1); - return parent != null && getIndent(task) == 0; - } - - @Override - public boolean isManuallySorted() { - return true; - } - - @Override - public void moved(int from, int to) { - long targetTaskId = taskAdapter.getTaskId(from); - if (targetTaskId <= 0) { - return; // This can happen with gestures on empty parts of the list (e.g. extra space below - // tasks) - } - - try { - if (to >= taskAdapter.getCount()) { - updater.moveTo(list, targetTaskId, -1); - } else { - long destinationTaskId = taskAdapter.getTaskId(to); - updater.moveTo(list, targetTaskId, destinationTaskId); - } - } catch (Exception e) { - Timber.e(e); - } - } - - @Override - public void indented(int which, int delta) { - long targetTaskId = taskAdapter.getTaskId(which); - if (targetTaskId <= 0) { - return; // This can happen with gestures on empty parts of the list (e.g. extra space below - // tasks) - } - try { - updater.indent(list, targetTaskId, delta); - } catch (Exception e) { - Timber.e(e); - } - } - } } diff --git a/app/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java b/app/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java index fb011c603..2e75a9163 100644 --- a/app/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java +++ b/app/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java @@ -3,6 +3,7 @@ package com.todoroo.astrid.subtasks; import android.text.TextUtils; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.adapter.AstridTaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.TaskDao; @@ -14,7 +15,6 @@ import java.util.List; import java.util.Map; import javax.inject.Inject; import org.tasks.data.TaskListMetadata; -import timber.log.Timber; class AstridOrderedListFragmentHelper { @@ -22,7 +22,6 @@ class AstridOrderedListFragmentHelper { private final TaskDao taskDao; private final Map> chainedCompletions = Collections.synchronizedMap(new HashMap<>()); - private DraggableTaskAdapter taskAdapter; private TaskListFragment fragment; private TaskListMetadata list; @@ -41,7 +40,7 @@ class AstridOrderedListFragmentHelper { } TaskAdapter createTaskAdapter() { - taskAdapter = new DraggableTaskAdapter(); + AstridTaskAdapter taskAdapter = new AstridTaskAdapter(list, fragment.getFilter(), updater); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); @@ -107,58 +106,4 @@ class AstridOrderedListFragmentHelper { updater.onDeleteTask(list, fragment.getFilter(), task.getUuid()); fragment.loadTaskListContent(); } - - private final class DraggableTaskAdapter extends TaskAdapter { - - @Override - public int getIndent(Task task) { - return updater.getIndentForTask(task.getUuid()); - } - - @Override - public boolean canIndent(int position, Task task) { - String parentUuid = taskAdapter.getItemUuid(position - 1); - int parentIndent = updater.getIndentForTask(parentUuid); - return getIndent(task) <= parentIndent; - } - - @Override - public boolean isManuallySorted() { - return true; - } - - @Override - public void moved(int from, int to) { - String targetTaskId = taskAdapter.getItemUuid(from); - if (!Task.isValidUuid(targetTaskId)) { - return; // This can happen with gestures on empty parts of the list (e.g. extra space below - // tasks) - } - - try { - if (to >= taskAdapter.getCount()) { - updater.moveTo(list, fragment.getFilter(), targetTaskId, "-1"); // $NON-NLS-1$ - } else { - String destinationTaskId = taskAdapter.getItemUuid(to); - updater.moveTo(list, fragment.getFilter(), targetTaskId, destinationTaskId); - } - } catch (Exception e) { - Timber.e(e); - } - } - - @Override - public void indented(int which, int delta) { - String targetTaskId = taskAdapter.getItemUuid(which); - if (!Task.isValidUuid(targetTaskId)) { - return; // This can happen with gestures on empty parts of the list (e.g. extra space below - // tasks) - } - try { - updater.indent(list, fragment.getFilter(), targetTaskId, delta); - } catch (Exception e) { - Timber.e(e); - } - } - } } diff --git a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java index f17092579..33577f289 100644 --- a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java +++ b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java @@ -141,7 +141,7 @@ public class SubtasksFilterUpdater { filter.setFilterQueryOverride(query); } - int getIndentForTask(String targetTaskId) { + public int getIndentForTask(String targetTaskId) { Node n = idToNode.get(targetTaskId); if (n == null) { return 0; @@ -318,7 +318,7 @@ public class SubtasksFilterUpdater { } } - void moveTo(TaskListMetadata list, Filter filter, String targetTaskId, String beforeTaskId) { + public void moveTo(TaskListMetadata list, Filter filter, String targetTaskId, String beforeTaskId) { Node target = idToNode.get(targetTaskId); if (target == null) { return;