Merge "Finish incoming/outgoing/exchange layouts" into honeycomb
diff --git a/src/com/android/email/activity/MailboxesAdapter.java b/src/com/android/email/activity/MailboxesAdapter.java
index 19c4cb6..e71239d 100644
--- a/src/com/android/email/activity/MailboxesAdapter.java
+++ b/src/com/android/email/activity/MailboxesAdapter.java
@@ -350,6 +350,7 @@
private static class MailboxesLoader extends ThrottlingCursorLoader {
private final Context mContext;
private final int mMode;
+ private final long mAccountId;
private static String getSelection(int mode) {
if (mode == MODE_MOVE_TO_TARGET) {
@@ -365,6 +366,7 @@
new String[] { String.valueOf(accountId) }, MAILBOX_ORDER_BY);
mContext = context;
mMode = mode;
+ mAccountId = accountId;
}
@Override
@@ -381,10 +383,10 @@
return Utility.CloseTraceCursorWrapper.get(mailboxesCursor);
}
- // Add "Starred".
+ // Add "Starred", only if the account has at least one starred message.
// TODO It's currently "combined starred", but the plan is to make it per-account
// starred.
- final int starredCount = Message.getFavoriteMessageCount(mContext);
+ final int starredCount = Message.getFavoriteMessageCount(mContext, mAccountId);
if (starredCount == 0) {
return Utility.CloseTraceCursorWrapper.get(mailboxesCursor); // no starred message
}
diff --git a/src/com/android/email/provider/EmailContent.java b/src/com/android/email/provider/EmailContent.java
index b102f2b..91952f7 100644
--- a/src/com/android/email/provider/EmailContent.java
+++ b/src/com/android/email/provider/EmailContent.java
@@ -544,6 +544,9 @@
private static final String FAVORITE_COUNT_SELECTION =
MessageColumns.FLAG_FAVORITE + "= 1";
+ private static final String ACCOUNT_FAVORITE_COUNT_SELECTION =
+ MessageColumns.FLAG_FAVORITE + "= 1 AND " + MessageColumns.ACCOUNT_KEY + "=?";
+
private static final String ACCOUNT_KEY_SELECTION =
MessageColumns.ACCOUNT_KEY + "=?";
@@ -858,6 +861,14 @@
return count(context, Message.CONTENT_URI, FAVORITE_COUNT_SELECTION, null);
}
+ /**
+ * @return number of favorite (starred) messages for an account
+ */
+ public static int getFavoriteMessageCount(Context context, long accountId) {
+ return count(context, Message.CONTENT_URI, ACCOUNT_FAVORITE_COUNT_SELECTION,
+ new String[]{Long.toString(accountId)});
+ }
+
public static long getKeyColumnLong(Context context, long messageId, String column) {
String[] columns =
Utility.getRowColumns(context, Message.CONTENT_URI, messageId, column);
diff --git a/tests/src/com/android/email/provider/ProviderTests.java b/tests/src/com/android/email/provider/ProviderTests.java
index 7564ccd..f1f6c59 100644
--- a/tests/src/com/android/email/provider/ProviderTests.java
+++ b/tests/src/com/android/email/provider/ProviderTests.java
@@ -1914,6 +1914,7 @@
* - {@link Mailbox#getUnreadCountByAccountAndMailboxType(Context, long, int)}
* - {@link Mailbox#getUnreadCountByMailboxType(Context, int)}
* - {@link Message#getFavoriteMessageCount(Context)}
+ * - {@link Message#getFavoriteMessageCount(Context, long)}
*/
public void testMessageCount() {
final Context c = mMockContext;
@@ -1936,6 +1937,8 @@
assertEquals(0, getMessageCount(b4.mId));
assertEquals(0, Message.getFavoriteMessageCount(c));
+ assertEquals(0, Message.getFavoriteMessageCount(c, a1.mId));
+ assertEquals(0, Message.getFavoriteMessageCount(c, a2.mId));
assertEquals(0, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_INBOX));
assertEquals(0, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_OUTBOX));
assertEquals(0, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_INBOX));
@@ -1953,14 +1956,14 @@
// 1. Test for insert triggers.
// Create some messages
- // b1 (account 1, inbox): 1 message
+ // b1 (account 1, inbox): 1 message, including 1 starred
Message m11 = createMessage(c, b1, true, false);
- // b2 (account 1, outbox): 2 message
+ // b2 (account 1, outbox): 2 message, including 1 starred
Message m21 = createMessage(c, b2, false, false);
Message m22 = createMessage(c, b2, true, true);
- // b3 (account 2, inbox): 3 message
+ // b3 (account 2, inbox): 3 message, including 1 starred
Message m31 = createMessage(c, b3, false, false);
Message m32 = createMessage(c, b3, false, false);
Message m33 = createMessage(c, b3, true, true);
@@ -1975,6 +1978,8 @@
// Check the simple counting methods.
assertEquals(3, Message.getFavoriteMessageCount(c));
+ assertEquals(2, Message.getFavoriteMessageCount(c, a1.mId));
+ assertEquals(1, Message.getFavoriteMessageCount(c, a2.mId));
assertEquals(3, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_INBOX));
assertEquals(1, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_OUTBOX));
assertEquals(4, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_INBOX));