diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
index 5b481129a..eb229be2c 100755
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -1466,6 +1466,8 @@ public abstract class EmailContent {
public static final String LAST_NOTIFIED_MESSAGE_KEY = "lastNotifiedMessageKey";
// The UIProvider last sync result
public static final String LAST_NOTIFIED_MESSAGE_COUNT = "lastNotifiedMessageCount";
+ // The total number of messages in the remote mailbox
+ public static final String TOTAL_COUNT = "totalCount";
}
public interface HostAuthColumns {
diff --git a/emailcommon/src/com/android/emailcommon/provider/Mailbox.java b/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
index a51d092b0..4e44ad2fd 100644
--- a/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
+++ b/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
@@ -60,6 +60,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
public int mUiLastSyncResult;
public long mLastNotifiedMessageKey;
public int mLastNotifiedMessageCount;
+ public int mTotalCount;
public static final int CONTENT_ID_COLUMN = 0;
public static final int CONTENT_DISPLAY_NAME_COLUMN = 1;
@@ -82,6 +83,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
public static final int CONTENT_UI_LAST_SYNC_RESULT_COLUMN = 18;
public static final int CONTENT_LAST_NOTIFIED_MESSAGE_KEY_COLUMN = 19;
public static final int CONTENT_LAST_NOTIFIED_MESSAGE_COUNT_COLUMN = 20;
+ public static final int CONTENT_TOTAL_COUNT_COLUMN = 21;
/**
* NOTE: If fields are added or removed, the method {@link #getHashes()}
@@ -95,7 +97,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
MailboxColumns.FLAG_VISIBLE, MailboxColumns.FLAGS, MailboxColumns.VISIBLE_LIMIT,
MailboxColumns.SYNC_STATUS, MailboxColumns.PARENT_KEY, MailboxColumns.LAST_TOUCHED_TIME,
MailboxColumns.UI_SYNC_STATUS, MailboxColumns.UI_LAST_SYNC_RESULT,
- MailboxColumns.LAST_NOTIFIED_MESSAGE_KEY, MailboxColumns.LAST_NOTIFIED_MESSAGE_COUNT
+ MailboxColumns.LAST_NOTIFIED_MESSAGE_KEY, MailboxColumns.LAST_NOTIFIED_MESSAGE_COUNT,
+ MailboxColumns.TOTAL_COUNT
};
private static final String ACCOUNT_AND_MAILBOX_TYPE_SELECTION =
@@ -322,6 +325,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
mUiLastSyncResult = cursor.getInt(CONTENT_UI_LAST_SYNC_RESULT_COLUMN);
mLastNotifiedMessageKey = cursor.getLong(CONTENT_LAST_NOTIFIED_MESSAGE_KEY_COLUMN);
mLastNotifiedMessageCount = cursor.getInt(CONTENT_LAST_NOTIFIED_MESSAGE_COUNT_COLUMN);
+ mTotalCount = cursor.getInt(CONTENT_TOTAL_COUNT_COLUMN);
}
@Override
@@ -347,6 +351,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
values.put(MailboxColumns.UI_LAST_SYNC_RESULT, mUiLastSyncResult);
values.put(MailboxColumns.LAST_NOTIFIED_MESSAGE_KEY, mLastNotifiedMessageKey);
values.put(MailboxColumns.LAST_NOTIFIED_MESSAGE_COUNT, mLastNotifiedMessageCount);
+ values.put(MailboxColumns.TOTAL_COUNT, mTotalCount);
return values;
}
@@ -565,6 +570,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
= mLastNotifiedMessageKey;
hash[CONTENT_LAST_NOTIFIED_MESSAGE_COUNT_COLUMN]
= mLastNotifiedMessageCount;
+ hash[CONTENT_TOTAL_COUNT_COLUMN]
+ = mTotalCount;
return hash;
}
@@ -599,6 +606,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
dest.writeInt(mUiLastSyncResult);
dest.writeLong(mLastNotifiedMessageKey);
dest.writeInt(mLastNotifiedMessageCount);
+ dest.writeInt(mTotalCount);
}
public Mailbox(Parcel in) {
@@ -624,6 +632,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
mUiLastSyncResult = in.readInt();
mLastNotifiedMessageKey = in.readLong();
mLastNotifiedMessageCount = in.readInt();
+ mTotalCount = in.readInt();
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
diff --git a/src/com/android/email/provider/DBHelper.java b/src/com/android/email/provider/DBHelper.java
index 1fac9ca7e..791adc2df 100644
--- a/src/com/android/email/provider/DBHelper.java
+++ b/src/com/android/email/provider/DBHelper.java
@@ -117,8 +117,9 @@ public final class DBHelper {
// Version 32: Add columns to mailbox for last notified message key/count; insure not null
// for "notified" columns
// Version 33: Add columns to attachment for ui provider columns
+ // Version 34: Add total count to mailbox
- public static final int DATABASE_VERSION = 33;
+ public static final int DATABASE_VERSION = 34;
// Any changes to the database format *must* include update-in-place code.
// Original version: 2
@@ -395,7 +396,8 @@ public final class DBHelper {
+ MailboxColumns.UI_SYNC_STATUS + " integer default 0, "
+ MailboxColumns.UI_LAST_SYNC_RESULT + " integer default 0, "
+ MailboxColumns.LAST_NOTIFIED_MESSAGE_KEY + " integer not null default 0, "
- + MailboxColumns.LAST_NOTIFIED_MESSAGE_COUNT + " integer not null default 0"
+ + MailboxColumns.LAST_NOTIFIED_MESSAGE_COUNT + " integer not null default 0, "
+ + MailboxColumns.TOTAL_COUNT + " integer"
+ ");";
db.execSQL("create table " + Mailbox.TABLE_NAME + s);
db.execSQL("create index mailbox_" + MailboxColumns.SERVER_ID
@@ -852,6 +854,16 @@ public final class DBHelper {
}
oldVersion = 33;
}
+ if (oldVersion == 33) {
+ try {
+ db.execSQL("alter table " + Mailbox.TABLE_NAME
+ + " add column " + MailboxColumns.TOTAL_COUNT + " integer;");
+ } catch (SQLException e) {
+ // Shouldn't be needed unless we're debugging and interrupt the process
+ Log.w(TAG, "Exception upgrading EmailProvider.db from 33 to 34 " + e);
+ }
+ oldVersion = 34;
+ }
}
@Override
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index 7f0fc9ffb..1f4d188fe 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -2000,6 +2000,7 @@ outer:
.add(UIProvider.FolderColumns.REFRESH_URI, uriWithId("uirefresh"))
.add(UIProvider.FolderColumns.SYNC_STATUS, MailboxColumns.UI_SYNC_STATUS)
.add(UIProvider.FolderColumns.LAST_SYNC_RESULT, MailboxColumns.UI_LAST_SYNC_RESULT)
+ .add(UIProvider.FolderColumns.TOTAL_COUNT, MailboxColumns.TOTAL_COUNT)
.build();
private static final ProjectionMap sAccountListMap = ProjectionMap.builder()
diff --git a/src/com/android/email/service/ImapService.java b/src/com/android/email/service/ImapService.java
index 101acd4b8..6dcfbebd4 100644
--- a/src/com/android/email/service/ImapService.java
+++ b/src/com/android/email/service/ImapService.java
@@ -552,6 +552,9 @@ public class ImapService extends Service {
// 5. Get the remote message count.
int remoteMessageCount = remoteFolder.getMessageCount();
+ ContentValues values = new ContentValues();
+ values.put(MailboxColumns.TOTAL_COUNT, remoteMessageCount);
+ mailbox.update(context, values);
// 6. Determine the limit # of messages to download
int visibleLimit = mailbox.mVisibleLimit;
diff --git a/src/com/android/email/service/Pop3Service.java b/src/com/android/email/service/Pop3Service.java
index 5c29e0c17..d69641ad8 100644
--- a/src/com/android/email/service/Pop3Service.java
+++ b/src/com/android/email/service/Pop3Service.java
@@ -52,6 +52,7 @@ import com.android.emailcommon.mail.MessagingException;
import com.android.emailcommon.mail.Part;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.EmailContent.MailboxColumns;
import com.android.emailcommon.provider.EmailContent.MessageColumns;
import com.android.emailcommon.provider.EmailContent.SyncColumns;
import com.android.emailcommon.provider.Mailbox;
@@ -536,6 +537,9 @@ public class Pop3Service extends Service {
// 5. Get the remote message count.
int remoteMessageCount = remoteFolder.getMessageCount();
+ ContentValues values = new ContentValues();
+ values.put(MailboxColumns.TOTAL_COUNT, remoteMessageCount);
+ mailbox.update(context, values);
// 6. Determine the limit # of messages to download
int visibleLimit = mailbox.mVisibleLimit;