diff --git a/emailcommon/Android.mk b/emailcommon/Android.mk
index 817e512df..18fdc801d 100644
--- a/emailcommon/Android.mk
+++ b/emailcommon/Android.mk
@@ -25,10 +25,11 @@ apache_src_dir := ../../UnifiedEmail/src/org
imported_unified_email_files := \
$(unified_email_src_dir)/com/android/mail/utils/LogUtils.java \
- $(unified_email_src_dir)/com/android/mail/utils/LoggingInputStream.java
+ $(unified_email_src_dir)/com/android/mail/utils/LoggingInputStream.java \
+ $(unified_email_src_dir)/com/android/mail/providers/UIProvider.java
LOCAL_MODULE := com.android.emailcommon
-LOCAL_STATIC_JAVA_LIBRARIES := guava
+LOCAL_STATIC_JAVA_LIBRARIES := guava android-common
LOCAL_SRC_FILES := $(call all-java-files-under, src/com/android/emailcommon)
LOCAL_SRC_FILES += \
src/com/android/emailcommon/service/IEmailService.aidl \
diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
index edc5c8ca2..f6d24aea2 100755
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -32,6 +32,7 @@ import android.os.RemoteException;
import com.android.emailcommon.utility.TextUtilities;
import com.android.emailcommon.utility.Utility;
+import com.android.mail.providers.UIProvider;
import com.google.common.annotations.VisibleForTesting;
import java.io.File;
@@ -92,6 +93,10 @@ public abstract class EmailContent {
public static final String ADD_COLUMN_NAME = "add";
public static final String SET_COLUMN_NAME = "set";
+ public static final int SYNC_STATUS_NONE = UIProvider.SyncStatus.NO_SYNC;
+ public static final int SYNC_STATUS_USER = UIProvider.SyncStatus.USER_REFRESH;
+ public static final int SYNC_STATUS_BACKGROUND = UIProvider.SyncStatus.BACKGROUND_SYNC;
+
// Newly created objects get this id
public static final int NOT_SAVED = -1;
// The base Uri that this piece of content came from
@@ -1413,6 +1418,10 @@ public abstract class EmailContent {
public static final String LAST_SEEN_MESSAGE_KEY = "lastSeenMessageKey";
// The last time a message in this mailbox has been read (in millis)
public static final String LAST_TOUCHED_TIME = "lastTouchedTime";
+ // The UIProvider sync status
+ public static final String UI_SYNC_STATUS = "uiSyncStatus";
+ // The UIProvider last sync result
+ public static final String UI_LAST_SYNC_RESULT = "uiLastSyncResult";
}
public interface HostAuthColumns {
diff --git a/emailcommon/src/com/android/emailcommon/provider/Mailbox.java b/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
index 7ab5f4731..7dd14cd47 100644
--- a/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
+++ b/emailcommon/src/com/android/emailcommon/provider/Mailbox.java
@@ -57,6 +57,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
public String mSyncStatus;
public long mLastSeenMessageKey;
public long mLastTouchedTime;
+ public int mUiSyncStatus;
+ public int mUiLastSyncResult;
public static final int CONTENT_ID_COLUMN = 0;
public static final int CONTENT_DISPLAY_NAME_COLUMN = 1;
@@ -76,6 +78,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
public static final int CONTENT_PARENT_KEY_COLUMN = 15;
public static final int CONTENT_LAST_SEEN_MESSAGE_KEY_COLUMN = 16;
public static final int CONTENT_LAST_TOUCHED_TIME_COLUMN = 17;
+ public static final int CONTENT_UI_SYNC_STATUS_COLUMN = 18;
+ public static final int CONTENT_UI_LAST_SYNC_RESULT_COLUMN = 19;
/**
* NOTE: If fields are added or removed, the method {@link #getHashes()}
@@ -89,6 +93,7 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
MailboxColumns.FLAG_VISIBLE, MailboxColumns.FLAGS, MailboxColumns.VISIBLE_LIMIT,
MailboxColumns.SYNC_STATUS, MailboxColumns.PARENT_KEY,
MailboxColumns.LAST_SEEN_MESSAGE_KEY, MailboxColumns.LAST_TOUCHED_TIME,
+ MailboxColumns.UI_SYNC_STATUS, MailboxColumns.UI_LAST_SYNC_RESULT
};
private static final String ACCOUNT_AND_MAILBOX_TYPE_SELECTION =
@@ -308,6 +313,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
mSyncStatus = cursor.getString(CONTENT_SYNC_STATUS_COLUMN);
mLastSeenMessageKey = cursor.getLong(CONTENT_LAST_SEEN_MESSAGE_KEY_COLUMN);
mLastTouchedTime = cursor.getLong(CONTENT_LAST_TOUCHED_TIME_COLUMN);
+ mUiSyncStatus = cursor.getInt(CONTENT_UI_SYNC_STATUS_COLUMN);
+ mUiLastSyncResult = cursor.getInt(CONTENT_UI_LAST_SYNC_RESULT_COLUMN);
}
@Override
@@ -330,6 +337,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
values.put(MailboxColumns.SYNC_STATUS, mSyncStatus);
values.put(MailboxColumns.LAST_SEEN_MESSAGE_KEY, mLastSeenMessageKey);
values.put(MailboxColumns.LAST_TOUCHED_TIME, mLastTouchedTime);
+ values.put(MailboxColumns.UI_SYNC_STATUS, mUiSyncStatus);
+ values.put(MailboxColumns.UI_LAST_SYNC_RESULT, mUiLastSyncResult);
return values;
}
@@ -573,6 +582,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
dest.writeString(mSyncStatus);
dest.writeLong(mLastSeenMessageKey);
dest.writeLong(mLastTouchedTime);
+ dest.writeInt(mUiSyncStatus);
+ dest.writeInt(mUiLastSyncResult);
}
public Mailbox(Parcel in) {
@@ -595,6 +606,8 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
mSyncStatus = in.readString();
mLastSeenMessageKey = in.readLong();
mLastTouchedTime = in.readLong();
+ mUiSyncStatus = in.readInt();
+ mUiLastSyncResult = 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 d032b7857..03a3b74cd 100644
--- a/src/com/android/email/provider/DBHelper.java
+++ b/src/com/android/email/provider/DBHelper.java
@@ -33,10 +33,6 @@ import com.android.emailcommon.CalendarProviderStub;
import com.android.emailcommon.mail.Address;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.HostAuth;
-import com.android.emailcommon.provider.Mailbox;
-import com.android.emailcommon.provider.Policy;
-import com.android.emailcommon.provider.QuickResponse;
import com.android.emailcommon.provider.EmailContent.AccountColumns;
import com.android.emailcommon.provider.EmailContent.Attachment;
import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
@@ -49,6 +45,10 @@ import com.android.emailcommon.provider.EmailContent.MessageColumns;
import com.android.emailcommon.provider.EmailContent.PolicyColumns;
import com.android.emailcommon.provider.EmailContent.QuickResponseColumns;
import com.android.emailcommon.provider.EmailContent.SyncColumns;
+import com.android.emailcommon.provider.HostAuth;
+import com.android.emailcommon.provider.Mailbox;
+import com.android.emailcommon.provider.Policy;
+import com.android.emailcommon.provider.QuickResponse;
import com.android.emailcommon.service.LegacyPolicySet;
import com.google.common.annotations.VisibleForTesting;
@@ -112,8 +112,9 @@ public final class DBHelper {
// Version 28: Add notifiedMessageId and notifiedMessageCount to Account
// Version 29: Add protocolPoliciesEnforced and protocolPoliciesUnsupported to Policy
// Version 30: Use CSV of RFC822 addresses instead of "packed" values
+ // Version 31: Add columns to mailbox for ui status/last result
- public static final int DATABASE_VERSION = 30;
+ public static final int DATABASE_VERSION = 31;
// Any changes to the database format *must* include update-in-place code.
// Original version: 2
@@ -389,7 +390,9 @@ public final class DBHelper {
+ MailboxColumns.SYNC_STATUS + " text, "
+ MailboxColumns.MESSAGE_COUNT + " integer not null default 0, "
+ MailboxColumns.LAST_SEEN_MESSAGE_KEY + " integer, "
- + MailboxColumns.LAST_TOUCHED_TIME + " integer default 0"
+ + MailboxColumns.LAST_TOUCHED_TIME + " integer default 0, "
+ + MailboxColumns.UI_SYNC_STATUS + " integer default 0, "
+ + MailboxColumns.UI_LAST_SYNC_RESULT + " integer default 0"
+ ");";
db.execSQL("create table " + Mailbox.TABLE_NAME + s);
db.execSQL("create index mailbox_" + MailboxColumns.SERVER_ID
@@ -806,6 +809,18 @@ public final class DBHelper {
upgradeFromVersion29ToVersion30(db);
oldVersion = 30;
}
+ if (oldVersion == 30) {
+ try {
+ db.execSQL("alter table " + Mailbox.TABLE_NAME
+ + " add column " + Mailbox.UI_SYNC_STATUS + " integer;");
+ db.execSQL("alter table " + Mailbox.TABLE_NAME
+ + " add column " + Mailbox.UI_LAST_SYNC_RESULT + " integer;");
+ } catch (SQLException e) {
+ // Shouldn't be needed unless we're debugging and interrupt the process
+ Log.w(TAG, "Exception upgrading EmailProvider.db from 30 to 31 " + e);
+ }
+ oldVersion = 31;
+ }
}
@Override
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index ef8fd447d..763aa4b3a 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -200,7 +200,6 @@ public class EmailProvider extends ContentProvider {
private static final int UI_UPDATEDRAFT = UI_BASE + 7;
private static final int UI_SENDDRAFT = UI_BASE + 8;
private static final int UI_FOLDER_REFRESH = UI_BASE + 9;
- private static final int UI_FOLDER_STATUS = UI_BASE + 10;
private static final int UI_FOLDER = UI_BASE + 11;
// MUST ALWAYS EQUAL THE LAST OF THE PREVIOUS BASE CONSTANTS
@@ -404,7 +403,6 @@ public class EmailProvider extends ContentProvider {
matcher.addURI(EmailContent.AUTHORITY, "uiupdatedraft/#", UI_UPDATEDRAFT);
matcher.addURI(EmailContent.AUTHORITY, "uisenddraft/#", UI_SENDDRAFT);
matcher.addURI(EmailContent.AUTHORITY, "uirefresh/#", UI_FOLDER_REFRESH);
- matcher.addURI(EmailContent.AUTHORITY, "uistatus/#", UI_FOLDER_STATUS);
matcher.addURI(EmailContent.AUTHORITY, "uifolder/#", UI_FOLDER);
}
@@ -903,9 +901,6 @@ public class EmailProvider extends ContentProvider {
private static final Uri UIPROVIDER_MESSAGE_NOTIFIER =
Uri.parse("content://" + UIProvider.AUTHORITY + "/uimessages");
- private static final Uri UIPROVIDER_MAILBOX_NOTIFIER =
- Uri.parse("content://" + UIProvider.AUTHORITY + "/uifolder");
-
@Override
public Uri insert(Uri uri, ContentValues values) {
int match = findMatch(uri, "insert");
@@ -1133,10 +1128,8 @@ public class EmailProvider extends ContentProvider {
}
c = uiQuery(match, uri, projection);
return c;
- case UI_FOLDER_STATUS:
- return uiFolderStatus(uri);
case UI_FOLDER_REFRESH:
- return uiFolderRefresh(uri);
+ return uiFolderRefresh(uri, projection);
case ACCOUNT_DEFAULT_ID:
// Start with a snapshot of the cache
Map accountCache = mCacheAccount.getSnapshot();
@@ -1661,6 +1654,7 @@ outer:
// Notify all notifier cursors
sendNotifierChange(getBaseNotificationUri(match), NOTIFICATION_OP_UPDATE, id);
+ resolver.notifyChange(uri, null);
resolver.notifyChange(notificationUri, null);
return result;
}
@@ -1877,6 +1871,8 @@ outer:
.add(UIProvider.FolderColumns.UNREAD_COUNT, MailboxColumns.UNREAD_COUNT)
.add(UIProvider.FolderColumns.TOTAL_COUNT, MailboxColumns.MESSAGE_COUNT)
.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)
.build();
/**
@@ -2457,12 +2453,7 @@ outer:
}
};
- private Cursor uiFolderStatus(Uri uri) {
- // Will implement this when the status states are finalized
- return null;
- }
-
- private Cursor uiFolderRefresh(Uri uri) {
+ private Cursor uiFolderRefresh(Uri uri, String[] projection) {
Context context = getContext();
String idString = uri.getPathSegments().get(1);
long id = Long.parseLong(idString);
@@ -2474,6 +2465,6 @@ outer:
service.startSync(id, true);
} catch (RemoteException e) {
}
- return uiFolderStatus(uri);
+ return null;
}
}