From 49d1a8bbbf5e5e52118ee68324554c5eacb60cb3 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 30 Jul 2010 01:57:57 -0700 Subject: [PATCH] when RTM repeating task is completed, Astrid automatically picks up the new task without having to re-sync --- .../astrid/api/SynchronizationProvider.java | 2 +- .../astrid/rmilk/sync/RTMSyncProvider.java | 20 ++++++++++++++++++- astrid/res/layout/task_adapter_row.xml | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/astrid/api-src/com/todoroo/astrid/api/SynchronizationProvider.java b/astrid/api-src/com/todoroo/astrid/api/SynchronizationProvider.java index 6de99479c..7403f46f7 100644 --- a/astrid/api-src/com/todoroo/astrid/api/SynchronizationProvider.java +++ b/astrid/api-src/com/todoroo/astrid/api/SynchronizationProvider.java @@ -15,8 +15,8 @@ import android.content.Context; import android.widget.Toast; import com.timsu.astrid.R; -import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; diff --git a/astrid/plugin-src/com/todoroo/astrid/rmilk/sync/RTMSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/rmilk/sync/RTMSyncProvider.java index 1f59e67df..7257e6d80 100644 --- a/astrid/plugin-src/com/todoroo/astrid/rmilk/sync/RTMSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/rmilk/sync/RTMSyncProvider.java @@ -367,6 +367,13 @@ public class RTMSyncProvider extends SynchronizationProvider { return true; if(!remoteTask.task.containsValue(property)) return true; + + // special cases - match if they're zero or nonzero + if(property == Task.COMPLETION_DATE || + property == Task.DELETION_DATE) + return !AndroidUtilities.equals((Long)task.task.getValue(property) == 0, + (Long)remoteTask.task.getValue(property) == 0); + return !AndroidUtilities.equals(task.task.getValue(property), remoteTask.task.getValue(property)); } @@ -378,6 +385,8 @@ public class RTMSyncProvider extends SynchronizationProvider { */ @Override protected void push(RTMTaskContainer local, RTMTaskContainer remote) throws IOException { + boolean remerge = false; + // fetch remote task for comparison if(remote == null) remote = pull(local); @@ -416,9 +425,13 @@ public class RTMSyncProvider extends SynchronizationProvider { if(local.task.getValue(Task.COMPLETION_DATE) == 0) rtmService.tasks_uncomplete(timeline, listId, taskSeriesId, taskId); - else + else { rtmService.tasks_complete(timeline, listId, taskSeriesId, taskId); + // if repeating, pull and merge + if(local.repeating) + remerge = true; + } } // tags @@ -452,7 +465,12 @@ public class RTMSyncProvider extends SynchronizationProvider { rtmService.tasks_notes_add(timeline, listId, taskSeriesId, taskId, titleAndText[0], titleAndText[1]); } + } + if(remerge) { + remote = pull(local); + remote.task.setId(local.task.getId()); + write(remote); } } diff --git a/astrid/res/layout/task_adapter_row.xml b/astrid/res/layout/task_adapter_row.xml index a46138de7..46c8322bb 100644 --- a/astrid/res/layout/task_adapter_row.xml +++ b/astrid/res/layout/task_adapter_row.xml @@ -7,7 +7,7 @@ android:paddingTop="4dip" android:paddingBottom="4dip" android:paddingLeft="4dip" - android:paddingRight="6dip" + android:paddingRight="10dip" android:orientation="vertical">