diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml
index e9aa1d671..6ab4063a1 100644
--- a/astrid/AndroidManifest.xml
+++ b/astrid/AndroidManifest.xml
@@ -164,15 +164,19 @@
-
+
+
+
+
+
+
-
-
+
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
index 0dfb33002..0232418f2 100644
--- a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
@@ -3,8 +3,8 @@
*/
package com.todoroo.astrid.core;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
-import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -12,17 +12,12 @@ import android.graphics.drawable.BitmapDrawable;
import com.timsu.astrid.R;
import com.todoroo.andlib.sql.Criterion;
-import com.todoroo.andlib.sql.Functions;
-import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
-import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.FilterListActivity;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
-import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListItem;
-import com.todoroo.astrid.api.SearchFilter;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Metadata;
@@ -44,89 +39,20 @@ public final class CoreFilterExposer extends BroadcastReceiver {
// core filters
Filter inbox = buildInboxFilter(r);
- SearchFilter searchFilter = new SearchFilter(CorePlugin.IDENTIFIER,
- r.getString(R.string.BFE_Search));
+ SearchFilter searchFilter = new SearchFilter(r.getString(R.string.BFE_Search));
searchFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_search)).getBitmap();
- // extended
-
- FilterCategory extended = new FilterCategory(r.getString(R.string.BFE_Extended),
- new Filter[7]);
-
- Filter recent = new Filter(r.getString(R.string.BFE_Recent),
- r.getString(R.string.BFE_Recent),
- new QueryTemplate().orderBy(Order.desc(Task.MODIFICATION_DATE)).limit(15),
- null);
- recent.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_new)).getBitmap();
-
- ContentValues hiddenValues = new ContentValues();
- hiddenValues.put(Task.HIDE_UNTIL.name, DateUtilities.now() + DateUtilities.ONE_DAY);
- Filter hidden = new Filter(r.getString(R.string.BFE_Hidden),
- r.getString(R.string.BFE_Hidden),
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- Criterion.not(TaskCriteria.isVisible()))).
- orderBy(Order.asc(Task.HIDE_UNTIL)),
- hiddenValues);
- hidden.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_clouds)).getBitmap();
-
- ContentValues completedValues = new ContentValues();
- hiddenValues.put(Task.COMPLETION_DATE.name, DateUtilities.now());
- Filter completed = new Filter(r.getString(R.string.BFE_Completed), r.getString(R.string.BFE_Completed),
- new QueryTemplate().where(Criterion.and(TaskCriteria.completed(),
- Criterion.not(TaskCriteria.isDeleted()))). orderBy(Order.desc(Task.COMPLETION_DATE)),
- completedValues);
- completed.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_check)).getBitmap();
-
- Filter deleted = new Filter(r.getString(R.string.BFE_Deleted),
- r.getString(R.string.BFE_Deleted),
- new QueryTemplate().where(TaskCriteria.isDeleted()).
- orderBy(Order.desc(Task.DELETION_DATE)),
- null);
- deleted.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_trash)).getBitmap();
-
- // sorting filters
-
- Filter alphabetical = new Filter(r.getString(R.string.BFE_Alphabetical),
- r.getString(R.string.BFE_Alphabetical),
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- TaskCriteria.isVisible())).
- orderBy(Order.asc(Functions.upper(Task.TITLE))),
- null);
- alphabetical.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_alpha)).getBitmap();
-
- Filter dueDate = new Filter(r.getString(R.string.BFE_DueDate),
- r.getString(R.string.BFE_DueDate),
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- TaskCriteria.isVisible())).
- orderBy(Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0),
- DateUtilities.now()*2, Task.DUE_DATE) + "+" + Task.IMPORTANCE)), //$NON-NLS-1$
- null);
- dueDate.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_calendar)).getBitmap();
-
- Filter importance = new Filter(r.getString(R.string.BFE_Importance),
- r.getString(R.string.BFE_Importance),
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- TaskCriteria.isVisible())).
- orderBy(Order.asc(Task.IMPORTANCE + "*" + (2*DateUtilities.now()) + //$NON-NLS-1$
- "+" + Functions.caseStatement(Task.DUE_DATE.eq(0), //$NON-NLS-1$
- Functions.now() + "+" + DateUtilities.ONE_WEEK, //$NON-NLS-1$
- Task.DUE_DATE))),
- null);
- importance.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_warning)).getBitmap();
-
- extended.children[0] = recent;
- extended.children[1] = hidden;
- extended.children[2] = completed;
- extended.children[3] = deleted;
- extended.children[4] = alphabetical;
- extended.children[5] = dueDate;
- extended.children[6] = importance;
+ PendingIntent customFilterIntent = PendingIntent.getActivity(context, 0,
+ new Intent(context, CustomFilterActivity.class), 0);
+ IntentFilter customFilter = new IntentFilter(r.getString(R.string.BFE_Custom),
+ customFilterIntent);
+ customFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gnome_filter)).getBitmap();
// transmit filter list
FilterListItem[] list = new FilterListItem[3];
list[0] = inbox;
list[1] = searchFilter;
- list[2] = extended;
+ list[2] = customFilter;
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
@@ -137,7 +63,7 @@ public final class CoreFilterExposer extends BroadcastReceiver {
* @return
*/
public static Filter buildInboxFilter(Resources r) {
- Filter inbox = new Filter(r.getString(R.string.BFE_Active), r.getString(R.string.BFE_Active_title),
+ Filter inbox = new Filter(r.getString(R.string.BFE_Active), r.getString(R.string.BFE_Active),
new QueryTemplate().where(
Criterion.and(TaskCriteria.isActive(), TaskCriteria.isVisible(),
Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where(
diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
index 7d2276fcc..4710a7e8b 100644
--- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
@@ -32,10 +32,8 @@ public class TagFilterExposer extends BroadcastReceiver {
private TagService tagService;
- @SuppressWarnings("nls")
private Filter filterFromTag(Context context, Tag tag, Criterion criterion) {
- String listTitle = context.getString(R.string.tag_FEx_tag_w_size).
- replace("$T", tag.tag).replace("$C", Integer.toString(tag.count));
+ String listTitle = tag.tag;
String title = context.getString(R.string.tag_FEx_name, tag.tag);
QueryTemplate tagTemplate = tag.queryTemplate(criterion);
ContentValues contentValues = new ContentValues();
@@ -61,55 +59,35 @@ public class TagFilterExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
tagService = TagService.getInstance();
- Tag[] tagsByAlpha = tagService.getGroupedTags(TagService.GROUPED_TAGS_BY_ALPHA, TaskCriteria.notDeleted());
+ Tag[] tags = tagService.getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE, TaskCriteria.notDeleted());
// If user does not have any tags, don't show this section at all
- if(tagsByAlpha.length == 0)
+ if(tags.length == 0)
return;
Resources r = context.getResources();
- Filter[] filtersByAlpha = new Filter[tagsByAlpha.length];
- for(int i = 0; i < tagsByAlpha.length; i++)
- filtersByAlpha[i] = filterFromTag(context, tagsByAlpha[i], TaskCriteria.notDeleted());
-
- Tag[] tagsBySize = tagService.getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE, TaskCriteria.isActive());
- Filter[] filtersBySize = new Filter[tagsBySize.length];
- for(int i = 0; i < tagsBySize.length; i++)
- filtersBySize[i] = filterFromTag(context, tagsBySize[i], TaskCriteria.isActive());
-
- Tag[] completed = tagService.getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE, TaskCriteria.completed());
- Filter[] filtersCompleted = new Filter[completed.length];
- for(int i = 0; i < completed.length; i++)
- filtersCompleted[i] = filterFromTag(context, completed[i], TaskCriteria.completed());
+ FilterListItem[] list = new FilterListItem[3];
FilterListHeader tagsHeader = new FilterListHeader(context.getString(R.string.tag_FEx_header));
+ list[0] = tagsHeader;
Filter untagged = new Filter(r.getString(R.string.tag_FEx_untagged),
r.getString(R.string.tag_FEx_untagged),
tagService.untaggedTemplate(),
null);
untagged.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_untagged)).getBitmap();
+ list[1] = untagged;
- FilterCategory tagsCategoryBySize = new FilterCategory(context.getString(R.string.tag_FEx_by_size),
- filtersBySize);
- tagsCategoryBySize.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_tags1)).getBitmap();
- FilterCategory tagsCategoryAllByAlpha = new FilterCategory(context.getString(R.string.tag_FEx_alpha),
- filtersByAlpha);
- tagsCategoryAllByAlpha.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_tags1)).getBitmap();
+ Filter[] filters = new Filter[tags.length];
+ for(int i = 0; i < tags.length; i++)
+ filters[i] = filterFromTag(context, tags[i], TaskCriteria.isActive());
+ FilterCategory tagsFilter = new FilterCategory(context.getString(R.string.tag_FEx_by_size), filters);
+ list[2] = tagsFilter;
- FilterCategory tagsCategoryCompleted = new FilterCategory(context.getString(R.string.tag_FEx_completed),
- filtersCompleted);
- tagsCategoryCompleted.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_tags2)).getBitmap();
// transmit filter list
- FilterListItem[] list = new FilterListItem[5];
- list[0] = tagsHeader;
- list[1] = untagged;
- list[2] = tagsCategoryBySize;
- list[3] = tagsCategoryCompleted;
- list[4] = tagsCategoryAllByAlpha;
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
diff --git a/astrid/res/values/strings-filters.xml b/astrid/res/values/strings-filters.xml
index 1261dbcdc..c60a0b8e4 100644
--- a/astrid/res/values/strings-filters.xml
+++ b/astrid/res/values/strings-filters.xml
@@ -4,17 +4,35 @@
+
+
Active Tasks
-
- Active Tasks
-
- Search
+ Search...
+
+
+ Custom Filter...
+
+
+
+
+ Custom Filter
+
+
+ Filter Name
+
+
+ New Filter
+
+
+ Copy of %s
+
+
+ All Tasks
-
- More...
+
Recently Modified
diff --git a/astrid/res/values/strings-tags.xml b/astrid/res/values/strings-tags.xml
index 5bb965056..2712e57e4 100644
--- a/astrid/res/values/strings-tags.xml
+++ b/astrid/res/values/strings-tags.xml
@@ -23,20 +23,11 @@
Tags
- Active
-
-
- Completed
-
-
- All Tags
+ Sorted By Size
Untagged
-
- $T ($C)
-
Tagged \'%s\'
diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
index 4d9f5c47e..3318b64d0 100644
--- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
@@ -42,7 +42,7 @@ import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListItem;
-import com.todoroo.astrid.api.SearchFilter;
+import com.todoroo.astrid.core.SearchFilter;
import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.utility.Constants;
diff --git a/astrid/src/com/todoroo/astrid/api/SearchFilter.java b/astrid/src/com/todoroo/astrid/api/SearchFilter.java
deleted file mode 100644
index 3a2081d35..000000000
--- a/astrid/src/com/todoroo/astrid/api/SearchFilter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.todoroo.astrid.api;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Special filter that triggers the search functionality when accessed.
- *
- * @author Tim Su
- *
- */
-public class SearchFilter extends FilterListItem {
-
- /**
- * Plug-in Identifier
- */
- public final String plugin;
-
- /**
- * Constructor for creating a new SearchFilter
- *
- * @param plugin
- * {@link Addon} identifier that encompasses object
- * @param listingTitle
- * Title of this item as displayed on the lists page, e.g. Inbox
- */
- public SearchFilter(String plugin, String listingTitle) {
- this.plugin = plugin;
- this.listingTitle = listingTitle;
- }
-
- /**
- * Constructor for creating a new SearchFilter
- *
- * @param plugin
- * {@link Addon} identifier that encompasses object
- */
- protected SearchFilter(String plugin) {
- this.plugin = plugin;
- }
-
- // --- parcelable
-
- /**
- * {@inheritDoc}
- */
- public int describeContents() {
- return 0;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(plugin);
- super.writeToParcel(dest, flags);
- }
-
- /**
- * Parcelable creator
- */
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
-
- /**
- * {@inheritDoc}
- */
- public SearchFilter createFromParcel(Parcel source) {
- SearchFilter item = new SearchFilter(source.readString());
- item.readFromParcel(source);
- return item;
- }
-
- /**
- * {@inheritDoc}
- */
- public SearchFilter[] newArray(int size) {
- return new SearchFilter[size];
- }
-
- };
-
-}