From f707702ed22bc929df4c91de1e3db0bb1ac3b923 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Mon, 5 Jul 2010 01:35:42 -0700 Subject: [PATCH] Fixed a crash on startup, made notifications a bit better by opening up a new separate filter, also refactor. --- .../astrid/filters/CoreFilterExposer.java | 4 +-- .../todoroo/astrid/filters/CorePlugin.java | 4 +-- .../astrid/filters/ExtendedFilterExposer.java | 10 +++---- .../astrid/filters/ExtendedPlugin.java | 4 +-- .../reminders/NotificationActivity.java | 26 +++++++++++++++++-- .../astrid/reminders/ReminderPlugin.java | 24 +++++++++++++++++ .../astrid/activity/TaskEditActivity.java | 2 ++ astrid/src/com/todoroo/astrid/model/Task.java | 5 ++++ .../todoroo/astrid/utility/Preferences.java | 1 + 9 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPlugin.java diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java index 3d47d91db..4bc368879 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java @@ -37,7 +37,7 @@ public final class CoreFilterExposer extends BroadcastReceiver { // build filters Filter inbox = buildInboxFilter(r); - Filter all = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_All), + 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)), @@ -59,7 +59,7 @@ public final class CoreFilterExposer extends BroadcastReceiver { */ @SuppressWarnings("nls") public static Filter buildInboxFilter(Resources r) { - Filter inbox = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_Inbox), + Filter inbox = new Filter(CorePlugin.IDENTIFIER, r.getString(R.string.BFE_Inbox), r.getString(R.string.BFE_Inbox_title), new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(), TaskCriteria.isVisible(DateUtilities.now()))).orderBy( diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java b/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java index f11031b08..8981f42c6 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java +++ b/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java @@ -9,11 +9,11 @@ import com.todoroo.astrid.api.Plugin; public class CorePlugin extends BroadcastReceiver { - static final String pluginIdentifier = "core"; + static final String IDENTIFIER = "core"; @Override public void onReceive(Context context, Intent intent) { - Plugin plugin = new Plugin(pluginIdentifier, "Core Filters", "Todoroo", + Plugin plugin = new Plugin(IDENTIFIER, "Core Filters", "Todoroo", "Provides 'Inbox' and 'All Tasks' Filters"); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_PLUGINS); diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java index 1e9f23d5d..d4f2ba567 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java @@ -36,10 +36,10 @@ public final class ExtendedFilterExposer extends BroadcastReceiver { Resources r = context.getResources(); // build filters - FilterListHeader header = new FilterListHeader(ExtendedPlugin.pluginIdentifier, + FilterListHeader header = new FilterListHeader(ExtendedPlugin.IDENTIFIER, "Extended"); - Filter alphabetical = new Filter(ExtendedPlugin.pluginIdentifier, + Filter alphabetical = new Filter(ExtendedPlugin.IDENTIFIER, "Alphabetical", "Alphabetical", new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(), @@ -48,7 +48,7 @@ public final class ExtendedFilterExposer extends BroadcastReceiver { null); alphabetical.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_alpha)).getBitmap(); - Filter recent = new Filter(ExtendedPlugin.pluginIdentifier, + Filter recent = new Filter(ExtendedPlugin.IDENTIFIER, "Recently Modified", "Recently Modified", new QueryTemplate().orderBy(Order.desc(Task.MODIFICATION_DATE)).limit(15), @@ -57,7 +57,7 @@ public final class ExtendedFilterExposer extends BroadcastReceiver { ContentValues hiddenValues = new ContentValues(); hiddenValues.put(Task.HIDE_UNTIL.name, DateUtilities.now() + DateUtilities.ONE_DAY); - Filter hidden = new Filter(ExtendedPlugin.pluginIdentifier, + Filter hidden = new Filter(ExtendedPlugin.IDENTIFIER, "Hidden Tasks", "Hidden Tasks", new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(), @@ -66,7 +66,7 @@ public final class ExtendedFilterExposer extends BroadcastReceiver { hiddenValues); hidden.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_hidden)).getBitmap(); - Filter deleted = new Filter(ExtendedPlugin.pluginIdentifier, + Filter deleted = new Filter(ExtendedPlugin.IDENTIFIER, "Deleted Tasks", "Deleted Tasks", new QueryTemplate().where(TaskCriteria.isDeleted()). diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java index 36703531b..b942550ed 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java +++ b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java @@ -9,11 +9,11 @@ import com.todoroo.astrid.api.Plugin; public class ExtendedPlugin extends BroadcastReceiver { - static final String pluginIdentifier = "extended"; + static final String IDENTIFIER = "extended"; @Override public void onReceive(Context context, Intent intent) { - Plugin plugin = new Plugin(pluginIdentifier, "Extended Filters", "Todoroo", + Plugin plugin = new Plugin(IDENTIFIER, "Extended Filters", "Todoroo", "Provides extended filters for viewing subsets of your tasks"); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_PLUGINS); diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java index 9317c69c5..fc0d07178 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java @@ -23,8 +23,10 @@ import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import com.timsu.astrid.activities.TaskList; +import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.astrid.activity.TaskListActivity; +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.TaskDao.TaskCriteria; /** * This activity is launched when a user opens up a notification from the @@ -35,6 +37,16 @@ import com.todoroo.astrid.activity.TaskListActivity; */ public class NotificationActivity extends Activity { + // --- constants + + /** task id from notification */ + public static final String TOKEN_ID = "id"; + + /** task title */ + public static final String TOKEN_TITLE = "title"; + + // --- implementation + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -50,8 +62,18 @@ public class NotificationActivity extends Activity { } private void launchTaskList(Intent intent) { + long id = intent.getLongExtra(TOKEN_ID, -1); + if(id == -1) + return; + Intent taskListIntent = new Intent(this, TaskListActivity.class); - taskListIntent.putExtra(TaskList.VARIABLES_TAG, intent.getExtras()); + Filter itemFilter = new Filter(ReminderPlugin.IDENTIFIER, + "Notification", + "Notification", + new QueryTemplate().where(TaskCriteria.byId(id)), + null); + + taskListIntent.putExtra(TaskListActivity.TOKEN_FILTER, itemFilter); startActivity(taskListIntent); finish(); diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPlugin.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPlugin.java new file mode 100644 index 000000000..0d6692f66 --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPlugin.java @@ -0,0 +1,24 @@ +package com.todoroo.astrid.reminders; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.api.Plugin; + +public class ReminderPlugin extends BroadcastReceiver { + + static final String IDENTIFIER = "reminders"; + + @Override + public void onReceive(Context context, Intent intent) { + Plugin plugin = new Plugin(IDENTIFIER, "Reminders", "Todoroo", + "Provides notification reminders for tasks"); + + Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_PLUGINS); + broadcastIntent.putExtra(AstridApiConstants.EXTRAS_PLUGIN, plugin); + context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); + } + +} diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index 0c07a6c79..63cfd9b96 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -1035,6 +1035,8 @@ public final class TaskEditActivity extends TabActivity { @Override public void writeToModel() { model.setValue(Task.REMINDER_FLAGS, getValue()); + if(random.isChecked()) + model.setValue(Task.REMINDER_PERIOD, periodic); } } diff --git a/astrid/src/com/todoroo/astrid/model/Task.java b/astrid/src/com/todoroo/astrid/model/Task.java index db150f003..e5ac9ff11 100644 --- a/astrid/src/com/todoroo/astrid/model/Task.java +++ b/astrid/src/com/todoroo/astrid/model/Task.java @@ -273,6 +273,11 @@ public final class Task extends AbstractModel { * @param hasDueTime */ public void setDueDateAndTime(Date dueDate, boolean hasDueTime) { + if(dueDate == null || dueDate.getTime() == 0) { + setValue(Task.DUE_DATE, 0L); + return; + } + if(!hasDueTime) { dueDate.setHours(23); dueDate.setMinutes(59); diff --git a/astrid/src/com/todoroo/astrid/utility/Preferences.java b/astrid/src/com/todoroo/astrid/utility/Preferences.java index 0174492c2..1e5a4b936 100644 --- a/astrid/src/com/todoroo/astrid/utility/Preferences.java +++ b/astrid/src/com/todoroo/astrid/utility/Preferences.java @@ -23,6 +23,7 @@ public class Preferences { setIfUnset(prefs, editor, r, R.string.p_default_urgency_key, 4); setIfUnset(prefs, editor, r, R.string.p_default_importance_key, 2); setIfUnset(prefs, editor, r, R.string.p_default_hideUntil_key, 0); + setIfUnset(prefs, editor, r, R.string.p_fontSize, 22); editor.commit(); }