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.Intent;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
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$
if(metadata.getValue(GtasksMetadata.PARENT_TASK) > AbstractModel.NO_ID) {
builder.append(DETAIL_SEPARATOR).append("Parent: ").append(metadata.getValue(GtasksMetadata.PARENT_TASK));
}
return builder.toString();
}

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

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

@ -47,7 +47,8 @@ abstract public class GtasksOrderAction extends BroadcastReceiver {
return;
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),
GtasksMetadata.LIST_ID.eq(metadata.getValue(GtasksMetadata.LIST_ID)),
GtasksMetadata.ORDER.eq(newOrder))));

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

Loading…
Cancel
Save