diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index a97ffe611..be0c74610 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -115,7 +115,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements TaskEditFragment taskEditFragment = getTaskEditFragment(); List taskEditControlFragments = null; if (taskEditFragment != null) { - if (intent.hasExtra(OPEN_FILTER) || intent.hasExtra(OPEN_TASK)) { + if (intent.hasExtra(OPEN_FILTER) || intent.hasExtra(LOAD_FILTER) || intent.hasExtra(OPEN_TASK)) { taskEditFragment.save(); taskEditFragment = null; } else { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 071437d92..b2b6ee17c 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -774,8 +774,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr Filter filter = TagFilterExposer.filterFromTagData(getActivity(), td); ((TaskListActivity) getActivity()).onFilterItemClicked(filter); } - } else { - refresh(); } } else if (AstridApiConstants.BROADCAST_EVENT_TAG_DELETED.equals(action)) { TagData tagData = getActiveTagData(); @@ -786,12 +784,11 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr if (activeUuid.equals(uuid)) { ((TaskListActivity) getActivity()).onFilterItemClicked(BuiltInFilterExposer.getMyTasksFilter(getResources())); ((TaskListActivity) getActivity()).clearNavigationDrawer(); // Should auto refresh - } else { - refresh(); } } ((TaskListActivity) getActivity()).refreshNavigationDrawer(); + broadcaster.refresh(); } } else if (requestCode == REQUEST_EDIT_FILTER) { if (resultCode == Activity.RESULT_OK) { @@ -804,6 +801,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr } ((TaskListActivity) getActivity()).refreshNavigationDrawer(); + broadcaster.refresh(); } } else if (requestCode == REQUEST_SORT) { if (resultCode == Activity.RESULT_OK) { diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterExposer.java b/src/main/java/com/todoroo/astrid/core/CustomFilterExposer.java index e24476fd3..64356d61d 100644 --- a/src/main/java/com/todoroo/astrid/core/CustomFilterExposer.java +++ b/src/main/java/com/todoroo/astrid/core/CustomFilterExposer.java @@ -49,6 +49,10 @@ public final class CustomFilterExposer { } private Filter load(StoreObject savedFilter) { + if (savedFilter == null) { + return null; + } + String title = savedFilter.getValue(SavedFilter.NAME); String sql = savedFilter.getValue(SavedFilter.SQL); String values = savedFilter.getValue(SavedFilter.VALUES); diff --git a/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java b/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java index dd7991b1f..88816f40e 100644 --- a/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java @@ -63,6 +63,9 @@ public class TagFilterExposer { /** Create filter from new tag object */ public static FilterWithCustomIntent filterFromTag(Context context, TagData tag, Criterion criterion) { + if (tag == null) { + return null; + } String title = tag.getName(); if (TextUtils.isEmpty(title)) { return null; diff --git a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java index 80b837358..6b0d8964f 100644 --- a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java +++ b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java @@ -8,27 +8,20 @@ package com.todoroo.astrid.widget; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.ComponentName; -import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Bundle; import android.view.View; import android.widget.RemoteViews; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.api.FilterWithCustomIntent; -import com.todoroo.astrid.core.BuiltInFilterExposer; -import com.todoroo.astrid.dao.TagDataDao; -import com.todoroo.astrid.data.TagData; -import com.todoroo.astrid.tags.TagFilterExposer; import org.tasks.Broadcaster; import org.tasks.R; import org.tasks.injection.BroadcastComponent; import org.tasks.injection.InjectingAppWidgetProvider; import org.tasks.intents.TaskIntents; +import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.Preferences; import org.tasks.widget.ScrollableWidgetUpdateService; @@ -39,20 +32,20 @@ import timber.log.Timber; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static com.todoroo.astrid.api.AstridApiConstants.BROADCAST_EVENT_REFRESH; -import static org.tasks.intents.TaskIntents.getEditTaskStack; +import static org.tasks.intents.TaskIntents.getEditTaskIntent; public class TasksWidget extends InjectingAppWidgetProvider { private static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP; @Inject Broadcaster broadcaster; - @Inject TagDataDao tagDataDao; @Inject Preferences preferences; + @Inject DefaultFilterProvider defaultFilterProvider; public static final String COMPLETE_TASK = "COMPLETE_TASK"; public static final String EDIT_TASK = "EDIT_TASK"; - public static final String EXTRA_FILTER = "extra_filter"; + public static final String EXTRA_FILTER_ID = "extra_filter_id"; public static final String EXTRA_ID = "extra_id"; //$NON-NLS-1$ @Override @@ -65,8 +58,10 @@ public class TasksWidget extends InjectingAppWidgetProvider { break; case EDIT_TASK: long taskId = intent.getLongExtra(EXTRA_ID, 0); - Filter filter = intent.getParcelableExtra(EXTRA_FILTER); - getEditTaskStack(context, filter, taskId).startActivities(); + String filterId = intent.getStringExtra(EXTRA_FILTER_ID); + Intent editTaskIntent = getEditTaskIntent(context, filterId, taskId); + editTaskIntent.setFlags(flags); + context.startActivity(editTaskIntent); break; case BROADCAST_EVENT_REFRESH: AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); @@ -97,11 +92,9 @@ public class TasksWidget extends InjectingAppWidgetProvider { } private RemoteViews createScrollableWidget(Context context, int id) { - Filter filter = getFilter(context, id); + String filterId = preferences.getStringValue(WidgetConfigActivity.PREF_WIDGET_ID + id); Intent rvIntent = new Intent(context, ScrollableWidgetUpdateService.class); - Bundle filterBundle = new Bundle(com.todoroo.astrid.api.Filter.class.getClassLoader()); - filterBundle.putParcelable(ScrollableWidgetUpdateService.FILTER, filter); - rvIntent.putExtra(ScrollableWidgetUpdateService.FILTER, filterBundle); + rvIntent.putExtra(ScrollableWidgetUpdateService.FILTER_ID, filterId); rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME))); boolean darkTheme = preferences.useDarkWidgetTheme(id); @@ -114,11 +107,12 @@ public class TasksWidget extends InjectingAppWidgetProvider { remoteViews.setInt(R.id.list_view, "setBackgroundColor", android.R.color.transparent); remoteViews.setInt(R.id.empty_view, "setBackgroundColor", android.R.color.transparent); } + Filter filter = defaultFilterProvider.getFilterFromPreference(filterId); remoteViews.setTextViewText(R.id.widget_title, filter.listingTitle); remoteViews.setRemoteAdapter(R.id.list_view, rvIntent); remoteViews.setEmptyView(R.id.list_view, R.id.empty_view); - remoteViews.setOnClickPendingIntent(R.id.widget_title, getOpenListIntent(context, filter, id)); - remoteViews.setOnClickPendingIntent(R.id.widget_button, getNewTaskIntent(context, filter, id)); + remoteViews.setOnClickPendingIntent(R.id.widget_title, getOpenListIntent(context, filterId, id)); + remoteViews.setOnClickPendingIntent(R.id.widget_button, getNewTaskIntent(context, filterId, id)); remoteViews.setPendingIntentTemplate(R.id.list_view, getPendingIntentTemplate(context)); return remoteViews; } @@ -128,74 +122,15 @@ public class TasksWidget extends InjectingAppWidgetProvider { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } - private PendingIntent getOpenListIntent(Context context, Filter filter, int widgetId) { - Intent intent = TaskIntents.getTaskListIntent(context, filter); + private PendingIntent getOpenListIntent(Context context, String filterId, int widgetId) { + Intent intent = TaskIntents.getTaskListByIdIntent(context, filterId); intent.setFlags(flags); return PendingIntent.getActivity(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); } - private PendingIntent getNewTaskIntent(Context context, Filter filter, int widgetId) { - Intent intent = TaskIntents.getNewTaskIntent(context, filter); + private PendingIntent getNewTaskIntent(Context context, String filterId, int widgetId) { + Intent intent = TaskIntents.getNewTaskIntent(context, filterId); intent.setFlags(flags); return PendingIntent.getActivity(context, -widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); } - - private Filter getFilter(Context context, int widgetId) { - // base our filter off the inbox filter, replace stuff if we have it - Filter filter = BuiltInFilterExposer.getMyTasksFilter(context.getResources()); - String sql = preferences.getStringValue(WidgetConfigActivity.PREF_SQL + widgetId); - if (sql != null) { - sql = sql.replace("tasks.userId=0", "1"); // TODO: replace dirty hack for missing column - filter.setSqlQuery(sql); - } - String title = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); - if (title != null) { - filter.listingTitle = title; - } - String contentValues = preferences.getStringValue(WidgetConfigActivity.PREF_VALUES + widgetId); - if (contentValues != null) { - filter.valuesForNewTasks = AndroidUtilities.contentValuesFromSerializedString(contentValues); - } - - String customComponent = preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_INTENT - + widgetId); - if (customComponent != null) { - ComponentName component = ComponentName.unflattenFromString(customComponent); - filter = new FilterWithCustomIntent(filter.listingTitle, filter.getSqlQuery(), filter.valuesForNewTasks); - ((FilterWithCustomIntent) filter).customTaskList = component; - String serializedExtras = preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_EXTRAS - + widgetId); - ((FilterWithCustomIntent) filter).customExtras = AndroidUtilities.bundleFromSerializedString(serializedExtras); - } - - // Validate tagData - long id = preferences.getLong(WidgetConfigActivity.PREF_TAG_ID + widgetId, 0); - TagData tagData; - if (id > 0) { - tagData = tagDataDao.fetch(id, TagData.ID, TagData.NAME, TagData.UUID); - if (tagData != null && !tagData.getName().equals(filter.listingTitle)) { // Tag has been renamed; rebuild filter - filter = TagFilterExposer.filterFromTagData(context, tagData); - preferences.setString(WidgetConfigActivity.PREF_SQL + widgetId, filter.getSqlQuery()); - preferences.setString(WidgetConfigActivity.PREF_TITLE + widgetId, filter.listingTitle); - ContentValues newTaskValues = filter.valuesForNewTasks; - String contentValuesString = null; - if (newTaskValues != null) { - contentValuesString = AndroidUtilities.contentValuesToSerializedString(newTaskValues); - } - preferences.setString(WidgetConfigActivity.PREF_VALUES + widgetId, contentValuesString); - String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent) filter).customExtras); - if (flattenedExtras != null) { - preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId, - flattenedExtras); - } - } - } else { - tagData = tagDataDao.getTagByName(filter.listingTitle, TagData.ID); - if (tagData != null) { - preferences.setLong(WidgetConfigActivity.PREF_TAG_ID + widgetId, tagData.getId()); - } - } - - return filter; - } } diff --git a/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java b/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java index b5cc8a9c8..46826e845 100644 --- a/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java +++ b/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java @@ -6,7 +6,6 @@ package com.todoroo.astrid.widget; import android.appwidget.AppWidgetManager; -import android.content.ContentValues; import android.content.Intent; import android.os.Bundle; import android.util.DisplayMetrics; @@ -15,11 +14,9 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.ListView; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; -import com.todoroo.astrid.api.FilterWithCustomIntent; import org.tasks.R; import org.tasks.filters.FilterCounter; @@ -27,17 +24,13 @@ import org.tasks.filters.FilterProvider; import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingListActivity; import org.tasks.preferences.ActivityPreferences; +import org.tasks.preferences.DefaultFilterProvider; 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-"; - public static final String PREF_VALUES = "widget-values-"; - public static final String PREF_CUSTOM_INTENT = "widget-intent-"; - public static final String PREF_CUSTOM_EXTRAS = "widget-extras-"; - public static final String PREF_TAG_ID = "widget-tag-id-"; + public static final String PREF_WIDGET_ID = "widget-id-"; public static final String PREF_SHOW_DUE_DATE = "widget-show-due-date-"; public static final String PREF_HIDE_CHECKBOXES = "widget-hide-checkboxes-"; public static final String PREF_DARK_THEME = "widget-dark-theme-"; @@ -51,6 +44,7 @@ public class WidgetConfigActivity extends InjectingListActivity { @Inject FilterCounter filterCounter; @Inject ActivityPreferences preferences; @Inject FilterProvider filterProvider; + @Inject DefaultFilterProvider defaultFilterProvider; @Override public void onCreate(Bundle icicle) { @@ -132,37 +126,14 @@ public class WidgetConfigActivity extends InjectingListActivity { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); - String sql = null; - String contentValuesString = null; - String title = null; - - if(filterListItem != null && filterListItem instanceof Filter) { - sql = ((Filter)filterListItem).getSqlQuery(); - ContentValues values = ((Filter)filterListItem).valuesForNewTasks; - if(values != null) { - contentValuesString = AndroidUtilities.contentValuesToSerializedString(values); - } - title = ((Filter)filterListItem).listingTitle; - } - - preferences.setString(WidgetConfigActivity.PREF_TITLE + mAppWidgetId, title); - preferences.setString(WidgetConfigActivity.PREF_SQL + mAppWidgetId, sql); - preferences.setString(WidgetConfigActivity.PREF_VALUES + mAppWidgetId, contentValuesString); - preferences.setBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + mAppWidgetId, showDueDate); - preferences.setBoolean(WidgetConfigActivity.PREF_DARK_THEME + mAppWidgetId, darkTheme); - preferences.setBoolean(WidgetConfigActivity.PREF_HIDE_CHECKBOXES + mAppWidgetId, hideCheckboxes); - preferences.setBoolean(WidgetConfigActivity.PREF_HIDE_HEADER + mAppWidgetId, hideHeader); - preferences.setBoolean(WidgetConfigActivity.PREF_WIDGET_TRANSPARENT + mAppWidgetId, transparent); - - if(filterListItem instanceof FilterWithCustomIntent) { - String flattenedName = ((FilterWithCustomIntent)filterListItem).customTaskList.flattenToString(); - preferences.setString(WidgetConfigActivity.PREF_CUSTOM_INTENT + mAppWidgetId, - flattenedName); - String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent)filterListItem).customExtras); - if (flattenedExtras != null) { - preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + mAppWidgetId, - flattenedExtras); - } + if (filterListItem != null && filterListItem instanceof Filter) { + Filter filter = (Filter) filterListItem; + preferences.setString(WidgetConfigActivity.PREF_WIDGET_ID + mAppWidgetId, defaultFilterProvider.getFilterPreferenceValue(filter)); + preferences.setBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + mAppWidgetId, showDueDate); + preferences.setBoolean(WidgetConfigActivity.PREF_DARK_THEME + mAppWidgetId, darkTheme); + preferences.setBoolean(WidgetConfigActivity.PREF_HIDE_CHECKBOXES + mAppWidgetId, hideCheckboxes); + preferences.setBoolean(WidgetConfigActivity.PREF_HIDE_HEADER + mAppWidgetId, hideHeader); + preferences.setBoolean(WidgetConfigActivity.PREF_WIDGET_TRANSPARENT + mAppWidgetId, transparent); } } diff --git a/src/main/java/org/tasks/intents/TaskIntents.java b/src/main/java/org/tasks/intents/TaskIntents.java index 3e0fc1fef..f81585f48 100644 --- a/src/main/java/org/tasks/intents/TaskIntents.java +++ b/src/main/java/org/tasks/intents/TaskIntents.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.support.v4.app.TaskStackBuilder; +import com.google.common.base.Strings; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.api.Filter; @@ -14,8 +15,14 @@ public class TaskIntents { return TaskStackBuilder.create(context).addNextIntent(getEditTaskIntent(context, filter, taskId)); } - public static Intent getNewTaskIntent(Context context, Filter filter) { - return getEditTaskIntent(context, filter, 0L); + public static Intent getNewTaskIntent(Context context, String filterId) { + return getEditTaskIntent(context, filterId, 0L); + } + + public static Intent getEditTaskIntent(Context context, String filterId, long taskId) { + Intent taskListIntent = getTaskListByIdIntent(context, filterId); + taskListIntent.putExtra(TaskListActivity.OPEN_TASK, taskId); + return taskListIntent; } public static Intent getEditTaskIntent(Context context, final Filter filter, final long taskId) { @@ -31,4 +38,12 @@ public class TaskIntents { } return intent; } + + public static Intent getTaskListByIdIntent(Context context, final String filterId) { + Intent intent = new Intent(context, TaskListActivity.class); + if (!Strings.isNullOrEmpty(filterId)) { + intent.putExtra(TaskListActivity.LOAD_FILTER, filterId); + } + return intent; + } } diff --git a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index 28282a50d..a928d7629 100644 --- a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -1,5 +1,6 @@ package org.tasks.widget; +import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.res.Resources; @@ -23,6 +24,7 @@ import com.todoroo.astrid.widget.WidgetConfigActivity; import org.tasks.BuildConfig; import org.tasks.R; +import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.Preferences; import org.tasks.ui.WidgetCheckBoxes; @@ -31,13 +33,14 @@ import timber.log.Timber; public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { private final WidgetCheckBoxes checkBoxes; + private final int widgetId; private final Database database; private final TaskService taskService; + private final DefaultFilterProvider defaultFilterProvider; private final SubtasksHelper subtasksHelper; private final Preferences preferences; private final Context context; - private final Filter filter; - private final int widgetId; + private final String filterId; private final boolean dark; private final boolean showDueDates; private final boolean hideCheckboxes; @@ -48,17 +51,19 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac SubtasksHelper subtasksHelper, Preferences preferences, Context context, - Filter filter, + String filterId, int widgetId, Database database, - TaskService taskService) { + TaskService taskService, + DefaultFilterProvider defaultFilterProvider) { this.subtasksHelper = subtasksHelper; this.preferences = preferences; this.context = context; - this.filter = filter; + this.filterId = filterId; this.widgetId = widgetId; this.database = database; this.taskService = taskService; + this.defaultFilterProvider = defaultFilterProvider; checkBoxes = new WidgetCheckBoxes(context); dark = preferences.useDarkWidgetTheme(widgetId); @@ -156,7 +161,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac long taskId = task.getId(); Intent editIntent = new Intent(TasksWidget.EDIT_TASK); - editIntent.putExtra(TasksWidget.EXTRA_FILTER, filter); + editIntent.putExtra(TasksWidget.EXTRA_FILTER_ID, filterId); editIntent.putExtra(TasksWidget.EXTRA_ID, taskId); row.setOnClickFillInIntent(R.id.widget_row, editIntent); @@ -195,15 +200,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac if(sort == 0) { sort = SortHelper.SORT_WIDGET; } - - filter.setFilterQueryOverride(null); - - String query = SortHelper.adjustQueryForFlagsAndSort(preferences, - filter.getSqlQuery(), sort).replaceAll("LIMIT \\d+", ""); - - String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); - - return subtasksHelper.applySubtasksToWidgetFilter(filter, query, tagName, 0); + Filter filter = defaultFilterProvider.getFilterFromPreference(filterId); + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + RemoteViews rv = new RemoteViews(context.getPackageName(), dark ? R.layout.scrollable_widget_dark : R.layout.scrollable_widget_light); + rv.setTextViewText(R.id.widget_title, filter.listingTitle); + appWidgetManager.partiallyUpdateAppWidget(widgetId, rv); + String query = SortHelper.adjustQueryForFlagsAndSort(preferences, filter.getSqlQuery(), sort).replaceAll("LIMIT \\d+", ""); + return subtasksHelper.applySubtasksToWidgetFilter(filter, query, filter.listingTitle, 0); } public void formatDueDate(RemoteViews row, Task task, int textColor) { diff --git a/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java b/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java index 2ac2ea1f5..40dac9066 100644 --- a/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java +++ b/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java @@ -4,25 +4,26 @@ import android.appwidget.AppWidgetManager; import android.content.Intent; import android.os.Bundle; -import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksHelper; import org.tasks.injection.InjectingRemoteViewsService; import org.tasks.injection.ServiceComponent; +import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.Preferences; import javax.inject.Inject; public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { - public static final String FILTER = "org.tasks.widget.FILTER"; + public static final String FILTER_ID = "org.tasks.widget.FILTER_ID"; @Inject Database database; @Inject TaskService taskService; @Inject Preferences preferences; @Inject SubtasksHelper subtasksHelper; + @Inject DefaultFilterProvider defaultFilterProvider; @Override public void onStart(Intent intent, int startId) { @@ -42,11 +43,10 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { return null; } - Bundle bundle = extras.getBundle(FILTER); - Filter filter = (Filter) bundle.get(FILTER); + String filterId = (String) extras.get(FILTER_ID); int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); - return new ScrollableViewsFactory(subtasksHelper, preferences, this, filter, - widgetId, database, taskService); + return new ScrollableViewsFactory(subtasksHelper, preferences, this, filterId, + widgetId, database, taskService, defaultFilterProvider); } @Override