Make Actionbar aware of capabilities

Change-Id: I15dd2ea169930d9a820df2ef4f314ccb5bac3770
diff --git a/res/menu/conversation_actions.xml b/res/menu/conversation_actions.xml
index 6dd6452..3f392b4 100644
--- a/res/menu/conversation_actions.xml
+++ b/res/menu/conversation_actions.xml
@@ -18,60 +18,69 @@
 <!-- Action bar items for the tablet when viewing a conversation -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Depends on AccountCapabilities.ARCHIVE -->
     <item
         android:id="@+id/y_button"
         android:title="@string/archive"
         android:showAsAction="ifRoom"
         android:icon="@drawable/archive"
         android:alphabeticShortcut="@string/trigger_y_char" />
-
+    <!-- Always available -->
     <item
         android:id="@+id/delete"
         android:title="@string/delete"
         android:showAsAction="ifRoom"
         android:icon="@drawable/trash" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/change_labels"
         android:title="@string/menu_change_labels"
         android:showAsAction="ifRoom"
         android:icon="@drawable/ic_menu_labels_holo_light" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/inside_conversation_unread"
         android:title="@string/mark_unread"
         android:showAsAction="ifRoom"
         android:icon="@drawable/ic_menu_mark_unread_holo_light" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/mark_important"
         android:title="@string/mark_important"
         android:icon="@drawable/ic_email_caret_double" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/mark_not_important"
         android:title="@string/mark_not_important"
         android:icon="@drawable/ic_email_caret_single"
         android:visible="false" />
 
+    <!-- Depends on AccountCapabilities.MUTE -->
     <item
         android:id="@+id/mute"
         android:title="@string/mute" />
-
+    <!-- Depends on AccountCapabilities.REPORT_SPAM -->
     <item
         android:id="@+id/report_spam"
         android:title="@string/report_spam"
         android:icon="@drawable/ic_spam_normal_holo_light" />
 
+    <!-- Always available -->
     <item android:id="@+id/preferences"
         android:title="@string/menu_preferences"
         android:icon="@android:drawable/ic_menu_preferences" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/help_info_menu_item"
         android:icon="@android:drawable/ic_menu_help"
         android:title="@string/help_and_info" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/feedback_menu_item"
         android:icon="@android:drawable/ic_menu_send"
diff --git a/res/menu/folder_list_menu.xml b/res/menu/folder_list_menu.xml
index 1a8c6bd..566b622 100644
--- a/res/menu/folder_list_menu.xml
+++ b/res/menu/folder_list_menu.xml
@@ -17,22 +17,25 @@
 -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-
+    <!-- Always available -->
     <item android:id="@+id/label_options"
         android:title="@string/menu_manage_labels"
         android:showAsAction="ifRoom" />
 
+    <!-- Always available -->
     <item android:id="@+id/preferences"
         android:title="@string/menu_preferences"
         android:showAsAction="never"
         android:icon="@android:drawable/ic_menu_preferences" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/help_info_menu_item"
         android:icon="@android:drawable/ic_menu_help"
         android:showAsAction="never"
         android:title="@string/help_and_info" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/feedback_menu_item"
         android:icon="@android:drawable/ic_menu_send"
diff --git a/src/com/android/mail/ui/MailActionBar.java b/src/com/android/mail/ui/MailActionBar.java
index 00a7575..9d76a07 100644
--- a/src/com/android/mail/ui/MailActionBar.java
+++ b/src/com/android/mail/ui/MailActionBar.java
@@ -114,9 +114,9 @@
     SpinnerAdapter mSpinner;
     private AccountRecentLabelSpinner mSpinnerView;
     /**
-     * We need to know what each account is capable of, so we can tailor the menu accordingly.
+     * The account currently being shown
      */
-    private int mAccountCapabilities;
+    private Account mAccount;
 
     // TODO(viki): This is a SnippetTextView in the Gmail source code. Resolve.
     private TextView mSubjectView;
@@ -199,8 +199,7 @@
                 // Get the capabilities associated with this account.
                 final Object item = mSpinner.getItem(position);
                 assert (item instanceof Account);
-                mAccountCapabilities = ((Account) item).capabilities;
-                Log.d("viki", "Account capabilities are " + mAccountCapabilities);
+                mAccount = (Account) item;
                 break;
         }
         return false;
@@ -266,11 +265,15 @@
             case ViewMode.CONVERSATION_LIST:
                 // Show compose, search, labels, and sync based on the account
                 // The only option that needs to be disabled is search
-                setVisibility (R.id.search,
-                        (mAccountCapabilities & AccountCapabilities.FOLDER_SERVER_SEARCH) != 0);
+                setVisibility(R.id.search, mAccount.supportsCapability(
+                        AccountCapabilities.FOLDER_SERVER_SEARCH));
                 break;
             case ViewMode.CONVERSATION:
-                // Do nothing?
+                setVisibility(R.id.y_button, mAccount.supportsCapability(
+                        AccountCapabilities.ARCHIVE));
+                setVisibility(R.id.report_spam, mAccount.supportsCapability(
+                        AccountCapabilities.REPORT_SPAM));
+                setVisibility(R.id.mute, mAccount.supportsCapability(AccountCapabilities.MUTE));
                 break;
             case ViewMode.SEARCH_RESULTS:
                 mActionBar.setDisplayHomeAsUpEnabled(true);