diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml
index 6ee64e42b..b53fad1e9 100644
--- a/astrid/AndroidManifest.xml
+++ b/astrid/AndroidManifest.xml
@@ -165,20 +165,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
index 2c26828b0..39d793148 100644
--- a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
@@ -4,6 +4,7 @@
package com.todoroo.astrid.core;
import android.content.BroadcastReceiver;
+import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -17,6 +18,7 @@ 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.TaskDao.TaskCriteria;
@@ -34,25 +36,72 @@ public final class CoreFilterExposer extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Resources r = context.getResources();
- // build filters
+ // core filters
Filter inbox = buildInboxFilter(r);
- Filter all = new Filter(CorePlugin.IDENTIFIER, r.getString(R.string.BFE_All),
- r.getString(R.string.BFE_All),
- new QueryTemplate().where(Criterion.not(TaskCriteria.isDeleted())).
- orderBy(Order.desc(Task.MODIFICATION_DATE)),
- null);
- all.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_files)).getBitmap();
-
SearchFilter searchFilter = new SearchFilter(CorePlugin.IDENTIFIER,
- "Search");
+ r.getString(R.string.BFE_Search));
searchFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_search)).getBitmap();
+ // extended
+ FilterCategory extended = new FilterCategory(CorePlugin.IDENTIFIER,
+ r.getString(R.string.BFE_Extended), new Filter[5]);
+
+ Filter alphabetical = new Filter(CorePlugin.IDENTIFIER,
+ r.getString(R.string.BFE_Alphabetical),
+ r.getString(R.string.BFE_Alphabetical),
+ new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
+ TaskCriteria.isVisible(DateUtilities.now()))).
+ orderBy(Order.asc(Task.TITLE)),
+ null);
+ alphabetical.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_alpha)).getBitmap();
+
+ Filter recent = new Filter(CorePlugin.IDENTIFIER,
+ 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(CorePlugin.IDENTIFIER,
+ r.getString(R.string.BFE_Hidden),
+ r.getString(R.string.BFE_Hidden),
+ new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
+ Criterion.not(TaskCriteria.isVisible(DateUtilities.now())))).
+ 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(CorePlugin.IDENTIFIER, r.getString(R.string.BFE_Completed),
+ r.getString(R.string.BFE_Completed),
+ new QueryTemplate().where(Criterion.and(TaskCriteria.completedBefore(DateUtilities.now()),
+ 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(CorePlugin.IDENTIFIER,
+ 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();
+
+ extended.children[0] = alphabetical;
+ extended.children[1] = recent;
+ extended.children[2] = hidden;
+ extended.children[3] = completed;
+ extended.children[4] = deleted;
+
// transmit filter list
FilterListItem[] list = new FilterListItem[3];
list[0] = inbox;
- list[1] = all;
- list[2] = searchFilter;
+ list[1] = searchFilter;
+ list[2] = extended;
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
@@ -64,8 +113,8 @@ public final class CoreFilterExposer extends BroadcastReceiver {
*/
@SuppressWarnings("nls")
public static Filter buildInboxFilter(Resources r) {
- Filter inbox = new Filter(CorePlugin.IDENTIFIER, r.getString(R.string.BFE_Inbox),
- r.getString(R.string.BFE_Inbox_title),
+ Filter inbox = new Filter(CorePlugin.IDENTIFIER, r.getString(R.string.BFE_Active),
+ r.getString(R.string.BFE_Active_title),
new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
TaskCriteria.isVisible(DateUtilities.now()))),
null);
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java
deleted file mode 100644
index 5b7600f24..000000000
--- a/astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * See the file "LICENSE" for the full license governing this code.
- */
-package com.todoroo.astrid.core;
-
-import android.content.BroadcastReceiver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.graphics.drawable.BitmapDrawable;
-
-import com.timsu.astrid.R;
-import com.todoroo.andlib.sql.Criterion;
-import com.todoroo.andlib.sql.Order;
-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.FilterListHeader;
-import com.todoroo.astrid.api.FilterListItem;
-import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
-import com.todoroo.astrid.model.Task;
-
-/**
- * Exposes Astrid's built in filters to the {@link FilterListActivity}
- *
- * @author Tim Su
- *
- */
-public final class ExtendedFilterExposer extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Resources r = context.getResources();
-
- // build filters
- FilterListHeader header = new FilterListHeader(ExtendedPlugin.IDENTIFIER,
- "Extended");
-
- Filter alphabetical = new Filter(ExtendedPlugin.IDENTIFIER,
- "Alphabetical",
- "Alphabetical",
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- TaskCriteria.isVisible(DateUtilities.now()))).
- orderBy(Order.asc(Task.TITLE)),
- null);
- alphabetical.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_alpha)).getBitmap();
-
- Filter recent = new Filter(ExtendedPlugin.IDENTIFIER,
- "Recently Modified",
- "Recently Modified",
- 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(ExtendedPlugin.IDENTIFIER,
- "Hidden Tasks",
- "Hidden Tasks",
- new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
- Criterion.not(TaskCriteria.isVisible(DateUtilities.now())))).
- orderBy(Order.asc(Task.HIDE_UNTIL)),
- hiddenValues);
- hidden.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_clouds)).getBitmap();
-
- Filter deleted = new Filter(ExtendedPlugin.IDENTIFIER,
- "Deleted Tasks",
- "Deleted Tasks",
- new QueryTemplate().where(TaskCriteria.isDeleted()).
- orderBy(Order.desc(Task.DELETION_DATE)),
- null);
- deleted.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.tango_trash)).getBitmap();
-
- // transmit filter list
- FilterListItem[] list = new FilterListItem[5];
- list[0] = header;
- list[1] = alphabetical;
- list[2] = recent;
- list[3] = hidden;
- list[4] = deleted;
- Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
- broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
- context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
- }
-
-}
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java
deleted file mode 100644
index c012b5dba..000000000
--- a/astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.todoroo.astrid.core;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-import com.todoroo.astrid.api.Addon;
-import com.todoroo.astrid.api.AstridApiConstants;
-
-public class ExtendedPlugin extends BroadcastReceiver {
-
- static final String IDENTIFIER = "extended";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Addon plugin = new Addon(IDENTIFIER, "Extended Filters", "Todoroo",
- "Provides extended filters for viewing subsets of your tasks");
-
- Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
- broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
- context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
- }
-
-}
diff --git a/astrid/res/drawable/background_gradient.xml b/astrid/res/drawable/background_gradient.xml
index 21ad1b2eb..56efcba45 100644
--- a/astrid/res/drawable/background_gradient.xml
+++ b/astrid/res/drawable/background_gradient.xml
@@ -3,7 +3,7 @@
android:shape="rectangle">
-
-
+
+
-
@@ -183,17 +185,15 @@
android:layout_height="1dip"
android:padding="5dip"
android:background="@android:drawable/divider_horizontal_dark" />
-
-
+
+
-
diff --git a/astrid/res/values/strings-3.0.xml b/astrid/res/values/strings-3.0.xml
index 52ac44c60..9c547fe22 100644
--- a/astrid/res/values/strings-3.0.xml
+++ b/astrid/res/values/strings-3.0.xml
@@ -251,28 +251,28 @@ to the plugin creator for fastest service.
Basic
- Extra
+ Advanced
Add-ons
- What to do?
+ Title
Task Summary
- How Important?
+ Importance
- When to Start?
+ Deadline
- Hide Until?
+ Hide Until
- Notes:
+ Notes
Enter Task Notes...
diff --git a/astrid/res/values/strings-filters.xml b/astrid/res/values/strings-filters.xml
index 7fb0ce1dd..8fcfbd469 100644
--- a/astrid/res/values/strings-filters.xml
+++ b/astrid/res/values/strings-filters.xml
@@ -4,16 +4,31 @@
-
- Inbox
+
+ Active Tasks
-
- Astrid: Inbox
+
+ Astrid: Home
+
+
+ Search
+
+
+ More...
+
+
+ Alphabetical
+
+
+ Recently Modified
- Completed
+ Completed Tasks
+
+
+ Hidden Tasks
-
- All Tasks
+
+ Deleted Tasks
diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java
index 54b6dfcca..7d9578372 100644
--- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java
+++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java
@@ -13,9 +13,9 @@ import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.TextView;
+import android.widget.ImageView.ScaleType;
import com.timsu.astrid.R;
import com.todoroo.astrid.api.FilterCategory;
@@ -135,7 +135,7 @@ public class FilterAdapter extends BaseExpandableListAdapter {
textView.setTextAppearance(activity, R.style.TextAppearance_FLA_Category);
View view = augmentView(textView, filter);
- view.setPadding(60, 2, 0, 2);
+ view.setPadding(50, 2, 0, 2);
FrameLayout.LayoutParams rowLayout = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
rowLayout.gravity = Gravity.CENTER_VERTICAL;
@@ -182,7 +182,7 @@ public class FilterAdapter extends BaseExpandableListAdapter {
View view = augmentView(textView, filter);
view.setBackgroundDrawable(null);
view.setLayoutParams(lp);
- view.setPadding(isChild ? 50 : 10, 0, 0, 0);
+ view.setPadding(isChild ? 40 : 10, 0, 0, 0);
return view;
}
diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
index 027a32e3a..f5438c4e4 100644
--- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
+++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
@@ -228,6 +228,12 @@ public class TaskAdapter extends CursorAdapter {
}
dueDateView.setText(dateValue);
setVisibility(dueDateView);
+ } else if(task.isCompleted()) {
+ String dateValue = DateUtilities.getDateFormat(activity).format(task.getValue(Task.COMPLETION_DATE));
+ dueDateView.setText(r.getString(R.string.TAd_completed, dateValue));
+ dueDateView.setTextAppearance(activity, R.style.TextAppearance_TAd_ItemDetails);
+ setVisibility(dueDateView);
+
} else {
dueDateView.setVisibility(View.GONE);
}