diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java index 32a59da87..9b7fa935f 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java @@ -8,9 +8,8 @@ import android.content.Intent; import android.os.Bundle; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.gcal.GCalHelper; +import com.todoroo.astrid.service.TaskCreator; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.ui.QuickAddBar; import org.tasks.injection.ForApplication; @@ -24,8 +23,7 @@ import javax.inject.Inject; public final class ShareLinkActivity extends TaskListActivity { @Inject TaskService taskService; - @Inject GCalHelper gcalHelper; - @Inject @ForApplication Context context; + @Inject TaskCreator taskCreator; private String subject; private boolean handled; @@ -50,7 +48,7 @@ public final class ShareLinkActivity extends TaskListActivity { if (!handled) { Intent callerIntent = getIntent(); - Task task = QuickAddBar.basicQuickAddTask(context, gcalHelper, taskService, subject); + Task task = taskCreator.basicQuickAddTask(subject); if (task != null) { task.setNotes(callerIntent.getStringExtra(Intent.EXTRA_TEXT)); taskService.save(task); diff --git a/astrid/src/main/java/com/todoroo/astrid/service/TaskCreator.java b/astrid/src/main/java/com/todoroo/astrid/service/TaskCreator.java new file mode 100644 index 000000000..3bdb53512 --- /dev/null +++ b/astrid/src/main/java/com/todoroo/astrid/service/TaskCreator.java @@ -0,0 +1,54 @@ +package com.todoroo.astrid.service; + +import android.content.ContentValues; +import android.content.Context; +import android.net.Uri; +import android.text.TextUtils; + +import com.todoroo.astrid.data.SyncFlags; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.gcal.GCalHelper; + +import org.tasks.injection.ForApplication; + +import javax.inject.Inject; + +public class TaskCreator { + + private final Context context; + private final TaskService taskService; + private final GCalHelper gcalHelper; + + @Inject + public TaskCreator(@ForApplication Context context, TaskService taskService, GCalHelper gcalHelper) { + this.context = context; + this.taskService = taskService; + this.gcalHelper = gcalHelper; + } + + public Task basicQuickAddTask(String title) { + if (TextUtils.isEmpty(title)) { + return null; + } + + title = title.trim(); + + Task task = taskService.createWithValues(null, title); + addToCalendar(task, title); + + return task; + } + + public void addToCalendar(Task task, String title) { + boolean gcalCreateEventEnabled = gcalHelper.getDefaultCalendar() != null + && !gcalHelper.getDefaultCalendar().equals("-1") && task.hasDueDate(); //$NON-NLS-1$ + + if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) { + Uri calendarUri = gcalHelper.createTaskEvent(task, + context.getContentResolver(), new ContentValues()); + task.setCalendarUri(calendarUri.toString()); + task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); + taskService.save(task); + } + } +} diff --git a/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java index 1cc485e8f..40d08491c 100644 --- a/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java @@ -5,10 +5,8 @@ */ package com.todoroo.astrid.ui; -import android.content.ContentValues; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -30,12 +28,12 @@ import com.todoroo.astrid.activity.TaskEditFragment; 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; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.repeats.RepeatControlSet; +import com.todoroo.astrid.service.TaskCreator; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.voice.VoiceRecognizer; @@ -43,7 +41,6 @@ import com.todoroo.astrid.voice.VoiceRecognizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; -import org.tasks.injection.ForApplication; import org.tasks.injection.Injector; import org.tasks.preferences.ActivityPreferences; @@ -72,10 +69,10 @@ public class QuickAddBar extends LinearLayout { private GCalControlSet gcalControl; @Inject TaskService taskService; + @Inject TaskCreator taskCreator; @Inject GCalHelper gcalHelper; @Inject ActivityPreferences preferences; @Inject DateChangedAlerts dateChangedAlerts; - @Inject @ForApplication Context context; private VoiceRecognizer voiceRecognizer; @@ -280,7 +277,7 @@ public class QuickAddBar extends LinearLayout { resetControlSets(); - addToCalendar(context, gcalHelper, taskService, task, title); + taskCreator.addToCalendar(task, title); TextView quickAdd = (TextView) findViewById(R.id.quickAddText); quickAdd.setText(""); //$NON-NLS-1$ @@ -304,36 +301,6 @@ public class QuickAddBar extends LinearLayout { } } - private static void addToCalendar(Context context, GCalHelper gcalHelper, TaskService taskService, Task task, String title) { - boolean gcalCreateEventEnabled = gcalHelper.getDefaultCalendar() != null - && !gcalHelper.getDefaultCalendar().equals("-1") && task.hasDueDate(); //$NON-NLS-1$ - - if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) { - Uri calendarUri = gcalHelper.createTaskEvent(task, - context.getContentResolver(), new ContentValues()); - task.setCalendarUri(calendarUri.toString()); - 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. - */ - public static Task basicQuickAddTask(Context context, GCalHelper gcalHelper, TaskService taskService, String title) { - if (TextUtils.isEmpty(title)) { - return null; - } - - title = title.trim(); - - Task task = taskService.createWithValues(null, title); - addToCalendar(context, gcalHelper, taskService, task, title); - - return task; - } - private void showAlertForMarkupTask(AstridActivity activity, Task task, String originalText) { dateChangedAlerts.showQuickAddMarkupDialog(activity, task, originalText); } diff --git a/astrid/src/main/java/org/tasks/voice/VoiceCommandActivity.java b/astrid/src/main/java/org/tasks/voice/VoiceCommandActivity.java index 7eb0cb53b..5ba2eea09 100644 --- a/astrid/src/main/java/org/tasks/voice/VoiceCommandActivity.java +++ b/astrid/src/main/java/org/tasks/voice/VoiceCommandActivity.java @@ -5,8 +5,7 @@ import android.content.Intent; import android.os.Bundle; import android.widget.Toast; -import com.todoroo.astrid.gcal.GCalHelper; -import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.service.TaskCreator; import org.tasks.R; import org.tasks.injection.ForApplication; @@ -14,12 +13,9 @@ import org.tasks.injection.InjectingActivity; import javax.inject.Inject; -import static com.todoroo.astrid.ui.QuickAddBar.basicQuickAddTask; - public class VoiceCommandActivity extends InjectingActivity { - @Inject GCalHelper gcalHelper; - @Inject TaskService taskService; + @Inject TaskCreator taskCreator; @Inject @ForApplication Context context; @Override @@ -31,11 +27,8 @@ public class VoiceCommandActivity extends InjectingActivity { switch (intent.getAction()) { case "com.google.android.gm.action.AUTO_SEND": final String text = intent.getStringExtra(Intent.EXTRA_TEXT); - basicQuickAddTask(context, gcalHelper, taskService, text); - Context context = getApplicationContext(); - if (context != null) { - Toast.makeText(context, getString(R.string.voice_command_added_task), Toast.LENGTH_LONG).show(); - } + taskCreator.basicQuickAddTask(text); + Toast.makeText(context, getString(R.string.voice_command_added_task), Toast.LENGTH_LONG).show(); finish(); } }