From 3db3e4b795c08122d1c9d4fc105150231795448b Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Wed, 19 Jan 2011 10:57:19 -0800 Subject: [PATCH] widget combined inbox view only shows messages in inbox instead of showing all messages (e.g. messages in drafts, etc...) the "combined inbox" view now only messages in the inbox folder. This is now identical to the "combined inbox" view available in the full email UI. bug 3368613 Change-Id: I0080b56cd2718a3dce82b279277c63c4f43e86dc --- res/layout/widget.xml | 2 +- res/values/strings.xml | 4 ++-- .../android/email/provider/WidgetProvider.java | 17 +++++++++++++---- .../email/provider/WidgetProviderTests.java | 4 ++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/res/layout/widget.xml b/res/layout/widget.xml index fac3ff5ef..13f76a562 100644 --- a/res/layout/widget.xml +++ b/res/layout/widget.xml @@ -53,7 +53,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="-2sp" - android:text="@string/widget_all_mail" + android:text="@string/widget_all_inbox" android:textSize="14sp" android:textStyle="bold" android:textColor="@android:color/white" diff --git a/res/values/strings.xml b/res/values/strings.xml index 919a686f4..1d067458a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1005,8 +1005,8 @@ save attachment. Tap icon to change - - Combined Inbox + + Combined Inbox Unread diff --git a/src/com/android/email/provider/WidgetProvider.java b/src/com/android/email/provider/WidgetProvider.java index 1bb5dc79a..1ffd78809 100644 --- a/src/com/android/email/provider/WidgetProvider.java +++ b/src/com/android/email/provider/WidgetProvider.java @@ -124,7 +124,7 @@ public class WidgetProvider extends AppWidgetProvider { * mail; we rotate between them. Each ViewType is composed of a selection string and a title. */ public enum ViewType { - ALL_MAIL(null, NO_ARGUMENTS, R.string.widget_all_mail), + ALL_INBOX(null, NO_ARGUMENTS, R.string.widget_all_inbox), UNREAD(MessageColumns.FLAG_READ + "=0", NO_ARGUMENTS, R.string.widget_unread), STARRED(Message.ALL_FAVORITE_SELECTION, NO_ARGUMENTS, R.string.widget_starred), ACCOUNT(MessageColumns.ACCOUNT_KEY + "=?", new String[1], 0); @@ -146,6 +146,15 @@ public class WidgetProvider extends AppWidgetProvider { } return title; } + + public String getSelection(Context context) { + // For "all inbox", we define a special selection + if (this == ViewType.ALL_INBOX) { + // Rebuild selection every time in case accounts have been added or removed + return Utility.buildMailboxIdSelection(context, Mailbox.QUERY_ALL_INBOXES); + } + return selection; + } } static class EmailWidget implements RemoteViewsService.RemoteViewsFactory { @@ -248,7 +257,7 @@ public class WidgetProvider extends AppWidgetProvider { */ private void load(ViewType viewType) { reset(); - setSelection(viewType.selection); + setSelection(viewType.getSelection(sContext)); setSelectionArgs(viewType.selectionArgs); startLoading(); } @@ -284,11 +293,11 @@ public class WidgetProvider extends AppWidgetProvider { // Otherwise, fall through to the accounts themselves case STARRED: if (EmailContent.count(sContext, Account.CONTENT_URI) > 1) { - mViewType = ViewType.ALL_MAIL; + mViewType = ViewType.ALL_INBOX; break; } //$FALL-THROUGH$ - case ALL_MAIL: + case ALL_INBOX: ViewType.ACCOUNT.selectionArgs[0] = "0"; //$FALL-THROUGH$ case ACCOUNT: diff --git a/tests/src/com/android/email/provider/WidgetProviderTests.java b/tests/src/com/android/email/provider/WidgetProviderTests.java index 109246949..b2650995f 100644 --- a/tests/src/com/android/email/provider/WidgetProviderTests.java +++ b/tests/src/com/android/email/provider/WidgetProviderTests.java @@ -75,9 +75,9 @@ public class WidgetProviderTests extends ProviderTestCase2 { ProviderTestUtils.setupAccount("account2", true, mMockContext); // Create a widget widget = new EmailWidget(2); - // Since there are two accounts, this should switch to the ALL_MAIL view + // Since there are two accounts, this should switch to the ALL_INBOX view switchSync(widget); - assertEquals(WidgetProvider.ViewType.ALL_MAIL, widget.mViewType); + assertEquals(WidgetProvider.ViewType.ALL_INBOX, widget.mViewType); // The next two switches should be to the two accounts switchSync(widget);