From 70ed8fbcc298a94272be64fd1cbe8dd9221d2461 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 23 Dec 2015 12:14:45 -0600 Subject: [PATCH] Revert "Remove static BuiltInFilterExposer methods" This reverts commit 0d85adcb28d18dd9011b2f79a2b74d1983920890. Conflicts: src/main/java/com/todoroo/astrid/activity/TaskListActivity.java --- .../astrid/subtasks/SubtasksTestCase.java | 5 +- .../astrid/activity/TaskListActivity.java | 13 ++- .../astrid/activity/TaskListFragment.java | 9 +- ...Filters.java => BuiltInFilterExposer.java} | 95 +++++++++++-------- .../astrid/subtasks/SubtasksHelper.java | 17 ++-- src/main/java/org/tasks/Tasks.java | 2 - .../org/tasks/filters/FilterProvider.java | 27 ++---- .../java/org/tasks/widget/WidgetHelper.java | 9 +- 8 files changed, 86 insertions(+), 91 deletions(-) rename src/main/java/com/todoroo/astrid/core/{BuiltInFilters.java => BuiltInFilterExposer.java} (59%) diff --git a/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.java b/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.java index a300d9a68..aaab3f76b 100644 --- a/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.java +++ b/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.java @@ -1,7 +1,7 @@ package com.todoroo.astrid.subtasks; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TaskListMetadataDao; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskListMetadata; @@ -23,7 +23,6 @@ public class SubtasksTestCase extends DatabaseTestCase { @Inject TaskListMetadataDao taskListMetadataDao; @Inject TaskService taskService; @Inject Preferences preferences; - @Inject BuiltInFilters builtInFilters; protected SubtasksUpdater updater; protected Filter filter; @@ -42,7 +41,7 @@ public class SubtasksTestCase extends DatabaseTestCase { @Override protected void setUp() { super.setUp(); - filter = builtInFilters.getMyTasks(); + filter = BuiltInFilterExposer.getMyTasksFilter(getContext().getResources()); preferences.clear(SubtasksUpdater.ACTIVE_TASKS_ORDER); updater = new SubtasksFilterUpdater(taskListMetadataDao, taskService); } diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 44b2c335d..846c3d873 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -36,7 +36,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.CustomFilter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; @@ -73,7 +73,6 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic @Inject ActivityPreferences preferences; @Inject GtasksPreferenceService gtasksPreferenceService; @Inject VoiceInputAssistant voiceInputAssistant; - @Inject BuiltInFilters builtInFilters; @Inject Tracker tracker; private static final int REQUEST_EDIT_TAG = 11543; @@ -153,7 +152,7 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic Filter savedFilter = getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER); if (savedFilter == null) { - savedFilter = builtInFilters.getMyTasks(); + savedFilter = getDefaultFilter(); extras.putAll(configureIntentAndExtrasWithFilter(getIntent(), savedFilter)); } @@ -252,6 +251,10 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic return true; } + protected Filter getDefaultFilter() { + return BuiltInFilterExposer.getMyTasksFilter(getResources()); + } + @Override public boolean onFilterItemClicked(FilterListItem item) { TaskEditFragment.removeExtrasFromIntent(getIntent()); @@ -501,7 +504,7 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic activeUuid = tagData.getUuid(); } if (activeUuid.equals(uuid)) { - getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, builtInFilters.getMyTasks()); // Handle in onPostResume() + getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, BuiltInFilterExposer.getMyTasksFilter(getResources())); // Handle in onPostResume() navigationDrawer.clear(); // Should auto refresh } else { tlf.refresh(); @@ -518,7 +521,7 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic CustomFilter customFilter = data.getParcelableExtra(FilterSettingsActivity.TOKEN_FILTER); getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, customFilter); } else if(AstridApiConstants.BROADCAST_EVENT_FILTER_DELETED.equals(action)) { - getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, builtInFilters.getMyTasks()); + getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, BuiltInFilterExposer.getMyTasksFilter(getResources())); } navigationDrawer.refresh(); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 7e4a58d9f..c023f5c78 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -45,7 +45,7 @@ import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskListMetadataDao; @@ -136,7 +136,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr @Inject Injector injector; @Inject GtasksPreferenceService gtasksPreferenceService; @Inject DialogBuilder dialogBuilder; - @Inject BuiltInFilters builtInFilters; protected Resources resources; protected TaskAdapter taskAdapter = null; @@ -361,13 +360,13 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr filter = extras.getParcelable(TOKEN_FILTER); extras.remove(TOKEN_FILTER); // Otherwise writing this filter to parcel gives infinite recursion } else { - filter = builtInFilters.getMyTasks(); + filter = BuiltInFilterExposer.getMyTasksFilter(resources); } filter.setFilterQueryOverride(null); - isInbox = builtInFilters.isMyTasksFilter(filter); + isInbox = BuiltInFilterExposer.isInbox(context, filter); isTodayFilter = false; if (!isInbox) { - isTodayFilter = builtInFilters.isTodayFilter(filter); + isTodayFilter = BuiltInFilterExposer.isTodayFilter(context, filter); } initializeTaskListMetadata(); diff --git a/src/main/java/com/todoroo/astrid/core/BuiltInFilters.java b/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.java similarity index 59% rename from src/main/java/com/todoroo/astrid/core/BuiltInFilters.java rename to src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.java index 238503857..a073339c1 100644 --- a/src/main/java/com/todoroo/astrid/core/BuiltInFilters.java +++ b/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.java @@ -31,58 +31,58 @@ import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import javax.inject.Singleton; -@Singleton -public final class BuiltInFilters { +/** + * Exposes Astrid's built in filters to the NavigationDrawerFragment + * + * @author Tim Su + * + */ +public final class BuiltInFilterExposer { - private final Filter myTasks; - private final Filter today; - private final Filter recentlyModified; - private final Filter uncategorized; + private final Preferences preferences; + private final Context context; @Inject - public BuiltInFilters(@ForApplication Context context) { - Resources resources = context.getResources(); - - myTasks = getMyTasksFilter(resources); - myTasks.icon = R.drawable.ic_inbox_24dp; - - today = getTodayFilter(resources); - today.icon = R.drawable.ic_today_24dp; - - recentlyModified = getRecentlyModifiedFilter(resources); - recentlyModified.icon = R.drawable.ic_history_24dp; - - uncategorized = getUncategorizedFilter(resources); - uncategorized.icon = R.drawable.ic_label_outline_24dp; - } - - public Filter getMyTasks() { - return myTasks; + public BuiltInFilterExposer(@ForApplication Context context, Preferences preferences) { + this.context = context; + this.preferences = preferences; } - public Filter getToday() { - return today; + public Filter getMyTasksFilter() { + Filter myTasksFilter = getMyTasksFilter(context.getResources()); + myTasksFilter.icon = R.drawable.ic_inbox_24dp; + return myTasksFilter; } - public Filter getRecentlyModified() { - return recentlyModified; + public List getFilters() { + Resources r = context.getResources(); + // core filters + List filters = new ArrayList<>(); + + if (preferences.getBoolean(R.string.p_show_today_filter, true)) { + Filter todayFilter = getTodayFilter(r); + todayFilter.icon = R.drawable.ic_today_24dp; + filters.add(todayFilter); + } + if (preferences.getBoolean(R.string.p_show_recently_modified_filter, true)) { + Filter recentlyModifiedFilter = getRecentlyModifiedFilter(r); + recentlyModifiedFilter.icon = R.drawable.ic_history_24dp; + filters.add(recentlyModifiedFilter); + } + if (preferences.getBoolean(R.string.p_show_not_in_list_filter, true)) { + Filter uncategorizedFilter = getUncategorizedFilter(r); + uncategorizedFilter.icon = R.drawable.ic_label_outline_24dp; + filters.add(uncategorizedFilter); + } + // transmit filter list + return filters; } - public Filter getUncategorized() { - return uncategorized; - } - - public boolean isMyTasksFilter(Filter filter) { - return myTasks.equals(filter); - } - - public boolean isTodayFilter(Filter filter) { - return today.equals(filter); - } - - private static Filter getMyTasksFilter(Resources r) { + /** + * Build inbox filter + */ + public static Filter getMyTasksFilter(Resources r) { return new Filter(r.getString(R.string.BFE_Active), new QueryTemplate().where( Criterion.and(TaskCriteria.activeAndVisible(), @@ -121,4 +121,15 @@ public final class BuiltInFilters { TaskCriteria.isVisible())), null); } + + /** + * Is this the inbox? + */ + public static boolean isInbox(Context context, Filter filter) { + return (filter != null && filter.equals(getMyTasksFilter(context.getResources()))); + } + + public static boolean isTodayFilter(Context context, Filter filter) { + return (filter != null && filter.equals(getTodayFilter(context.getResources()))); + } } diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java index 66088400a..4f0427fc9 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java @@ -1,5 +1,6 @@ package com.todoroo.astrid.subtasks; +import android.content.Context; import android.text.TextUtils; import com.todoroo.andlib.data.Property; @@ -7,7 +8,7 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskListMetadataDao; @@ -19,6 +20,7 @@ import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.AstridOrderedListUpdater.Node; import org.tasks.R; +import org.tasks.injection.ForApplication; import org.tasks.preferences.Preferences; import java.util.ArrayList; @@ -31,24 +33,23 @@ import timber.log.Timber; public class SubtasksHelper { + private final Context context; private final Preferences preferences; private final TaskService taskService; private final TagDataDao tagDataDao; private final TaskListMetadataDao taskListMetadataDao; - private BuiltInFilters builtInFilters; @Inject - public SubtasksHelper(Preferences preferences, TaskService taskService, TagDataDao tagDataDao, - TaskListMetadataDao taskListMetadataDao, BuiltInFilters builtInFilters) { + public SubtasksHelper(@ForApplication Context context, Preferences preferences, TaskService taskService, TagDataDao tagDataDao, TaskListMetadataDao taskListMetadataDao) { + this.context = context; this.preferences = preferences; this.taskService = taskService; this.tagDataDao = tagDataDao; this.taskListMetadataDao = taskListMetadataDao; - this.builtInFilters = builtInFilters; } public boolean shouldUseSubtasksFragmentForFilter(Filter filter) { - if(filter == null || builtInFilters.isMyTasksFilter(filter) || builtInFilters.isTodayFilter(filter) || filter.isTagFilter()) { + if(filter == null || BuiltInFilterExposer.isInbox(context, filter) || BuiltInFilterExposer.isTodayFilter(context, filter) || filter.isTagFilter()) { if(preferences.getBoolean(R.string.p_manual_sort, false)) { return true; } @@ -70,9 +71,9 @@ public class SubtasksHelper { TaskListMetadata tlm = null; if (tagData != null) { tlm = taskListMetadataDao.fetchByTagId(tagData.getUuid(), TaskListMetadata.TASK_IDS); - } else if (builtInFilters.isMyTasksFilter(filter)) { + } else if (BuiltInFilterExposer.isInbox(context, filter)) { tlm = taskListMetadataDao.fetchByTagId(TaskListMetadata.FILTER_ID_ALL, TaskListMetadata.TASK_IDS); - } else if (builtInFilters.isTodayFilter(filter)) { + } else if (BuiltInFilterExposer.isTodayFilter(context, filter)) { tlm = taskListMetadataDao.fetchByTagId(TaskListMetadata.FILTER_ID_TODAY, TaskListMetadata.TASK_IDS); } diff --git a/src/main/java/org/tasks/Tasks.java b/src/main/java/org/tasks/Tasks.java index 55e7a4c7a..fd3748a62 100644 --- a/src/main/java/org/tasks/Tasks.java +++ b/src/main/java/org/tasks/Tasks.java @@ -2,7 +2,6 @@ package org.tasks; import android.util.Log; -import com.todoroo.astrid.core.BuiltInFilters; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.StoreObjectDao; @@ -56,7 +55,6 @@ public class Tasks extends InjectingApplication { @Inject SyncThrottle syncThrottle; @Inject Preferences preferences; @Inject Tracker tracker; - @Inject BuiltInFilters builtInFilters; @Override public void onCreate() { diff --git a/src/main/java/org/tasks/filters/FilterProvider.java b/src/main/java/org/tasks/filters/FilterProvider.java index e235201ec..1d9cd65a0 100644 --- a/src/main/java/org/tasks/filters/FilterProvider.java +++ b/src/main/java/org/tasks/filters/FilterProvider.java @@ -1,56 +1,43 @@ package org.tasks.filters; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.gtasks.GtasksFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.timers.TimerFilterExposer; -import org.tasks.R; -import org.tasks.preferences.Preferences; - import java.util.ArrayList; import java.util.List; import javax.inject.Inject; public class FilterProvider { - private final BuiltInFilters builtInFilters; + private final BuiltInFilterExposer builtInFilterExposer; private final TimerFilterExposer timerFilterExposer; private final CustomFilterExposer customFilterExposer; private final TagFilterExposer tagFilterExposer; private final GtasksFilterExposer gtasksFilterExposer; - private final Preferences preferences; @Inject - public FilterProvider(BuiltInFilters builtInFilters, TimerFilterExposer timerFilterExposer, + public FilterProvider(BuiltInFilterExposer builtInFilterExposer, TimerFilterExposer timerFilterExposer, CustomFilterExposer customFilterExposer, TagFilterExposer tagFilterExposer, - GtasksFilterExposer gtasksFilterExposer, Preferences preferences) { + GtasksFilterExposer gtasksFilterExposer) { - this.builtInFilters = builtInFilters; + this.builtInFilterExposer = builtInFilterExposer; this.timerFilterExposer = timerFilterExposer; this.customFilterExposer = customFilterExposer; this.tagFilterExposer = tagFilterExposer; this.gtasksFilterExposer = gtasksFilterExposer; - this.preferences = preferences; } public Filter getMyTasksFilter() { - return builtInFilters.getMyTasks(); + return builtInFilterExposer.getMyTasksFilter(); } public List getFilters() { return new ArrayList() {{ - if (preferences.getBoolean(R.string.p_show_today_filter, true)) { - add(builtInFilters.getToday()); - } - if (preferences.getBoolean(R.string.p_show_recently_modified_filter, true)) { - add(builtInFilters.getRecentlyModified()); - } - if (preferences.getBoolean(R.string.p_show_not_in_list_filter, true)) { - add(builtInFilters.getUncategorized()); - } + addAll(builtInFilterExposer.getFilters()); addAll(timerFilterExposer.getFilters()); addAll(customFilterExposer.getFilters()); }}; diff --git a/src/main/java/org/tasks/widget/WidgetHelper.java b/src/main/java/org/tasks/widget/WidgetHelper.java index 2b9034823..2c18ba956 100644 --- a/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/src/main/java/org/tasks/widget/WidgetHelper.java @@ -18,7 +18,7 @@ import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; -import com.todoroo.astrid.core.BuiltInFilters; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.tags.TagFilterExposer; @@ -46,15 +46,12 @@ public class WidgetHelper { private final TagDataDao tagDataDao; private final Preferences preferences; private AlarmManager alarmManager; - private BuiltInFilters builtInFilters; @Inject - public WidgetHelper(TagDataDao tagDataDao, Preferences preferences, AlarmManager alarmManager, - BuiltInFilters builtInFilters) { + public WidgetHelper(TagDataDao tagDataDao, Preferences preferences, AlarmManager alarmManager) { this.tagDataDao = tagDataDao; this.preferences = preferences; this.alarmManager = alarmManager; - this.builtInFilters = builtInFilters; } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @@ -143,7 +140,7 @@ public class WidgetHelper { public Filter getFilter(Context context, int widgetId) { // base our filter off the inbox filter, replace stuff if we have it - Filter filter = builtInFilters.getMyTasks(); + 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