Merge "Update the preview of the conversation message in the "Display size and text" page." into tm-dev
diff --git a/res/drawable/conversation_message_text_info_view_background.xml b/res/drawable/conversation_message_text_info_view_background.xml
new file mode 100644
index 0000000..1d82f38
--- /dev/null
+++ b/res/drawable/conversation_message_text_info_view_background.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid
+        android:color="#639DF6"/>
+    <corners android:radius="28dp"/>
+</shape>
diff --git a/res/drawable/ic_person.xml b/res/drawable/ic_person.xml
new file mode 100644
index 0000000..5e5d0e8
--- /dev/null
+++ b/res/drawable/ic_person.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24"
+        android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M12,12q-1.65,0 -2.825,-1.175Q8,9.65 8,8q0,-1.65 1.175,-2.825Q10.35,4 12,4q1.65,0 2.825,1.175Q16,6.35 16,8q0,1.65 -1.175,2.825Q13.65,12 12,12zM4,20v-2.8q0,-0.85 0.438,-1.562 0.437,-0.713 1.162,-1.088 1.55,-0.775 3.15,-1.163Q10.35,13 12,13t3.25,0.387q1.6,0.388 3.15,1.163 0.725,0.375 1.163,1.088Q20,16.35 20,17.2L20,20zM6,18h12v-0.8q0,-0.275 -0.137,-0.5 -0.138,-0.225 -0.363,-0.35 -1.35,-0.675 -2.725,-1.013Q13.4,15 12,15t-2.775,0.338Q7.85,15.675 6.5,16.35q-0.225,0.125 -0.362,0.35 -0.138,0.225 -0.138,0.5zM12,10q0.825,0 1.412,-0.588Q14,8.825 14,8t-0.588,-1.412Q12.825,6 12,6t-1.412,0.588Q10,7.175 10,8t0.588,1.412Q11.175,10 12,10zM12,8zM12,18z"/>
+</vector>
diff --git a/res/layout/screen_zoom_preview_1.xml b/res/layout/screen_zoom_preview_1.xml
index 4aabfe4..97e0863 100644
--- a/res/layout/screen_zoom_preview_1.xml
+++ b/res/layout/screen_zoom_preview_1.xml
@@ -37,42 +37,16 @@
             <com.android.settings.display.ConversationMessageView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                app:incoming="false"
-                app:messageText="@string/screen_zoom_conversation_message_1"
-                app:timestampText="@string/screen_zoom_conversation_timestamp_1"
-                app:iconText="@string/screen_zoom_conversation_icon_alex"
-                app:iconTextColor="@color/message_icon_text_outgoing"
-                app:iconBackgroundColor="@color/message_icon_background_outgoing" />
-
-            <com.android.settings.display.ConversationMessageView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
                 app:incoming="true"
-                app:messageText="@string/screen_zoom_conversation_message_2"
-                app:timestampText="@string/screen_zoom_conversation_timestamp_2"
-                app:iconText="@string/screen_zoom_conversation_icon_pete"
-                app:iconTextColor="@color/message_icon_text_incoming"
+                app:messageText="@string/accessibility_text_reading_conversation_message_1"
                 app:iconBackgroundColor="@color/message_icon_background_incoming" />
 
             <com.android.settings.display.ConversationMessageView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 app:incoming="false"
-                app:messageText="@string/screen_zoom_conversation_message_3"
-                app:timestampText="@string/screen_zoom_conversation_timestamp_3"
-                app:iconText="@string/screen_zoom_conversation_icon_alex"
-                app:iconTextColor="@color/message_icon_text_outgoing"
+                app:messageText="@string/accessibility_text_reading_conversation_message_2"
                 app:iconBackgroundColor="@color/message_icon_background_outgoing" />
-
-            <com.android.settings.display.ConversationMessageView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:incoming="true"
-                app:messageText="@string/screen_zoom_conversation_message_4"
-                app:timestampText="@string/screen_zoom_conversation_timestamp_4"
-                app:iconText="@string/screen_zoom_conversation_icon_pete"
-                app:iconTextColor="@color/message_icon_text_incoming"
-                app:iconBackgroundColor="@color/message_icon_background_incoming" />
         </LinearLayout>
     </view>
 </androidx.core.widget.NestedScrollView>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index f972e29..e818a28 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -44,16 +44,17 @@
     <color name="material_grey_100">#f5f5f5</color>
     <color name="material_grey_200">#ffffff</color>
 
-    <color name="message_text_incoming">#ffffffff</color>
-    <color name="message_text_outgoing">#ff323232</color>
+    <color name="message_text_incoming">#E4E3DA</color>
+    <color name="message_text_outgoing">#1B1C17</color>
     <color name="timestamp_text_outgoing">#99323232</color>
     <color name="timestamp_text_incoming">#99ffffff</color>
-    <color name="message_bubble_incoming">#689f38</color>
-    <color name="message_bubble_outgoing">#ffffffff</color>
-    <color name="message_icon_background_incoming">#689f38</color>
+    <color name="message_bubble_incoming">#52534D</color>
+    <color name="message_bubble_outgoing">#C7C8B7</color>
+    <color name="message_icon_background_incoming">#E6F451</color>
     <color name="message_icon_text_incoming">#ffffffff</color>
-    <color name="message_icon_background_outgoing">#4285f4</color>
+    <color name="message_icon_background_outgoing">#FBBC04</color>
     <color name="message_icon_text_outgoing">#ffffffff</color>
+    <color name="message_icon_color">#DADADA</color>
 
     <color name="usage_graph_dots">#B0BEC5</color>
 
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2e4d8be..4db51c6 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -266,12 +266,13 @@
     <dimen name="conversation_message_text_size">16sp</dimen>
     <dimen name="conversation_status_text_size">12sp</dimen>
     <dimen name="conversation_bubble_width_snap">20dp</dimen>
-    <dimen name="message_bubble_arrow_width">9dp</dimen>
+    <dimen name="message_bubble_left_right_padding">9dp</dimen>
     <dimen name="message_padding_default">18dp</dimen>
     <dimen name="message_text_left_right_padding">14dp</dimen>
     <dimen name="message_text_top_padding">10dp</dimen>
     <dimen name="message_text_bottom_padding">12dp</dimen>
     <dimen name="message_metadata_top_padding">4dp</dimen>
+    <dimen name="message_icon_inset">11dp</dimen>
 
     <!-- Accessibility Settings -->
     <dimen name="accessibility_layout_margin_start_end">16dp</dimen>
diff --git a/src/com/android/settings/display/ConversationMessageView.java b/src/com/android/settings/display/ConversationMessageView.java
index 22e1f20..d72c9e6 100644
--- a/src/com/android/settings/display/ConversationMessageView.java
+++ b/src/com/android/settings/display/ConversationMessageView.java
@@ -21,6 +21,8 @@
 import android.content.res.TypedArray;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -106,14 +108,14 @@
                 MeasureSpec.EXACTLY);
         mContactIconView.measure(iconMeasureSpec, iconMeasureSpec);
 
-        final int arrowWidth =
-                getResources().getDimensionPixelSize(R.dimen.message_bubble_arrow_width);
+        final int messageBubblePadding =
+                getResources().getDimensionPixelOffset(R.dimen.message_bubble_left_right_padding);
 
         // We need to subtract contact icon width twice from the horizontal space to get
         // the max leftover space because we want the message bubble to extend no further than the
         // starting position of the message bubble in the opposite direction.
         final int maxLeftoverSpace = horizontalSpace - mContactIconView.getMeasuredWidth() * 2
-                - arrowWidth - getPaddingLeft() - getPaddingRight();
+                - messageBubblePadding - getPaddingLeft() - getPaddingRight();
         final int messageContentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(maxLeftoverSpace,
                 MeasureSpec.AT_MOST);
 
@@ -170,19 +172,28 @@
     private void updateViewContent() {
         mMessageTextView.setText(mMessageText);
         mStatusTextView.setText(mTimestampText);
+        mStatusTextView.setVisibility(TextUtils.isEmpty(mTimestampText) ? GONE : VISIBLE);
         mContactIconView.setText(mIconText);
 
         mContactIconView.setTextColor(mIconTextColor);
-        final Drawable iconBase = getContext().getDrawable(R.drawable.conversation_message_icon);
-        mContactIconView
-                .setBackground(getTintedDrawable(getContext(), iconBase, mIconBackgroundColor));
+        final Drawable iconBackground = getContext().getDrawable(
+                R.drawable.conversation_message_icon);
+        final Drawable icon = getContext().getDrawable(R.drawable.ic_person);
+        final LayerDrawable layerDrawable = new LayerDrawable(
+                new Drawable[]{
+                        getTintedDrawable(getContext(), iconBackground, mIconBackgroundColor),
+                        getTintedDrawable(getContext(), icon,
+                                getContext().getColor(R.color.message_icon_color))});
+        final int iconInset = getResources().getDimensionPixelOffset(R.dimen.message_icon_inset);
+        layerDrawable.setLayerInset(/* index= */ 1, iconInset, iconInset, iconInset, iconInset);
+        mContactIconView.setBackground(layerDrawable);
     }
 
     private void updateViewAppearance() {
         final Resources res = getResources();
 
-        final int arrowWidth = res.getDimensionPixelOffset(
-                R.dimen.message_bubble_arrow_width);
+        final int messageBubbleLeftRightPadding = res.getDimensionPixelOffset(
+                R.dimen.message_bubble_left_right_padding);
         final int messageTextLeftRightPadding = res.getDimensionPixelOffset(
                 R.dimen.message_text_left_right_padding);
         final int textTopPadding = res.getDimensionPixelOffset(
@@ -191,14 +202,11 @@
                 R.dimen.message_text_bottom_padding);
 
         final int textLeftPadding, textRightPadding;
+        textLeftPadding = messageTextLeftRightPadding;
+        textRightPadding = messageTextLeftRightPadding;
 
-        if (mIncoming) {
-            textLeftPadding = messageTextLeftRightPadding + arrowWidth;
-            textRightPadding = messageTextLeftRightPadding;
-        } else {
-            textLeftPadding = messageTextLeftRightPadding;
-            textRightPadding = messageTextLeftRightPadding + arrowWidth;
-        }
+        final int messageBubbleLeftPadding = mIncoming ? messageBubbleLeftRightPadding : 0;
+        final int messageBubbleRightPadding = mIncoming ? 0 : messageBubbleLeftRightPadding;
 
         // These values do not depend on whether the message includes attachments
         final int gravity = mIncoming ? (Gravity.START | Gravity.CENTER_VERTICAL) :
@@ -216,7 +224,7 @@
         final Context context = getContext();
 
         final Drawable textBackgroundDrawable = getTintedDrawable(context,
-                context.getDrawable(bubbleDrawableResId),
+                context.getDrawable(R.drawable.conversation_message_text_info_view_background),
                 context.getColor(bubbleColorResId));
         mMessageTextAndInfoView.setBackground(textBackgroundDrawable);
 
@@ -234,6 +242,8 @@
         // Update the message row and message bubble views
         setPadding(getPaddingLeft(), messageTopPadding, getPaddingRight(), 0);
         mMessageBubble.setGravity(gravity);
+        mMessageBubble.setPaddingRelative(messageBubbleLeftPadding, /* top= */ 0,
+                messageBubbleRightPadding, /* bottom= */ 0);
 
         updateTextAppearance();
     }