Add InjectingRemoteViewsService

pull/189/head
Alex Baker 12 years ago
parent 643ec6f594
commit e955378c5c

@ -3,11 +3,14 @@ package org.tasks;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
import org.tasks.widget.ScrollableViewsFactory;
import dagger.Module; import dagger.Module;
@Module( @Module(
injects = { injects = {
AstridDependencyInjector.class, AstridDependencyInjector.class,
ScrollableViewsFactory.class,
FilterAdapter.class FilterAdapter.class
} }
) )

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

@ -3,12 +3,15 @@ package org.tasks.injection;
import com.todoroo.astrid.gtasks.GtasksBackgroundService; import com.todoroo.astrid.gtasks.GtasksBackgroundService;
import com.todoroo.astrid.reminders.ReminderSchedulingService; import com.todoroo.astrid.reminders.ReminderSchedulingService;
import org.tasks.widget.ScrollableWidgetUpdateService;
import dagger.Module; import dagger.Module;
@Module(library = true, @Module(library = true,
injects = { injects = {
GtasksBackgroundService.class, GtasksBackgroundService.class,
ReminderSchedulingService.class ReminderSchedulingService.class,
ScrollableWidgetUpdateService.class
}) })
public class ServiceModule { public class ServiceModule {
} }

@ -14,8 +14,6 @@ import android.widget.RemoteViews;
import android.widget.RemoteViewsService; import android.widget.RemoteViewsService;
import com.todoroo.andlib.data.TodorooCursor; 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.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
@ -40,14 +38,10 @@ import org.tasks.R;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory {
@Autowired Database database; private final Database database;
private final TaskService taskService;
@Autowired TaskService taskService; private final TaskListMetadataDao taskListMetadataDao;
private final TagDataService tagDataService;
@Autowired TaskListMetadataDao taskListMetadataDao;
@Autowired TagDataService tagDataService;
private final Context context; private final Context context;
private final Filter filter; private final Filter filter;
private final int widgetId; private final int widgetId;
@ -55,17 +49,27 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
private TodorooCursor<Task> cursor; private TodorooCursor<Task> 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.context = context;
this.filter = filter; this.filter = filter;
this.widgetId = widgetId; this.widgetId = widgetId;
this.dark = dark; this.dark = dark;
this.database = database;
this.taskService = taskService;
this.taskListMetadataDao = taskListMetadataDao;
this.tagDataService = tagDataService;
} }
@Override @Override
public void onCreate() { public void onCreate() {
DependencyInjectionService.getInstance().inject(this);
database.openForReading(); database.openForReading();
cursor = getCursor(); cursor = getCursor();
} }

@ -1,20 +1,29 @@
package org.tasks.widget; package org.tasks.widget;
import android.annotation.TargetApi;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.widget.RemoteViewsService;
import com.todoroo.astrid.api.Filter; 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) import org.tasks.injection.InjectingRemoteViewsService;
public class ScrollableWidgetUpdateService extends RemoteViewsService {
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 IS_DARK_THEME = "org.tasks.widget.IS_DARK_THEME";
public static final String FILTER = "org.tasks.widget.FILTER"; public static final String FILTER = "org.tasks.widget.FILTER";
@Inject Database database;
@Inject TaskService taskService;
@Inject TaskListMetadataDao taskListMetadataDao;
@Inject TagDataService tagDataService;
@Override @Override
public RemoteViewsFactory onGetViewFactory(Intent intent) { public RemoteViewsFactory onGetViewFactory(Intent intent) {
if (intent == null) { if (intent == null) {
@ -30,6 +39,7 @@ public class ScrollableWidgetUpdateService extends RemoteViewsService {
Filter filter = (Filter) bundle.get(FILTER); Filter filter = (Filter) bundle.get(FILTER);
int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
boolean isDarkTheme = extras.getBoolean(IS_DARK_THEME); 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);
} }
} }

Loading…
Cancel
Save