More updates to support sync-after-repeat-complete. I think it works mostly now.

pull/14/head
Tim Su 16 years ago
parent e80e062735
commit e5478f4187

@ -266,7 +266,7 @@ If you don\'t want to see the new task right after you complete the old one, you
<string name="sync_auth_request">
In order to synchronize, please log in to your %s account and authorize Astrid to read your data.
\n\n
When finished, restart Astrid and come back here.
When finished, restart Astrid.
</string>
<string name="sync_upgrade_v99">
Astrid 2.7 now performs synchronization with RTM in the background. You will

@ -25,8 +25,6 @@ import java.util.List;
import org.w3c.dom.Element;
import android.util.Log;
/**
*
* @author Will Ross Jun 22, 2007
@ -76,11 +74,19 @@ public class RtmTaskSeries extends RtmData {
modified = parseDate(elt.getAttribute("modified"));
name = elt.getAttribute("name");
source = elt.getAttribute("source");
task = new RtmTask(child(elt, "task"));
if (children(elt, "task").size() > 1) {
Log.e("rtmsync", "WARANING: Assumption incorrect: found a " +
"TaskSeries with more than one child Task.");
List<Element> children = children(elt, "task");
if (children.size() > 1) {
// assume it's a repeating task - pick the child with nearest
// but not expired due date
RtmTask selectedTask = null;
for(Element element : children) {
RtmTask childTask = new RtmTask(element);
if(childTask.getCompleted() == null)
selectedTask = childTask;
}
task = selectedTask;
} else {
task = new RtmTask(child(elt, "task"));
}
notes = new RtmTaskNotes(child(elt, "notes"));
locationId = elt.getAttribute("location_id");

@ -51,6 +51,7 @@ import com.timsu.astrid.R;
import com.timsu.astrid.activities.TaskList;
import com.timsu.astrid.data.enums.Importance;
import com.timsu.astrid.data.sync.SyncMapping;
import com.timsu.astrid.data.task.AbstractTaskModel;
import com.timsu.astrid.data.task.TaskModelForSync;
import com.timsu.astrid.utilities.DialogUtilities;
import com.timsu.astrid.utilities.Preferences;
@ -313,7 +314,7 @@ public class RTMSyncProvider extends SynchronizationProvider {
dueDate = task.definiteDueDate;
if(dueDate == null)
dueDate = task.preferredDueDate;
if(dueDate != remoteTask.dueDate &&
if(dueDate != remoteTask.dueDate && dueDate != null &&
!dueDate.equals(remoteTask.dueDate))
rtmService.tasks_setDueDate(timeline, id.listId, id.taskSeriesId,
id.taskId, dueDate, dueDate != null);
@ -413,7 +414,8 @@ public class RTMSyncProvider extends SynchronizationProvider {
}
task.dueDate = due;
}
task.progressPercentage = (rtmTask.getCompleted() == null) ? 0 : 100;
task.progressPercentage = (rtmTask.getCompleted() == null) ? 0 :
AbstractTaskModel.COMPLETE_PERCENTAGE;
task.importance = Importance.values()[rtmTask.getPriority().ordinal()];
return task;

@ -38,6 +38,7 @@ import com.timsu.astrid.data.sync.SyncMapping;
import com.timsu.astrid.data.tag.TagController;
import com.timsu.astrid.data.tag.TagIdentifier;
import com.timsu.astrid.data.tag.TagModelForView;
import com.timsu.astrid.data.task.AbstractTaskModel;
import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForSync;
@ -326,7 +327,8 @@ public abstract class SynchronizationProvider {
// if it's new, create a new task model
if(!data.remoteIdToSyncMapping.containsKey(remoteTask.getRemoteId())) {
// if it's new & deleted, forget about it
if(remoteTask.isDeleted()) {
if(remoteTask.isDeleted() || remoteTask.progressPercentage ==
AbstractTaskModel.COMPLETE_PERCENTAGE) {
continue;
}

@ -26,6 +26,7 @@ import android.app.Activity;
import android.content.Context;
import android.util.Log;
import com.timsu.astrid.activities.TaskListSubActivity;
import com.timsu.astrid.data.AbstractController;
import com.timsu.astrid.data.alerts.AlertController;
import com.timsu.astrid.data.sync.SyncDataController;
@ -183,8 +184,10 @@ public class Synchronizer {
if(getSingleTaskForSync() != null)
Preferences.setSyncLastSync(context, new Date());
if(!isService)
if(!isService) {
SynchronizationService.start();
TaskListSubActivity.shouldRefreshTaskList = true;
}
}
// --- controller stuff

Loading…
Cancel
Save