diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java index f12eac534..74eb3af26 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java @@ -15,6 +15,7 @@ import android.os.Bundle; import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; @@ -33,6 +34,9 @@ import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.gtasks.GtasksPreferenceService; +import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.tags.TagService; /** * Exposes Astrid's built in filters to the {@link FilterListActivity} @@ -45,6 +49,9 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr private static final String TOKEN_FILTER_ID = "id"; //$NON-NLS-1$ private static final String TOKEN_FILTER_NAME = "name"; //$NON-NLS-1$ + @Autowired TagDataService tagDataService; + @Autowired GtasksPreferenceService gtasksPreferenceService; + @Override public void onReceive(Context context, Intent intent) { FilterListItem[] list = prepareFilters(context); @@ -56,6 +63,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr } private FilterListItem[] prepareFilters(Context context) { + DependencyInjectionService.getInstance().inject(this); Resources r = context.getResources(); //PendingIntent customFilterIntent = PendingIntent.getActivity(context, 0, @@ -78,7 +86,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr TodorooCursor cursor = dao.query(Query.select(StoreObject.PROPERTIES).where( StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME))); try { - Filter[] list = new Filter[cursor.getCount() + 2]; + Filter[] list = new Filter[cursor.getCount() + 3]; // stock filters String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today)); @@ -101,8 +109,16 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr null); list[1].listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_pencil)).getBitmap(); + int untaggedLabel = gtasksPreferenceService.isLoggedIn() ? + R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged; + list[2] = new Filter(r.getString(untaggedLabel), + r.getString(R.string.tag_FEx_untagged), + TagService.untaggedTemplate(), + null);; + list[2].listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gl_lists)).getBitmap(); + StoreObject savedFilter = new StoreObject(); - for(int i = 2; i < list.length; i++) { + for(int i = 3; i < list.length; i++) { cursor.moveToNext(); savedFilter.readFromCursor(cursor); list[i] = SavedFilter.load(savedFilter); diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index 873e740a7..3774d5e20 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -6,7 +6,6 @@ package com.todoroo.astrid.tags; import java.util.ArrayList; import android.app.Activity; -import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentValues; @@ -15,7 +14,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.graphics.Color; -import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.widget.EditText; import android.widget.Toast; @@ -34,7 +32,6 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridFilterExposer; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterCategory; -import com.todoroo.astrid.api.FilterCategoryWithNewButton; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithUpdate; @@ -60,8 +57,6 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE @Autowired TagDataService tagDataService; @Autowired GtasksPreferenceService gtasksPreferenceService; - private TagService tagService; - /** Create filter from new tag object */ @SuppressWarnings("nls") public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) { @@ -129,7 +124,6 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE private FilterListItem[] prepareFilters(Context context) { DependencyInjectionService.getInstance().inject(this); ContextManager.setContext(context); - tagService = TagService.getInstance(); ArrayList list = new ArrayList(); @@ -148,25 +142,13 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE } private FilterCategory filterFromTags(Tag[] tags, int name) { - Filter[] filters = new Filter[tags.length + 1]; + Filter[] filters = new Filter[tags.length]; Resources r = ContextManager.getContext().getResources(); - int untaggedLabel = gtasksPreferenceService.isLoggedIn() ? - R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged; - Filter untagged = new Filter(r.getString(untaggedLabel), - r.getString(R.string.tag_FEx_untagged), - tagService.untaggedTemplate(), - null); - untagged.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gl_lists)).getBitmap(); - filters[0] = untagged; - Context context = ContextManager.getContext(); for(int i = 0; i < tags.length; i++) - filters[i + 1] = filterFromTag(context, tags[i], TaskCriteria.activeAndVisible()); - FilterCategoryWithNewButton filter = new FilterCategoryWithNewButton(context.getString(name), filters); - filter.label = r.getString(R.string.tag_FEx_add_new); - filter.intent = PendingIntent.getActivity(context, 0, - TagsPlugin.newTagDialog(context), 0); + filters[i] = filterFromTag(context, tags[i], TaskCriteria.activeAndVisible()); + FilterCategory filter = new FilterCategory(context.getString(name), filters); return filter; } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index f08aa8f31..85cfbce82 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -141,7 +141,7 @@ public final class TagService { additionalCriterion); } - public QueryTemplate untaggedTemplate() { + public static QueryTemplate untaggedTemplate() { return new QueryTemplate().where(Criterion.and( Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where(MetadataCriteria.withKey(KEY)))), TaskCriteria.isActive(), diff --git a/astrid/res/layout/filter_list_activity.xml b/astrid/res/layout/filter_list_activity.xml index 1d416390d..ce5bec630 100644 --- a/astrid/res/layout/filter_list_activity.xml +++ b/astrid/res/layout/filter_list_activity.xml @@ -1,6 +1,6 @@ - @@ -52,15 +54,39 @@ android:scaleType="fitCenter" /> - + + + + +