Add InjectingAppWidgetProvider

pull/143/head
Alex Baker 12 years ago
parent 2281b6fd1b
commit de9e68fba0

@ -29,6 +29,7 @@ import org.tasks.TasksModule;
import org.tasks.filters.FilterCounter; import org.tasks.filters.FilterCounter;
import org.tasks.injection.Injector; import org.tasks.injection.Injector;
import org.tasks.scheduling.RefreshScheduler; import org.tasks.scheduling.RefreshScheduler;
import org.tasks.widget.WidgetHelper;
import javax.inject.Inject; import javax.inject.Inject;
@ -76,6 +77,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
@Inject GtasksSyncService gtasksSyncService; @Inject GtasksSyncService gtasksSyncService;
@Inject GtasksTaskListUpdater gtasksTaskListUpdater; @Inject GtasksTaskListUpdater gtasksTaskListUpdater;
@Inject GtasksSyncV2Provider gtasksSyncV2Provider; @Inject GtasksSyncV2Provider gtasksSyncV2Provider;
@Inject WidgetHelper widgetHelper;
/** /**
* Initialize list of injectables. Special care must used when * Initialize list of injectables. Special care must used when
@ -128,6 +130,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
injectables.put("filterCounter", filterCounter); injectables.put("filterCounter", filterCounter);
injectables.put("refreshScheduler", refreshScheduler); injectables.put("refreshScheduler", refreshScheduler);
injectables.put("widgetHelper", widgetHelper);
} }
/** /**

@ -7,37 +7,33 @@ package com.todoroo.astrid.widget;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskEditActivity; import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingAppWidgetProvider;
import org.tasks.widget.WidgetHelper; 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 { public class TasksWidget extends InjectingAppWidgetProvider {
AstridDependencyInjector.initialize();
}
@Autowired private TaskService taskService; @Inject TaskService taskService;
@Inject WidgetHelper widgetHelper;
public static final String COMPLETE_TASK = "COMPLETE_TASK"; public static final String COMPLETE_TASK = "COMPLETE_TASK";
public static final String EDIT_TASK = "EDIT_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 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 long SUPPRESS_TIME = DateUtilities.ONE_MINUTE * 5;
private static final WidgetHelper widgetHelper = new WidgetHelper();
public TasksWidget() {
super();
DependencyInjectionService.getInstance().inject(this);
}
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
switch(intent.getAction()) { switch(intent.getAction()) {
case COMPLETE_TASK: case COMPLETE_TASK:
Task task = taskService.fetchById(intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0), Task.ID, Task.COMPLETION_DATE); 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: case BROADCAST_EVENT_TASK_LIST_UPDATED:
updateWidgets(context); updateWidgets(context);
break; 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) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
Intent intent = new Intent(ContextManager.getContext(), WidgetUpdateService.class); Intent intent = new Intent(ContextManager.getContext(), WidgetUpdateService.class);
intent.putExtra(WidgetUpdateService.EXTRA_WIDGET_ID, id); intent.putExtra(WidgetUpdateService.EXTRA_WIDGET_ID, id);

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.widget; package com.todoroo.astrid.widget;
import android.app.ListActivity;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Intent; import android.content.Intent;
@ -24,8 +23,12 @@ import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import org.tasks.R; 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_TITLE = "widget-title-";
public static final String PREF_SQL = "widget-sql-"; public static final String PREF_SQL = "widget-sql-";
@ -38,12 +41,10 @@ public class WidgetConfigActivity extends ListActivity {
FilterAdapter adapter = null; FilterAdapter adapter = null;
public WidgetConfigActivity() { @Inject WidgetHelper widgetHelper;
super();
}
public void updateWidget() { public void updateWidget() {
TasksWidget.applyConfigSelection(this, mAppWidgetId); TasksWidget.applyConfigSelection(widgetHelper, this, mAppWidgetId);
} }
@Override @Override

@ -54,7 +54,7 @@ public class WidgetUpdateService extends Service {
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
private final WidgetHelper widgetHelper = new WidgetHelper(); @Autowired WidgetHelper widgetHelper;
@Override @Override
public void onStart(final Intent intent, int startId) { public void onStart(final Intent intent, int startId) {

@ -12,6 +12,7 @@ import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.gtasks.GtasksListAdder; import com.todoroo.astrid.gtasks.GtasksListAdder;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.widget.WidgetConfigActivity;
import org.tasks.voice.VoiceCommandActivity; import org.tasks.voice.VoiceCommandActivity;
@ -32,7 +33,8 @@ import dagger.Module;
TagFilterExposer.DeleteTagActivity.class, TagFilterExposer.DeleteTagActivity.class,
TagFilterExposer.RenameTagActivity.class, TagFilterExposer.RenameTagActivity.class,
VoiceCommandActivity.class, VoiceCommandActivity.class,
GtasksLoginActivity.class GtasksLoginActivity.class,
WidgetConfigActivity.class
}) })
public class ActivityModule { public class ActivityModule {
} }

@ -1,12 +1,15 @@
package org.tasks.injection; package org.tasks.injection;
import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.scheduling.RefreshBroadcastReceiver; import org.tasks.scheduling.RefreshBroadcastReceiver;
import dagger.Module; import dagger.Module;
@Module(library = true, @Module(library = true,
injects = { injects = {
RefreshBroadcastReceiver.class RefreshBroadcastReceiver.class,
TasksWidget.class
}) })
public class BroadcastModule { public class BroadcastModule {
} }

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

@ -13,8 +13,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.widget.RemoteViews; 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.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.TaskEditActivity; 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.api.PermaSql;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
@ -38,15 +35,15 @@ import com.todoroo.astrid.widget.WidgetUpdateService;
import org.tasks.R; 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_MULTIPLE_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
@Singleton
public class WidgetHelper { public class WidgetHelper {
static {
AstridDependencyInjector.initialize();
}
public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK; public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK;
public static void startWidgetService(Context context) { public static void startWidgetService(Context context) {
@ -73,10 +70,11 @@ public class WidgetHelper {
context.sendBroadcast(intent); context.sendBroadcast(intent);
} }
@Autowired TagDataService tagDataService; private final TagDataService tagDataService;
public WidgetHelper() { @Inject
DependencyInjectionService.getInstance().inject(this); public WidgetHelper(TagDataService tagDataService) {
this.tagDataService = tagDataService;
} }
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)

Loading…
Cancel
Save