Add TaskCreator

pull/189/head
Alex Baker 12 years ago
parent b17e25253f
commit 92d9678011

@ -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);

@ -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);
}
}
}

@ -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);
}

@ -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();
}
}

Loading…
Cancel
Save