Add mimetype to account, widget intents.

That way it is possible to distinguish between email2 and gmail2.

Change-Id: I495fcd24f684e0b935434b1a0628a9eb3bd9c834
diff --git a/src/com/android/mail/providers/Account.java b/src/com/android/mail/providers/Account.java
index f31126b..1ca6b3e 100644
--- a/src/com/android/mail/providers/Account.java
+++ b/src/com/android/mail/providers/Account.java
@@ -119,13 +119,14 @@
      */
     public final Uri composeIntentUri;
 
+    public final String mimeType;
     /**
      * Total number of members that comprise an instance of an account. This is
      * the number of members that need to be serialized or parceled. This
      * includes the members described above and name and type from the
      * superclass.
      */
-    private static final int NUMBER_MEMBERS = 17;
+    private static final int NUMBER_MEMBERS = 18;
 
     /**
      * Examples of expected format for the joined account strings
@@ -161,7 +162,8 @@
         out.append(settingsQueryUri).append(ACCOUNT_COMPONENT_SEPARATOR);
         out.append(helpIntentUri).append(ACCOUNT_COMPONENT_SEPARATOR);
         out.append(syncStatus).append(ACCOUNT_COMPONENT_SEPARATOR);
-        out.append(composeIntentUri);
+        out.append(composeIntentUri).append(ACCOUNT_COMPONENT_SEPARATOR);
+        out.append(mimeType);
         return out.toString();
     }
 
@@ -193,6 +195,7 @@
         helpIntentUri = Uri.parse(accountMembers[14]);
         syncStatus = Integer.valueOf(accountMembers[15]);
         composeIntentUri = Uri.parse(accountMembers[16]);
+        mimeType = accountMembers[17];
     }
 
     public Account(Parcel in) {
@@ -212,6 +215,7 @@
         helpIntentUri = in.readParcelable(null);
         syncStatus = in.readInt();
         composeIntentUri = in.readParcelable(null);
+        mimeType = in.readString();
     }
 
     public Account(Cursor cursor) {
@@ -241,6 +245,7 @@
         syncStatus = cursor.getInt(UIProvider.ACCOUNT_SYNC_STATUS_COLUMN);
         final String compose = cursor.getString(UIProvider.ACCOUNT_COMPOSE_INTENT_URI_COLUMN);
         composeIntentUri = !TextUtils.isEmpty(compose) ? Uri.parse(compose) : null;
+        mimeType = cursor.getString(UIProvider.ACCOUNT_MIME_TYPE_COLUMN);
     }
 
     /**
@@ -289,6 +294,7 @@
         dest.writeParcelable(helpIntentUri, 0);
         dest.writeInt(syncStatus);
         dest.writeParcelable(composeIntentUri, 0);
+        dest.writeString(mimeType);
     }
 
     /**
@@ -335,6 +341,8 @@
         sb.append(syncStatus);
         sb.append(",composeIntentUri=");
         sb.append(composeIntentUri);
+        sb.append(",mimeType=");
+        sb.append(mimeType);
 
         return sb.toString();
     }
@@ -364,7 +372,8 @@
                 Objects.equal(settingsQueryUri, other.settingsQueryUri) &&
                 Objects.equal(helpIntentUri, other.helpIntentUri) &&
                 (syncStatus == other.syncStatus) &&
-                Objects.equal(composeIntentUri, other.composeIntentUri);
+                Objects.equal(composeIntentUri, other.composeIntentUri) &&
+                TextUtils.equals(mimeType, other.mimeType);
     }
 
     @Override
@@ -372,7 +381,7 @@
         return super.hashCode() ^ Objects.hashCode(name, type, capabilities, providerVersion,
                 uri, folderListUri, searchUri, accountFromAddressesUri, saveDraftUri,
                 sendMessageUri, expungeMessageUri, undoUri, settingsIntentUri, settingsQueryUri,
-                helpIntentUri, syncStatus, composeIntentUri);
+                helpIntentUri, syncStatus, composeIntentUri, mimeType);
     }
 
     @SuppressWarnings("hiding")
diff --git a/src/com/android/mail/providers/AccountCacheProvider.java b/src/com/android/mail/providers/AccountCacheProvider.java
index 583b79b..11c6772 100644
--- a/src/com/android/mail/providers/AccountCacheProvider.java
+++ b/src/com/android/mail/providers/AccountCacheProvider.java
@@ -178,6 +178,8 @@
                     builder.add(Integer.valueOf((int)account.syncStatus));
                 } else if (TextUtils.equals(column, UIProvider.AccountColumns.COMPOSE_URI)) {
                     builder.add(account.composeIntentUri);
+                } else if (TextUtils.equals(column, UIProvider.AccountColumns.MIME_TYPE)) {
+                    builder.add(account.mimeType);
                 } else {
                     throw new IllegalStateException("Column not found: " + column);
                 }
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index dec32f9..b130c3d 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -94,7 +94,8 @@
             AccountColumns.SETTINGS_QUERY_URI,
             AccountColumns.SYNC_STATUS,
             AccountColumns.HELP_INTENT_URI,
-            AccountColumns.COMPOSE_URI
+            AccountColumns.COMPOSE_URI,
+            AccountColumns.MIME_TYPE
     };
 
     public static final int ACCOUNT_ID_COLUMN = 0;
@@ -114,6 +115,7 @@
     public static final int ACCOUNT_SYNC_STATUS_COLUMN = 14;
     public static final int ACCOUNT_HELP_INTENT_URI_COLUMN = 15;
     public static final int ACCOUNT_COMPOSE_INTENT_URI_COLUMN = 16;
+    public static final int ACCOUNT_MIME_TYPE_COLUMN = 17;
 
     public static final class AccountCapabilities {
         /**
@@ -301,6 +303,10 @@
          * of account to be shown.
          */
         public static final String COMPOSE_URI = "composeUri";
+        /**
+         * Mime-type defining this account.
+         */
+        public static final String MIME_TYPE = "mimeType";
     }
 
     // We define a "folder" as anything that contains a list of conversations.
diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java
index d56dcde..e06613d 100644
--- a/src/com/android/mail/utils/Utils.java
+++ b/src/com/android/mail/utils/Utils.java
@@ -573,7 +573,7 @@
             Account account) {
         final Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-        intent.setDataAndType(conversation.uri, "application/mail-ls");
+        intent.setDataAndType(conversation.uri, account.mimeType);
         intent.putExtra(Utils.EXTRA_ACCOUNT, account);
         intent.putExtra(Utils.EXTRA_FOLDER, folder);
         intent.putExtra(Utils.EXTRA_CONVERSATION, conversation);
@@ -589,7 +589,7 @@
     public static Intent createViewFolderIntent(Folder folder, Account account) {
         final Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-        intent.setDataAndType(folder.uri, "application/mail-ls");
+        intent.setDataAndType(folder.uri, account.mimeType);
         intent.putExtra(Utils.EXTRA_ACCOUNT, account);
         intent.putExtra(Utils.EXTRA_FOLDER, folder);
         return intent;