Fixed issues with task order arranging

pull/14/head
Tim Su 15 years ago
parent 9c3efb775b
commit d66db7a073

@ -7,6 +7,7 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
@ -73,6 +74,10 @@ public class GtasksDetailExposer extends BroadcastReceiver {
builder.append("<img src='silk_folder'/> ").append(listName); //$NON-NLS-1$ builder.append("<img src='silk_folder'/> ").append(listName); //$NON-NLS-1$
if(metadata.getValue(GtasksMetadata.PARENT_TASK) > AbstractModel.NO_ID) {
builder.append(DETAIL_SEPARATOR).append("Parent: ").append(metadata.getValue(GtasksMetadata.PARENT_TASK));
}
return builder.toString(); return builder.toString();
} }

@ -43,6 +43,8 @@ abstract public class GtasksIndentAction extends BroadcastReceiver {
metadata.setValue(GtasksMetadata.INDENT, newIndent); metadata.setValue(GtasksMetadata.INDENT, newIndent);
PluginServices.getMetadataService().save(metadata); PluginServices.getMetadataService().save(metadata);
gtasksMetadataService.updateMetadataForList(metadata.getValue(GtasksMetadata.LIST_ID));
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
Toast.makeText(context, context.getString(R.string.gtasks_indent_toast, newIndent), Toast.makeText(context, context.getString(R.string.gtasks_indent_toast, newIndent),
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();

@ -74,11 +74,13 @@ public final class GtasksMetadataService extends SyncMetadataService<GtasksTaskC
Filter filter = GtasksFilterExposer.filterFromList(list); Filter filter = GtasksFilterExposer.filterFromList(list);
TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(filter.sqlQuery, null, Task.ID); TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(filter.sqlQuery, null, Task.ID);
try { try {
Long[] ids = new Long[cursor.getCount()];
int order = 0; int order = 0;
int previousIndent = -1; int previousIndent = -1;
Stack<Long> taskHierarchyStack = new Stack<Long>(); Stack<Long> taskHierarchyStack = new Stack<Long>();
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long taskId = cursor.getLong(0); long taskId = cursor.getLong(0);
ids[order] = taskId;
Metadata metadata = getTaskMetadata(taskId); Metadata metadata = getTaskMetadata(taskId);
if(metadata == null) if(metadata == null)
continue; continue;
@ -86,19 +88,27 @@ public final class GtasksMetadataService extends SyncMetadataService<GtasksTaskC
metadata.setValue(GtasksMetadata.ORDER, order++); metadata.setValue(GtasksMetadata.ORDER, order++);
int indent = metadata.getValue(GtasksMetadata.INDENT); int indent = metadata.getValue(GtasksMetadata.INDENT);
for(int i = indent; i <= previousIndent; i++) for(int i = indent; i <= previousIndent; i++) {
taskHierarchyStack.pop(); if(!taskHierarchyStack.isEmpty())
taskHierarchyStack.pop();
}
if(indent > 0) { if(indent > 0) {
if(taskHierarchyStack.isEmpty()) if(taskHierarchyStack.isEmpty()) {
metadata.setValue(GtasksMetadata.PARENT_TASK, 0L);
metadata.setValue(GtasksMetadata.INDENT, 0); metadata.setValue(GtasksMetadata.INDENT, 0);
else } else
metadata.setValue(GtasksMetadata.PARENT_TASK, taskHierarchyStack.peek()); metadata.setValue(GtasksMetadata.PARENT_TASK, taskHierarchyStack.peek());
} else {
metadata.setValue(GtasksMetadata.PARENT_TASK, 0L);
} }
PluginServices.getMetadataService().save(metadata); PluginServices.getMetadataService().save(metadata);
taskHierarchyStack.push(taskId); taskHierarchyStack.push(taskId);
previousIndent = indent;
} }
PluginServices.getTaskService().clearDetails(Task.ID.in(ids));
} finally { } finally {
cursor.close(); cursor.close();
} }

@ -47,7 +47,8 @@ abstract public class GtasksOrderAction extends BroadcastReceiver {
return; return;
metadata.setValue(GtasksMetadata.ORDER, newOrder); metadata.setValue(GtasksMetadata.ORDER, newOrder);
TodorooCursor<Metadata> cursor = PluginServices.getMetadataService().query(Query.select(Metadata.ID, GtasksMetadata.INDENT).where( TodorooCursor<Metadata> cursor = PluginServices.getMetadataService().query(Query.select(Metadata.ID,
Metadata.TASK, GtasksMetadata.INDENT).where(
Criterion.and(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY), Criterion.and(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY),
GtasksMetadata.LIST_ID.eq(metadata.getValue(GtasksMetadata.LIST_ID)), GtasksMetadata.LIST_ID.eq(metadata.getValue(GtasksMetadata.LIST_ID)),
GtasksMetadata.ORDER.eq(newOrder)))); GtasksMetadata.ORDER.eq(newOrder))));

@ -30,7 +30,7 @@ public final class Constants {
/** /**
* Whether to turn on debugging logging and UI * Whether to turn on debugging logging and UI
*/ */
public static final boolean DEBUG = false; public static final boolean DEBUG = true;
/** /**
* Upgrade time * Upgrade time

Loading…
Cancel
Save