Remove PluginServices

pull/189/head
Alex Baker 12 years ago
parent 75583efe96
commit c2846a03e1

@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks;
import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskList;
import com.google.api.services.tasks.model.TaskLists; import com.google.api.services.tasks.model.TaskLists;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,6 +24,8 @@ public class GtasksIndentActionTest extends DatabaseTestCase {
@Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksMetadataService gtasksMetadataService;
@Autowired private GtasksListService gtasksListService; @Autowired private GtasksListService gtasksListService;
@Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater;
@Autowired private MetadataService metadataService;
@Autowired TaskService taskService;
private Task task; private Task task;
private StoreObject storeList; private StoreObject storeList;
@ -150,13 +153,13 @@ public class GtasksIndentActionTest extends DatabaseTestCase {
private Task taskWithMetadata(long order, int indentation) { private Task taskWithMetadata(long order, int indentation) {
Task newTask = new Task(); Task newTask = new Task();
PluginServices.getTaskService().save(newTask); taskService.save(newTask);
Metadata metadata = GtasksMetadata.createEmptyMetadata(newTask.getId()); Metadata metadata = GtasksMetadata.createEmptyMetadata(newTask.getId());
metadata.setValue(GtasksMetadata.INDENT, indentation); metadata.setValue(GtasksMetadata.INDENT, indentation);
metadata.setValue(GtasksMetadata.ORDER, order); metadata.setValue(GtasksMetadata.ORDER, order);
metadata.setValue(GtasksMetadata.LIST_ID, "list"); metadata.setValue(GtasksMetadata.LIST_ID, "list");
metadata.setTask(newTask.getId()); metadata.setTask(newTask.getId());
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
return newTask; return newTask;
} }
@ -178,7 +181,7 @@ public class GtasksIndentActionTest extends DatabaseTestCase {
private Task taskWithoutMetadata() { private Task taskWithoutMetadata() {
Task task = new Task(); Task task = new Task();
PluginServices.getTaskService().save(task); taskService.save(task);
return task; return task;
} }

@ -11,9 +11,10 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
@SuppressWarnings("nls") @SuppressWarnings("nls")
@ -21,6 +22,8 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase {
private final GtasksTestPreferenceService preferences = new GtasksTestPreferenceService(); private final GtasksTestPreferenceService preferences = new GtasksTestPreferenceService();
@Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksMetadataService gtasksMetadataService;
@Autowired private MetadataService metadataService;
@Autowired TaskService taskService;
private Task task; private Task task;
private Metadata metadata; private Metadata metadata;
@ -133,12 +136,12 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase {
private Task taskWithMetadata(String id) { private Task taskWithMetadata(String id) {
Task task = new Task(); Task task = new Task();
task.setTitle("cats"); task.setTitle("cats");
PluginServices.getTaskService().save(task); taskService.save(task);
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
if(id != null) if(id != null)
metadata.setValue(GtasksMetadata.ID, id); metadata.setValue(GtasksMetadata.ID, id);
metadata.setTask(task.getId()); metadata.setTask(task.getId());
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
return task; return task;
} }
@ -149,7 +152,7 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase {
private Task taskWithoutMetadata() { private Task taskWithoutMetadata() {
Task task = new Task(); Task task = new Task();
task.setTitle("dogs"); task.setTitle("dogs");
PluginServices.getTaskService().save(task); taskService.save(task);
return task; return task;
} }

@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks;
import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskList;
import com.google.api.services.tasks.model.TaskLists; import com.google.api.services.tasks.model.TaskLists;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,6 +24,8 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
@Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater;
@Autowired private GtasksListService gtasksListService; @Autowired private GtasksListService gtasksListService;
@Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksMetadataService gtasksMetadataService;
@Autowired private MetadataService metadataService;
@Autowired TaskService taskService;
public void testBasicParentComputation() { public void testBasicParentComputation() {
Task[] tasks = givenTasksABCDE(); Task[] tasks = givenTasksABCDE();
@ -164,14 +167,14 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
private Task createTask(String title, long order, int indent) { private Task createTask(String title, long order, int indent) {
Task task = new Task(); Task task = new Task();
task.setTitle(title); task.setTitle(title);
PluginServices.getTaskService().save(task); taskService.save(task);
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
metadata.setValue(GtasksMetadata.LIST_ID, "1"); metadata.setValue(GtasksMetadata.LIST_ID, "1");
if(order != GtasksMetadata.VALUE_UNSET) if(order != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.ORDER, order); metadata.setValue(GtasksMetadata.ORDER, order);
if(indent != GtasksMetadata.VALUE_UNSET) if(indent != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.INDENT, indent); metadata.setValue(GtasksMetadata.INDENT, indent);
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
return task; return task;
} }

@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks;
import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskList;
import com.google.api.services.tasks.model.TaskLists; import com.google.api.services.tasks.model.TaskLists;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,6 +24,8 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
@Autowired private GtasksListService gtasksListService; @Autowired private GtasksListService gtasksListService;
@Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksMetadataService gtasksMetadataService;
@Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater;
@Autowired private MetadataService metadataService;
@Autowired TaskService taskService;
private Task A, B, C, D, E, F; private Task A, B, C, D, E, F;
private StoreObject list; private StoreObject list;
@ -273,14 +276,14 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
private Task createTask(String title, long order, int indent) { private Task createTask(String title, long order, int indent) {
Task task = new Task(); Task task = new Task();
task.setTitle(title); task.setTitle(title);
PluginServices.getTaskService().save(task); taskService.save(task);
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
metadata.setValue(GtasksMetadata.LIST_ID, "1"); metadata.setValue(GtasksMetadata.LIST_ID, "1");
if(order != GtasksMetadata.VALUE_UNSET) if(order != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.ORDER, order); metadata.setValue(GtasksMetadata.ORDER, order);
if(indent != GtasksMetadata.VALUE_UNSET) if(indent != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.INDENT, indent); metadata.setValue(GtasksMetadata.INDENT, indent);
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
return task; return task;
} }

@ -29,6 +29,8 @@ public class TitleParserTest extends DatabaseTestCase {
@Autowired TagService tagService; @Autowired TagService tagService;
@Autowired MetadataService metadataService;
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
@ -155,7 +157,7 @@ public class TitleParserTest extends DatabaseTestCase {
private void insertTitleAddTask(String title, Task task) { private void insertTitleAddTask(String title, Task task) {
task.clear(); task.clear();
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
} }
@ -166,7 +168,7 @@ public class TitleParserTest extends DatabaseTestCase {
String title = "Jog today"; String title = "Jog today";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
Date date = newDate(task.getDueDate()); Date date = newDate(task.getDueDate());
assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK)); assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK));
//Calendar starts 1-6, date.getDay() starts at 0 //Calendar starts 1-6, date.getDay() starts at 0
@ -174,7 +176,7 @@ public class TitleParserTest extends DatabaseTestCase {
task = new Task(); task = new Task();
title = "Jog tomorrow"; title = "Jog tomorrow";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
date = newDate(task.getDueDate()); date = newDate(task.getDueDate());
assertEquals((date.getDay()+1) % 7, (today.get(Calendar.DAY_OF_WEEK)+1) % 7); assertEquals((date.getDay()+1) % 7, (today.get(Calendar.DAY_OF_WEEK)+1) % 7);
@ -201,14 +203,14 @@ public class TitleParserTest extends DatabaseTestCase {
task = new Task(); task = new Task();
title = "Jog "+ days[i]; title = "Jog "+ days[i];
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
date = newDate(task.getDueDate()); date = newDate(task.getDueDate());
assertEquals(date.getDay(), i); assertEquals(date.getDay(), i);
task = new Task(); task = new Task();
title = "Jog "+ abrevDays[i]; title = "Jog "+ abrevDays[i];
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
date = newDate(task.getDueDate()); date = newDate(task.getDueDate());
assertEquals(date.getDay(), i); assertEquals(date.getDay(), i);
} }
@ -232,14 +234,14 @@ public class TitleParserTest extends DatabaseTestCase {
task = new Task(); task = new Task();
String title = "Jog " + acceptedString; String title = "Jog " + acceptedString;
task.setTitle(title); //test at end of task. should set importance. task.setTitle(title); //test at end of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_LEAST); assertEquals((int)task.getImportance(), Task.IMPORTANCE_LEAST);
} }
for (String acceptedString:acceptedStrings){ for (String acceptedString:acceptedStrings){
task = new Task(); task = new Task();
String title = acceptedString + " jog"; String title = acceptedString + " jog";
task.setTitle(title); //test at beginning of task. should not set importance. task.setTitle(title); //test at beginning of task. should not set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertNotSame(task.getImportance(),Task.IMPORTANCE_LEAST); assertNotSame(task.getImportance(),Task.IMPORTANCE_LEAST);
} }
} }
@ -296,25 +298,25 @@ public class TitleParserTest extends DatabaseTestCase {
task = new Task(); task = new Task();
String title = "Jog " + acceptedStringAtEnd; String title = "Jog " + acceptedStringAtEnd;
task.setTitle(title); //test at end of task. should set importance. task.setTitle(title); //test at end of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO);
task = new Task(); task = new Task();
title = acceptedStringAtEnd + " jog"; title = acceptedStringAtEnd + " jog";
task.setTitle(title); //test at beginning of task. should not set importance. task.setTitle(title); //test at beginning of task. should not set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertNotSame(task.getImportance(), Task.IMPORTANCE_MUST_DO); assertNotSame(task.getImportance(), Task.IMPORTANCE_MUST_DO);
} }
for (String acceptedStringAnywhere:acceptedStringsAnywhere){ for (String acceptedStringAnywhere:acceptedStringsAnywhere){
task = new Task(); task = new Task();
String title = "Jog " + acceptedStringAnywhere; String title = "Jog " + acceptedStringAnywhere;
task.setTitle(title); //test at end of task. should set importance. task.setTitle(title); //test at end of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO);
title = acceptedStringAnywhere + " jog"; title = acceptedStringAnywhere + " jog";
task.setTitle(title); //test at beginning of task. should set importance. task.setTitle(title); //test at beginning of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO);
} }
} }
@ -338,25 +340,25 @@ public class TitleParserTest extends DatabaseTestCase {
task = new Task(); task = new Task();
String title = "Jog " + acceptedStringAtEnd; String title = "Jog " + acceptedStringAtEnd;
task.setTitle(title); //test at end of task. should set importance. task.setTitle(title); //test at end of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE);
task = new Task(); task = new Task();
title = acceptedStringAtEnd + " jog"; title = acceptedStringAtEnd + " jog";
task.setTitle(title); //test at beginning of task. should not set importance. task.setTitle(title); //test at beginning of task. should not set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertNotSame(task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); assertNotSame(task.getImportance(), Task.IMPORTANCE_DO_OR_DIE);
} }
for (String acceptedStringAnywhere:acceptedStringsAnywhere){ for (String acceptedStringAnywhere:acceptedStringsAnywhere){
task = new Task(); task = new Task();
String title = "Jog " + acceptedStringAnywhere; String title = "Jog " + acceptedStringAnywhere;
task.setTitle(title); //test at end of task. should set importance. task.setTitle(title); //test at end of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE);
title = acceptedStringAnywhere + " jog"; title = acceptedStringAnywhere + " jog";
task.setTitle(title); //test at beginning of task. should set importance. task.setTitle(title); //test at beginning of task. should set importance.
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE);
} }
} }
@ -372,7 +374,7 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String title = "Jog daily"; String title = "Jog daily";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
RRule rrule = new RRule(); RRule rrule = new RRule();
rrule.setFreq(Frequency.DAILY); rrule.setFreq(Frequency.DAILY);
rrule.setInterval(1); rrule.setInterval(1);
@ -382,7 +384,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every day"; title = "Jog every day";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -391,7 +393,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every " + i + " days."; title = "Jog every " + i + " days.";
task.setTitle(title); task.setTitle(title);
rrule.setInterval(i); rrule.setInterval(i);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -405,7 +407,7 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String title = "Jog weekly"; String title = "Jog weekly";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
RRule rrule = new RRule(); RRule rrule = new RRule();
rrule.setFreq(Frequency.WEEKLY); rrule.setFreq(Frequency.WEEKLY);
rrule.setInterval(1); rrule.setInterval(1);
@ -415,7 +417,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every week"; title = "Jog every week";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -424,7 +426,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every " + i + " weeks"; title = "Jog every " + i + " weeks";
task.setTitle(title); task.setTitle(title);
rrule.setInterval(i); rrule.setInterval(i);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -437,7 +439,7 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String title = "Jog monthly"; String title = "Jog monthly";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
RRule rrule = new RRule(); RRule rrule = new RRule();
rrule.setFreq(Frequency.MONTHLY); rrule.setFreq(Frequency.MONTHLY);
rrule.setInterval(1); rrule.setInterval(1);
@ -447,7 +449,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every month"; title = "Jog every month";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -456,7 +458,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every " + i + " months"; title = "Jog every " + i + " months";
task.setTitle(title); task.setTitle(title);
rrule.setInterval(i); rrule.setInterval(i);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertFalse(task.hasDueTime()); assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate()); assertFalse(task.hasDueDate());
@ -468,7 +470,7 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String title = "Jog daily starting from today"; String title = "Jog daily starting from today";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
RRule rrule = new RRule(); RRule rrule = new RRule();
rrule.setFreq(Frequency.DAILY); rrule.setFreq(Frequency.DAILY);
rrule.setInterval(1); rrule.setInterval(1);
@ -479,7 +481,7 @@ public class TitleParserTest extends DatabaseTestCase {
task.clearValue(Task.UUID); task.clearValue(Task.UUID);
title = "Jog every day starting from today"; title = "Jog every day starting from today";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertTrue(task.hasDueDate()); assertTrue(task.hasDueDate());
@ -487,7 +489,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every " + i + " days starting from today"; title = "Jog every " + i + " days starting from today";
task.setTitle(title); task.setTitle(title);
rrule.setInterval(i); rrule.setInterval(i);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertTrue(task.hasDueDate()); assertTrue(task.hasDueDate());
task = new Task(); task = new Task();
@ -498,7 +500,7 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String title = "Jog weekly starting from today"; String title = "Jog weekly starting from today";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
RRule rrule = new RRule(); RRule rrule = new RRule();
rrule.setFreq(Frequency.WEEKLY); rrule.setFreq(Frequency.WEEKLY);
rrule.setInterval(1); rrule.setInterval(1);
@ -509,7 +511,7 @@ public class TitleParserTest extends DatabaseTestCase {
task.clearValue(Task.UUID); task.clearValue(Task.UUID);
title = "Jog every week starting from today"; title = "Jog every week starting from today";
task.setTitle(title); task.setTitle(title);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertTrue(task.hasDueDate()); assertTrue(task.hasDueDate());
@ -517,7 +519,7 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog every " + i + " weeks starting from today"; title = "Jog every " + i + " weeks starting from today";
task.setTitle(title); task.setTitle(title);
rrule.setInterval(i); rrule.setInterval(i);
TaskService.createWithValues(tagService, task, null, title); TaskService.createWithValues(metadataService, tagService, task, null, title);
assertEquals(task.getRecurrence(), rrule.toIcal()); assertEquals(task.getRecurrence(), rrule.toIcal());
assertTrue(task.hasDueDate()); assertTrue(task.hasDueDate());
task = new Task(); task = new Task();

@ -1,11 +1,14 @@
package com.todoroo.astrid.subtasks; package com.todoroo.astrid.subtasks;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.andlib.service.Autowired;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.TaskService;
public class SubtasksHelperTest extends SubtasksTestCase { public class SubtasksHelperTest extends SubtasksTestCase {
@Autowired TaskService taskService;
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
@ -19,7 +22,7 @@ public class SubtasksHelperTest extends SubtasksTestCase {
Task t = new Task(); Task t = new Task();
t.setTitle(title); t.setTitle(title);
t.setUuid(uuid); t.setUuid(uuid);
PluginServices.getTaskService().save(t); taskService.save(t);
} }
private void createTasks() { private void createTasks() {

@ -1,11 +1,14 @@
package com.todoroo.astrid.subtasks; package com.todoroo.astrid.subtasks;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.andlib.service.Autowired;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.TaskService;
public class SubtasksMovingTest extends SubtasksTestCase { public class SubtasksMovingTest extends SubtasksTestCase {
@Autowired TaskService taskService;
private Task A, B, C, D, E, F; private Task A, B, C, D, E, F;
// @Override // @Override
@ -37,7 +40,7 @@ public class SubtasksMovingTest extends SubtasksTestCase {
private Task createTask(String title) { private Task createTask(String title) {
Task task = new Task(); Task task = new Task();
task.setTitle(title); task.setTitle(title);
PluginServices.getTaskService().save(task); taskService.save(task);
return task; return task;
} }

@ -28,10 +28,10 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.DateChangedAlerts;
import com.todoroo.astrid.ui.QuickAddBar; import com.todoroo.astrid.ui.QuickAddBar;
@ -88,6 +88,7 @@ public class AstridActivity extends InjectingActionBarActivity
.findFragmentByTag(CommentsFragment.TAG_UPDATES_FRAGMENT); .findFragmentByTag(CommentsFragment.TAG_UPDATES_FRAGMENT);
} }
@Inject TaskService taskService;
@Inject StartupService startupService; @Inject StartupService startupService;
@Override @Override
@ -370,13 +371,12 @@ public class AstridActivity extends InjectingActionBarActivity
AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0);
long newDueDate = intent.getLongExtra( long newDueDate = intent.getLongExtra(
AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0);
Task task = PluginServices.getTaskService().fetchById(taskId, Task task = taskService.fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES);
DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES);
try { try {
boolean lastTime = AstridApiConstants.BROADCAST_EVENT_TASK_REPEAT_FINISHED.equals(intent.getAction()); boolean lastTime = AstridApiConstants.BROADCAST_EVENT_TASK_REPEAT_FINISHED.equals(intent.getAction());
DateChangedAlerts.showRepeatTaskRescheduledDialog( DateChangedAlerts.showRepeatTaskRescheduledDialog(
AstridActivity.this, task, oldDueDate, newDueDate, lastTime); taskService, AstridActivity.this, task, oldDueDate, newDueDate, lastTime);
} catch (BadTokenException e) { // Activity not running when tried to show dialog--rebroadcast } catch (BadTokenException e) { // Activity not running when tried to show dialog--rebroadcast
new Thread() { new Thread() {

@ -7,6 +7,7 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.ui.QuickAddBar; import com.todoroo.astrid.ui.QuickAddBar;
@ -22,6 +23,7 @@ public final class ShareLinkActivity extends TaskListActivity {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject TagService tagService; @Inject TagService tagService;
@Inject MetadataService metadataService;
private String subject; private String subject;
private boolean handled; private boolean handled;
@ -46,7 +48,7 @@ public final class ShareLinkActivity extends TaskListActivity {
if (!handled) { if (!handled) {
Intent callerIntent = getIntent(); Intent callerIntent = getIntent();
Task task = QuickAddBar.basicQuickAddTask(tagService, subject); Task task = QuickAddBar.basicQuickAddTask(taskService, metadataService, tagService, subject);
if (task != null) { if (task != null) {
task.setNotes(callerIntent.getStringExtra(Intent.EXTRA_TEXT)); task.setNotes(callerIntent.getStringExtra(Intent.EXTRA_TEXT));
taskService.save(task); taskService.save(task);

@ -598,7 +598,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
} catch (Exception e) { } catch (Exception e) {
// oops, can't serialize // oops, can't serialize
} }
model = TaskService.createWithValues(tagService, values, null); model = TaskService.createWithValues(taskService, metadataService, tagService, values, null);
getActivity().getIntent().putExtra(TOKEN_ID, model.getId()); getActivity().getIntent().putExtra(TOKEN_ID, model.getId());
} }
@ -783,7 +783,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
// abandon editing in this case // abandon editing in this case
if (title.getText().length() == 0 || TextUtils.isEmpty(model.getTitle())) { if (title.getText().length() == 0 || TextUtils.isEmpty(model.getTitle())) {
if (isNewTask) { if (isNewTask) {
TimerPlugin.updateTimer(getActivity(), model, false); TimerPlugin.updateTimer(taskService, getActivity(), model, false);
taskService.delete(model); taskService.delete(model);
if (getActivity() instanceof TaskListActivity) { if (getActivity() instanceof TaskListActivity) {
TaskListActivity tla = (TaskListActivity) getActivity(); TaskListActivity tla = (TaskListActivity) getActivity();
@ -804,7 +804,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
android.R.string.ok, new DialogInterface.OnClickListener() { android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
TimerPlugin.updateTimer(getActivity(), model, false); TimerPlugin.updateTimer(taskService, getActivity(), model, false);
taskService.delete(model); taskService.delete(model);
shouldSaveState = false; shouldSaveState = false;

@ -355,7 +355,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
if (TextUtils.isEmpty(defaultOrder)) { if (TextUtils.isEmpty(defaultOrder)) {
defaultOrder = "[]"; //$NON-NLS-1$ defaultOrder = "[]"; //$NON-NLS-1$
} }
defaultOrder = SubtasksHelper.convertTreeToRemoteIds(defaultOrder); defaultOrder = SubtasksHelper.convertTreeToRemoteIds(taskService, defaultOrder);
taskListMetadata = new TaskListMetadata(); taskListMetadata = new TaskListMetadata();
taskListMetadata.setFilter(filterId); taskListMetadata.setFilter(filterId);
taskListMetadata.setTaskIDs(defaultOrder); taskListMetadata.setTaskIDs(defaultOrder);
@ -918,7 +918,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
} }
} }
} }
TimerPlugin.updateTimer(ContextManager.getContext(), task, false); TimerPlugin.updateTimer(taskService, ContextManager.getContext(), task, false);
} }
public void refreshFilterCount() { public void refreshFilterCount() {
@ -998,7 +998,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
itemId = item.getGroupId(); itemId = item.getGroupId();
Task task = new Task(); Task task = new Task();
task.setId(itemId); task.setId(itemId);
TimerPlugin.updateTimer(getActivity(), task, false); TimerPlugin.updateTimer(taskService, getActivity(), task, false);
taskService.purge(itemId); taskService.purge(itemId);
loadTaskListContent(true); loadTaskListContent(true);
return true; return true;

@ -24,7 +24,6 @@ import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
@ -68,6 +67,8 @@ public class TasksXmlExporter {
// --- implementation // --- implementation
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
@Autowired MetadataService metadataService;
@Autowired TaskService taskService;
// 3 is started on Version 4.6.10 // 3 is started on Version 4.6.10
private static final int FORMAT = 3; private static final int FORMAT = 3;
@ -75,8 +76,6 @@ public class TasksXmlExporter {
private final Context context; private final Context context;
private int exportCount = 0; private int exportCount = 0;
private XmlSerializer xml; private XmlSerializer xml;
private final TaskService taskService = PluginServices.getTaskService();
private final MetadataService metadataService = PluginServices.getMetadataService();
private final ProgressDialog progressDialog; private final ProgressDialog progressDialog;
private final Handler handler; private final Handler handler;

@ -30,7 +30,6 @@ import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
@ -71,8 +70,9 @@ public class TasksXmlImporter {
// --- implementation // --- implementation
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
@Autowired TagService tagService; @Autowired TagService tagService;
@Autowired MetadataService metadataService;
@Autowired TaskService taskService;
private final Handler handler; private final Handler handler;
private int taskCount; private int taskCount;
@ -82,8 +82,6 @@ public class TasksXmlImporter {
private final String input; private final String input;
private final Context context; private final Context context;
private final TaskService taskService = PluginServices.getTaskService();
private final MetadataService metadataService = PluginServices.getMetadataService();
private final ProgressDialog progressDialog; private final ProgressDialog progressDialog;
private final Runnable runAfterImport; private final Runnable runAfterImport;

@ -155,7 +155,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
for(int i = 0; i < length; i++) { for(int i = 0; i < length; i++) {
cursor.moveToNext(); cursor.moveToNext();
task.readFromCursor(cursor); task.readFromCursor(cursor);
GCalHelper.deleteTaskEvent(task); GCalHelper.deleteTaskEvent(taskService, task);
} }
} finally { } finally {
cursor.close(); cursor.close();
@ -194,7 +194,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
for(int i = 0; i < length; i++) { for(int i = 0; i < length; i++) {
cursor.moveToNext(); cursor.moveToNext();
task.readFromCursor(cursor); task.readFromCursor(cursor);
GCalHelper.deleteTaskEvent(task); GCalHelper.deleteTaskEvent(taskService, task);
} }
} finally { } finally {
cursor.close(); cursor.close();
@ -231,7 +231,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
for(int i = 0; i < length; i++) { for(int i = 0; i < length; i++) {
cursor.moveToNext(); cursor.moveToNext();
task.readFromCursor(cursor); task.readFromCursor(cursor);
if (GCalHelper.deleteTaskEvent(task)) { if (GCalHelper.deleteTaskEvent(taskService, task)) {
deletedEventCount++; deletedEventCount++;
} }
} }
@ -273,7 +273,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
for(int i = 0; i < length; i++) { for(int i = 0; i < length; i++) {
cursor.moveToNext(); cursor.moveToNext();
task.readFromCursor(cursor); task.readFromCursor(cursor);
if (GCalHelper.deleteTaskEvent(task)) { if (GCalHelper.deleteTaskEvent(taskService, task)) {
deletedEventCount++; deletedEventCount++;
} }
} }

@ -1,59 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.core;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
/**
* Utility class for getting dependency-injected services from plugins
*
* @author Tim Su <tim@todoroo.com>
*
*/
public final class PluginServices {
@Autowired TaskService taskService;
@Autowired Database database;
@Autowired MetadataService metadataService;
private static volatile PluginServices instance;
static {
AstridDependencyInjector.initialize();
}
private PluginServices() {
DependencyInjectionService.getInstance().inject(this);
}
private static PluginServices getInstance() {
if(instance == null) {
synchronized (PluginServices.class) {
if (instance == null) {
instance = new PluginServices();
}
}
}
return instance;
}
public static TaskService getTaskService() {
getInstance().database.openForWriting();
return getInstance().taskService;
}
public static MetadataService getMetadataService() {
getInstance().database.openForWriting();
return getInstance().metadataService;
}
}

@ -27,16 +27,20 @@ import android.widget.Toast;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.Calendars.CalendarResult; import com.todoroo.astrid.gcal.Calendars.CalendarResult;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.ui.PopupControlSet;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.Injector;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import javax.inject.Inject;
/** /**
* Control Set for managing repeats * Control Set for managing repeats
* *
@ -49,6 +53,8 @@ public class GCalControlSet extends PopupControlSet {
// --- instance variables // --- instance variables
@Inject TaskService taskService;
private Uri calendarUri = null; private Uri calendarUri = null;
private final CalendarResult calendars; private final CalendarResult calendars;
@ -59,6 +65,9 @@ public class GCalControlSet extends PopupControlSet {
public GCalControlSet(final Activity activity, int viewLayout, int displayViewLayout, int title) { public GCalControlSet(final Activity activity, int viewLayout, int displayViewLayout, int title) {
super(activity, viewLayout, displayViewLayout, title); super(activity, viewLayout, displayViewLayout, title);
((Injector)activity.getApplication()).inject(this);
this.title = title; this.title = title;
calendars = Calendars.getCalendars(); calendars = Calendars.getCalendars();
getView(); // Hack to force initialized getView(); // Hack to force initialized
@ -97,7 +106,7 @@ public class GCalControlSet extends PopupControlSet {
@Override @Override
protected void readFromTaskOnInitialize() { protected void readFromTaskOnInitialize() {
String uri = GCalHelper.getTaskEventUri(model); String uri = GCalHelper.getTaskEventUri(taskService, model);
if(!TextUtils.isEmpty(uri)) { if(!TextUtils.isEmpty(uri)) {
try { try {
calendarUri = Uri.parse(uri); calendarUri = Uri.parse(uri);
@ -151,7 +160,7 @@ public class GCalControlSet extends PopupControlSet {
String calendarId = calendars.calendarIds[calendarSelector.getSelectedItemPosition() - 1]; String calendarId = calendars.calendarIds[calendarSelector.getSelectedItemPosition() - 1];
values.put("calendar_id", calendarId); values.put("calendar_id", calendarId);
calendarUri = GCalHelper.createTaskEvent(task, cr, values); calendarUri = GCalHelper.createTaskEvent(taskService, task, cr, values);
if(calendarUri != null) { if(calendarUri != null) {
task.setCalendarUri(calendarUri.toString()); task.setCalendarUri(calendarUri.toString());

@ -18,8 +18,8 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
@ -31,12 +31,12 @@ public class GCalHelper {
public static final String CALENDAR_ID_COLUMN = "calendar_id"; //$NON-NLS-1$ public static final String CALENDAR_ID_COLUMN = "calendar_id"; //$NON-NLS-1$
public static String getTaskEventUri(Task task) { public static String getTaskEventUri(TaskService taskService, Task task) {
String uri; String uri;
if (!TextUtils.isEmpty(task.getCalendarURI())) { if (!TextUtils.isEmpty(task.getCalendarURI())) {
uri = task.getCalendarURI(); uri = task.getCalendarURI();
} else { } else {
task = PluginServices.getTaskService().fetchById(task.getId(), Task.CALENDAR_URI); task = taskService.fetchById(task.getId(), Task.CALENDAR_URI);
if(task == null) { if(task == null) {
return null; return null;
} }
@ -46,34 +46,34 @@ public class GCalHelper {
return uri; return uri;
} }
public static void createTaskEventIfEnabled(Task t) { public static void createTaskEventIfEnabled(TaskService taskService, Task t) {
if (!t.hasDueDate()) { if (!t.hasDueDate()) {
return; return;
} }
createTaskEventIfEnabled(t, true); createTaskEventIfEnabled(taskService, t, true);
} }
private static void createTaskEventIfEnabled(Task t, boolean deleteEventIfExists) { private static void createTaskEventIfEnabled(TaskService taskService, Task t, boolean deleteEventIfExists) {
boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null
&& !Preferences.getStringValue(R.string.gcal_p_default).equals("-1"); //$NON-NLS-1$ && !Preferences.getStringValue(R.string.gcal_p_default).equals("-1"); //$NON-NLS-1$
if (gcalCreateEventEnabled) { if (gcalCreateEventEnabled) {
ContentResolver cr = ContextManager.getContext().getContentResolver(); ContentResolver cr = ContextManager.getContext().getContentResolver();
Uri calendarUri = GCalHelper.createTaskEvent(t, cr, new ContentValues(), deleteEventIfExists); Uri calendarUri = GCalHelper.createTaskEvent(taskService, t, cr, new ContentValues(), deleteEventIfExists);
if (calendarUri != null) { if (calendarUri != null) {
t.setCalendarUri(calendarUri.toString()); t.setCalendarUri(calendarUri.toString());
} }
} }
} }
public static Uri createTaskEvent(Task task, ContentResolver cr, ContentValues values) { public static Uri createTaskEvent(TaskService taskService, Task task, ContentResolver cr, ContentValues values) {
return createTaskEvent(task, cr, values, true); return createTaskEvent(taskService, task, cr, values, true);
} }
public static Uri createTaskEvent(Task task, ContentResolver cr, ContentValues values, boolean deleteEventIfExists) { public static Uri createTaskEvent(TaskService taskService, Task task, ContentResolver cr, ContentValues values, boolean deleteEventIfExists) {
String eventuri = getTaskEventUri(task); String eventuri = getTaskEventUri(taskService, task);
if(!TextUtils.isEmpty(eventuri) && deleteEventIfExists) { if(!TextUtils.isEmpty(eventuri) && deleteEventIfExists) {
deleteTaskEvent(task); deleteTaskEvent(taskService, task);
} }
try{ try{
@ -110,8 +110,8 @@ public class GCalHelper {
return null; return null;
} }
public static void rescheduleRepeatingTask(Task task, ContentResolver cr) { public static void rescheduleRepeatingTask(TaskService taskService, Task task, ContentResolver cr) {
String taskUri = getTaskEventUri(task); String taskUri = getTaskEventUri(taskService, task);
if (TextUtils.isEmpty(taskUri)) { if (TextUtils.isEmpty(taskUri)) {
return; return;
} }
@ -125,7 +125,7 @@ public class GCalHelper {
ContentValues cv = new ContentValues(); ContentValues cv = new ContentValues();
cv.put(CALENDAR_ID_COLUMN, calendarId); cv.put(CALENDAR_ID_COLUMN, calendarId);
Uri uri = createTaskEvent(task, cr, cv, false); Uri uri = createTaskEvent(taskService, task, cr, cv, false);
task.setCalendarUri(uri.toString()); task.setCalendarUri(uri.toString());
} }
@ -141,13 +141,13 @@ public class GCalHelper {
} }
} }
public static boolean deleteTaskEvent(Task task) { public static boolean deleteTaskEvent(TaskService taskService, Task task) {
boolean eventDeleted = false; boolean eventDeleted = false;
String uri; String uri;
if(task.containsNonNullValue(Task.CALENDAR_URI)) { if(task.containsNonNullValue(Task.CALENDAR_URI)) {
uri = task.getCalendarURI(); uri = task.getCalendarURI();
} else { } else {
task = PluginServices.getTaskService().fetchById(task.getId(), Task.CALENDAR_URI); task = taskService.fetchById(task.getId(), Task.CALENDAR_URI);
if(task == null) { if(task == null) {
return false; return false;
} }

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.gcal; package com.todoroo.astrid.gcal;
import android.content.BroadcastReceiver;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
@ -16,22 +15,29 @@ import android.util.Log;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingBroadcastReceiver;
public class GCalTaskCompleteListener extends BroadcastReceiver { import javax.inject.Inject;
public class GCalTaskCompleteListener extends InjectingBroadcastReceiver {
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context); ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) { if(taskId == -1) {
return; return;
} }
Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TITLE, Task.CALENDAR_URI); Task task = taskService.fetchById(taskId, Task.ID, Task.TITLE, Task.CALENDAR_URI);
if(task == null) { if(task == null) {
return; return;
} }

@ -14,7 +14,6 @@ import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
@ -22,6 +21,7 @@ import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gtasks.sync.GtasksTaskContainer; import com.todoroo.astrid.gtasks.sync.GtasksTaskContainer;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.OrderedListIterator; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.OrderedListIterator;
import com.todoroo.astrid.sync.SyncProviderUtilities; import com.todoroo.astrid.sync.SyncProviderUtilities;
import com.todoroo.astrid.utility.SyncMetadataService; import com.todoroo.astrid.utility.SyncMetadataService;
@ -44,11 +44,13 @@ import javax.inject.Singleton;
public final class GtasksMetadataService extends SyncMetadataService<GtasksTaskContainer> { public final class GtasksMetadataService extends SyncMetadataService<GtasksTaskContainer> {
private final GtasksPreferenceService gtasksPreferenceService; private final GtasksPreferenceService gtasksPreferenceService;
private MetadataService metadataService;
@Inject @Inject
public GtasksMetadataService(GtasksPreferenceService gtasksPreferenceService, TaskDao taskDao, MetadataDao metadataDao) { public GtasksMetadataService(GtasksPreferenceService gtasksPreferenceService, TaskDao taskDao, MetadataDao metadataDao, MetadataService metadataService) {
super(taskDao, metadataDao); super(taskDao, metadataDao);
this.gtasksPreferenceService = gtasksPreferenceService; this.gtasksPreferenceService = gtasksPreferenceService;
this.metadataService = metadataService;
} }
public Criterion getLocalMatchCriteria(GtasksTaskContainer remoteTask) { public Criterion getLocalMatchCriteria(GtasksTaskContainer remoteTask) {
@ -147,7 +149,7 @@ public final class GtasksMetadataService extends SyncMetadataService<GtasksTaskC
GtasksMetadata.LIST_ID.eq(listId), GtasksMetadata.LIST_ID.eq(listId),
startAtCriterion)). startAtCriterion)).
orderBy(order); orderBy(order);
TodorooCursor<Metadata> cursor = PluginServices.getMetadataService().query(query); TodorooCursor<Metadata> cursor = metadataService.query(query);
try { try {
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long taskId = cursor.get(Metadata.TASK); long taskId = cursor.get(Metadata.TASK);

@ -15,12 +15,12 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gtasks.sync.GtasksSyncService; import com.todoroo.astrid.gtasks.sync.GtasksSyncService;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater;
import java.util.HashMap; import java.util.HashMap;
@ -47,13 +47,16 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<StoreObjec
private final GtasksMetadataService gtasksMetadataService; private final GtasksMetadataService gtasksMetadataService;
private final GtasksSyncService gtasksSyncService; private final GtasksSyncService gtasksSyncService;
private final MetadataDao metadataDao; private final MetadataDao metadataDao;
private final MetadataService metadataService;
@Inject @Inject
public GtasksTaskListUpdater(GtasksListService gtasksListService, GtasksMetadataService gtasksMetadataService, GtasksSyncService gtasksSyncService, MetadataDao metadataDao) { public GtasksTaskListUpdater(GtasksListService gtasksListService, GtasksMetadataService gtasksMetadataService, GtasksSyncService gtasksSyncService, MetadataDao metadataDao, MetadataService metadataService) {
super(metadataService);
this.gtasksListService = gtasksListService; this.gtasksListService = gtasksListService;
this.gtasksMetadataService = gtasksMetadataService; this.gtasksMetadataService = gtasksMetadataService;
this.gtasksSyncService = gtasksSyncService; this.gtasksSyncService = gtasksSyncService;
this.metadataDao = metadataDao; this.metadataDao = metadataDao;
this.metadataService = metadataService;
} }
// --- overrides // --- overrides
@ -140,7 +143,7 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<StoreObjec
} }
metadata.setValue(GtasksMetadata.PARENT_TASK, parent); metadata.setValue(GtasksMetadata.PARENT_TASK, parent);
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
previousIndent.set(indent); previousIndent.set(indent);
} }
}); });

@ -16,7 +16,6 @@ import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
@ -349,7 +348,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
// merge astrid dates with google dates // merge astrid dates with google dates
if(task.task.isSaved()) { if(task.task.isSaved()) {
Task local = PluginServices.getTaskService().fetchById(task.task.getId(), Task.DUE_DATE, Task.COMPLETION_DATE); Task local = taskService.fetchById(task.task.getId(), Task.DUE_DATE, Task.COMPLETION_DATE);
if (local == null) { if (local == null) {
task.task.clearValue(Task.ID); task.task.clearValue(Task.ID);
task.task.clearValue(Task.UUID); task.task.clearValue(Task.UUID);

@ -43,7 +43,6 @@ import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.adapter.UpdateAdapter;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
@ -137,7 +136,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
} }
private void fetchTask(long id) { private void fetchTask(long id) {
task = PluginServices.getTaskService().fetchById(id, Task.NOTES, Task.ID, Task.UUID, Task.TITLE, Task.USER_ACTIVITIES_PUSHED_AT, Task.ATTACHMENTS_PUSHED_AT); task = taskService.fetchById(id, Task.NOTES, Task.ID, Task.UUID, Task.TITLE, Task.USER_ACTIVITIES_PUSHED_AT, Task.ATTACHMENTS_PUSHED_AT);
} }
public void loadViewForTaskID(long t){ public void loadViewForTaskID(long t){

@ -6,7 +6,6 @@
package com.todoroo.astrid.notes; package com.todoroo.astrid.notes;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
@ -16,12 +15,16 @@ import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
/** /**
* Exposes Task Detail for notes * Exposes Task Detail for notes
@ -29,12 +32,17 @@ import org.tasks.R;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class NotesDetailExposer extends BroadcastReceiver { public class NotesDetailExposer extends InjectingBroadcastReceiver {
private static final int NOTE_MAX = 200; private static final int NOTE_MAX = 200;
@Inject MetadataService metadataService;
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// get tags associated with this task // get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) { if(taskId == -1) {
@ -54,12 +62,12 @@ public class NotesDetailExposer extends BroadcastReceiver {
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
} }
public String getTaskDetails(long id) { private String getTaskDetails(long id) {
if(!Preferences.getBoolean(R.string.p_showNotes, false)) { if(!Preferences.getBoolean(R.string.p_showNotes, false)) {
return null; return null;
} }
Task task = PluginServices.getTaskService().fetchById(id, Task.ID, Task.NOTES); Task task = taskService.fetchById(id, Task.ID, Task.NOTES);
if(task == null) { if(task == null) {
return null; return null;
} }
@ -75,7 +83,7 @@ public class NotesDetailExposer extends BroadcastReceiver {
notesBuilder.append(notes); notesBuilder.append(notes);
} }
TodorooCursor<Metadata> cursor = PluginServices.getMetadataService().query( TodorooCursor<Metadata> cursor = metadataService.query(
Query.select(Metadata.PROPERTIES).where( Query.select(Metadata.PROPERTIES).where(
MetadataCriteria.byTaskAndwithKey(task.getId(), MetadataCriteria.byTaskAndwithKey(task.getId(),
NoteMetadata.METADATA_KEY)).orderBy(Order.asc(Metadata.CREATION_DATE))); NoteMetadata.METADATA_KEY)).orderBy(Order.asc(Metadata.CREATION_DATE)));

@ -17,7 +17,6 @@ import android.widget.Toast;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
@ -45,7 +44,7 @@ public class ReminderDialog extends Dialog {
Task task = new Task(); Task task = new Task();
task.setId(taskId); task.setId(taskId);
task.setReminderSnooze(time); task.setReminderSnooze(time);
PluginServices.getTaskService().save(task); taskService.save(task);
dismiss(); dismiss();
} }
}; };

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.repeats; package com.todoroo.astrid.repeats;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
@ -14,25 +13,32 @@ import com.google.ical.values.Frequency;
import com.google.ical.values.RRule; import com.google.ical.values.RRule;
import com.google.ical.values.WeekdayNum; import com.google.ical.values.WeekdayNum;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingBroadcastReceiver;
import java.text.DateFormatSymbols; import java.text.DateFormatSymbols;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
import javax.inject.Inject;
/** /**
* Exposes Task Detail for repeats, i.e. "Repeats every 2 days" * Exposes Task Detail for repeats, i.e. "Repeats every 2 days"
* *
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class RepeatDetailExposer extends BroadcastReceiver { public class RepeatDetailExposer extends InjectingBroadcastReceiver {
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// get tags associated with this task // get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) { if(taskId == -1) {
@ -53,7 +59,7 @@ public class RepeatDetailExposer extends BroadcastReceiver {
} }
public String getTaskDetails(Context context, long id) { public String getTaskDetails(Context context, long id) {
Task task = PluginServices.getTaskService().fetchById(id, Task.RECURRENCE); Task task = taskService.fetchById(id, Task.RECURRENCE);
if(task == null) { if(task == null) {
return null; return null;
} }

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.repeats; package com.todoroo.astrid.repeats;
import android.content.BroadcastReceiver;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -22,12 +21,13 @@ import com.google.ical.values.WeekdayNum;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
import org.tasks.injection.InjectingBroadcastReceiver;
import java.text.ParseException; import java.text.ParseException;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
@ -36,22 +36,28 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateUtc; import static org.tasks.date.DateTimeUtils.newDateUtc;
public class RepeatTaskCompleteListener extends BroadcastReceiver { public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
private static final String TAG = "RepeatTaskCompleteListener"; private static final String TAG = "RepeatTaskCompleteListener";
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context); ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) { if(taskId == -1) {
return; return;
} }
Task task = PluginServices.getTaskService().fetchById(taskId, Task.PROPERTIES); Task task = taskService.fetchById(taskId, Task.PROPERTIES);
if(task == null || !task.isCompleted()) { if(task == null || !task.isCompleted()) {
return; return;
} }
@ -84,7 +90,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
return; return;
} }
rescheduleTask(task, newDueDate); rescheduleTask(taskService, task, newDueDate);
// send a broadcast // send a broadcast
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_REPEATED); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_REPEATED);
@ -96,7 +102,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
} }
} }
public static void rescheduleTask(Task task, long newDueDate) { public static void rescheduleTask(TaskService taskService, Task task, long newDueDate) {
long hideUntil = task.getHideUntil(); long hideUntil = task.getHideUntil();
if(hideUntil > 0 && task.getDueDate() > 0) { if(hideUntil > 0 && task.getDueDate() > 0) {
hideUntil += newDueDate - task.getDueDate(); hideUntil += newDueDate - task.getDueDate();
@ -108,8 +114,8 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
task.putTransitory(TaskService.TRANS_REPEAT_COMPLETE, true); task.putTransitory(TaskService.TRANS_REPEAT_COMPLETE, true);
ContentResolver cr = ContextManager.getContext().getContentResolver(); ContentResolver cr = ContextManager.getContext().getContentResolver();
GCalHelper.rescheduleRepeatingTask(task, cr); GCalHelper.rescheduleRepeatingTask(taskService, task, cr);
PluginServices.getTaskService().save(task); taskService.save(task);
} }
/** Compute next due date */ /** Compute next due date */

@ -32,7 +32,6 @@ import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.backup.BackupConstants; import com.todoroo.astrid.backup.BackupConstants;
import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
@ -76,18 +75,20 @@ public class StartupService {
private final Database database; private final Database database;
private final GtasksPreferenceService gtasksPreferenceService; private final GtasksPreferenceService gtasksPreferenceService;
private final GtasksSyncService gtasksSyncService; private final GtasksSyncService gtasksSyncService;
private MetadataService metadataService;
@Inject @Inject
public StartupService(UpgradeService upgradeService, TaskService taskService, public StartupService(UpgradeService upgradeService, TaskService taskService,
TagDataDao tagDataDao, Database database, TagDataDao tagDataDao, Database database,
GtasksPreferenceService gtasksPreferenceService, GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService) { GtasksSyncService gtasksSyncService, MetadataService metadataService) {
this.upgradeService = upgradeService; this.upgradeService = upgradeService;
this.taskService = taskService; this.taskService = taskService;
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
this.database = database; this.database = database;
this.gtasksPreferenceService = gtasksPreferenceService; this.gtasksPreferenceService = gtasksPreferenceService;
this.gtasksSyncService = gtasksSyncService; this.gtasksSyncService = gtasksSyncService;
this.metadataService = metadataService;
} }
/** /**
@ -210,7 +211,7 @@ public class StartupService {
if (values != null) { if (values != null) {
if (values.containsKey(TagData.NAME.name)) { if (values.containsKey(TagData.NAME.name)) {
m.setValue(TaskToTagMetadata.TAG_NAME, model.getName()); m.setValue(TaskToTagMetadata.TAG_NAME, model.getName());
PluginServices.getMetadataService().update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), metadataService.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_UUID.eq(model.getUUID())), m); TaskToTagMetadata.TAG_UUID.eq(model.getUUID())), m);
} }
} }

@ -21,7 +21,6 @@ import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.adapter.UpdateAdapter;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.PermaSql; import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
@ -82,7 +81,9 @@ public class TaskService {
private final TagService tagService; private final TagService tagService;
@Inject @Inject
public TaskService(TaskDao taskDao, MetadataDao metadataDao, UserActivityDao userActivityDao, Broadcaster broadcaster, FilterCounter filterCounter, RefreshScheduler refreshScheduler, TagService tagService) { public TaskService(TaskDao taskDao, MetadataDao metadataDao, UserActivityDao userActivityDao,
Broadcaster broadcaster, FilterCounter filterCounter,
RefreshScheduler refreshScheduler, TagService tagService) {
this.taskDao = taskDao; this.taskDao = taskDao;
this.metadataDao = metadataDao; this.metadataDao = metadataDao;
this.userActivityDao = userActivityDao; this.userActivityDao = userActivityDao;
@ -192,7 +193,7 @@ public class TaskService {
long id = item.getId(); long id = item.getId();
item.clear(); item.clear();
item.setId(id); item.setId(id);
GCalHelper.deleteTaskEvent(item); GCalHelper.deleteTaskEvent(this, item);
item.setDeletionDate(DateUtilities.now()); item.setDeletionDate(DateUtilities.now());
save(item); save(item);
} }
@ -379,7 +380,7 @@ public class TaskService {
clone.setCompletionDate(0L); clone.setCompletionDate(0L);
clone.setDeletionDate(0L); clone.setDeletionDate(0L);
clone.setCalendarUri(""); //$NON-NLS-1$ clone.setCalendarUri(""); //$NON-NLS-1$
GCalHelper.createTaskEventIfEnabled(clone); GCalHelper.createTaskEventIfEnabled(this, clone);
save(clone); save(clone);
return clone.getId(); return clone.getId();
@ -389,16 +390,16 @@ public class TaskService {
* Create task from the given content values, saving it. This version * Create task from the given content values, saving it. This version
* doesn't need to start with a base task model. * doesn't need to start with a base task model.
*/ */
public static Task createWithValues(TagService tagService, ContentValues values, String title) { public static Task createWithValues(TaskService taskService, MetadataService metadataService, TagService tagService, ContentValues values, String title) {
Task task = new Task(); Task task = new Task();
return createWithValues(tagService, task, values, title); return createWithValues(taskService, metadataService, tagService, task, values, title);
} }
/** /**
* Create task from the given content values, saving it. * Create task from the given content values, saving it.
* @param task base task to start with * @param task base task to start with
*/ */
public static Task createWithValues(TagService tagService, Task task, ContentValues values, String title) { public static Task createWithValues(TaskService taskService, MetadataService metadataService, TagService tagService, Task task, ContentValues values, String title) {
if (title != null) { if (title != null) {
task.setTitle(title); task.setTitle(title);
} }
@ -438,7 +439,7 @@ public class TaskService {
task.putTransitory(TRANS_ASSIGNED, true); task.putTransitory(TRANS_ASSIGNED, true);
} }
PluginServices.getTaskService().quickAdd(task, tags); taskService.quickAdd(task, tags);
if (quickAddMarkup) { if (quickAddMarkup) {
task.putTransitory(TRANS_QUICK_ADD_MARKUP, true); task.putTransitory(TRANS_QUICK_ADD_MARKUP, true);
} }
@ -456,7 +457,7 @@ public class TaskService {
tagService.createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME)); tagService.createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME));
} }
} else { } else {
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
} }
} }

@ -7,9 +7,9 @@ package com.todoroo.astrid.subtasks;
import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@ -19,6 +19,8 @@ import java.util.concurrent.atomic.AtomicReference;
abstract public class OrderedMetadataListUpdater<LIST> { abstract public class OrderedMetadataListUpdater<LIST> {
private MetadataService metadataService;
public interface OrderedListIterator { public interface OrderedListIterator {
public void processTask(long taskId, Metadata metadata); public void processTask(long taskId, Metadata metadata);
} }
@ -37,6 +39,10 @@ abstract public class OrderedMetadataListUpdater<LIST> {
abstract protected Metadata createEmptyMetadata(LIST list, long taskId); abstract protected Metadata createEmptyMetadata(LIST list, long taskId);
public OrderedMetadataListUpdater(MetadataService metadataService) {
this.metadataService = metadataService;
}
protected void beforeIndent(LIST list) { protected void beforeIndent(LIST list) {
// //
} }
@ -285,7 +291,7 @@ abstract public class OrderedMetadataListUpdater<LIST> {
if(metadata.getSetValues().size() == 0) { if(metadata.getSetValues().size() == 0) {
return; return;
} }
PluginServices.getMetadataService().save(metadata); metadataService.save(metadata);
} }
// --- task cascading operations // --- task cascading operations

@ -13,7 +13,6 @@ import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.TaskListMetadataDao; import com.todoroo.astrid.dao.TaskListMetadataDao;
@ -22,6 +21,7 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.AstridOrderedListUpdater.Node; import com.todoroo.astrid.subtasks.AstridOrderedListUpdater.Node;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
@ -60,7 +60,7 @@ public class SubtasksHelper {
return false; return false;
} }
public static String applySubtasksToWidgetFilter(TagDataService tagDataService, TaskListMetadataDao tlmd, Filter filter, String query, String tagName, int limit) { public static String applySubtasksToWidgetFilter(TaskService taskService, TagDataService tagDataService, TaskListMetadataDao tlmd, Filter filter, String query, String tagName, int limit) {
if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
// care for manual ordering // care for manual ordering
TagData tagData = tagDataService.getTagByName(tagName, TagData.UUID, TagData.TAG_ORDERING); TagData tagData = tagDataService.getTagByName(tagName, TagData.UUID, TagData.TAG_ORDERING);
@ -76,7 +76,7 @@ public class SubtasksHelper {
query = query.replaceAll("ORDER BY .*", ""); query = query.replaceAll("ORDER BY .*", "");
query = query + String.format(" ORDER BY %s, %s, %s, %s", query = query + String.format(" ORDER BY %s, %s, %s, %s",
Task.DELETION_DATE, Task.COMPLETION_DATE, Task.DELETION_DATE, Task.COMPLETION_DATE,
getOrderString(tagData, tlm), Task.CREATION_DATE); getOrderString(taskService, tagData, tlm), Task.CREATION_DATE);
if (limit > 0) { if (limit > 0) {
query = query + " LIMIT " + limit; query = query + " LIMIT " + limit;
} }
@ -88,12 +88,12 @@ public class SubtasksHelper {
return query; return query;
} }
private static String getOrderString(TagData tagData, TaskListMetadata tlm) { private static String getOrderString(TaskService taskService, TagData tagData, TaskListMetadata tlm) {
String serialized; String serialized;
if (tlm != null) { if (tlm != null) {
serialized = tlm.getTaskIDs(); serialized = tlm.getTaskIDs();
} else if (tagData != null) { } else if (tagData != null) {
serialized = convertTreeToRemoteIds(tagData.getTagOrdering()); serialized = convertTreeToRemoteIds(taskService, tagData.getTagOrdering());
} else { } else {
serialized = "[]"; //$NON-NLS-1$ serialized = "[]"; //$NON-NLS-1$
} }
@ -131,9 +131,9 @@ public class SubtasksHelper {
/** /**
* Takes a subtasks string containing local ids and remaps it to one containing UUIDs * Takes a subtasks string containing local ids and remaps it to one containing UUIDs
*/ */
public static String convertTreeToRemoteIds(String localTree) { public static String convertTreeToRemoteIds(TaskService taskService, String localTree) {
Long[] localIds = getIdArray(localTree); Long[] localIds = getIdArray(localTree);
HashMap<Long, String> idMap = getIdMap(localIds, Task.ID, Task.UUID); HashMap<Long, String> idMap = getIdMap(taskService, localIds, Task.ID, Task.UUID);
idMap.put(-1L, "-1"); //$NON-NLS-1$ idMap.put(-1L, "-1"); //$NON-NLS-1$
Node tree = AstridOrderedListUpdater.buildTreeModel(localTree, null); Node tree = AstridOrderedListUpdater.buildTreeModel(localTree, null);
@ -175,9 +175,9 @@ public class SubtasksHelper {
}); });
} }
private static <A, B> HashMap<A, B> getIdMap(A[] keys, Property<A> keyProperty, Property<B> valueProperty) { private static <A, B> HashMap<A, B> getIdMap(TaskService taskService, A[] keys, Property<A> keyProperty, Property<B> valueProperty) {
HashMap<A, B> map = new HashMap<>(); HashMap<A, B> map = new HashMap<>();
TodorooCursor<Task> tasks = PluginServices.getTaskService().query(Query.select(keyProperty, valueProperty).where(keyProperty.in(keys))); TodorooCursor<Task> tasks = taskService.query(Query.select(keyProperty, valueProperty).where(keyProperty.in(keys)));
try { try {
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
A key = tasks.get(keyProperty); A key = tasks.get(keyProperty);

@ -23,7 +23,6 @@ import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
@ -61,12 +60,14 @@ public final class TagService {
}; };
private final MetadataDao metadataDao; private final MetadataDao metadataDao;
private final MetadataService metadataService;
private final TagDataService tagDataService; private final TagDataService tagDataService;
private final TagDataDao tagDataDao; private final TagDataDao tagDataDao;
@Inject @Inject
public TagService(MetadataDao metadataDao, TagDataService tagDataService, TagDataDao tagDataDao) { public TagService(MetadataDao metadataDao, MetadataService metadataService, TagDataService tagDataService, TagDataDao tagDataDao) {
this.metadataDao = metadataDao; this.metadataDao = metadataDao;
this.metadataService = metadataService;
this.tagDataService = tagDataService; this.tagDataService = tagDataService;
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
} }
@ -342,9 +343,8 @@ public final class TagService {
* given tag, return that. Otherwise, return the argument * given tag, return that. Otherwise, return the argument
*/ */
public String getTagWithCase(String tag) { public String getTagWithCase(String tag) {
MetadataService service = PluginServices.getMetadataService();
String tagWithCase = tag; String tagWithCase = tag;
TodorooCursor<Metadata> tagMetadata = service.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); TodorooCursor<Metadata> tagMetadata = metadataService.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1));
try { try {
if (tagMetadata.getCount() > 0) { if (tagMetadata.getCount() > 0) {
tagMetadata.moveToFirst(); tagMetadata.moveToFirst();

@ -18,14 +18,20 @@ import android.widget.LinearLayout;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSet; import com.todoroo.astrid.helper.TaskEditControlSet;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.Injector;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
public class TimerActionControlSet extends TaskEditControlSet { public class TimerActionControlSet extends TaskEditControlSet {
@Inject TaskService taskService;
private final ImageView timerButton; private final ImageView timerButton;
private final Chronometer chronometer; private final Chronometer chronometer;
private boolean timerActive; private boolean timerActive;
@ -33,20 +39,23 @@ public class TimerActionControlSet extends TaskEditControlSet {
public TimerActionControlSet(final Activity activity, View parent) { public TimerActionControlSet(final Activity activity, View parent) {
super(activity, -1); super(activity, -1);
((Injector) activity.getApplication()).inject(this);
LinearLayout timerContainer = (LinearLayout) parent.findViewById(R.id.timer_container); LinearLayout timerContainer = (LinearLayout) parent.findViewById(R.id.timer_container);
timerButton = (ImageView) parent.findViewById(R.id.timer_button); timerButton = (ImageView) parent.findViewById(R.id.timer_button);
OnClickListener timerListener = new OnClickListener() { OnClickListener timerListener = new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (timerActive) { if (timerActive) {
TimerPlugin.updateTimer(activity, model, false); TimerPlugin.updateTimer(taskService, activity, model, false);
for (TimerActionListener listener : listeners) { for (TimerActionListener listener : listeners) {
listener.timerStopped(model); listener.timerStopped(model);
} }
chronometer.stop(); chronometer.stop();
} else { } else {
TimerPlugin.updateTimer(activity, model, true); TimerPlugin.updateTimer(taskService, activity, model, true);
for (TimerActionListener listener : listeners) { for (TimerActionListener listener : listeners) {
listener.timerStarted(model); listener.timerStarted(model);
} }

@ -20,10 +20,13 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer; import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.Injector;
import javax.inject.Inject;
/** /**
* Exposes "working on" filter to the {@link FilterListFragment} * Exposes "working on" filter to the {@link FilterListFragment}
@ -33,6 +36,8 @@ import org.tasks.R;
*/ */
public final class TimerFilterExposer extends BroadcastReceiver implements AstridFilterExposer { public final class TimerFilterExposer extends BroadcastReceiver implements AstridFilterExposer {
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context); ContextManager.setContext(context);
@ -44,7 +49,10 @@ public final class TimerFilterExposer extends BroadcastReceiver implements Astri
} }
private FilterListItem[] prepareFilters(Context context) { private FilterListItem[] prepareFilters(Context context) {
if(PluginServices.getTaskService().count(Query.select(Task.ID). // TODO: get rid of this
((Injector) context.getApplicationContext()).inject(this);
if(taskService.count(Query.select(Task.ID).
where(Task.TIMER_START.gt(0))) == 0) { where(Task.TIMER_START.gt(0))) == 0) {
return null; return null;
} }
@ -77,5 +85,4 @@ public final class TimerFilterExposer extends BroadcastReceiver implements Astri
return prepareFilters(ContextManager.getContext()); return prepareFilters(ContextManager.getContext());
} }
} }

@ -21,8 +21,8 @@ import com.todoroo.astrid.activity.ShortcutActivity;
import com.todoroo.astrid.api.Addon; import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import org.tasks.R; import org.tasks.R;
@ -46,11 +46,11 @@ public class TimerPlugin extends BroadcastReceiver {
* toggles timer and updates elapsed time. * toggles timer and updates elapsed time.
* @param start if true, start timer. else, stop it * @param start if true, start timer. else, stop it
*/ */
public static void updateTimer(Context context, Task task, boolean start) { public static void updateTimer(TaskService taskService, Context context, Task task, boolean start) {
// if this call comes from tasklist, then we need to fill in the gaps to handle this correctly // if this call comes from tasklist, then we need to fill in the gaps to handle this correctly
// this is needed just for stopping a task // this is needed just for stopping a task
if (!task.containsNonNullValue(Task.TIMER_START)) { if (!task.containsNonNullValue(Task.TIMER_START)) {
task = PluginServices.getTaskService().fetchById(task.getId(), Task.ID, Task.TIMER_START, Task.ELAPSED_SECONDS); task = taskService.fetchById(task.getId(), Task.ID, Task.TIMER_START, Task.ELAPSED_SECONDS);
} }
if (task == null) { if (task == null) {
return; return;
@ -68,16 +68,16 @@ public class TimerPlugin extends BroadcastReceiver {
task.getElapsedSeconds() + newElapsed); task.getElapsedSeconds() + newElapsed);
} }
} }
PluginServices.getTaskService().save(task); taskService.save(task);
// update notification // update notification
TimerPlugin.updateNotifications(context); TimerPlugin.updateNotifications(taskService, context);
} }
private static void updateNotifications(Context context) { private static void updateNotifications(TaskService taskService, Context context) {
NotificationManager nm = new AndroidNotificationManager(context); NotificationManager nm = new AndroidNotificationManager(context);
int count = PluginServices.getTaskService().count(Query.select(Task.ID). int count = taskService.count(Query.select(Task.ID).
where(Task.TIMER_START.gt(0))); where(Task.TIMER_START.gt(0)));
if(count == 0) { if(count == 0) {
nm.cancel(Constants.NOTIFICATION_TIMER); nm.cancel(Constants.NOTIFICATION_TIMER);

@ -5,32 +5,39 @@
*/ */
package com.todoroo.astrid.timers; package com.todoroo.astrid.timers;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
public class TimerTaskCompleteListener extends BroadcastReceiver { import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
public class TimerTaskCompleteListener extends InjectingBroadcastReceiver {
@Inject TaskService taskService;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context); ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) { if(taskId == -1) {
return; return;
} }
Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.ELAPSED_SECONDS, Task task = taskService.fetchById(taskId, Task.ID, Task.ELAPSED_SECONDS,
Task.TIMER_START); Task.TIMER_START);
if(task == null || task.getTimerStart() == 0) { if(task == null || task.getTimerStart() == 0) {
return; return;
} }
TimerPlugin.updateTimer(context, task, false); TimerPlugin.updateTimer(taskService, context, task, false);
} }
} }

@ -28,9 +28,9 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.repeats.RepeatTaskCompleteListener; import com.todoroo.astrid.repeats.RepeatTaskCompleteListener;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener; import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -129,7 +129,7 @@ public class DateChangedAlerts {
Task.REPEAT_UNTIL Task.REPEAT_UNTIL
}; };
public static void showRepeatTaskRescheduledDialog(final AstridActivity activity, final Task task, public static void showRepeatTaskRescheduledDialog(final TaskService taskService, final AstridActivity activity, final Task task,
final long oldDueDate, final long newDueDate, final boolean lastTime) { final long oldDueDate, final long newDueDate, final boolean lastTime) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) { if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return; return;
@ -157,7 +157,7 @@ public class DateChangedAlerts {
public void onDateAndTimeSelected(long date) { public void onDateAndTimeSelected(long date) {
d.dismiss(); d.dismiss();
task.setRepeatUntil(date); task.setRepeatUntil(date);
RepeatTaskCompleteListener.rescheduleTask(task, newDueDate); RepeatTaskCompleteListener.rescheduleTask(taskService, task, newDueDate);
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
} }
@ -208,7 +208,7 @@ public class DateChangedAlerts {
if (hideUntil > 0) { if (hideUntil > 0) {
task.setHideUntil(hideUntil - (newDueDate - oldDueDate)); task.setHideUntil(hideUntil - (newDueDate - oldDueDate));
} }
PluginServices.getTaskService().save(task); taskService.save(task);
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
} }
}); });

@ -31,7 +31,6 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.activity.TaskListFragment.OnTaskListItemClickedListener; import com.todoroo.astrid.activity.TaskListFragment.OnTaskListItemClickedListener;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
@ -39,6 +38,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalControlSet; import com.todoroo.astrid.gcal.GCalControlSet;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.repeats.RepeatControlSet; import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -74,6 +74,8 @@ public class QuickAddBar extends LinearLayout {
private GCalControlSet gcalControl; private GCalControlSet gcalControl;
@Inject TagService tagService; @Inject TagService tagService;
@Inject MetadataService metadataService;
@Inject TaskService taskService;
private VoiceRecognizer voiceRecognizer; private VoiceRecognizer voiceRecognizer;
@ -274,11 +276,11 @@ public class QuickAddBar extends LinearLayout {
} }
gcalControl.writeToModel(task); gcalControl.writeToModel(task);
TaskService.createWithValues(tagService, task, fragment.getFilter().valuesForNewTasks, title); TaskService.createWithValues(taskService, metadataService, tagService, task, fragment.getFilter().valuesForNewTasks, title);
resetControlSets(); resetControlSets();
addToCalendar(task, title); addToCalendar(taskService, task, title);
TextView quickAdd = (TextView) findViewById(R.id.quickAddText); TextView quickAdd = (TextView) findViewById(R.id.quickAddText);
quickAdd.setText(""); //$NON-NLS-1$ quickAdd.setText(""); //$NON-NLS-1$
@ -302,16 +304,16 @@ public class QuickAddBar extends LinearLayout {
} }
} }
private static void addToCalendar(Task task, String title) { private static void addToCalendar(TaskService taskService, Task task, String title) {
boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null
&& !Preferences.getStringValue(R.string.gcal_p_default).equals("-1") && task.hasDueDate(); //$NON-NLS-1$ && !Preferences.getStringValue(R.string.gcal_p_default).equals("-1") && task.hasDueDate(); //$NON-NLS-1$
if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) { if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) {
Uri calendarUri = GCalHelper.createTaskEvent(task, Uri calendarUri = GCalHelper.createTaskEvent(taskService, task,
ContextManager.getContext().getContentResolver(), new ContentValues()); ContextManager.getContext().getContentResolver(), new ContentValues());
task.setCalendarUri(calendarUri.toString()); task.setCalendarUri(calendarUri.toString());
task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true);
PluginServices.getTaskService().save(task); taskService.save(task);
} }
} }
@ -319,15 +321,15 @@ public class QuickAddBar extends LinearLayout {
* Static method to quickly add tasks without all the control set nonsense. * Static method to quickly add tasks without all the control set nonsense.
* Used from the share link activity. * Used from the share link activity.
*/ */
public static Task basicQuickAddTask(TagService tagService, String title) { public static Task basicQuickAddTask(TaskService taskService, MetadataService metadataService, TagService tagService, String title) {
if (TextUtils.isEmpty(title)) { if (TextUtils.isEmpty(title)) {
return null; return null;
} }
title = title.trim(); title = title.trim();
Task task = TaskService.createWithValues(tagService, null, title); Task task = TaskService.createWithValues(taskService, metadataService, tagService, null, title);
addToCalendar(task, title); addToCalendar(taskService, task, title);
return task; return task;
} }

@ -113,7 +113,7 @@ public class WidgetUpdateService extends InjectingService {
filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks; filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks;
String tagName = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); String tagName = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId);
query = SubtasksHelper.applySubtasksToWidgetFilter(tagDataService, taskListMetadataDao, filter, query, tagName, numberOfTasks); query = SubtasksHelper.applySubtasksToWidgetFilter(taskService, tagDataService, taskListMetadataDao, filter, query, tagName, numberOfTasks);
database.openForReading(); database.openForReading();
cursor = taskService.fetchFiltered(query, null, Task.ID, Task.TITLE, Task.DUE_DATE, Task.COMPLETION_DATE); cursor = taskService.fetchFiltered(query, null, Task.ID, Task.TITLE, Task.DUE_DATE, Task.COMPLETION_DATE);

@ -3,8 +3,11 @@ package org.tasks;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.alarms.AlarmControlSet; import com.todoroo.astrid.alarms.AlarmControlSet;
import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.files.FilesControlSet;
import com.todoroo.astrid.gcal.GCalControlSet;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.tags.TagsControlSet; import com.todoroo.astrid.tags.TagsControlSet;
import com.todoroo.astrid.timers.TimerActionControlSet;
import com.todoroo.astrid.timers.TimerFilterExposer;
import com.todoroo.astrid.ui.EditTitleControlSet; import com.todoroo.astrid.ui.EditTitleControlSet;
import com.todoroo.astrid.ui.QuickAddBar; import com.todoroo.astrid.ui.QuickAddBar;
@ -21,7 +24,10 @@ import dagger.Module;
FilesControlSet.class, FilesControlSet.class,
TagsControlSet.class, TagsControlSet.class,
AlarmControlSet.class, AlarmControlSet.class,
FilterAdapter.class FilterAdapter.class,
TimerFilterExposer.class,
GCalControlSet.class,
TimerActionControlSet.class
} }
) )
public class TasksModule { public class TasksModule {

@ -1,11 +1,19 @@
package org.tasks.injection; package org.tasks.injection;
import com.todoroo.astrid.alarms.AlarmDetailExposer;
import com.todoroo.astrid.alarms.AlarmTaskRepeatListener;
import com.todoroo.astrid.gcal.GCalTaskCompleteListener;
import com.todoroo.astrid.gtasks.GtasksCustomFilterCriteriaExposer; import com.todoroo.astrid.gtasks.GtasksCustomFilterCriteriaExposer;
import com.todoroo.astrid.gtasks.GtasksDetailExposer; import com.todoroo.astrid.gtasks.GtasksDetailExposer;
import com.todoroo.astrid.gtasks.GtasksStartupReceiver;
import com.todoroo.astrid.notes.NotesDetailExposer;
import com.todoroo.astrid.reminders.Notifications; import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.repeats.RepeatDetailExposer;
import com.todoroo.astrid.repeats.RepeatTaskCompleteListener;
import com.todoroo.astrid.service.GlobalEventReceiver; import com.todoroo.astrid.service.GlobalEventReceiver;
import com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer; import com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer;
import com.todoroo.astrid.tags.TagDetailExposer; import com.todoroo.astrid.tags.TagDetailExposer;
import com.todoroo.astrid.timers.TimerTaskCompleteListener;
import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.scheduling.RefreshBroadcastReceiver; import org.tasks.scheduling.RefreshBroadcastReceiver;
@ -21,7 +29,15 @@ import dagger.Module;
GtasksDetailExposer.class, GtasksDetailExposer.class,
GlobalEventReceiver.class, GlobalEventReceiver.class,
TagDetailExposer.class, TagDetailExposer.class,
TagCustomFilterCriteriaExposer.class TagCustomFilterCriteriaExposer.class,
NotesDetailExposer.class,
GCalTaskCompleteListener.class,
RepeatDetailExposer.class,
TimerTaskCompleteListener.class,
RepeatTaskCompleteListener.class,
AlarmTaskRepeatListener.class,
AlarmDetailExposer.class,
GtasksStartupReceiver.class
}) })
public class BroadcastModule { public class BroadcastModule {
} }

@ -204,6 +204,6 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
String tagName = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); String tagName = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId);
return SubtasksHelper.applySubtasksToWidgetFilter(tagDataService, taskListMetadataDao, filter, query, tagName, 0); return SubtasksHelper.applySubtasksToWidgetFilter(taskService, tagDataService, taskListMetadataDao, filter, query, tagName, 0);
} }
} }

Loading…
Cancel
Save