diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java index 6514d8958..1743059bf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java @@ -5,6 +5,8 @@ */ package com.todoroo.astrid.core; +import java.util.ArrayList; + import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ContentValues; @@ -108,44 +110,46 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr cursor = dao.query(Query.select(StoreObject.PROPERTIES).where( StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME))); try { - Filter[] list; - if (useCustomFilters && cursor != null) - list = new Filter[cursor.getCount() + 3]; - else - list = new Filter[3]; + ArrayList list = new ArrayList(); // stock filters - list[0] = getTodayFilter(r); - - list[1] = new Filter(r.getString(R.string.BFE_Recent), - r.getString(R.string.BFE_Recent), - new QueryTemplate().where( - TaskCriteria.ownedByMe()).orderBy( - Order.desc(Task.MODIFICATION_DATE)).limit(15), - null); - list[1].listingIcon = ((BitmapDrawable)r.getDrawable( - ThemeService.getDrawable(R.drawable.filter_pencil, themeFlags))).getBitmap(); + if (Preferences.getBoolean(R.string.p_show_today_filter, true)) + list.add(getTodayFilter(r)); + + if (Preferences.getBoolean(R.string.p_show_recently_modified_filter, true)) { + Filter recent = new Filter(r.getString(R.string.BFE_Recent), + r.getString(R.string.BFE_Recent), + new QueryTemplate().where( + TaskCriteria.ownedByMe()).orderBy( + Order.desc(Task.MODIFICATION_DATE)).limit(15), + null); + recent.listingIcon = ((BitmapDrawable)r.getDrawable( + ThemeService.getDrawable(R.drawable.filter_pencil, themeFlags))).getBitmap(); + + list.add(recent); + } - list[2] = getAssignedByMeFilter(r); + if (Preferences.getBoolean(R.string.p_show_ive_assigned_filter, true)) + list.add(getAssignedByMeFilter(r)); if (useCustomFilters && cursor != null) { StoreObject savedFilter = new StoreObject(); - for(int i = 3; i < list.length; i++) { - cursor.moveToNext(); + for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { savedFilter.readFromCursor(cursor); - list[i] = SavedFilter.load(savedFilter); + Filter f = SavedFilter.load(savedFilter); Intent deleteIntent = new Intent(context, DeleteActivity.class); deleteIntent.putExtra(TOKEN_FILTER_ID, savedFilter.getId()); - deleteIntent.putExtra(TOKEN_FILTER_NAME, list[i].title); - list[i].contextMenuLabels = new String[] { context.getString(R.string.BFE_Saved_delete) }; - list[i].contextMenuIntents = new Intent[] { deleteIntent }; - list[i].listingIcon = ((BitmapDrawable)r.getDrawable( + deleteIntent.putExtra(TOKEN_FILTER_NAME, f.title); + f.contextMenuLabels = new String[] { context.getString(R.string.BFE_Saved_delete) }; + f.contextMenuIntents = new Intent[] { deleteIntent }; + f.listingIcon = ((BitmapDrawable)r.getDrawable( ThemeService.getDrawable(R.drawable.filter_sliders, themeFlags))).getBitmap(); + list.add(f); } } - return list; + return list.toArray(new Filter[list.size()]); } finally { if (cursor != null) cursor.close(); diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index 369e742e5..336835ced 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -29,6 +29,7 @@ import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridFilterExposer; @@ -152,7 +153,10 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE } private FilterCategory filterFromTags(Tag[] tags, int name) { - int length = addUntaggedFilter ? tags.length + 1 : tags.length; + boolean shouldAddUntagged = addUntaggedFilter && + Preferences.getBoolean(R.string.p_show_not_in_list_filter, true); + + int length = shouldAddUntagged ? tags.length + 1 : tags.length; Filter[] filters = new Filter[length]; Context context = ContextManager.getContext(); @@ -161,7 +165,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE int themeFlags = ThemeService.getFilterThemeFlags(); // --- untagged - if (addUntaggedFilter) { + if (shouldAddUntagged) { int untaggedLabel = gtasksPreferenceService.isLoggedIn() ? R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged; Filter untagged = new Filter(r.getString(untaggedLabel), @@ -174,7 +178,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE } for(int i = 0; i < tags.length; i++) { - int index = addUntaggedFilter ? i + 1 : i; + int index = shouldAddUntagged ? i + 1 : i; filters[index] = constructFilter(context, tags[i]); } FilterCategory filter = new FilterCategory(context.getString(name), filters); diff --git a/astrid/res/values/keys.xml b/astrid/res/values/keys.xml index b6b55709e..6be377074 100644 --- a/astrid/res/values/keys.xml +++ b/astrid/res/values/keys.xml @@ -73,6 +73,14 @@ simple_input_boxes + + p_filters_to_show + p_show_my_tasks_f + p_show_today_f + p_show_recently_modified_f + p_show_assigned_f + p_show_no_list_f + 1 diff --git a/astrid/res/values/strings-core.xml b/astrid/res/values/strings-core.xml index 41eb6cb9a..fe7b8212b 100644 --- a/astrid/res/values/strings-core.xml +++ b/astrid/res/values/strings-core.xml @@ -648,6 +648,9 @@ Task list size + + Filters to show + Show confirmation for smart reminders diff --git a/astrid/res/values/strings-filters.xml b/astrid/res/values/strings-filters.xml index d4064f268..c849c4f4d 100644 --- a/astrid/res/values/strings-filters.xml +++ b/astrid/res/values/strings-filters.xml @@ -11,7 +11,7 @@ - Active Tasks + My Tasks diff --git a/astrid/res/xml/preferences.xml b/astrid/res/xml/preferences.xml index a383d47f4..2d735848b 100644 --- a/astrid/res/xml/preferences.xml +++ b/astrid/res/xml/preferences.xml @@ -55,6 +55,31 @@ + + + + + + + + +