From 120613d06728c73dab649e82b06d57d4bbb2d507 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Mon, 23 Aug 2010 17:34:10 -0700 Subject: [PATCH] Fix for AS-299 - notifications don't open up the right page and instead re-use the old notification. There were bugs upon bugs upon bugs! --- astrid/AndroidManifest.xml | 1 + .../reminders/NotificationActivity.java | 1 - .../astrid/reminders/Notifications.java | 2 +- .../astrid/activity/TaskListActivity.java | 36 ++++++++++--------- .../com/todoroo/astrid/utility/Constants.java | 2 +- .../todoroo/astrid/widget/TasksWidget.java | 2 +- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index d1d28d495..4e881b6c5 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -316,6 +316,7 @@ android:taskAffinity="com.todoroo.astrid.reminders.NotificationActivity" android:launchMode="singleTask" android:screenOrientation="portrait" + android:finishOnTaskLaunch="true" android:clearTaskOnLaunch="true" /> diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java index 97255c878..91e2fbad2 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationActivity.java @@ -60,7 +60,6 @@ public class NotificationActivity extends TaskListActivity implements OnTimeSetL @Override public void onCreate(Bundle savedInstanceState) { - populateFilter(getIntent()); super.onCreate(savedInstanceState); displayNotificationPopup(); diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java b/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java index ccbf8824a..cf57b5cf9 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java @@ -147,7 +147,7 @@ public class Notifications extends BroadcastReceiver { Intent notifyIntent = new Intent(context, NotificationActivity.class); notifyIntent.putExtra(NotificationActivity.TOKEN_ID, id); - notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); showNotification((int)id, notifyIntent, type, title, text, nonstopMode); return true; diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index a574089ca..ebfda9655 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -2,9 +2,9 @@ package com.todoroo.astrid.activity; import java.util.Date; import java.util.List; +import java.util.Map.Entry; import java.util.Timer; import java.util.TimerTask; -import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicReference; import android.app.AlertDialog; @@ -25,26 +25,26 @@ import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; +import android.view.Window; +import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; -import android.widget.AbsListView.OnScrollListener; -import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.TextView.OnEditorActionListener; +import android.widget.Toast; import com.flurry.android.FlurryAgent; import com.timsu.astrid.R; @@ -182,13 +182,6 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, else setContentView(R.layout.task_list_activity_api3); - Bundle extras = getIntent().getExtras(); - if(extras != null && extras.containsKey(TOKEN_FILTER)) { - filter = extras.getParcelable(TOKEN_FILTER); - } else { - filter = CoreFilterExposer.buildInboxFilter(getResources()); - } - if(database == null) return; @@ -202,6 +195,14 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + + Bundle extras = intent.getExtras(); + if(extras != null && extras.containsKey(TOKEN_FILTER)) { + filter = extras.getParcelable(TOKEN_FILTER); + } else { + filter = CoreFilterExposer.buildInboxFilter(getResources()); + } + setUpTaskList(); if(Constants.DEBUG) setTitle("[D] " + filter.title); //$NON-NLS-1$ @@ -278,8 +279,6 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, } }); - ((TextView)findViewById(R.id.listLabel)).setText(filter.title); - // set listener for quick-changing task priority getListView().setOnKeyListener(new OnKeyListener() { @Override @@ -570,6 +569,8 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, sqlQueryTemplate.set(SortSelectionActivity.adjustQueryForFlagsAndSort(filter.sqlQuery, sortFlags, sortSort)); + ((TextView)findViewById(R.id.listLabel)).setText(filter.title); + // perform query TodorooCursor currentCursor = taskService.fetchFiltered( sqlQueryTemplate.get(), null, TaskAdapter.PROPERTIES); @@ -851,6 +852,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, ReminderService.getInstance().setScheduler(new AlarmScheduler() { @Override public void createAlarm(Task theTask, long time, int type) { + if(time == 0 || time == Long.MAX_VALUE) + return; + Toast.makeText(TaskListActivity.this, "Scheduled Alarm: " + //$NON-NLS-1$ new Date(time), Toast.LENGTH_LONG).show(); ReminderService.getInstance().setScheduler(null); diff --git a/astrid/src/com/todoroo/astrid/utility/Constants.java b/astrid/src/com/todoroo/astrid/utility/Constants.java index 4b9e2bfd1..34aa19312 100644 --- a/astrid/src/com/todoroo/astrid/utility/Constants.java +++ b/astrid/src/com/todoroo/astrid/utility/Constants.java @@ -35,7 +35,7 @@ public final class Constants { /** * Whether to turn on debugging logging and UI */ - public static final boolean DEBUG = false; + public static final boolean DEBUG = true; /** * Upgrade time diff --git a/astrid/src/com/todoroo/astrid/widget/TasksWidget.java b/astrid/src/com/todoroo/astrid/widget/TasksWidget.java index 3f18083ec..e71a26419 100644 --- a/astrid/src/com/todoroo/astrid/widget/TasksWidget.java +++ b/astrid/src/com/todoroo/astrid/widget/TasksWidget.java @@ -57,7 +57,7 @@ public class TasksWidget extends AppWidgetProvider { // Start in service to prevent Application Not Responding timeout updateWidgets(context); } catch (Exception e) { - Log.e("astrid-update-widget", "widget update error", e); //$NON-NLS-1$ + Log.e("astrid-update-widget", "widget update error", e); //$NON-NLS-1$ //$NON-NLS-2$ } }