Response to user feedback: Moved edit activity stuff around, tweaked background gradient, updated filters to be more useful.

pull/14/head
Tim Su 14 years ago
parent e89d5ab2ce
commit d03651c801

@ -165,20 +165,6 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- extended filters -->
<receiver android:name="com.todoroo.astrid.core.ExtendedPlugin">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_ADDONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.core.ExtendedFilterExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- tags -->
<receiver android:name="com.todoroo.astrid.tags.TagsPlugin">

@ -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);

@ -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 <tim@todoroo.com>
*
*/
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);
}
}

@ -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);
}
}

@ -3,7 +3,7 @@
android:shape="rectangle">
<gradient
android:type="radial"
android:startColor="#373737"
android:startColor="#171717"
android:endColor="#000000"
android:gradientRadius="300"
android:centerX="0.5"

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

@ -55,15 +55,17 @@
android:id="@+id/urgency"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<!-- hide until -->
<!-- tags -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TEA_hideUntil_label"
android:text="@string/TEA_tags_label"
style="@style/TextAppearance.GEN_EditLabel" />
<Spinner
android:id="@+id/hideUntil"
<LinearLayout
android:id="@+id/tags_container"
android:orientation="vertical"
android:paddingBottom="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
@ -183,17 +185,15 @@
android:layout_height="1dip"
android:padding="5dip"
android:background="@android:drawable/divider_horizontal_dark" />
<!-- tags -->
<!-- hide until -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TEA_tags_label"
android:text="@string/TEA_hideUntil_label"
style="@style/TextAppearance.GEN_EditLabel" />
<LinearLayout
android:id="@+id/tags_container"
android:orientation="vertical"
android:paddingBottom="5dip"
<Spinner
android:id="@+id/hideUntil"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

@ -251,28 +251,28 @@ to the plugin creator for fastest service.
<string name="TEA_tab_basic">Basic</string>
<!-- Second Tab - extra details -->
<string name="TEA_tab_extra">Extra</string>
<string name="TEA_tab_extra">Advanced</string>
<!-- Third Tab - add-ons -->
<string name="TEA_tab_addons">Add-ons</string>
<!-- Task title label -->
<string name="TEA_title_label">What to do?</string>
<string name="TEA_title_label">Title</string>
<!-- Task title hint (displayed when edit box is empty) -->
<string name="TEA_title_hint">Task Summary</string>
<!-- Task importance label -->
<string name="TEA_importance_label">How Important?</string>
<string name="TEA_importance_label">Importance</string>
<!-- Task urgency label -->
<string name="TEA_urgency_label">When to Start?</string>
<string name="TEA_urgency_label">Deadline</string>
<!-- Task hide until label -->
<string name="TEA_hideUntil_label">Hide Until?</string>
<string name="TEA_hideUntil_label">Hide Until</string>
<!-- Task note label -->
<string name="TEA_note_label">Notes:</string>
<string name="TEA_note_label">Notes</string>
<!-- Task note hint -->
<string name="TEA_notes_hint">Enter Task Notes...</string>

@ -4,16 +4,31 @@
<!-- Resources for built-in filter plug-in -->
<!-- Inbox Filter -->
<string name="BFE_Inbox">Inbox</string>
<!-- Active Tasks Filter -->
<string name="BFE_Active">Active Tasks</string>
<!-- Inbox Filter -->
<string name="BFE_Inbox_title">Astrid: Inbox</string>
<!-- Title for Active Tasks Filter (what user sees when first opening the app) -->
<string name="BFE_Active_title">Astrid: Home</string>
<!-- Search -->
<string name="BFE_Search">Search</string>
<!-- Extended Filters Category -->
<string name="BFE_Extended">More...</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Alphabetical</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Completed</string>
<string name="BFE_Completed">Completed Tasks</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<!-- All Tasks Filter -->
<string name="BFE_All">All Tasks</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
</resources>

@ -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;
}

@ -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);
}

Loading…
Cancel
Save