diff --git a/astrid/src/main/java/org/tasks/TasksModule.java b/astrid/src/main/java/org/tasks/TasksModule.java index b1672b01b..bc74a74cb 100644 --- a/astrid/src/main/java/org/tasks/TasksModule.java +++ b/astrid/src/main/java/org/tasks/TasksModule.java @@ -3,11 +3,14 @@ package org.tasks; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.service.AstridDependencyInjector; +import org.tasks.widget.ScrollableViewsFactory; + import dagger.Module; @Module( injects = { AstridDependencyInjector.class, + ScrollableViewsFactory.class, FilterAdapter.class } ) diff --git a/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java b/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java new file mode 100644 index 000000000..693e6a057 --- /dev/null +++ b/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java @@ -0,0 +1,15 @@ +package org.tasks.injection; + +import android.annotation.TargetApi; +import android.os.Build; +import android.widget.RemoteViewsService; + +@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) +public abstract class InjectingRemoteViewsService extends RemoteViewsService { + @Override + public void onCreate() { + super.onCreate(); + + ((Injector) getApplication()).inject(this, new ServiceModule()); + } +} diff --git a/astrid/src/main/java/org/tasks/injection/ServiceModule.java b/astrid/src/main/java/org/tasks/injection/ServiceModule.java index 6b6badf5f..1a1116755 100644 --- a/astrid/src/main/java/org/tasks/injection/ServiceModule.java +++ b/astrid/src/main/java/org/tasks/injection/ServiceModule.java @@ -3,12 +3,15 @@ package org.tasks.injection; import com.todoroo.astrid.gtasks.GtasksBackgroundService; import com.todoroo.astrid.reminders.ReminderSchedulingService; +import org.tasks.widget.ScrollableWidgetUpdateService; + import dagger.Module; @Module(library = true, injects = { GtasksBackgroundService.class, - ReminderSchedulingService.class + ReminderSchedulingService.class, + ScrollableWidgetUpdateService.class }) public class ServiceModule { } diff --git a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index 09fa36f88..83e1a2ef0 100644 --- a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -14,8 +14,6 @@ import android.widget.RemoteViews; import android.widget.RemoteViewsService; import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.activity.TaskEditFragment; @@ -40,14 +38,10 @@ import org.tasks.R; @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { - @Autowired Database database; - - @Autowired TaskService taskService; - - @Autowired TaskListMetadataDao taskListMetadataDao; - - @Autowired TagDataService tagDataService; - + private final Database database; + private final TaskService taskService; + private final TaskListMetadataDao taskListMetadataDao; + private final TagDataService tagDataService; private final Context context; private final Filter filter; private final int widgetId; @@ -55,17 +49,27 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac private TodorooCursor cursor; - public ScrollableViewsFactory(Context context, Filter filter, int widgetId, boolean dark) { + public ScrollableViewsFactory( + Context context, + Filter filter, + int widgetId, + boolean dark, + Database database, + TaskService taskService, + TaskListMetadataDao taskListMetadataDao, + TagDataService tagDataService) { this.context = context; this.filter = filter; this.widgetId = widgetId; this.dark = dark; + this.database = database; + this.taskService = taskService; + this.taskListMetadataDao = taskListMetadataDao; + this.tagDataService = tagDataService; } @Override public void onCreate() { - DependencyInjectionService.getInstance().inject(this); - database.openForReading(); cursor = getCursor(); } diff --git a/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java b/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java index bb63e559e..52529146a 100644 --- a/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java +++ b/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java @@ -1,20 +1,29 @@ package org.tasks.widget; -import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; import android.content.Intent; -import android.os.Build; import android.os.Bundle; -import android.widget.RemoteViewsService; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.TaskListMetadataDao; +import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.service.TaskService; -@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) -public class ScrollableWidgetUpdateService extends RemoteViewsService { +import org.tasks.injection.InjectingRemoteViewsService; + +import javax.inject.Inject; + +public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { public static final String IS_DARK_THEME = "org.tasks.widget.IS_DARK_THEME"; public static final String FILTER = "org.tasks.widget.FILTER"; + @Inject Database database; + @Inject TaskService taskService; + @Inject TaskListMetadataDao taskListMetadataDao; + @Inject TagDataService tagDataService; + @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { if (intent == null) { @@ -30,6 +39,7 @@ public class ScrollableWidgetUpdateService extends RemoteViewsService { Filter filter = (Filter) bundle.get(FILTER); int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); boolean isDarkTheme = extras.getBoolean(IS_DARK_THEME); - return new ScrollableViewsFactory(this, filter, widgetId, isDarkTheme); + return new ScrollableViewsFactory(this, filter, widgetId, isDarkTheme, + database, taskService, taskListMetadataDao, tagDataService); } }