diff --git a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java index afde51505..5afddf750 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskAdapter.java @@ -6,8 +6,8 @@ import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import org.tasks.BuildConfig; -import org.tasks.data.GoogleTask; import org.tasks.data.GoogleTaskDao; +import org.tasks.data.SubsetGoogleTask; import org.tasks.data.TaskContainer; public final class GoogleTaskAdapter extends GoogleTaskManualSortAdapter { @@ -27,7 +27,7 @@ public final class GoogleTaskAdapter extends GoogleTaskManualSortAdapter { @Override public void moved(int from, int to, int indent) { TaskContainer task = getTask(from); - GoogleTask googleTask = task.getGoogleTask(); + SubsetGoogleTask googleTask = task.getGoogleTask(); TaskContainer previous = to > 0 ? getTask(to - 1) : null; if (indent == 0) { if (googleTask.getIndent() == 0) { diff --git a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.java index 7675eeddf..46e9d9bdd 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.java @@ -6,8 +6,8 @@ import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import org.tasks.BuildConfig; -import org.tasks.data.GoogleTask; import org.tasks.data.GoogleTaskDao; +import org.tasks.data.SubsetGoogleTask; import org.tasks.data.TaskContainer; import org.tasks.tasklist.ViewHolder; @@ -73,7 +73,7 @@ public class GoogleTaskManualSortAdapter extends TaskAdapter { @Override public void moved(int from, int to, int indent) { TaskContainer task = getTask(from); - GoogleTask googleTask = task.getGoogleTask(); + SubsetGoogleTask googleTask = task.getGoogleTask(); TaskContainer previous = to > 0 ? getTask(to - 1) : null; if (previous == null) { diff --git a/app/src/main/java/org/tasks/data/GoogleTaskDao.java b/app/src/main/java/org/tasks/data/GoogleTaskDao.java index cedd04aa9..e4bf9421c 100644 --- a/app/src/main/java/org/tasks/data/GoogleTaskDao.java +++ b/app/src/main/java/org/tasks/data/GoogleTaskDao.java @@ -48,7 +48,7 @@ public abstract class GoogleTaskDao { abstract void shiftUp(String listId, long parent, long position); @Transaction - public void move(GoogleTask task, long newParent, long newPosition) { + public void move(SubsetGoogleTask task, long newParent, long newPosition) { long previousParent = task.getParent(); long previousPosition = task.getOrder(); @@ -62,7 +62,6 @@ public abstract class GoogleTaskDao { shiftUp(task.getListId(), previousParent, previousPosition); shiftDown(task.getListId(), newParent, newPosition); } - task.setMoved(true); task.setParent(newParent); task.setOrder(newPosition); update(task); @@ -74,6 +73,13 @@ public abstract class GoogleTaskDao { @Update public abstract void update(GoogleTask googleTask); + public void update(SubsetGoogleTask googleTask) { + update(googleTask.getId(), googleTask.getParent(), googleTask.getOrder()); + } + + @Query("UPDATE google_tasks SET gt_order = :order, gt_parent = :parent, gt_moved = 1 WHERE gt_id = :id") + abstract void update(long id, long parent, long order); + @Query("UPDATE google_tasks SET gt_deleted = :now WHERE gt_task = :task OR gt_parent = :task") public abstract void markDeleted(long now, long task); diff --git a/app/src/main/java/org/tasks/data/SubsetGoogleTask.java b/app/src/main/java/org/tasks/data/SubsetGoogleTask.java new file mode 100644 index 000000000..de5a1769c --- /dev/null +++ b/app/src/main/java/org/tasks/data/SubsetGoogleTask.java @@ -0,0 +1,84 @@ +package org.tasks.data; + +public class SubsetGoogleTask { + + public long gt_id; + public long gt_parent; + public String gt_list_id; + public long gt_order; + + public long getId() { + return gt_id; + } + + public String getListId() { + return gt_list_id; + } + + public long getParent() { + return gt_parent; + } + + public void setParent(long parent) { + gt_parent = parent; + } + + public long getOrder() { + return gt_order; + } + + public void setOrder(long order) { + gt_order = order; + } + + public int getIndent() { + return gt_parent > 0 ? 1 : 0; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof SubsetGoogleTask)) { + return false; + } + + SubsetGoogleTask that = (SubsetGoogleTask) o; + + if (gt_id != that.gt_id) { + return false; + } + if (gt_parent != that.gt_parent) { + return false; + } + if (gt_order != that.gt_order) { + return false; + } + return gt_list_id != null ? gt_list_id.equals(that.gt_list_id) : that.gt_list_id == null; + } + + @Override + public int hashCode() { + int result = (int) (gt_id ^ (gt_id >>> 32)); + result = 31 * result + (int) (gt_parent ^ (gt_parent >>> 32)); + result = 31 * result + (gt_list_id != null ? gt_list_id.hashCode() : 0); + result = 31 * result + (int) (gt_order ^ (gt_order >>> 32)); + return result; + } + + @Override + public String toString() { + return "SubsetGoogleTask{" + + "gt_id=" + + gt_id + + ", gt_parent=" + + gt_parent + + ", gt_list_id='" + + gt_list_id + + '\'' + + ", gt_order=" + + gt_order + + '}'; + } +} diff --git a/app/src/main/java/org/tasks/data/TaskContainer.java b/app/src/main/java/org/tasks/data/TaskContainer.java index 0ddae7a80..a7530abe6 100644 --- a/app/src/main/java/org/tasks/data/TaskContainer.java +++ b/app/src/main/java/org/tasks/data/TaskContainer.java @@ -5,7 +5,7 @@ import com.todoroo.astrid.data.Task; public class TaskContainer { @Embedded public Task task; - @Embedded public GoogleTask googletask; + @Embedded public SubsetGoogleTask googletask; @Embedded public SubsetCaldav caldavTask; @Embedded public Location location; public String tags; @@ -216,7 +216,7 @@ public class TaskContainer { return secondarySort == siblings - 1; } - public GoogleTask getGoogleTask() { + public SubsetGoogleTask getGoogleTask() { return googletask; }