diff --git a/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java b/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java index 8431894e7..18bcb1220 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java @@ -29,6 +29,7 @@ import org.tasks.TasksModule; import org.tasks.filters.FilterCounter; import org.tasks.injection.Injector; import org.tasks.scheduling.RefreshScheduler; +import org.tasks.widget.WidgetHelper; import javax.inject.Inject; @@ -76,6 +77,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector { @Inject GtasksSyncService gtasksSyncService; @Inject GtasksTaskListUpdater gtasksTaskListUpdater; @Inject GtasksSyncV2Provider gtasksSyncV2Provider; + @Inject WidgetHelper widgetHelper; /** * Initialize list of injectables. Special care must used when @@ -128,6 +130,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector { injectables.put("filterCounter", filterCounter); injectables.put("refreshScheduler", refreshScheduler); + injectables.put("widgetHelper", widgetHelper); } /** diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java index 0ac3c53fa..1eeb1f41b 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java @@ -7,37 +7,33 @@ package com.todoroo.astrid.widget; import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Build; import android.util.Log; -import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; -import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.TaskEditActivity; import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.utility.AstridPreferences; import org.tasks.R; +import org.tasks.injection.InjectingAppWidgetProvider; import org.tasks.widget.WidgetHelper; -import static com.todoroo.astrid.api.AstridApiConstants.BROADCAST_EVENT_TASK_LIST_UPDATED; +import javax.inject.Inject; -public class TasksWidget extends AppWidgetProvider { +import static com.todoroo.astrid.api.AstridApiConstants.BROADCAST_EVENT_TASK_LIST_UPDATED; - static { - AstridDependencyInjector.initialize(); - } +public class TasksWidget extends InjectingAppWidgetProvider { - @Autowired private TaskService taskService; + @Inject TaskService taskService; + @Inject WidgetHelper widgetHelper; public static final String COMPLETE_TASK = "COMPLETE_TASK"; public static final String EDIT_TASK = "EDIT_TASK"; @@ -45,16 +41,10 @@ public class TasksWidget extends AppWidgetProvider { public static long suppressUpdateFlag = 0; // Timestamp--don't update widgets if this flag is non-zero and now() is within 5 minutes private static final long SUPPRESS_TIME = DateUtilities.ONE_MINUTE * 5; - private static final WidgetHelper widgetHelper = new WidgetHelper(); - - public TasksWidget() { - super(); - - DependencyInjectionService.getInstance().inject(this); - } - @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + switch(intent.getAction()) { case COMPLETE_TASK: Task task = taskService.fetchById(intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0), Task.ID, Task.COMPLETION_DATE); @@ -74,8 +64,6 @@ public class TasksWidget extends AppWidgetProvider { case BROADCAST_EVENT_TASK_LIST_UPDATED: updateWidgets(context); break; - default: - super.onReceive(context, intent); } } @@ -113,7 +101,7 @@ public class TasksWidget extends AppWidgetProvider { } } - public static void applyConfigSelection(Context context, int id) { + public static void applyConfigSelection(WidgetHelper widgetHelper, Context context, int id) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { Intent intent = new Intent(ContextManager.getContext(), WidgetUpdateService.class); intent.putExtra(WidgetUpdateService.EXTRA_WIDGET_ID, id); diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java index 57e0aefa8..9d4919f1f 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.widget; -import android.app.ListActivity; import android.appwidget.AppWidgetManager; import android.content.ContentValues; import android.content.Intent; @@ -24,8 +23,12 @@ import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.service.ThemeService; import org.tasks.R; +import org.tasks.injection.InjectingListActivity; +import org.tasks.widget.WidgetHelper; -public class WidgetConfigActivity extends ListActivity { +import javax.inject.Inject; + +public class WidgetConfigActivity extends InjectingListActivity { public static final String PREF_TITLE = "widget-title-"; public static final String PREF_SQL = "widget-sql-"; @@ -38,12 +41,10 @@ public class WidgetConfigActivity extends ListActivity { FilterAdapter adapter = null; - public WidgetConfigActivity() { - super(); - } + @Inject WidgetHelper widgetHelper; public void updateWidget() { - TasksWidget.applyConfigSelection(this, mAppWidgetId); + TasksWidget.applyConfigSelection(widgetHelper, this, mAppWidgetId); } @Override 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 ded3165d3..e43e9eafa 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java @@ -54,7 +54,7 @@ public class WidgetUpdateService extends Service { @Autowired TagDataService tagDataService; - private final WidgetHelper widgetHelper = new WidgetHelper(); + @Autowired WidgetHelper widgetHelper; @Override public void onStart(final Intent intent, int startId) { diff --git a/astrid/src/main/java/org/tasks/injection/ActivityModule.java b/astrid/src/main/java/org/tasks/injection/ActivityModule.java index a320d7c8c..c6a1be38d 100644 --- a/astrid/src/main/java/org/tasks/injection/ActivityModule.java +++ b/astrid/src/main/java/org/tasks/injection/ActivityModule.java @@ -12,6 +12,7 @@ import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gtasks.GtasksListAdder; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; import com.todoroo.astrid.tags.TagFilterExposer; +import com.todoroo.astrid.widget.WidgetConfigActivity; import org.tasks.voice.VoiceCommandActivity; @@ -32,7 +33,8 @@ import dagger.Module; TagFilterExposer.DeleteTagActivity.class, TagFilterExposer.RenameTagActivity.class, VoiceCommandActivity.class, - GtasksLoginActivity.class + GtasksLoginActivity.class, + WidgetConfigActivity.class }) public class ActivityModule { } diff --git a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java index aa96bb02e..0aa18db28 100644 --- a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java +++ b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java @@ -1,12 +1,15 @@ package org.tasks.injection; +import com.todoroo.astrid.widget.TasksWidget; + import org.tasks.scheduling.RefreshBroadcastReceiver; import dagger.Module; @Module(library = true, injects = { - RefreshBroadcastReceiver.class + RefreshBroadcastReceiver.class, + TasksWidget.class }) public class BroadcastModule { } diff --git a/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java b/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java new file mode 100644 index 000000000..10d04325e --- /dev/null +++ b/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java @@ -0,0 +1,14 @@ +package org.tasks.injection; + +import android.appwidget.AppWidgetProvider; +import android.content.Context; +import android.content.Intent; + +public class InjectingAppWidgetProvider extends AppWidgetProvider { + @Override + public void onReceive(Context context, Intent intent) { + ((Injector) context.getApplicationContext()).inject(this, new BroadcastModule()); + + super.onReceive(context, intent); + } +} diff --git a/astrid/src/main/java/org/tasks/widget/WidgetHelper.java b/astrid/src/main/java/org/tasks/widget/WidgetHelper.java index a5e5ab783..21debabb6 100644 --- a/astrid/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/astrid/src/main/java/org/tasks/widget/WidgetHelper.java @@ -13,8 +13,6 @@ import android.os.Build; import android.os.Bundle; import android.widget.RemoteViews; -import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.TaskEditActivity; @@ -26,7 +24,6 @@ import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.PermaSql; import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.data.TagData; -import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; @@ -38,15 +35,15 @@ import com.todoroo.astrid.widget.WidgetUpdateService; import org.tasks.R; +import javax.inject.Inject; +import javax.inject.Singleton; + import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +@Singleton public class WidgetHelper { - static { - AstridDependencyInjector.initialize(); - } - public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK; public static void startWidgetService(Context context) { @@ -73,10 +70,11 @@ public class WidgetHelper { context.sendBroadcast(intent); } - @Autowired TagDataService tagDataService; + private final TagDataService tagDataService; - public WidgetHelper() { - DependencyInjectionService.getInstance().inject(this); + @Inject + public WidgetHelper(TagDataService tagDataService) { + this.tagDataService = tagDataService; } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)