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.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);
}
/**

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

@ -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

@ -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) {

@ -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 {
}

@ -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 {
}

@ -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.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)

Loading…
Cancel
Save