Now all order action tests pass!

pull/14/head
Tim Su 14 years ago
parent 653403cbb2
commit 98d0c7ad97

@ -39,7 +39,6 @@ abstract public class GtasksOrderAction extends BroadcastReceiver {
String listId = metadata.getValue(GtasksMetadata.LIST_ID); String listId = metadata.getValue(GtasksMetadata.LIST_ID);
gtasksTaskListUpdater.move(listId, taskId, getDelta()); gtasksTaskListUpdater.move(listId, taskId, getDelta());
gtasksTaskListUpdater.debugPrint(listId);
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
} }

@ -10,7 +10,6 @@ import android.text.TextUtils;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.PluginServices;
@ -120,59 +119,53 @@ public class GtasksTaskListUpdater {
if(list == GtasksListService.LIST_NOT_FOUND_OBJECT) if(list == GtasksListService.LIST_NOT_FOUND_OBJECT)
return; return;
siblings.clear(); long taskToSwap = -1;
updateParentSiblingMapsFor(list);
if(delta == -1) { if(delta == -1) {
final long priorTaskId; // use sibling / parent map to figure out prior task
updateParentSiblingMapsFor(list);
if(siblings.containsKey(targetTaskId) && siblings.get(targetTaskId) != -1L) if(siblings.containsKey(targetTaskId) && siblings.get(targetTaskId) != -1L)
priorTaskId = siblings.get(targetTaskId); taskToSwap = siblings.get(targetTaskId);
else if(parents.containsKey(targetTaskId) && parents.get(targetTaskId) != -1L) else if(parents.containsKey(targetTaskId) && parents.get(targetTaskId) != -1L)
priorTaskId = parents.get(targetTaskId); taskToSwap = parents.get(targetTaskId);
else
return;
moveUp(list, targetTaskId, priorTaskId);
} else { } else {
// if we have a sibling reverse mapping, that is the next task // walk through to find the next task
// else, it is the next task in order Filter filter = GtasksFilterExposer.filterFromList(list);
TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(filter.sqlQuery, null, Task.ID);
long nextTaskId = -1L; try {
Long nextSibling = AndroidUtilities.findKeyInMap(siblings, targetTaskId); int targetIndent = -1;
if(nextSibling != null) for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
nextTaskId = nextSibling; long taskId = cursor.getLong(0);
else {
Filter filter = GtasksFilterExposer.filterFromList(list); if(targetIndent != -1) {
TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(filter.sqlQuery, null, Task.ID); Metadata metadata = gtasksMetadataService.getTaskMetadata(taskId);
try { if(metadata.getValue(GtasksMetadata.INDENT) <= targetIndent) {
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { taskToSwap = taskId;
long taskId = cursor.getLong(0); break;
if(taskId == targetTaskId) {
cursor.moveToNext();
if(!cursor.isAfterLast()) {
nextTaskId = cursor.getLong(0);
break;
}
} }
} else if(taskId == targetTaskId) {
Metadata metadata = gtasksMetadataService.getTaskMetadata(taskId);
targetIndent = metadata.getValue(GtasksMetadata.INDENT);
} }
} finally {
cursor.close();
} }
} finally {
cursor.close();
} }
}
if(nextTaskId == -1L) if(taskToSwap == -1L)
return; return;
if(delta == -1) {
moveUp(list, targetTaskId, taskToSwap);
} else {
// adjust indent of target task to task to swap
Metadata targetTask = gtasksMetadataService.getTaskMetadata(targetTaskId); Metadata targetTask = gtasksMetadataService.getTaskMetadata(targetTaskId);
Metadata nextTask = gtasksMetadataService.getTaskMetadata(nextTaskId); Metadata nextTask = gtasksMetadataService.getTaskMetadata(taskToSwap);
int targetIndent = targetTask.getValue(GtasksMetadata.INDENT); int targetIndent = targetTask.getValue(GtasksMetadata.INDENT);
int nextIndent = nextTask.getValue(GtasksMetadata.INDENT); int nextIndent = nextTask.getValue(GtasksMetadata.INDENT);
if(targetIndent != nextIndent) if(targetIndent != nextIndent)
indent(listId, targetTaskId, nextIndent - targetIndent); indent(listId, targetTaskId, nextIndent - targetIndent);
moveUp(list, taskToSwap, targetTaskId);
moveUp(list, nextTaskId, targetTaskId);
} }
} }

Loading…
Cancel
Save