From 75d5cc581903f58d192aa7dd3a9d2b4564f4ea5d Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 8 Oct 2010 17:03:24 -0700 Subject: [PATCH] Pending Intent filter shortcut --- .../astrid/activity/FilterListActivity.java | 11 +++++------ .../astrid/activity/ShortcutActivity.java | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java index 0a417a523..ecb80d7d0 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java @@ -5,8 +5,8 @@ package com.todoroo.astrid.activity; import android.app.AlertDialog; import android.app.ExpandableListActivity; -import android.app.PendingIntent.CanceledException; import android.app.SearchManager; +import android.app.PendingIntent.CanceledException; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; @@ -18,22 +18,21 @@ import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; 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.WindowManager; +import android.view.ContextMenu.ContextMenuInfo; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ExpandableListView; -import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.FrameLayout; import android.widget.TextView; -import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; +import android.widget.ExpandableListView.ExpandableListContextMenuInfo; +import android.widget.TextView.OnEditorActionListener; -import com.todoroo.astrid.service.StatisticsService; import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; @@ -50,7 +49,7 @@ import com.todoroo.astrid.api.IntentFilter; import com.todoroo.astrid.core.SearchFilter; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.StartupService; -import com.todoroo.astrid.utility.Constants; +import com.todoroo.astrid.service.StatisticsService; /** * Activity that displays a user's task lists and allows users diff --git a/astrid/src/com/todoroo/astrid/activity/ShortcutActivity.java b/astrid/src/com/todoroo/astrid/activity/ShortcutActivity.java index eac7c5064..08177a504 100644 --- a/astrid/src/com/todoroo/astrid/activity/ShortcutActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/ShortcutActivity.java @@ -22,6 +22,8 @@ package com.todoroo.astrid.activity; import java.util.Map.Entry; import android.app.Activity; +import android.app.PendingIntent; +import android.app.PendingIntent.CanceledException; import android.content.ContentValues; import android.content.Intent; import android.os.Bundle; @@ -31,6 +33,7 @@ import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.data.Task; /** @@ -60,6 +63,8 @@ public class ShortcutActivity extends Activity { /** token for passing a {@link Filter}'s values for new tasks through extras as exploded ContentValues */ public static final String TOKEN_FILTER_VALUES_ITEM = "v4ntp_"; //$NON-NLS-1$ + /** token for passing a PendingIntent to launch */ + public static final String TOKEN_PENDING_INTENT = "pintent"; //$NON-NLS-1$ // --- implementation @@ -80,7 +85,14 @@ public class ShortcutActivity extends Activity { private void launchTaskList(Intent intent) { Bundle extras = intent.getExtras(); - if(extras != null && extras.containsKey(TOKEN_FILTER_SQL)) { + if(extras != null && extras.containsKey(TOKEN_PENDING_INTENT)) { + PendingIntent pending = extras.getParcelable(TOKEN_PENDING_INTENT); + try { + pending.send(); + } catch (CanceledException e) { + // ignore it + } + } else if(extras != null && extras.containsKey(TOKEN_FILTER_SQL)) { // launched from desktop shortcut, must create a fake filter String title = extras.getString(TOKEN_FILTER_TITLE); String sql = extras.getString(TOKEN_FILTER_SQL); @@ -131,6 +143,10 @@ public class ShortcutActivity extends Activity { Intent shortcutIntent = new Intent(ContextManager.getContext(), ShortcutActivity.class); + if(filter instanceof FilterWithCustomIntent) + shortcutIntent.putExtra(ShortcutActivity.TOKEN_PENDING_INTENT, + ((FilterWithCustomIntent)filter).intent); + shortcutIntent.setAction(Intent.ACTION_VIEW); shortcutIntent.putExtra(ShortcutActivity.TOKEN_FILTER_TITLE, filter.title);