Remove Print/Print All from conversation view in Email.

b/12245916 A secondary change in this defect is to dynamically show either Print or Print All in
GMail conversation menus depending on whether the conversation includes 1 or many messages.

Change-Id: If78dced66893c0ae619850f2272c007747e98e26
diff --git a/src/com/android/mail/providers/ConversationInfo.java b/src/com/android/mail/providers/ConversationInfo.java
index c6c66de..03a9597 100644
--- a/src/com/android/mail/providers/ConversationInfo.java
+++ b/src/com/android/mail/providers/ConversationInfo.java
@@ -42,6 +42,7 @@
      */
     public ConversationInfo(int count) {
         messageInfos = new ArrayList<MessageInfo>(count);
+        messageCount = count;
     }
 
     public ConversationInfo(int count, int draft, String first, String firstUnread, String last) {
diff --git a/src/com/android/mail/ui/AbstractConversationViewFragment.java b/src/com/android/mail/ui/AbstractConversationViewFragment.java
index d70305b..51d071c 100644
--- a/src/com/android/mail/ui/AbstractConversationViewFragment.java
+++ b/src/com/android/mail/ui/AbstractConversationViewFragment.java
@@ -58,7 +58,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-
 public abstract class AbstractConversationViewFragment extends Fragment implements
         ConversationController, ConversationAccountController,
         ConversationViewHeaderCallbacks {
@@ -352,7 +351,19 @@
         // Only show option if we support message transforms and message has been transformed.
         Utils.setMenuItemVisibility(menu, R.id.show_original, supportsMessageTransforms() &&
                 mHasConversationBeenTransformed && !mHasConversationTransformBeenReverted);
-        Utils.setMenuItemVisibility(menu, R.id.print_all, Utils.isRunningKitkatOrLater());
+
+        final MenuItem printMenuItem = menu.findItem(R.id.print_all);
+        if (printMenuItem != null) {
+            // compute the visibility of the print menu item
+            printMenuItem.setVisible(Utils.isRunningKitkatOrLater() && shouldShowPrintInOverflow());
+
+            // compute the text displayed on the print menu item
+            if (mConversation.getNumMessages() == 1) {
+                printMenuItem.setTitle(R.string.print);
+            } else {
+                printMenuItem.setTitle(R.string.print_all);
+            }
+        }
     }
 
     abstract boolean supportsMessageTransforms();
@@ -687,6 +698,17 @@
                 !mHasConversationTransformBeenReverted;
     }
 
+    /**
+     * The Print item in the overflow menu of the Conversation view is shown based on the return
+     * from this method.
+     *
+     * @return {@code true} if the conversation can be printed; {@code false} otherwise.
+     */
+    protected abstract boolean shouldShowPrintInOverflow();
+
+    /**
+     * Prints all messages in the conversation.
+     */
     protected abstract void printConversation();
 
     public boolean shouldAlwaysShowImages() {
diff --git a/src/com/android/mail/ui/ConversationViewFragment.java b/src/com/android/mail/ui/ConversationViewFragment.java
index 2b12a61..f018b18 100644
--- a/src/com/android/mail/ui/ConversationViewFragment.java
+++ b/src/com/android/mail/ui/ConversationViewFragment.java
@@ -1605,11 +1605,19 @@
     }
 
     @Override
-    public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded,
-            int heightBefore) {
+    public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded, int heightBefore) {
         mDiff = (expanded ? 1 : -1) * Math.abs(i.getHeight() - heightBefore);
     }
 
+    /**
+     * @return {@code true} because either the Print or Print All menu item is shown in GMail
+     */
+    @Override
+    protected boolean shouldShowPrintInOverflow() {
+        return true;
+    }
+
+    @Override
     protected void printConversation() {
         PrintUtils.printConversation(mActivity.getActivityContext(), getMessageCursor(),
                 mAddressCache, mConversation.getBaseUri(mBaseUri), true /* useJavascript */);
diff --git a/src/com/android/mail/ui/SecureConversationViewFragment.java b/src/com/android/mail/ui/SecureConversationViewFragment.java
index 8762b0c..31c1d4c 100644
--- a/src/com/android/mail/ui/SecureConversationViewFragment.java
+++ b/src/com/android/mail/ui/SecureConversationViewFragment.java
@@ -266,6 +266,18 @@
         return false;
     }
 
+    /**
+     * Users are expected to use the Print item in the Message overflow menu to print the single
+     * message.
+     *
+     * @return {@code false} because Print and Print All menu items are never shown in EMail.
+     */
+    @Override
+    protected boolean shouldShowPrintInOverflow() {
+        return false;
+    }
+
+    @Override
     protected void printConversation() {
         mViewController.printMessage();
     }