From c92693feefea35540dd068f3a0273d854ab93321 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 27 Feb 2012 13:15:27 -0800 Subject: [PATCH] Fix sql constraint errors when cloning tasks, use transitory for sync suppress flags --- .../todoroo/andlib/data/AbstractModel.java | 18 +++++++++++++++ .../com/todoroo/astrid/data/SyncFlags.java | 10 ++++++++ .../com/timsu/astrid/C2DMReceiver.java | 10 ++++---- .../astrid/actfm/TagSettingsActivity.java | 5 ++-- .../astrid/actfm/TagUpdatesFragment.java | 4 ++-- .../astrid/actfm/sync/ActFmSyncService.java | 23 ++++++++++--------- .../astrid/gtasks/sync/GtasksSyncService.java | 10 ++++---- .../gtasks/sync/GtasksSyncV2Provider.java | 4 ++-- .../astrid/notes/EditNoteActivity.java | 4 ++-- .../todoroo/astrid/service/TaskService.java | 12 ++++++---- .../com/todoroo/astrid/ui/QuickAddBar.java | 14 +++++++---- .../src/com/todoroo/astrid/utility/Flags.java | 10 -------- 12 files changed, 76 insertions(+), 48 deletions(-) create mode 100644 api/src/com/todoroo/astrid/data/SyncFlags.java diff --git a/api/src/com/todoroo/andlib/data/AbstractModel.java b/api/src/com/todoroo/andlib/data/AbstractModel.java index 5cfe9056b..08a1ebc4d 100644 --- a/api/src/com/todoroo/andlib/data/AbstractModel.java +++ b/api/src/com/todoroo/andlib/data/AbstractModel.java @@ -365,6 +365,24 @@ public abstract class AbstractModel implements Parcelable, Cloneable { return transitoryData.get(key); } + public Object clearTransitory(String key) { + if (transitoryData == null) + return null; + return transitoryData.remove(key); + } + + + // --- Convenience wrappers for using transitories as flags + public boolean checkTransitory(String flag) { + Object trans = getTransitory(flag); + return trans != null; + } + + public boolean checkAndClearTransitory(String flag) { + Object trans = clearTransitory(flag); + return trans != null; + } + // --- property management /** diff --git a/api/src/com/todoroo/astrid/data/SyncFlags.java b/api/src/com/todoroo/astrid/data/SyncFlags.java new file mode 100644 index 000000000..61fa1d1db --- /dev/null +++ b/api/src/com/todoroo/astrid/data/SyncFlags.java @@ -0,0 +1,10 @@ +package com.todoroo.astrid.data; + +@SuppressWarnings("nls") +public class SyncFlags { + + public static final String ACTFM_SUPPRESS_SYNC = "actfm_suppress_sync"; + + public static final String GTASKS_SUPPRESS_SYNC = "gtasks_suppress_sync"; + +} diff --git a/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java b/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java index 43e571ed9..5c35e277a 100644 --- a/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java +++ b/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java @@ -37,6 +37,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.dao.UpdateDao; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; @@ -47,7 +48,6 @@ import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.sync.SyncResultCallbackAdapter; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.utility.Constants; -import com.todoroo.astrid.utility.Flags; @SuppressWarnings("nls") public class C2DMReceiver extends BroadcastReceiver { @@ -133,7 +133,7 @@ public class C2DMReceiver extends BroadcastReceiver { TagData tagData = new TagData(); if(cursor.getCount() == 0) { tagData.setValue(TagData.REMOTE_ID, Long.parseLong(intent.getStringExtra("tag_id"))); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(tagData); } else { cursor.moveToNext(); @@ -152,7 +152,7 @@ public class C2DMReceiver extends BroadcastReceiver { final Task task = new Task(); if(cursor.getCount() == 0) { task.setValue(Task.REMOTE_ID, Long.parseLong(intent.getStringExtra("task_id"))); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(task); } else { cursor.moveToNext(); @@ -298,7 +298,7 @@ public class C2DMReceiver extends BroadcastReceiver { task.setValue(Task.TITLE, intent.getStringExtra("title")); task.setValue(Task.REMOTE_ID, Long.parseLong(intent.getStringExtra("task_id"))); task.setValue(Task.USER_ID, Task.USER_ID_UNASSIGNED); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(task); new Thread(new Runnable() { @@ -338,7 +338,7 @@ public class C2DMReceiver extends BroadcastReceiver { if(cursor.getCount() == 0) { tagData.setValue(TagData.NAME, intent.getStringExtra("title")); tagData.setValue(TagData.REMOTE_ID, Long.parseLong(intent.getStringExtra("tag_id"))); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(tagData); new Thread(new Runnable() { diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index 21afaa220..f41ce966a 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -44,6 +44,7 @@ import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.core.PluginServices; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.helper.ImageDiskCache; @@ -318,7 +319,7 @@ public class TagSettingsActivity extends FragmentActivity { imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0); if (isNewTag) { - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(tagData); final Runnable loadTag = new Runnable() { @@ -436,7 +437,7 @@ public class TagSettingsActivity extends FragmentActivity { imageCache.move(tagData.getValue(TagData.PICTURE), url); } tagData.setValue(TagData.PICTURE, url); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(tagData); } catch (IOException e) { DialogUtilities.okDialog(TagSettingsActivity.this, e.toString(), null); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java index ecd7438d3..b00b3e579 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java @@ -42,6 +42,7 @@ import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.dao.UpdateDao; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Update; import com.todoroo.astrid.helper.AsyncImageView; @@ -51,7 +52,6 @@ import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.tags.TagService; -import com.todoroo.astrid.utility.Flags; public class TagUpdatesFragment extends ListFragment { @@ -361,7 +361,7 @@ public class TagUpdatesFragment extends ListFragment { Log.e("EditNoteActivity", "Failed to put image to disk..."); } } - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + update.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); updateDao.createNew(update); final long updateId = update.getId(); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java index 19d044d46..11121157b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -52,6 +52,7 @@ import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria; import com.todoroo.astrid.data.RemoteModel; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskApiDao; @@ -120,7 +121,7 @@ public final class ActFmSyncService { taskDao.addListener(new ModelUpdateListener() { @Override public void onModelUpdated(final Task model) { - if(Flags.checkAndClear(Flags.ACTFM_SUPPRESS_SYNC)) + if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing() && model.getTransitory("task-edit-save") == null) return; @@ -149,7 +150,7 @@ public final class ActFmSyncService { updateDao.addListener(new ModelUpdateListener() { @Override public void onModelUpdated(final Update model) { - if(Flags.checkAndClear(Flags.ACTFM_SUPPRESS_SYNC)) + if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing()) return; @@ -169,7 +170,7 @@ public final class ActFmSyncService { tagDataDao.addListener(new ModelUpdateListener() { @Override public void onModelUpdated(final TagData model) { - if(Flags.checkAndClear(Flags.ACTFM_SUPPRESS_SYNC)) + if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing()) return; @@ -439,7 +440,7 @@ public final class ActFmSyncService { task.setValue(Task.LAST_SYNC, DateUtilities.now() + 1000L); } - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskDao.saveExisting(task); } @@ -558,7 +559,7 @@ public final class ActFmSyncService { JSONObject result = actFmInvoker.invoke("tag_save", params.toArray(new Object[params.size()])); if(newlyCreated) { tagData.setValue(TagData.REMOTE_ID, result.optLong("id")); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataDao.saveExisting(tagData); } } catch (ActFmServiceException e) { @@ -618,7 +619,7 @@ public final class ActFmSyncService { JSONObject item = list.getJSONObject(i); readIds(locals, item, remote); JsonHelper.tagFromJson(item, remote); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + remote.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(remote); } } @@ -660,7 +661,7 @@ public final class ActFmSyncService { "token", token); JsonHelper.tagFromJson(result, tagData); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagDataService.save(tagData); } @@ -682,7 +683,7 @@ public final class ActFmSyncService { ArrayList metadata = new ArrayList(); JsonHelper.taskFromJson(result, task, metadata); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(task); metadataService.synchronizeMetadata(task.getId(), metadata, Metadata.KEY.eq(TagService.KEY)); } @@ -743,7 +744,7 @@ public final class ActFmSyncService { remote.getValue(Task.DUE_DATE) < DateUtilities.now()) remote.setFlag(Task.REMINDER_FLAGS, Task.NOTIFY_AFTER_DEADLINE, false); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + remote.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(remote); ids.add(remote.getId()); metadataService.synchronizeMetadata(remote.getId(), metadata, MetadataCriteria.withKey(TagService.KEY)); @@ -800,7 +801,7 @@ public final class ActFmSyncService { StatisticsService.reportEvent(StatisticsConstants.ACTFM_TASK_COMPLETED); } - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + remote.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(remote); ids.add(remote.getId()); metadataService.synchronizeMetadata(remote.getId(), metadata, MetadataCriteria.withKey(TagService.KEY)); @@ -943,7 +944,7 @@ public final class ActFmSyncService { readIds(locals, item, remote); JsonHelper.updateFromJson(item, remote); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + remote.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); if(remote.getId() == AbstractModel.NO_ID) updateDao.createNew(remote); else diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java index 81b39f9c4..6e9b41714 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -16,6 +16,7 @@ import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.GtasksMetadata; import com.todoroo.astrid.gtasks.GtasksMetadataService; @@ -26,7 +27,6 @@ import com.todoroo.astrid.gtasks.api.GtasksApiUtilities; import com.todoroo.astrid.gtasks.api.GtasksInvoker; import com.todoroo.astrid.gtasks.api.MoveRequest; import com.todoroo.astrid.service.MetadataService; -import com.todoroo.astrid.utility.Flags; public final class GtasksSyncService { @@ -93,7 +93,7 @@ public final class GtasksSyncService { taskDao.addListener(new ModelUpdateListener() { public void onModelUpdated(final Task model) { - if(Flags.checkAndClear(Flags.GTASKS_SUPPRESS_SYNC)) + if(model.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) return; if (gtasksPreferenceService.isOngoing()) //Don't try and sync changes that occur during a normal sync return; @@ -131,7 +131,7 @@ public final class GtasksSyncService { public void triggerMoveForMetadata(final Metadata metadata) { - if (Flags.checkAndClear(Flags.GTASKS_SUPPRESS_SYNC)) + if (metadata.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) return; if (!metadata.getValue(Metadata.KEY).equals(GtasksMetadata.METADATA_KEY)) //Don't care about non-gtasks metadata return; @@ -233,7 +233,7 @@ public final class GtasksSyncService { task.setValue(Task.MODIFICATION_DATE, DateUtilities.now()); gtasksMetadata.setValue(GtasksMetadata.LAST_SYNC, DateUtilities.now() + 1000L); metadataService.save(gtasksMetadata); - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); taskDao.saveExisting(task); } @@ -250,7 +250,7 @@ public final class GtasksSyncService { // Update order metadata from result if (result != null) { model.setValue(GtasksMetadata.GTASKS_ORDER, Long.parseLong(result.getPosition())); - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); + model.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); metadataDao.saveExisting(model); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java index ed1898a05..a94dee65d 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java @@ -27,6 +27,7 @@ import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.GtasksList; import com.todoroo.astrid.gtasks.GtasksListService; @@ -44,7 +45,6 @@ import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.sync.SyncResultCallback; import com.todoroo.astrid.sync.SyncV2Provider; -import com.todoroo.astrid.utility.Flags; public class GtasksSyncV2Provider extends SyncV2Provider { @@ -270,7 +270,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider { TaskDao.setDefaultReminders(task.task); } if (!TextUtils.isEmpty(task.task.getValue(Task.TITLE))) { - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); + task.task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); gtasksMetadataService.saveTaskAndMetadata(task); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java index 3a4174d03..dd777b0c3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java @@ -53,6 +53,7 @@ import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; import com.todoroo.astrid.helper.AsyncImageView; @@ -63,7 +64,6 @@ import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.sync.SyncResultCallback; import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener; -import com.todoroo.astrid.utility.Flags; public class EditNoteActivity extends LinearLayout implements TimerActionListener { @@ -436,7 +436,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene Log.e("EditNoteActivity", "Failed to put image to disk..."); } } - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + update.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); updateDao.createNew(update); final long updateId = update.getId(); diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index 2e52576c6..503bc7ecd 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -24,13 +24,13 @@ import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gtasks.GtasksMetadata; import com.todoroo.astrid.opencrx.OpencrxCoreUtils; import com.todoroo.astrid.producteev.sync.ProducteevTask; import com.todoroo.astrid.tags.TagService; -import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.TitleParser; @@ -122,6 +122,8 @@ public class TaskService { try { if(cursor.getCount() > 0) { Metadata metadata = new Metadata(); + newTask.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); + newTask.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); taskDao.save(newTask); long newId = newTask.getId(); for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { @@ -388,8 +390,6 @@ public class TaskService { clone.setValue(Task.CALENDAR_URI, ""); //$NON-NLS-1$ GCalHelper.createTaskEventIfEnabled(clone); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); save(clone); return clone.getId(); } @@ -405,7 +405,7 @@ public class TaskService { * @return */ public static Task createWithValues(ContentValues values, String title, - TaskService taskService, MetadataService metadataService) { + TaskService taskService, MetadataService metadataService, String...flags) { Task task = new Task(); if (title != null) task.setValue(Task.TITLE, title); @@ -430,6 +430,10 @@ public class TaskService { } task.mergeWith(forTask); } + + for (String flag : flags) { + task.putTransitory(flag, true); + } boolean markup = taskService.quickAdd(task); if (markup) task.putTransitory(TRANS_QUICK_ADD_MARKUP, true); diff --git a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java index 2961d8c31..0357c20e9 100644 --- a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java @@ -1,5 +1,6 @@ package com.todoroo.astrid.ui; +import java.util.ArrayList; import java.util.HashSet; import android.app.Activity; @@ -36,6 +37,7 @@ import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment.OnTaskListItemClickedListener; import com.todoroo.astrid.dao.TaskDao; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalControlSet; @@ -271,14 +273,16 @@ public class QuickAddBar extends LinearLayout { deadlineControl.isDeadlineSet() || !assignedToMe; // Will the quickadd save have any effect? + ArrayList flags = new ArrayList(); + if (quickAddChanges) - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); + flags.add(SyncFlags.ACTFM_SUPPRESS_SYNC); if (deadlineControl.isDeadlineSet()) // If deadline is set, second save will trigger push - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); + flags.add(SyncFlags.GTASKS_SUPPRESS_SYNC); Task task = TaskService.createWithValues(fragment.getFilter().valuesForNewTasks, title, - taskService, metadataService); + taskService, metadataService, flags.toArray(new String[flags.size()])); if (repeatControl.isRecurrenceSet()) repeatControl.writeToModel(task); @@ -305,8 +309,8 @@ public class QuickAddBar extends LinearLayout { Uri calendarUri = GCalHelper.createTaskEvent(task, activity.getContentResolver(), new ContentValues()); task.setValue(Task.CALENDAR_URI, calendarUri.toString()); - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); - Flags.set(Flags.GTASKS_SUPPRESS_SYNC); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); + task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); taskService.save(task); } diff --git a/astrid/src/com/todoroo/astrid/utility/Flags.java b/astrid/src/com/todoroo/astrid/utility/Flags.java index dac4cc622..f1125f3fc 100644 --- a/astrid/src/com/todoroo/astrid/utility/Flags.java +++ b/astrid/src/com/todoroo/astrid/utility/Flags.java @@ -21,16 +21,6 @@ public class Flags { */ public static final int TOAST_ON_SAVE = 1 << 2; - /** - * If set, indicates to suppress the next act.fm sync attempt - */ - public static final int ACTFM_SUPPRESS_SYNC = 1 << 3; - - /** - * If set, indicates to suppress the next gtasks sync attempt - */ - public static final int GTASKS_SUPPRESS_SYNC = 1 << 4; - /** * If set, indicates that the edit popover was dismissed by the edit fragment/back button */