Add support for archive/spam/mute

Add new operations in the UIProvider for the providers that
support archive/mark spam/mute

Fix animations for userdebug builds

Change-Id: I2e6372095f7ce6d29d37768e1075a098ca3a7646
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 7133fe5..18c5044 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -17,12 +17,16 @@
 
 package com.android.mail.providers;
 
+import android.content.ContentProvider;
+import android.content.ContentValues;
 import android.content.Context;
 import android.provider.BaseColumns;
 import android.text.TextUtils;
+import android.net.Uri;
 
 import com.android.common.contacts.DataUsageStatUpdater;
 
+import java.lang.String;
 import java.util.ArrayList;
 
 
@@ -306,6 +310,23 @@
         public static final int PARENT = 0x0002;
         public static final int CAN_HOLD_MAIL = 0x0004;
         public static final int CAN_ACCEPT_MOVED_MESSAGES = 0x0008;
+        /**
+         * For accounts that support archive, this will indicate that this folder supports
+         * the archive functionality.
+         */
+        public static final int ARCHIVE = 0x0010;
+
+        /**
+         * For accounts that support report spam, this will indicate that this folder supports
+         * the report spam functionality.
+         */
+        public static final int REPORT_SPAM = 0x0020;
+
+        /**
+         * For accounts that support mute, this will indicate if a mute is performed from within
+         * this folder, the action is destructive.
+         */
+        public static final int DESTRUCTIVE_MUTE = 0x0040;
     }
 
     public static final class FolderColumns {
@@ -496,19 +517,46 @@
          */
         public static final String FOLDER_LIST = "folderList";
 
-        public ConversationColumns() {
+        private ConversationColumns() {
         }
     }
 
     /**
-     * Returns a uri that, when queried, will return a cursor with a list of information for the
-     * list of configured accounts.
-     * @return
+     * List of operations that can can be performed on a conversation. These operations are applied
+     * with {@link ContentProvider#update(Uri, ContentValues, String, String[])}
+     * where the conversation uri is specified, and the ContentValues specifies the operation to
+     * be performed.
+     * <p/>
+     * The operation to be performed is specified in the ContentValues by
+     * the {@link ConversationOperations#OPERATION_KEY}
+     * <p/>
+     * Note not all UI providers will support these operations.  {@link AccountCapabilities} can
+     * be used to determine which operations are supported.
      */
-    // TODO: create a static registry for the starting point for the UI provider.
-//    public static Uri getAccountsUri() {
-//        return Uri.parse(BASE_URI_STRING + "/");
-//    }
+    public static final class ConversationOperations {
+        /**
+         * ContentValues key used to specify the operation to be performed
+         */
+        public static final String OPERATION_KEY = "operation";
+
+        /**
+         * Archive operation
+         */
+        public static final String ARCHIVE = "archive";
+
+        /**
+         * Mute operation
+         */
+        public static final String MUTE = "mute";
+
+        /**
+         * Report spam operation
+         */
+        public static final String REPORT_SPAM = "report_spam";
+
+        private ConversationOperations() {
+        }
+    }
 
     public static final class DraftType {
         public static final int NOT_A_DRAFT = 0;