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.service.AstridDependencyInjector;
import org.tasks.widget.ScrollableViewsFactory;
import dagger.Module;
@Module(
injects = {
AstridDependencyInjector.class,
ScrollableViewsFactory.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.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 {
}

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

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

Loading…
Cancel
Save