diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java index 5a3151f20..e63c7477e 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java @@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; import com.todoroo.andlib.service.Autowired; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; 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 java.util.ArrayList; @@ -23,6 +24,8 @@ public class GtasksIndentActionTest extends DatabaseTestCase { @Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksListService gtasksListService; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; + @Autowired private MetadataService metadataService; + @Autowired TaskService taskService; private Task task; private StoreObject storeList; @@ -150,13 +153,13 @@ public class GtasksIndentActionTest extends DatabaseTestCase { private Task taskWithMetadata(long order, int indentation) { Task newTask = new Task(); - PluginServices.getTaskService().save(newTask); + taskService.save(newTask); Metadata metadata = GtasksMetadata.createEmptyMetadata(newTask.getId()); metadata.setValue(GtasksMetadata.INDENT, indentation); metadata.setValue(GtasksMetadata.ORDER, order); metadata.setValue(GtasksMetadata.LIST_ID, "list"); metadata.setTask(newTask.getId()); - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); return newTask; } @@ -178,7 +181,7 @@ public class GtasksIndentActionTest extends DatabaseTestCase { private Task taskWithoutMetadata() { Task task = new Task(); - PluginServices.getTaskService().save(task); + taskService.save(task); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java index 010decfab..6c3ca19cf 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java @@ -11,9 +11,10 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.MetadataService; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; @SuppressWarnings("nls") @@ -21,6 +22,8 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { private final GtasksTestPreferenceService preferences = new GtasksTestPreferenceService(); @Autowired private GtasksMetadataService gtasksMetadataService; + @Autowired private MetadataService metadataService; + @Autowired TaskService taskService; private Task task; private Metadata metadata; @@ -133,12 +136,12 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { private Task taskWithMetadata(String id) { Task task = new Task(); task.setTitle("cats"); - PluginServices.getTaskService().save(task); + taskService.save(task); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); if(id != null) metadata.setValue(GtasksMetadata.ID, id); metadata.setTask(task.getId()); - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); return task; } @@ -149,7 +152,7 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { private Task taskWithoutMetadata() { Task task = new Task(); task.setTitle("dogs"); - PluginServices.getTaskService().save(task); + taskService.save(task); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java index 09a0d5302..f3503fc91 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java @@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; import com.todoroo.andlib.service.Autowired; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; 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 java.util.ArrayList; @@ -23,6 +24,8 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase { @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; @Autowired private GtasksListService gtasksListService; @Autowired private GtasksMetadataService gtasksMetadataService; + @Autowired private MetadataService metadataService; + @Autowired TaskService taskService; public void testBasicParentComputation() { Task[] tasks = givenTasksABCDE(); @@ -164,14 +167,14 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase { private Task createTask(String title, long order, int indent) { Task task = new Task(); task.setTitle(title); - PluginServices.getTaskService().save(task); + taskService.save(task); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); metadata.setValue(GtasksMetadata.LIST_ID, "1"); if(order != GtasksMetadata.VALUE_UNSET) metadata.setValue(GtasksMetadata.ORDER, order); if(indent != GtasksMetadata.VALUE_UNSET) metadata.setValue(GtasksMetadata.INDENT, indent); - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java index e1992c517..3680fda92 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java @@ -8,10 +8,11 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; import com.todoroo.andlib.service.Autowired; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; 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 java.util.ArrayList; @@ -23,6 +24,8 @@ public class GtasksTaskMovingTest extends DatabaseTestCase { @Autowired private GtasksListService gtasksListService; @Autowired private GtasksMetadataService gtasksMetadataService; @Autowired private GtasksTaskListUpdater gtasksTaskListUpdater; + @Autowired private MetadataService metadataService; + @Autowired TaskService taskService; private Task A, B, C, D, E, F; private StoreObject list; @@ -273,14 +276,14 @@ public class GtasksTaskMovingTest extends DatabaseTestCase { private Task createTask(String title, long order, int indent) { Task task = new Task(); task.setTitle(title); - PluginServices.getTaskService().save(task); + taskService.save(task); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); metadata.setValue(GtasksMetadata.LIST_ID, "1"); if(order != GtasksMetadata.VALUE_UNSET) metadata.setValue(GtasksMetadata.ORDER, order); if(indent != GtasksMetadata.VALUE_UNSET) metadata.setValue(GtasksMetadata.INDENT, indent); - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java index e5ed21022..f5c8e7890 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java @@ -29,6 +29,8 @@ public class TitleParserTest extends DatabaseTestCase { @Autowired TagService tagService; + @Autowired MetadataService metadataService; + @Override protected void setUp() throws Exception { super.setUp(); @@ -155,7 +157,7 @@ public class TitleParserTest extends DatabaseTestCase { private void insertTitleAddTask(String title, Task task) { task.clear(); 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"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); Date date = newDate(task.getDueDate()); assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK)); //Calendar starts 1-6, date.getDay() starts at 0 @@ -174,7 +176,7 @@ public class TitleParserTest extends DatabaseTestCase { task = new Task(); title = "Jog tomorrow"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); date = newDate(task.getDueDate()); 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(); title = "Jog "+ days[i]; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); date = newDate(task.getDueDate()); assertEquals(date.getDay(), i); task = new Task(); title = "Jog "+ abrevDays[i]; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); date = newDate(task.getDueDate()); assertEquals(date.getDay(), i); } @@ -232,14 +234,14 @@ public class TitleParserTest extends DatabaseTestCase { task = new Task(); String title = "Jog " + acceptedString; 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); } for (String acceptedString:acceptedStrings){ task = new Task(); String title = acceptedString + " jog"; 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); } } @@ -296,25 +298,25 @@ public class TitleParserTest extends DatabaseTestCase { task = new Task(); String title = "Jog " + acceptedStringAtEnd; 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); task = new Task(); title = acceptedStringAtEnd + " jog"; 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); } for (String acceptedStringAnywhere:acceptedStringsAnywhere){ task = new Task(); String title = "Jog " + acceptedStringAnywhere; 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); title = acceptedStringAnywhere + " jog"; 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); } } @@ -338,25 +340,25 @@ public class TitleParserTest extends DatabaseTestCase { task = new Task(); String title = "Jog " + acceptedStringAtEnd; 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); task = new Task(); title = acceptedStringAtEnd + " jog"; 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); } for (String acceptedStringAnywhere:acceptedStringsAnywhere){ task = new Task(); String title = "Jog " + acceptedStringAnywhere; 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); title = acceptedStringAnywhere + " jog"; 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); } } @@ -372,7 +374,7 @@ public class TitleParserTest extends DatabaseTestCase { Task task = new Task(); String title = "Jog daily"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.DAILY); rrule.setInterval(1); @@ -382,7 +384,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every day"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -391,7 +393,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every " + i + " days."; task.setTitle(title); rrule.setInterval(i); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -405,7 +407,7 @@ public class TitleParserTest extends DatabaseTestCase { Task task = new Task(); String title = "Jog weekly"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.WEEKLY); rrule.setInterval(1); @@ -415,7 +417,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every week"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -424,7 +426,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every " + i + " weeks"; task.setTitle(title); rrule.setInterval(i); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -437,7 +439,7 @@ public class TitleParserTest extends DatabaseTestCase { Task task = new Task(); String title = "Jog monthly"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.MONTHLY); rrule.setInterval(1); @@ -447,7 +449,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every month"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -456,7 +458,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every " + i + " months"; task.setTitle(title); rrule.setInterval(i); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); @@ -468,7 +470,7 @@ public class TitleParserTest extends DatabaseTestCase { Task task = new Task(); String title = "Jog daily starting from today"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.DAILY); rrule.setInterval(1); @@ -479,7 +481,7 @@ public class TitleParserTest extends DatabaseTestCase { task.clearValue(Task.UUID); title = "Jog every day starting from today"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); @@ -487,7 +489,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every " + i + " days starting from today"; task.setTitle(title); rrule.setInterval(i); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); task = new Task(); @@ -498,7 +500,7 @@ public class TitleParserTest extends DatabaseTestCase { Task task = new Task(); String title = "Jog weekly starting from today"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.WEEKLY); rrule.setInterval(1); @@ -509,7 +511,7 @@ public class TitleParserTest extends DatabaseTestCase { task.clearValue(Task.UUID); title = "Jog every week starting from today"; task.setTitle(title); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); @@ -517,7 +519,7 @@ public class TitleParserTest extends DatabaseTestCase { title = "Jog every " + i + " weeks starting from today"; task.setTitle(title); rrule.setInterval(i); - TaskService.createWithValues(tagService, task, null, title); + TaskService.createWithValues(metadataService, tagService, task, null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); task = new Task(); diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksHelperTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksHelperTest.java index 4aad8686e..386cb0102 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksHelperTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksHelperTest.java @@ -1,11 +1,14 @@ 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.TaskListMetadata; +import com.todoroo.astrid.service.TaskService; public class SubtasksHelperTest extends SubtasksTestCase { + @Autowired TaskService taskService; + @Override protected void setUp() throws Exception { super.setUp(); @@ -19,7 +22,7 @@ public class SubtasksHelperTest extends SubtasksTestCase { Task t = new Task(); t.setTitle(title); t.setUuid(uuid); - PluginServices.getTaskService().save(t); + taskService.save(t); } private void createTasks() { diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksMovingTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksMovingTest.java index 5f5e0cd42..1d315855c 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksMovingTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksMovingTest.java @@ -1,11 +1,14 @@ 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.TaskListMetadata; +import com.todoroo.astrid.service.TaskService; public class SubtasksMovingTest extends SubtasksTestCase { + @Autowired TaskService taskService; + private Task A, B, C, D, E, F; // @Override @@ -37,7 +40,7 @@ public class SubtasksMovingTest extends SubtasksTestCase { private Task createTask(String title) { Task task = new Task(); task.setTitle(title); - PluginServices.getTaskService().save(task); + taskService.save(task); return task; } diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java index 34446625e..9c5b3e1b6 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java @@ -28,10 +28,10 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.CoreFilterExposer; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.StartupService; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.QuickAddBar; @@ -88,6 +88,7 @@ public class AstridActivity extends InjectingActionBarActivity .findFragmentByTag(CommentsFragment.TAG_UPDATES_FRAGMENT); } + @Inject TaskService taskService; @Inject StartupService startupService; @Override @@ -370,13 +371,12 @@ public class AstridActivity extends InjectingActionBarActivity AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); long newDueDate = intent.getLongExtra( AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); - Task task = PluginServices.getTaskService().fetchById(taskId, - DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); + Task task = taskService.fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); try { boolean lastTime = AstridApiConstants.BROADCAST_EVENT_TASK_REPEAT_FINISHED.equals(intent.getAction()); 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 new Thread() { diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java index 1645b31ac..4c5928fd8 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.os.Bundle; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.ui.QuickAddBar; @@ -22,6 +23,7 @@ public final class ShareLinkActivity extends TaskListActivity { @Inject TaskService taskService; @Inject TagService tagService; + @Inject MetadataService metadataService; private String subject; private boolean handled; @@ -46,7 +48,7 @@ public final class ShareLinkActivity extends TaskListActivity { if (!handled) { Intent callerIntent = getIntent(); - Task task = QuickAddBar.basicQuickAddTask(tagService, subject); + Task task = QuickAddBar.basicQuickAddTask(taskService, metadataService, tagService, subject); if (task != null) { task.setNotes(callerIntent.getStringExtra(Intent.EXTRA_TEXT)); taskService.save(task); diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 65f86f36f..ee496ae3f 100755 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -598,7 +598,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { } catch (Exception e) { // 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()); } @@ -783,7 +783,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { // abandon editing in this case if (title.getText().length() == 0 || TextUtils.isEmpty(model.getTitle())) { if (isNewTask) { - TimerPlugin.updateTimer(getActivity(), model, false); + TimerPlugin.updateTimer(taskService, getActivity(), model, false); taskService.delete(model); if (getActivity() instanceof TaskListActivity) { TaskListActivity tla = (TaskListActivity) getActivity(); @@ -804,7 +804,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - TimerPlugin.updateTimer(getActivity(), model, false); + TimerPlugin.updateTimer(taskService, getActivity(), model, false); taskService.delete(model); shouldSaveState = false; diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 8b641b0e2..ebb3be749 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -355,7 +355,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel if (TextUtils.isEmpty(defaultOrder)) { defaultOrder = "[]"; //$NON-NLS-1$ } - defaultOrder = SubtasksHelper.convertTreeToRemoteIds(defaultOrder); + defaultOrder = SubtasksHelper.convertTreeToRemoteIds(taskService, defaultOrder); taskListMetadata = new TaskListMetadata(); taskListMetadata.setFilter(filterId); 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() { @@ -998,7 +998,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel itemId = item.getGroupId(); Task task = new Task(); task.setId(itemId); - TimerPlugin.updateTimer(getActivity(), task, false); + TimerPlugin.updateTimer(taskService, getActivity(), task, false); taskService.purge(itemId); loadTaskListContent(true); return true; diff --git a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java index 0395c89c4..19fe98cc5 100644 --- a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java +++ b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java @@ -24,7 +24,6 @@ import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; @@ -68,6 +67,8 @@ public class TasksXmlExporter { // --- implementation @Autowired TagDataService tagDataService; + @Autowired MetadataService metadataService; + @Autowired TaskService taskService; // 3 is started on Version 4.6.10 private static final int FORMAT = 3; @@ -75,8 +76,6 @@ public class TasksXmlExporter { private final Context context; private int exportCount = 0; private XmlSerializer xml; - private final TaskService taskService = PluginServices.getTaskService(); - private final MetadataService metadataService = PluginServices.getMetadataService(); private final ProgressDialog progressDialog; private final Handler handler; diff --git a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java index 95261a997..dd8aa6f10 100644 --- a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java +++ b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java @@ -30,7 +30,6 @@ import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; @@ -71,8 +70,9 @@ public class TasksXmlImporter { // --- implementation @Autowired TagDataService tagDataService; - @Autowired TagService tagService; + @Autowired MetadataService metadataService; + @Autowired TaskService taskService; private final Handler handler; private int taskCount; @@ -82,8 +82,6 @@ public class TasksXmlImporter { private final String input; private final Context context; - private final TaskService taskService = PluginServices.getTaskService(); - private final MetadataService metadataService = PluginServices.getMetadataService(); private final ProgressDialog progressDialog; private final Runnable runAfterImport; diff --git a/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java b/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java index d1b2aece2..e05901d37 100644 --- a/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java +++ b/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java @@ -155,7 +155,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity { for(int i = 0; i < length; i++) { cursor.moveToNext(); task.readFromCursor(cursor); - GCalHelper.deleteTaskEvent(task); + GCalHelper.deleteTaskEvent(taskService, task); } } finally { cursor.close(); @@ -194,7 +194,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity { for(int i = 0; i < length; i++) { cursor.moveToNext(); task.readFromCursor(cursor); - GCalHelper.deleteTaskEvent(task); + GCalHelper.deleteTaskEvent(taskService, task); } } finally { cursor.close(); @@ -231,7 +231,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity { for(int i = 0; i < length; i++) { cursor.moveToNext(); task.readFromCursor(cursor); - if (GCalHelper.deleteTaskEvent(task)) { + if (GCalHelper.deleteTaskEvent(taskService, task)) { deletedEventCount++; } } @@ -273,7 +273,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity { for(int i = 0; i < length; i++) { cursor.moveToNext(); task.readFromCursor(cursor); - if (GCalHelper.deleteTaskEvent(task)) { + if (GCalHelper.deleteTaskEvent(taskService, task)) { deletedEventCount++; } } diff --git a/astrid/src/main/java/com/todoroo/astrid/core/PluginServices.java b/astrid/src/main/java/com/todoroo/astrid/core/PluginServices.java deleted file mode 100644 index 8954fe7c9..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/core/PluginServices.java +++ /dev/null @@ -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 - * - */ -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; - } -} diff --git a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalControlSet.java b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalControlSet.java index 57980e68b..b832941c1 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalControlSet.java +++ b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalControlSet.java @@ -27,16 +27,20 @@ import android.widget.Toast; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.Calendars.CalendarResult; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.ui.PopupControlSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.injection.Injector; import java.util.ArrayList; import java.util.Collections; +import javax.inject.Inject; + /** * Control Set for managing repeats * @@ -49,6 +53,8 @@ public class GCalControlSet extends PopupControlSet { // --- instance variables + @Inject TaskService taskService; + private Uri calendarUri = null; private final CalendarResult calendars; @@ -59,6 +65,9 @@ public class GCalControlSet extends PopupControlSet { public GCalControlSet(final Activity activity, int viewLayout, int displayViewLayout, int title) { super(activity, viewLayout, displayViewLayout, title); + + ((Injector)activity.getApplication()).inject(this); + this.title = title; calendars = Calendars.getCalendars(); getView(); // Hack to force initialized @@ -97,7 +106,7 @@ public class GCalControlSet extends PopupControlSet { @Override protected void readFromTaskOnInitialize() { - String uri = GCalHelper.getTaskEventUri(model); + String uri = GCalHelper.getTaskEventUri(taskService, model); if(!TextUtils.isEmpty(uri)) { try { calendarUri = Uri.parse(uri); @@ -151,7 +160,7 @@ public class GCalControlSet extends PopupControlSet { String calendarId = calendars.calendarIds[calendarSelector.getSelectedItemPosition() - 1]; values.put("calendar_id", calendarId); - calendarUri = GCalHelper.createTaskEvent(task, cr, values); + calendarUri = GCalHelper.createTaskEvent(taskService, task, cr, values); if(calendarUri != null) { task.setCalendarUri(calendarUri.toString()); diff --git a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java index 856f0588a..13ed4ab0b 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java +++ b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java @@ -18,8 +18,8 @@ import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.TaskService; 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 String getTaskEventUri(Task task) { + public static String getTaskEventUri(TaskService taskService, Task task) { String uri; if (!TextUtils.isEmpty(task.getCalendarURI())) { uri = task.getCalendarURI(); } else { - task = PluginServices.getTaskService().fetchById(task.getId(), Task.CALENDAR_URI); + task = taskService.fetchById(task.getId(), Task.CALENDAR_URI); if(task == null) { return null; } @@ -46,34 +46,34 @@ public class GCalHelper { return uri; } - public static void createTaskEventIfEnabled(Task t) { + public static void createTaskEventIfEnabled(TaskService taskService, Task t) { if (!t.hasDueDate()) { 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 && !Preferences.getStringValue(R.string.gcal_p_default).equals("-1"); //$NON-NLS-1$ if (gcalCreateEventEnabled) { 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) { t.setCalendarUri(calendarUri.toString()); } } } - public static Uri createTaskEvent(Task task, ContentResolver cr, ContentValues values) { - return createTaskEvent(task, cr, values, true); + public static Uri createTaskEvent(TaskService taskService, Task task, ContentResolver cr, ContentValues values) { + return createTaskEvent(taskService, task, cr, values, true); } - public static Uri createTaskEvent(Task task, ContentResolver cr, ContentValues values, boolean deleteEventIfExists) { - String eventuri = getTaskEventUri(task); + public static Uri createTaskEvent(TaskService taskService, Task task, ContentResolver cr, ContentValues values, boolean deleteEventIfExists) { + String eventuri = getTaskEventUri(taskService, task); if(!TextUtils.isEmpty(eventuri) && deleteEventIfExists) { - deleteTaskEvent(task); + deleteTaskEvent(taskService, task); } try{ @@ -110,8 +110,8 @@ public class GCalHelper { return null; } - public static void rescheduleRepeatingTask(Task task, ContentResolver cr) { - String taskUri = getTaskEventUri(task); + public static void rescheduleRepeatingTask(TaskService taskService, Task task, ContentResolver cr) { + String taskUri = getTaskEventUri(taskService, task); if (TextUtils.isEmpty(taskUri)) { return; } @@ -125,7 +125,7 @@ public class GCalHelper { ContentValues cv = new ContentValues(); 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()); } @@ -141,13 +141,13 @@ public class GCalHelper { } } - public static boolean deleteTaskEvent(Task task) { + public static boolean deleteTaskEvent(TaskService taskService, Task task) { boolean eventDeleted = false; String uri; if(task.containsNonNullValue(Task.CALENDAR_URI)) { uri = task.getCalendarURI(); } else { - task = PluginServices.getTaskService().fetchById(task.getId(), Task.CALENDAR_URI); + task = taskService.fetchById(task.getId(), Task.CALENDAR_URI); if(task == null) { return false; } diff --git a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java index 8530428e4..0261aaa18 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java +++ b/astrid/src/main/java/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.gcal; -import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; @@ -16,22 +15,29 @@ import android.util.Log; import com.todoroo.andlib.service.ContextManager; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.TaskService; 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 public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + ContextManager.setContext(context); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); if(taskId == -1) { 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) { return; } diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java index 9caabacd0..257c94378 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java @@ -14,7 +14,6 @@ import com.todoroo.andlib.sql.Field; import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; 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.Task; import com.todoroo.astrid.gtasks.sync.GtasksTaskContainer; +import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.OrderedListIterator; import com.todoroo.astrid.sync.SyncProviderUtilities; import com.todoroo.astrid.utility.SyncMetadataService; @@ -44,11 +44,13 @@ import javax.inject.Singleton; public final class GtasksMetadataService extends SyncMetadataService { private final GtasksPreferenceService gtasksPreferenceService; + private MetadataService metadataService; @Inject - public GtasksMetadataService(GtasksPreferenceService gtasksPreferenceService, TaskDao taskDao, MetadataDao metadataDao) { + public GtasksMetadataService(GtasksPreferenceService gtasksPreferenceService, TaskDao taskDao, MetadataDao metadataDao, MetadataService metadataService) { super(taskDao, metadataDao); this.gtasksPreferenceService = gtasksPreferenceService; + this.metadataService = metadataService; } public Criterion getLocalMatchCriteria(GtasksTaskContainer remoteTask) { @@ -147,7 +149,7 @@ public final class GtasksMetadataService extends SyncMetadataService cursor = PluginServices.getMetadataService().query(query); + TodorooCursor cursor = metadataService.query(query); try { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { long taskId = cursor.get(Metadata.TASK); diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java index fc964bf26..e10dfb922 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -15,12 +15,12 @@ import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.sync.GtasksSyncService; +import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater; import java.util.HashMap; @@ -47,13 +47,16 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater * */ -public class NotesDetailExposer extends BroadcastReceiver { +public class NotesDetailExposer extends InjectingBroadcastReceiver { private static final int NOTE_MAX = 200; + @Inject MetadataService metadataService; + @Inject TaskService taskService; + @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + // get tags associated with this task long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); if(taskId == -1) { @@ -54,12 +62,12 @@ public class NotesDetailExposer extends BroadcastReceiver { context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); } - public String getTaskDetails(long id) { + private String getTaskDetails(long id) { if(!Preferences.getBoolean(R.string.p_showNotes, false)) { return null; } - Task task = PluginServices.getTaskService().fetchById(id, Task.ID, Task.NOTES); + Task task = taskService.fetchById(id, Task.ID, Task.NOTES); if(task == null) { return null; } @@ -75,7 +83,7 @@ public class NotesDetailExposer extends BroadcastReceiver { notesBuilder.append(notes); } - TodorooCursor cursor = PluginServices.getMetadataService().query( + TodorooCursor cursor = metadataService.query( Query.select(Metadata.PROPERTIES).where( MetadataCriteria.byTaskAndwithKey(task.getId(), NoteMetadata.METADATA_KEY)).orderBy(Order.asc(Metadata.CREATION_DATE))); diff --git a/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java b/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java index 7a0f619ce..ed7328dbb 100644 --- a/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java +++ b/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java @@ -17,7 +17,6 @@ import android.widget.Toast; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; @@ -45,7 +44,7 @@ public class ReminderDialog extends Dialog { Task task = new Task(); task.setId(taskId); task.setReminderSnooze(time); - PluginServices.getTaskService().save(task); + taskService.save(task); dismiss(); } }; diff --git a/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatDetailExposer.java b/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatDetailExposer.java index e689bd516..ba60fa6a7 100644 --- a/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatDetailExposer.java +++ b/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatDetailExposer.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.repeats; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; 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.WeekdayNum; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.injection.InjectingBroadcastReceiver; import java.text.DateFormatSymbols; import java.text.ParseException; import java.util.List; +import javax.inject.Inject; + /** * Exposes Task Detail for repeats, i.e. "Repeats every 2 days" * * @author Tim Su * */ -public class RepeatDetailExposer extends BroadcastReceiver { +public class RepeatDetailExposer extends InjectingBroadcastReceiver { + + @Inject TaskService taskService; @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + // get tags associated with this task long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); if(taskId == -1) { @@ -53,7 +59,7 @@ public class RepeatDetailExposer extends BroadcastReceiver { } 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) { return null; } diff --git a/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java b/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java index c5b194e44..f72f773f2 100644 --- a/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java +++ b/astrid/src/main/java/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.repeats; -import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -22,12 +21,13 @@ import com.google.ical.values.WeekdayNum; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.utility.Flags; +import org.tasks.injection.InjectingBroadcastReceiver; + import java.text.ParseException; import java.util.Calendar; import java.util.Collections; @@ -36,22 +36,28 @@ import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.inject.Inject; + import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDateUtc; -public class RepeatTaskCompleteListener extends BroadcastReceiver { +public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver { private static final String TAG = "RepeatTaskCompleteListener"; + @Inject TaskService taskService; + @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + ContextManager.setContext(context); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); if(taskId == -1) { return; } - Task task = PluginServices.getTaskService().fetchById(taskId, Task.PROPERTIES); + Task task = taskService.fetchById(taskId, Task.PROPERTIES); if(task == null || !task.isCompleted()) { return; } @@ -84,7 +90,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { return; } - rescheduleTask(task, newDueDate); + rescheduleTask(taskService, task, newDueDate); // send a broadcast 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(); if(hideUntil > 0 && task.getDueDate() > 0) { hideUntil += newDueDate - task.getDueDate(); @@ -108,8 +114,8 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { task.putTransitory(TaskService.TRANS_REPEAT_COMPLETE, true); ContentResolver cr = ContextManager.getContext().getContentResolver(); - GCalHelper.rescheduleRepeatingTask(task, cr); - PluginServices.getTaskService().save(task); + GCalHelper.rescheduleRepeatingTask(taskService, task, cr); + taskService.save(task); } /** Compute next due date */ diff --git a/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java b/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java index c5b75904f..d82a8f689 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java @@ -32,7 +32,6 @@ import com.todoroo.astrid.activity.BeastModePreferences; import com.todoroo.astrid.backup.BackupConstants; import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.backup.TasksXmlImporter; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TagDataDao; @@ -76,18 +75,20 @@ public class StartupService { private final Database database; private final GtasksPreferenceService gtasksPreferenceService; private final GtasksSyncService gtasksSyncService; + private MetadataService metadataService; @Inject public StartupService(UpgradeService upgradeService, TaskService taskService, TagDataDao tagDataDao, Database database, GtasksPreferenceService gtasksPreferenceService, - GtasksSyncService gtasksSyncService) { + GtasksSyncService gtasksSyncService, MetadataService metadataService) { this.upgradeService = upgradeService; this.taskService = taskService; this.tagDataDao = tagDataDao; this.database = database; this.gtasksPreferenceService = gtasksPreferenceService; this.gtasksSyncService = gtasksSyncService; + this.metadataService = metadataService; } /** @@ -210,7 +211,7 @@ public class StartupService { if (values != null) { if (values.containsKey(TagData.NAME.name)) { 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); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java b/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java index 813fead1f..1ba2b6329 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java @@ -21,7 +21,6 @@ import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.PermaSql; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TaskDao; @@ -82,7 +81,9 @@ public class TaskService { private final TagService tagService; @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.metadataDao = metadataDao; this.userActivityDao = userActivityDao; @@ -192,7 +193,7 @@ public class TaskService { long id = item.getId(); item.clear(); item.setId(id); - GCalHelper.deleteTaskEvent(item); + GCalHelper.deleteTaskEvent(this, item); item.setDeletionDate(DateUtilities.now()); save(item); } @@ -379,7 +380,7 @@ public class TaskService { clone.setCompletionDate(0L); clone.setDeletionDate(0L); clone.setCalendarUri(""); //$NON-NLS-1$ - GCalHelper.createTaskEventIfEnabled(clone); + GCalHelper.createTaskEventIfEnabled(this, clone); save(clone); return clone.getId(); @@ -389,16 +390,16 @@ public class TaskService { * Create task from the given content values, saving it. This version * 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(); - return createWithValues(tagService, task, values, title); + return createWithValues(taskService, metadataService, tagService, task, values, title); } /** * Create task from the given content values, saving it. * @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) { task.setTitle(title); } @@ -438,7 +439,7 @@ public class TaskService { task.putTransitory(TRANS_ASSIGNED, true); } - PluginServices.getTaskService().quickAdd(task, tags); + taskService.quickAdd(task, tags); if (quickAddMarkup) { task.putTransitory(TRANS_QUICK_ADD_MARKUP, true); } @@ -456,7 +457,7 @@ public class TaskService { tagService.createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME)); } } else { - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java index 685c69999..50a7028fa 100644 --- a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java +++ b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java @@ -7,9 +7,9 @@ package com.todoroo.astrid.subtasks; import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.LongProperty; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.MetadataService; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; @@ -19,6 +19,8 @@ import java.util.concurrent.atomic.AtomicReference; abstract public class OrderedMetadataListUpdater { + private MetadataService metadataService; + public interface OrderedListIterator { public void processTask(long taskId, Metadata metadata); } @@ -37,6 +39,10 @@ abstract public class OrderedMetadataListUpdater { abstract protected Metadata createEmptyMetadata(LIST list, long taskId); + public OrderedMetadataListUpdater(MetadataService metadataService) { + this.metadataService = metadataService; + } + protected void beforeIndent(LIST list) { // } @@ -285,7 +291,7 @@ abstract public class OrderedMetadataListUpdater { if(metadata.getSetValues().size() == 0) { return; } - PluginServices.getMetadataService().save(metadata); + metadataService.save(metadata); } // --- task cascading operations diff --git a/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java b/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java index 50688b234..061189947 100644 --- a/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java +++ b/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java @@ -13,7 +13,6 @@ import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.CoreFilterExposer; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; 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.TaskListMetadata; import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.AstridOrderedListUpdater.Node; import com.todoroo.astrid.utility.AstridPreferences; @@ -60,7 +60,7 @@ public class SubtasksHelper { 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)) { // care for manual 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 + String.format(" ORDER BY %s, %s, %s, %s", Task.DELETION_DATE, Task.COMPLETION_DATE, - getOrderString(tagData, tlm), Task.CREATION_DATE); + getOrderString(taskService, tagData, tlm), Task.CREATION_DATE); if (limit > 0) { query = query + " LIMIT " + limit; } @@ -88,12 +88,12 @@ public class SubtasksHelper { return query; } - private static String getOrderString(TagData tagData, TaskListMetadata tlm) { + private static String getOrderString(TaskService taskService, TagData tagData, TaskListMetadata tlm) { String serialized; if (tlm != null) { serialized = tlm.getTaskIDs(); } else if (tagData != null) { - serialized = convertTreeToRemoteIds(tagData.getTagOrdering()); + serialized = convertTreeToRemoteIds(taskService, tagData.getTagOrdering()); } else { 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 */ - public static String convertTreeToRemoteIds(String localTree) { + public static String convertTreeToRemoteIds(TaskService taskService, String localTree) { Long[] localIds = getIdArray(localTree); - HashMap idMap = getIdMap(localIds, Task.ID, Task.UUID); + HashMap idMap = getIdMap(taskService, localIds, Task.ID, Task.UUID); idMap.put(-1L, "-1"); //$NON-NLS-1$ Node tree = AstridOrderedListUpdater.buildTreeModel(localTree, null); @@ -175,9 +175,9 @@ public class SubtasksHelper { }); } - private static HashMap getIdMap(A[] keys, Property keyProperty, Property valueProperty) { + private static HashMap getIdMap(TaskService taskService, A[] keys, Property keyProperty, Property valueProperty) { HashMap map = new HashMap<>(); - TodorooCursor tasks = PluginServices.getTaskService().query(Query.select(keyProperty, valueProperty).where(keyProperty.in(keys))); + TodorooCursor tasks = taskService.query(Query.select(keyProperty, valueProperty).where(keyProperty.in(keys))); try { for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { A key = tasks.get(keyProperty); diff --git a/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java b/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java index dfd3764db..9f5c7734a 100644 --- a/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java +++ b/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java @@ -23,7 +23,6 @@ import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TagDataDao; @@ -61,12 +60,14 @@ public final class TagService { }; private final MetadataDao metadataDao; + private final MetadataService metadataService; private final TagDataService tagDataService; private final TagDataDao tagDataDao; @Inject - public TagService(MetadataDao metadataDao, TagDataService tagDataService, TagDataDao tagDataDao) { + public TagService(MetadataDao metadataDao, MetadataService metadataService, TagDataService tagDataService, TagDataDao tagDataDao) { this.metadataDao = metadataDao; + this.metadataService = metadataService; this.tagDataService = tagDataService; this.tagDataDao = tagDataDao; } @@ -342,9 +343,8 @@ public final class TagService { * given tag, return that. Otherwise, return the argument */ public String getTagWithCase(String tag) { - MetadataService service = PluginServices.getMetadataService(); String tagWithCase = tag; - TodorooCursor tagMetadata = service.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); + TodorooCursor tagMetadata = metadataService.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); try { if (tagMetadata.getCount() > 0) { tagMetadata.moveToFirst(); diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerActionControlSet.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerActionControlSet.java index a0afcdeaa..1f8c00f4a 100644 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerActionControlSet.java +++ b/astrid/src/main/java/com/todoroo/astrid/timers/TimerActionControlSet.java @@ -18,14 +18,20 @@ import android.widget.LinearLayout; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.TaskEditControlSet; +import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.injection.Injector; import java.util.LinkedList; import java.util.List; +import javax.inject.Inject; + public class TimerActionControlSet extends TaskEditControlSet { + @Inject TaskService taskService; + private final ImageView timerButton; private final Chronometer chronometer; private boolean timerActive; @@ -33,20 +39,23 @@ public class TimerActionControlSet extends TaskEditControlSet { public TimerActionControlSet(final Activity activity, View parent) { super(activity, -1); + + ((Injector) activity.getApplication()).inject(this); + LinearLayout timerContainer = (LinearLayout) parent.findViewById(R.id.timer_container); timerButton = (ImageView) parent.findViewById(R.id.timer_button); OnClickListener timerListener = new OnClickListener() { @Override public void onClick(View v) { if (timerActive) { - TimerPlugin.updateTimer(activity, model, false); + TimerPlugin.updateTimer(taskService, activity, model, false); for (TimerActionListener listener : listeners) { listener.timerStopped(model); } chronometer.stop(); } else { - TimerPlugin.updateTimer(activity, model, true); + TimerPlugin.updateTimer(taskService, activity, model, true); for (TimerActionListener listener : listeners) { listener.timerStarted(model); } diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerFilterExposer.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerFilterExposer.java index 520809151..e575895e0 100644 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerFilterExposer.java +++ b/astrid/src/main/java/com/todoroo/astrid/timers/TimerFilterExposer.java @@ -20,10 +20,13 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridFilterExposer; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.injection.Injector; + +import javax.inject.Inject; /** * Exposes "working on" filter to the {@link FilterListFragment} @@ -33,6 +36,8 @@ import org.tasks.R; */ public final class TimerFilterExposer extends BroadcastReceiver implements AstridFilterExposer { + @Inject TaskService taskService; + @Override public void onReceive(Context context, Intent intent) { ContextManager.setContext(context); @@ -44,7 +49,10 @@ public final class TimerFilterExposer extends BroadcastReceiver implements Astri } 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) { return null; } @@ -77,5 +85,4 @@ public final class TimerFilterExposer extends BroadcastReceiver implements Astri return prepareFilters(ContextManager.getContext()); } - } diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java index 2b93dd9a8..a346905cb 100644 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java +++ b/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java @@ -21,8 +21,8 @@ import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.api.Addon; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.utility.Constants; import org.tasks.R; @@ -46,11 +46,11 @@ public class TimerPlugin extends BroadcastReceiver { * toggles timer and updates elapsed time. * @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 // this is needed just for stopping a task 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) { return; @@ -68,16 +68,16 @@ public class TimerPlugin extends BroadcastReceiver { task.getElapsedSeconds() + newElapsed); } } - PluginServices.getTaskService().save(task); + taskService.save(task); // 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); - int count = PluginServices.getTaskService().count(Query.select(Task.ID). + int count = taskService.count(Query.select(Task.ID). where(Task.TIMER_START.gt(0))); if(count == 0) { nm.cancel(Constants.NOTIFICATION_TIMER); diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerTaskCompleteListener.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerTaskCompleteListener.java index 4d81be972..e994c9719 100644 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerTaskCompleteListener.java +++ b/astrid/src/main/java/com/todoroo/astrid/timers/TimerTaskCompleteListener.java @@ -5,32 +5,39 @@ */ package com.todoroo.astrid.timers; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import com.todoroo.andlib.service.ContextManager; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.core.PluginServices; 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 public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + ContextManager.setContext(context); long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1); if(taskId == -1) { 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); if(task == null || task.getTimerStart() == 0) { return; } - TimerPlugin.updateTimer(context, task, false); + TimerPlugin.updateTimer(taskService, context, task, false); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java b/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java index 42b66a7c4..14b6954a9 100644 --- a/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java +++ b/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java @@ -28,9 +28,9 @@ import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.AstridActivity; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.repeats.RepeatTaskCompleteListener; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener; import com.todoroo.astrid.utility.Flags; @@ -129,7 +129,7 @@ public class DateChangedAlerts { 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) { if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) { return; @@ -157,7 +157,7 @@ public class DateChangedAlerts { public void onDateAndTimeSelected(long date) { d.dismiss(); task.setRepeatUntil(date); - RepeatTaskCompleteListener.rescheduleTask(task, newDueDate); + RepeatTaskCompleteListener.rescheduleTask(taskService, task, newDueDate); Flags.set(Flags.REFRESH); } @@ -208,7 +208,7 @@ public class DateChangedAlerts { if (hideUntil > 0) { task.setHideUntil(hideUntil - (newDueDate - oldDueDate)); } - PluginServices.getTaskService().save(task); + taskService.save(task); Flags.set(Flags.REFRESH); } }); diff --git a/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java index d49736357..1cc92c6c7 100644 --- a/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java @@ -31,7 +31,6 @@ import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment.OnTaskListItemClickedListener; -import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; @@ -39,6 +38,7 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalControlSet; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.repeats.RepeatControlSet; +import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.utility.Flags; @@ -74,6 +74,8 @@ public class QuickAddBar extends LinearLayout { private GCalControlSet gcalControl; @Inject TagService tagService; + @Inject MetadataService metadataService; + @Inject TaskService taskService; private VoiceRecognizer voiceRecognizer; @@ -274,11 +276,11 @@ public class QuickAddBar extends LinearLayout { } gcalControl.writeToModel(task); - TaskService.createWithValues(tagService, task, fragment.getFilter().valuesForNewTasks, title); + TaskService.createWithValues(taskService, metadataService, tagService, task, fragment.getFilter().valuesForNewTasks, title); resetControlSets(); - addToCalendar(task, title); + addToCalendar(taskService, task, title); TextView quickAdd = (TextView) findViewById(R.id.quickAddText); 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 && !Preferences.getStringValue(R.string.gcal_p_default).equals("-1") && task.hasDueDate(); //$NON-NLS-1$ 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()); task.setCalendarUri(calendarUri.toString()); 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. * 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)) { return null; } title = title.trim(); - Task task = TaskService.createWithValues(tagService, null, title); - addToCalendar(task, title); + Task task = TaskService.createWithValues(taskService, metadataService, tagService, null, title); + addToCalendar(taskService, task, title); return task; } diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java index c2fcc2208..3c6a5829c 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java @@ -113,7 +113,7 @@ public class WidgetUpdateService extends InjectingService { filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks; 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(); cursor = taskService.fetchFiltered(query, null, Task.ID, Task.TITLE, Task.DUE_DATE, Task.COMPLETION_DATE); diff --git a/astrid/src/main/java/org/tasks/TasksModule.java b/astrid/src/main/java/org/tasks/TasksModule.java index da7e3015d..297756175 100644 --- a/astrid/src/main/java/org/tasks/TasksModule.java +++ b/astrid/src/main/java/org/tasks/TasksModule.java @@ -3,8 +3,11 @@ package org.tasks; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.alarms.AlarmControlSet; import com.todoroo.astrid.files.FilesControlSet; +import com.todoroo.astrid.gcal.GCalControlSet; import com.todoroo.astrid.service.AstridDependencyInjector; 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.QuickAddBar; @@ -21,7 +24,10 @@ import dagger.Module; FilesControlSet.class, TagsControlSet.class, AlarmControlSet.class, - FilterAdapter.class + FilterAdapter.class, + TimerFilterExposer.class, + GCalControlSet.class, + TimerActionControlSet.class } ) public class TasksModule { diff --git a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java index 6a64048ac..33e3c54eb 100644 --- a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java +++ b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java @@ -1,11 +1,19 @@ 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.GtasksDetailExposer; +import com.todoroo.astrid.gtasks.GtasksStartupReceiver; +import com.todoroo.astrid.notes.NotesDetailExposer; 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.tags.TagCustomFilterCriteriaExposer; import com.todoroo.astrid.tags.TagDetailExposer; +import com.todoroo.astrid.timers.TimerTaskCompleteListener; import com.todoroo.astrid.widget.TasksWidget; import org.tasks.scheduling.RefreshBroadcastReceiver; @@ -21,7 +29,15 @@ import dagger.Module; GtasksDetailExposer.class, GlobalEventReceiver.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 { } diff --git a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index 83e1a2ef0..a779d95bb 100644 --- a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -204,6 +204,6 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac 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); } }