From e5d30775a1dae9fd5e66cf36ea10fc8e1323da39 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 17 Apr 2012 14:26:45 -0700 Subject: [PATCH] Fixed a bug with ShareLinkActivity not working with swipe between lists --- .../astrid/activity/ShareLinkActivity.java | 18 ++++--- .../com/todoroo/astrid/ui/QuickAddBar.java | 48 ++++++++++++++----- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/ShareLinkActivity.java b/astrid/src/com/todoroo/astrid/activity/ShareLinkActivity.java index bbe3576d9..f29ac7ec5 100644 --- a/astrid/src/com/todoroo/astrid/activity/ShareLinkActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/ShareLinkActivity.java @@ -10,6 +10,7 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.ui.QuickAddBar; /** * @author joshuagross @@ -44,19 +45,16 @@ public final class ShareLinkActivity extends TaskListActivity { @Override protected void onPostResume() { super.onPostResume(); - TaskListFragment tlf = getTaskListFragment(); - if (tlf == null) { - return; // Uh ohs! - } - if (!handled) { Intent callerIntent = getIntent(); - Task task = tlf.quickAddBar.quickAddTask(subject, false); - task.setValue(Task.NOTES, callerIntent.getStringExtra(Intent.EXTRA_TEXT)); - taskService.save(task); - handled = true; - onTaskListItemClicked(task.getId()); + Task task = QuickAddBar.basicQuickAddTask(subject); + if (task != null) { + task.setValue(Task.NOTES, callerIntent.getStringExtra(Intent.EXTRA_TEXT)); + taskService.save(task); + handled = true; + onTaskListItemClicked(task.getId()); + } } } diff --git a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java index de4babfe4..6cafc656c 100644 --- a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java @@ -23,6 +23,7 @@ import android.widget.TextView.OnEditorActionListener; import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.utility.DialogUtilities; @@ -35,6 +36,7 @@ import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment.OnTaskListItemClickedListener; +import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; @@ -290,17 +292,7 @@ public class QuickAddBar extends LinearLayout { resetControlSets(); - boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null - && !Preferences.getStringValue(R.string.gcal_p_default).equals( - "-1"); - if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getValue(Task.CALENDAR_URI))) { - Uri calendarUri = GCalHelper.createTaskEvent(task, - activity.getContentResolver(), new ContentValues()); - task.setValue(Task.CALENDAR_URI, calendarUri.toString()); - task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); - task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); - taskService.save(task); - } + addToCalendar(task, title, taskService); if(!TextUtils.isEmpty(title)) fragment.showTaskEditHelpPopover(); @@ -332,6 +324,40 @@ public class QuickAddBar extends LinearLayout { } } + private static void addToCalendar(Task task, String title, TaskService taskService) { + boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null + && !Preferences.getStringValue(R.string.gcal_p_default).equals("-1"); //$NON-NLS-1$ + + if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getValue(Task.CALENDAR_URI))) { + Uri calendarUri = GCalHelper.createTaskEvent(task, + ContextManager.getContext().getContentResolver(), new ContentValues()); + task.setValue(Task.CALENDAR_URI, calendarUri.toString()); + task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); + task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); + taskService.save(task); + } + } + + /** + * Static method to quickly add tasks without all the control set nonsense. + * Used from the share link activity. + * @param title + * @return + */ + public static Task basicQuickAddTask(String title) { + if (TextUtils.isEmpty(title)) + return null; + + TaskService taskService = PluginServices.getTaskService(); + MetadataService metadataService = PluginServices.getMetadataService(); + title = title.trim(); + + Task task = TaskService.createWithValues(null, title, taskService, metadataService); + addToCalendar(task, title, taskService); + + return task; + } + private static void showAlertForMarkupTask(AstridActivity activity, Task task, String originalText) { DateChangedAlerts.showQuickAddMarkupDialog(activity, task, originalText); }