Support sync status

Change-Id: I104ece356d664204340eb635bd51313f49c3ffe1
diff --git a/src/com/android/exchange/ExchangeService.java b/src/com/android/exchange/ExchangeService.java
index a1d4139..8bfb191 100644
--- a/src/com/android/exchange/ExchangeService.java
+++ b/src/com/android/exchange/ExchangeService.java
@@ -1670,9 +1670,11 @@
     }
 
     private void requestSync(Mailbox m, int reason, Request req) {
+        int syncStatus = EmailContent.SYNC_STATUS_BACKGROUND;
         // Don't sync if there's no connectivity
         if (sConnectivityHold || (m == null) || sStop) {
             if (reason >= SYNC_CALLBACK_START) {
+                syncStatus = EmailContent.SYNC_STATUS_USER;
                 try {
                     sCallbackProxy.syncMailboxStatus(m.mId, EmailServiceStatus.CONNECTION_ERROR, 0);
                 } catch (RemoteException e) {
@@ -1694,11 +1696,18 @@
                         service.addRequest(req);
                     }
                     startServiceThread(service);
+                    setMailboxSyncStatus(m.mId, syncStatus);
                 }
             }
         }
     }
 
+    private void setMailboxSyncStatus(long id, int status) {
+        ContentValues values = new ContentValues();
+        values.put(Mailbox.UI_SYNC_STATUS, status);
+        mResolver.update(ContentUris.withAppendedId(Mailbox.CONTENT_URI, id), values, null, null);
+    }
+
     private void stopServiceThreads() {
         synchronized (sSyncLock) {
             ArrayList<Long> toStop = new ArrayList<Long>();
@@ -2540,6 +2549,7 @@
                 return;
             }
             exchangeService.releaseMailbox(mailboxId);
+            exchangeService.setMailboxSyncStatus(mailboxId, EmailContent.SYNC_STATUS_NONE);
 
             ConcurrentHashMap<Long, SyncError> errorMap = exchangeService.mSyncErrorMap;
             SyncError syncError = errorMap.get(mailboxId);