add margins to conversation view

Also fix some left/right balance problems on wide messages.

Bug: 6336075
Bug: 6375007
Change-Id: I8fd4a3099d0670f68295bf8f28d2ba55e7177bdc
diff --git a/assets/script.js b/assets/script.js
index ee15d03..45b72a0 100644
--- a/assets/script.js
+++ b/assets/script.js
@@ -67,8 +67,8 @@
     var i;
     var elements = document.getElementsByClassName("mail-message-content");
     var messageElement;
-    var documentWidth = document.documentElement.offsetWidth;
-    var scale;
+    var documentWidth = document.body.offsetWidth;
+
     for (i = 0; i < elements.length; i++) {
         messageElement = elements[i];
         messageElement.style.zoom = documentWidth / messageElement.scrollWidth;
diff --git a/res/layout/conversation_view.xml b/res/layout/conversation_view.xml
index 438e2b8..295833d 100644
--- a/res/layout/conversation_view.xml
+++ b/res/layout/conversation_view.xml
@@ -34,7 +34,9 @@
     <FrameLayout
         android:id="@+id/conversation_topmost_overlay"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/conversation_view_margin_side"
+        android:layout_marginRight="@dimen/conversation_view_margin_side">
 
         <include layout="@layout/conversation_message_header"
             android:id="@+id/snap_header"
diff --git a/res/layout/new_message_notification_bar.xml b/res/layout/new_message_notification_bar.xml
index b14f607..82dc342 100644
--- a/res/layout/new_message_notification_bar.xml
+++ b/res/layout/new_message_notification_bar.xml
@@ -18,8 +18,6 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_marginBottom="12dp"
-    android:layout_marginLeft="@dimen/new_message_notification_margin_side"
-    android:layout_marginRight="@dimen/new_message_notification_margin_side"
     android:animateLayoutChanges="true"
     android:background="@android:color/white">
 
diff --git a/res/raw/template_conversation_upper.html b/res/raw/template_conversation_upper.html
index 32b884d..ed45f30 100644
--- a/res/raw/template_conversation_upper.html
+++ b/res/raw/template_conversation_upper.html
@@ -22,5 +22,5 @@
     }
   </style>
 </head>
-<body style="margin: 0;">
+<body style="margin: 0 %spx;">
 <div id="conversation-header" style="height: %spx;"></div>
diff --git a/res/raw/template_message.html b/res/raw/template_message.html
index 97784ee..f000215 100644
--- a/res/raw/template_message.html
+++ b/res/raw/template_message.html
@@ -1,5 +1,5 @@
 <div id="%s" class="mail-message %s">
     <div class="mail-message-header spacer" style="height: %spx;"></div>
-    <div class="mail-message-content collapsible %s" style="display: %s; zoom: %s; padding: 16px;">%s</div>
+    <div class="mail-message-content collapsible zoom-normal %s" style="display: %s; padding: 16px 0;">%s</div>
     <div class="mail-message-footer collapsible" style="display: %s; height: %spx;"></div>
 </div>
diff --git a/res/values-sw600dp/dimen.xml b/res/values-sw600dp/dimen.xml
index d980bd3..e4edad5 100644
--- a/res/values-sw600dp/dimen.xml
+++ b/res/values-sw600dp/dimen.xml
@@ -25,6 +25,7 @@
     <dimen name="wide_subject_margin_right">28dip</dimen>
     <dimen name="subject_width">238dip</dimen>
     <dimen name="spinner_frame_width">180dp</dimen>
+    <dimen name="conversation_view_margin_side">32dp</dimen>
     <dimen name="conversation_header_side_padding">0dip</dimen>
     <dimen name="conversation_header_vertical_padding">12dip</dimen>
     <dimen name="conversation_page_side_margin">16dip</dimen>
@@ -41,7 +42,6 @@
     <dimen name="message_header_action_button_width">56dip</dimen>
     <dimen name="message_header_title_container_margin_right">0dip</dimen>
     <dimen name="super_collapsed_height">32sp</dimen>
-    <dimen name="new_message_notification_margin_side">32dp</dimen>
     <dimen name="compose_scrollview_width">800dip</dimen>
     <dimen name="compose_area_left_padding">100dip</dimen>
     <dimen name="compose_area_right_padding">100dip</dimen>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index cb64129..ec2d352 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -44,6 +44,8 @@
     <dimen name="standard_scaled_dimen">100sp</dimen>
     <dimen name="folder_cell_width">8dip</dimen>
     <dimen name="triangle_width">15dip</dimen>
+    <dimen name="conversation_message_content_margin_side">16dp</dimen>
+    <dimen name="conversation_view_margin_side">0dp</dimen>
     <dimen name="conversation_header_vertical_item_padding">8dip</dimen>
     <dimen name="conversation_header_vertical_padding">0dip</dimen>
     <dimen name="conversation_header_side_padding">8dip</dimen>
@@ -67,7 +69,6 @@
     <dimen name="contact_photo_width">48sp</dimen>
     <dimen name="contact_photo_height">48sp</dimen>
     <dimen name="message_header_inner_side_padding">8dip</dimen>
-    <dimen name="new_message_notification_margin_side">0dp</dimen>
     <dimen name="attachment_toast_yoffset">-100dip</dimen>
     <dimen name="spinner_frame_width">168dip</dimen>
     <dimen name="folder_list_heading_padding_side">8dp</dimen>
diff --git a/src/com/android/mail/browse/ConversationContainer.java b/src/com/android/mail/browse/ConversationContainer.java
index bbee924..47ae675 100644
--- a/src/com/android/mail/browse/ConversationContainer.java
+++ b/src/com/android/mail/browse/ConversationContainer.java
@@ -26,6 +26,7 @@
 import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
+import android.view.ViewGroup.MarginLayoutParams;
 import android.webkit.WebView;
 import android.widget.Adapter;
 import android.widget.ListView;
@@ -168,6 +169,8 @@
 
     private final InputSmoother mVelocityTracker;
 
+    final private int mSideMargin;
+
     private final DataSetObserver mAdapterObserver = new AdapterObserver();
 
     /**
@@ -219,6 +222,8 @@
         // Intercepting ACTION_POINTER_DOWN events allows pinch-zoom to work when the first pointer
         // goes down on an overlay view.
         setMotionEventSplittingEnabled(false);
+
+        mSideMargin = getResources().getDimensionPixelOffset(R.dimen.conversation_view_margin_side);
     }
 
     @Override
@@ -671,9 +676,16 @@
         final int itemType = mOverlayAdapter.getItemViewType(adapterIndex);
         final View convertView = mScrapViews.poll(itemType);
 
-        View view = mOverlayAdapter.getView(adapterIndex, convertView, this);
+        final View view = mOverlayAdapter.getView(adapterIndex, convertView, this);
         mOverlayViews.put(adapterIndex, new OverlayView(view, itemType));
 
+
+        // apply a default margin to all overlay items
+        MarginLayoutParams lp = (MarginLayoutParams) view.getLayoutParams();
+        if (lp.leftMargin != mSideMargin || lp.rightMargin != mSideMargin) {
+            lp.leftMargin = lp.rightMargin = mSideMargin;
+        }
+
         final int index = BOTTOM_LAYER_VIEW_IDS.length;
 
         // Only re-attach if the view had previously been added to a view hierarchy.
diff --git a/src/com/android/mail/ui/ConversationViewFragment.java b/src/com/android/mail/ui/ConversationViewFragment.java
index 3b79ea8..b45d5e5 100644
--- a/src/com/android/mail/ui/ConversationViewFragment.java
+++ b/src/com/android/mail/ui/ConversationViewFragment.java
@@ -601,7 +601,12 @@
         final int convHeaderPos = mAdapter.addConversationHeader(mConversation);
         final int convHeaderPx = measureOverlayHeight(convHeaderPos);
 
-        mTemplates.startConversation(mWebView.screenPxToWebPx(convHeaderPx));
+        final int sideMarginPx = getResources().getDimensionPixelOffset(
+                R.dimen.conversation_view_margin_side) + getResources().getDimensionPixelOffset(
+                R.dimen.conversation_message_content_margin_side);
+
+        mTemplates.startConversation(mWebView.screenPxToWebPx(sideMarginPx),
+                mWebView.screenPxToWebPx(convHeaderPx));
 
         int collapsedStart = -1;
         ConversationMessage prevCollapsedMsg = null;
@@ -691,7 +696,7 @@
         final int headerPx = measureOverlayHeight(headerPos);
         final int footerPx = measureOverlayHeight(footerPos);
 
-        mTemplates.appendMessageHtml(msg, expanded, safeForImages, 1.0f,
+        mTemplates.appendMessageHtml(msg, expanded, safeForImages,
                 mWebView.screenPxToWebPx(headerPx), mWebView.screenPxToWebPx(footerPx));
     }
 
@@ -711,7 +716,7 @@
             final int headerPx = measureOverlayHeight(header);
             final int footerPx = measureOverlayHeight(footer);
 
-            mTemplates.appendMessageHtml(msg, false /* expanded */, msg.alwaysShowImages, 1.0f,
+            mTemplates.appendMessageHtml(msg, false /* expanded */, msg.alwaysShowImages,
                     mWebView.screenPxToWebPx(headerPx), mWebView.screenPxToWebPx(footerPx));
             replacements.add(header);
             replacements.add(footer);
diff --git a/src/com/android/mail/ui/HtmlConversationTemplates.java b/src/com/android/mail/ui/HtmlConversationTemplates.java
index 1119ebb..db18980 100644
--- a/src/com/android/mail/ui/HtmlConversationTemplates.java
+++ b/src/com/android/mail/ui/HtmlConversationTemplates.java
@@ -128,7 +128,7 @@
     }
 
     public void appendMessageHtml(Message message, boolean isExpanded,
-            boolean safeForImages, float zoomValue, int headerHeight, int footerHeight) {
+            boolean safeForImages, int headerHeight, int footerHeight) {
 
         final String bodyDisplay = isExpanded ? "block" : "none";
         final String expandedClass = isExpanded ? "expanded" : "";
@@ -165,7 +165,6 @@
                 headerHeight,
                 showImagesClass,
                 bodyDisplay,
-                zoomValue,
                 body,
                 bodyDisplay,
                 footerHeight
@@ -176,13 +175,13 @@
         return MESSAGE_PREFIX + msg.id;
     }
 
-    public void startConversation(int conversationHeaderHeight) {
+    public void startConversation(int sideMargin, int conversationHeaderHeight) {
         if (mInProgress) {
             throw new IllegalStateException("must call startConversation first");
         }
 
         reset();
-        append(sConversationUpper, conversationHeaderHeight);
+        append(sConversationUpper, sideMargin, conversationHeaderHeight);
         mInProgress = true;
     }