diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java index cc0fef85f..a694ee24c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -7,41 +7,31 @@ import android.support.v4.view.Menu; import android.support.v4.view.MenuItem; import android.view.MenuInflater; -import com.commonsware.cwac.tlv.TouchListView; -import com.commonsware.cwac.tlv.TouchListView.DropListener; -import com.commonsware.cwac.tlv.TouchListView.SwipeListener; import com.timsu.astrid.R; import com.todoroo.andlib.data.Property; -import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.activity.DraggableTaskListFragment; -import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.gtasks.sync.GtasksSyncService; import com.todoroo.astrid.service.SyncV2Service; +import com.todoroo.astrid.subtasks.SubtasksListFragment; -public class GtasksListFragment extends DraggableTaskListFragment { +public class GtasksListFragment extends SubtasksListFragment { protected static final int MENU_CLEAR_COMPLETED_ID = MENU_ADDON_INTENT_ID + 1; - public static final String TOKEN_STORE_ID = "storeId"; + public static final String TOKEN_STORE_ID = "storeId"; //$NON-NLS-1$ protected static final int MENU_REFRESH_ID = MENU_SUPPORT_ID + 1; - private static final String LAST_FETCH_KEY_GTASKS = "gtasksLastFetch"; - @Autowired private StoreObjectDao storeObjectDao; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; - @Autowired private GtasksSyncService gtasksSyncService; - @Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksPreferenceService gtasksPreferenceService; @@ -50,11 +40,6 @@ public class GtasksListFragment extends DraggableTaskListFragment { private StoreObject list; - @Override - protected IntegerProperty getIndentProperty() { - return GtasksMetadata.INDENT; - } - private static final Property[] LIST_PROPERTIES = new Property[] { StoreObject.ID, StoreObject.TYPE, @@ -68,9 +53,6 @@ public class GtasksListFragment extends DraggableTaskListFragment { public void onActivityCreated(Bundle icicle) { super.onActivityCreated(icicle); - getTouchListView().setDropListener(dropListener); - getTouchListView().setSwipeListener(swipeListener); - if(!Preferences.getBoolean(GtasksPreferenceService.PREF_SHOWN_LIST_HELP, false)) { Preferences.setBoolean(GtasksPreferenceService.PREF_SHOWN_LIST_HELP, true); DialogUtilities.okDialog(getActivity(), @@ -79,50 +61,10 @@ public class GtasksListFragment extends DraggableTaskListFragment { getString(R.string.gtasks_help_body), null); } - taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { - @Override - public void onCompletedTask(Task item, boolean newState) { - setCompletedForItemAndSubtasks(item, newState); - } - }); - long storeObjectId = getActivity().getIntent().getLongExtra(TOKEN_STORE_ID, 0); list = storeObjectDao.fetch(storeObjectId, LIST_PROPERTIES); } - private final TouchListView.DropListener dropListener = new DropListener() { - @Override - public void drop(int from, int to) { - long targetTaskId = taskAdapter.getItemId(from); - long destinationTaskId = taskAdapter.getItemId(to); - - if(to == getListView().getCount() - 1) - gtasksTaskListUpdater.moveTo(filter, list, targetTaskId, -1); - else - gtasksTaskListUpdater.moveTo(filter, list, targetTaskId, destinationTaskId); - gtasksSyncService.triggerMoveForMetadata(gtasksMetadataService.getTaskMetadata(targetTaskId)); - loadTaskListContent(true); - } - }; - - private final TouchListView.SwipeListener swipeListener = new SwipeListener() { - @Override - public void swipeRight(int which) { - long targetTaskId = taskAdapter.getItemId(which); - gtasksTaskListUpdater.indent(filter, list, targetTaskId, 1); - gtasksSyncService.triggerMoveForMetadata(gtasksMetadataService.getTaskMetadata(targetTaskId)); - loadTaskListContent(true); - } - - @Override - public void swipeLeft(int which) { - long targetTaskId = taskAdapter.getItemId(which); - gtasksTaskListUpdater.indent(filter, list, targetTaskId, -1); - gtasksSyncService.triggerMoveForMetadata(gtasksMetadataService.getTaskMetadata(targetTaskId)); - loadTaskListContent(true); - } - }; - @Override protected void initiateAutomaticSync() { if (list != null && DateUtilities.now() - list.getValue(GtasksList.LAST_SYNC) > DateUtilities.ONE_HOUR) { @@ -153,9 +95,9 @@ public class GtasksListFragment extends DraggableTaskListFragment { } private void clearCompletedTasks() { - final ProgressDialog pd = new ProgressDialog(getActivity()); - final TodorooCursor tasks = taskService.fetchFiltered(filter.sqlQuery, null, Task.ID, Task.COMPLETION_DATE); + final TodorooCursor tasks = taskService.fetchFiltered(filter.sqlQuery, + null, Task.ID, Task.COMPLETION_DATE); pd.setMessage(this.getString(R.string.gtasks_GTA_clearing)); pd.show(); @@ -168,7 +110,8 @@ public class GtasksListFragment extends DraggableTaskListFragment { Task t = new Task(tasks); if (t.isCompleted()) { if (listId == null) { - listId = gtasksMetadataService.getTaskMetadata(t.getId()).getValue(GtasksMetadata.LIST_ID); + listId = gtasksMetadataService.getTaskMetadata( + t.getId()).getValue(GtasksMetadata.LIST_ID); } t.setValue(Task.DELETION_DATE, DateUtilities.now()); taskService.save(t); @@ -204,45 +147,4 @@ public class GtasksListFragment extends DraggableTaskListFragment { } } - private void setCompletedForItemAndSubtasks(Task item, boolean completedState) { - final TodorooCursor tasks = taskService.fetchFiltered(filter.sqlQuery, null, Task.ID, Task.COMPLETION_DATE); - final long itemId = item.getId(); - final boolean completed = completedState; - - new Thread() { - @Override - public void run() { - try { - for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { - Task curr = new Task(tasks); - if (curr.getId() == itemId) { - int itemIndent = gtasksMetadataService.getTaskMetadata(curr.getId()).getValue(GtasksMetadata.INDENT); - tasks.moveToNext(); - while (!tasks.isAfterLast()) { - Task next = new Task(tasks); - int currIndent = gtasksMetadataService.getTaskMetadata(next.getId()).getValue(GtasksMetadata.INDENT); - if (currIndent > itemIndent) { - if (completed) - next.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - else - next.setValue(Task.COMPLETION_DATE, 0L); - taskService.save(next); - } else break; - - tasks.moveToNext(); - } - break; - } - } - } finally { - tasks.close(); - } - getActivity().runOnUiThread(new Runnable() { - public void run() { - taskAdapter.notifyDataSetInvalidated(); - } - }); - } - }.start(); - } } diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java index 0f249c1a3..84a3cc87f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -20,6 +20,7 @@ import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.gtasks.sync.GtasksSyncService; import com.todoroo.astrid.subtasks.OrderedListUpdater; public class GtasksTaskListUpdater extends OrderedListUpdater { @@ -35,6 +36,7 @@ public class GtasksTaskListUpdater extends OrderedListUpdater { @Autowired private GtasksListService gtasksListService; @Autowired private GtasksMetadataService gtasksMetadataService; + @Autowired private GtasksSyncService gtasksSyncService; @Autowired private MetadataDao metadataDao; public GtasksTaskListUpdater() { @@ -74,6 +76,11 @@ public class GtasksTaskListUpdater extends OrderedListUpdater { updateParentSiblingMapsFor(list); } + @Override + public void onMetadataChanged(long taskId) { + gtasksSyncService.triggerMoveForMetadata(gtasksMetadataService.getTaskMetadata(taskId)); + } + @Override protected void iterateThroughList(Filter filter, StoreObject list, OrderedListIterator iterator) { gtasksMetadataService.iterateThroughList(list, iterator); diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListFragmentHelper.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListFragmentHelper.java index e66fc03eb..f915579d7 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListFragmentHelper.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListFragmentHelper.java @@ -89,8 +89,8 @@ public class OrderedListFragmentHelper { public Property[] taskProperties() { ArrayList> properties = new ArrayList>(Arrays.asList(TaskAdapter.PROPERTIES)); - properties.add(SubtasksMetadata.INDENT); - properties.add(SubtasksMetadata.ORDER); + properties.add(updater.indentProperty()); + properties.add(updater.orderProperty()); return properties.toArray(new Property[properties.size()]); } @@ -107,6 +107,7 @@ public class OrderedListFragmentHelper { updater.moveTo(getFilter(), list, targetTaskId, destinationTaskId); fragment.loadTaskListContent(true); + updater.onMetadataChanged(targetTaskId); } }; @@ -116,6 +117,7 @@ public class OrderedListFragmentHelper { long targetTaskId = taskAdapter.getItemId(which); updater.indent(getFilter(), list, targetTaskId, 1); fragment.loadTaskListContent(true); + updater.onMetadataChanged(targetTaskId); } @Override @@ -123,6 +125,7 @@ public class OrderedListFragmentHelper { long targetTaskId = taskAdapter.getItemId(which); updater.indent(getFilter(), list, targetTaskId, -1); fragment.loadTaskListContent(true); + updater.onMetadataChanged(targetTaskId); } }; @@ -200,7 +203,7 @@ public class OrderedListFragmentHelper { super.setFieldContentsAndVisibility(view); ViewHolder vh = (ViewHolder) view.getTag(); - int indent = vh.task.getValue(SubtasksMetadata.INDENT); + int indent = vh.task.getValue(updater.indentProperty()); vh.rowBody.setPadding(Math.round(indent * 20 * metrics.density), 0, 0, 0); } diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListUpdater.java index cd02525e2..e96d27f5c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListUpdater.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedListUpdater.java @@ -47,6 +47,13 @@ abstract public class OrderedListUpdater { // } + /** + * @param taskId + */ + public void onMetadataChanged(long taskId) { + // + } + /** * @param list */ diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java index 32d587540..4803c63b3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java @@ -18,10 +18,14 @@ import com.todoroo.astrid.data.Task; */ public class SubtasksListFragment extends TaskListFragment { - private final OrderedListFragmentHelper helper; + protected OrderedListFragmentHelper helper; public SubtasksListFragment() { super(); + createFragmentHelper(); + } + + protected void createFragmentHelper() { helper = new OrderedListFragmentHelper(this, new SubtasksUpdater()); helper.setList(SubtasksMetadata.LIST_ACTIVE_TASKS); }