Merge "Tuned Speed Dial UI according to red lines."
diff --git a/java/com/android/dialer/speeddial/DisambigDialog.java b/java/com/android/dialer/speeddial/DisambigDialog.java
index a76f648..98fc992 100644
--- a/java/com/android/dialer/speeddial/DisambigDialog.java
+++ b/java/com/android/dialer/speeddial/DisambigDialog.java
@@ -25,12 +25,14 @@
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
 import android.util.ArraySet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.LinearLayout.LayoutParams;
 import android.widget.TextView;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
@@ -85,6 +87,16 @@
   }
 
   @Override
+  public void onResume() {
+    super.onResume();
+    getDialog()
+        .getWindow()
+        .setLayout(
+            getContext().getResources().getDimensionPixelSize(R.dimen.disambig_dialog_width),
+            LayoutParams.WRAP_CONTENT);
+  }
+
+  @Override
   public void onPause() {
     super.onPause();
     // TODO(calderwoodra): for simplicity, just dismiss the dialog on configuration change and
@@ -105,19 +117,33 @@
     for (Channel channel : channels) {
       // TODO(calderwoodra): use fuzzy number matcher
       if (phoneNumbers.add(channel.number())) {
+        if (phoneNumbers.size() != 1) {
+          insertDivider(container);
+        }
         insertHeader(container, channel.number(), channel.label());
       }
       insertOption(container, channel);
     }
   }
 
-  private void insertHeader(LinearLayout container, String number, String phoneType) {
+  private void insertDivider(LinearLayout container) {
+    View view =
+        getActivity()
+            .getLayoutInflater()
+            .inflate(R.layout.disambig_dialog_divider, container, false);
+    container.addView(view);
+  }
+
+  private void insertHeader(LinearLayout container, String number, String label) {
     View view =
         getActivity()
             .getLayoutInflater()
             .inflate(R.layout.disambig_option_header_layout, container, false);
-    ((TextView) view.findViewById(R.id.disambig_header_phone_type)).setText(phoneType);
-    ((TextView) view.findViewById(R.id.disambig_header_phone_number)).setText(number);
+    String secondaryInfo =
+        TextUtils.isEmpty(label)
+            ? number
+            : getContext().getString(R.string.call_subject_type_and_number, label, number);
+    ((TextView) view.findViewById(R.id.disambig_header_phone_label)).setText(secondaryInfo);
     container.addView(view);
   }
 
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml
new file mode 100644
index 0000000..a743ccc
--- /dev/null
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 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
+ -->
+<View
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="1dp"
+    android:layout_marginTop="8dp"
+    android:layout_marginBottom="8dp"
+    android:background="#12000000"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
index 0272176..aec0813 100644
--- a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
@@ -26,7 +26,7 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center_vertical"
-      android:minHeight="64dp"
+      android:minHeight="56dp"
       android:paddingStart="24dp"
       android:paddingEnd="24dp"
       android:elevation="1dp"
@@ -40,7 +40,8 @@
       android:id="@+id/disambig_scrollview"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      app:maxHeight="240dp">
+      android:minHeight="168dp"
+      app:maxHeight="256dp">
 
     <LinearLayout
         android:id="@+id/communication_avenue_container"
@@ -54,8 +55,7 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="bottom"
-      android:minHeight="56dp"
-      android:padding="12dp"
+      android:minHeight="64dp"
       android:elevation="4dp"
       android:background="@android:color/white">
 
@@ -63,6 +63,8 @@
         android:id="@+id/remember_this_choice_checkbox"
         android:layout_width="match_parent"
         android:layout_height="48dp"
-        android:text="@string/speed_dial_remember_this_choice"/>
+        android:textSize="14sp"
+        android:text="@string/speed_dial_remember_this_choice"
+        style="@style/DialerCheckboxStyle"/>
   </FrameLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml
index d331a0a..22a5d1b 100644
--- a/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml
@@ -14,27 +14,15 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License
  -->
-<LinearLayout
+<TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/disambig_header_container"
-    android:orientation="vertical"
+    android:id="@+id/disambig_header_phone_label"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginBottom="8dp"
-    android:minHeight="56dp"
     android:gravity="center_vertical"
+    android:minHeight="48dp"
     android:paddingStart="24dp"
-    android:paddingEnd="24dp">
-
-  <TextView
-      android:id="@+id/disambig_header_phone_type"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      style="@style/PrimaryText"/>
-
-  <TextView
-      android:id="@+id/disambig_header_phone_number"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      style="@style/SecondaryText"/>
-</LinearLayout>
+    android:paddingEnd="24dp"
+    android:textSize="14sp"
+    android:textColor="#757575"
+    style="@style/PrimaryText"/>
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
index 62f6ab5..a1a5b29 100644
--- a/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
@@ -35,7 +35,7 @@
       android:id="@+id/disambig_option_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:layout_marginStart="12dp"
+      android:layout_marginStart="16dp"
       android:layout_gravity="center_vertical"
       style="@style/PrimaryText"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml b/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
index d4fa07d..134196d 100644
--- a/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
@@ -24,21 +24,24 @@
 
   <FrameLayout
       android:id="@+id/avatar_container"
-      android:layout_width="104dp"
+      android:layout_width="wrap_content"
       android:layout_height="104dp"
       android:layout_gravity="center_horizontal"
       android:layout_marginBottom="8dp">
 
     <com.android.dialer.speeddial.SquareImageView
         android:id="@+id/avatar"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
+        android:layout_width="104dp"
+        android:layout_height="104dp"
+        android:layout_marginStart="12dp"
+        android:layout_marginEnd="12dp"/>
 
     <FrameLayout
         android:id="@+id/video_call_container"
         android:layout_width="36dp"
         android:layout_height="36dp"
-        android:layout_gravity="bottom|end">
+        android:layout_gravity="bottom|end"
+        android:layout_marginEnd="12dp">
 
       <ImageView
           android:layout_width="match_parent"
@@ -60,6 +63,10 @@
       android:layout_gravity="center_horizontal"
       android:layout_marginStart="4dp"
       android:layout_marginEnd="4dp"
+      android:layout_marginTop="8dp"
+      android:layout_marginBottom="1dp"
+      android:fontFamily="sans-serif-medium"
+      android:textSize="14sp"
       style="@style/PrimaryText"/>
 
   <TextView
@@ -69,5 +76,6 @@
       android:layout_gravity="center_horizontal"
       android:layout_marginStart="4dp"
       android:layout_marginEnd="4dp"
+      android:layout_marginBottom="17dp"
       style="@style/SecondaryText"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml b/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
index 15c00e4..1605e8c 100644
--- a/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
@@ -19,7 +19,7 @@
     android:layout_height="wrap_content"
     android:layout_marginStart="16dp"
     android:layout_marginEnd="16dp"
-    android:minHeight="@dimen/dialer_list_item_min_height">
+    android:minHeight="48dp">
 
   <TextView
       android:id="@+id/speed_dial_header_text"
@@ -36,7 +36,9 @@
       android:layout_alignParentEnd="true"
       android:layout_centerVertical="true"
       android:minHeight="@dimen/dialer_touch_target_min_size"
-      android:minWidth="@dimen/dialer_button_min_width"
+      android:minWidth="48dp"
+      android:paddingStart="8dp"
+      android:paddingEnd="8dp"
       android:text="@string/speed_dial_add_button_text"
       android:textColor="@color/dialer_theme_color"
       style="@style/Widget.AppCompat.Button.Borderless"/>
diff --git a/java/com/android/dialer/speeddial/res/values/dimens.xml b/java/com/android/dialer/speeddial/res/values/dimens.xml
index ce2de9d..a4cf16c 100644
--- a/java/com/android/dialer/speeddial/res/values/dimens.xml
+++ b/java/com/android/dialer/speeddial/res/values/dimens.xml
@@ -31,4 +31,5 @@
    -->
   <dimen name="speed_dial_context_menu_x_offset">-24dp</dimen>
   <dimen name="speed_dial_context_menu_corner_radius">16dp</dimen>
+  <dimen name="disambig_dialog_width">280dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/values/strings.xml b/java/com/android/dialer/speeddial/res/values/strings.xml
index d2f5371..0053074 100644
--- a/java/com/android/dialer/speeddial/res/values/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values/strings.xml
@@ -18,8 +18,9 @@
   <!-- header for a list of contacts that are the users favorites. [CHAR LIMIT=30] -->
   <string name="favorites_header">Favorites</string>
 
-  <!-- header for a list of contacts that are suggestions for the user to place calls to. [CHAR LIMIT=30] -->
-  <string name="suggestions_header">Suggestions</string>
+  <!-- header for a list of contacts that are suggestions for the user to place calls to based on
+    their frequently contacted contacts. [CHAR LIMIT=30] -->
+  <string name="suggestions_header">Frequents</string>
 
   <!-- text for a button that prompts the user to add a contact to their favorites. [CHAR LIMIT=12] -->
   <string name="speed_dial_add_button_text">Add</string>
@@ -28,9 +29,9 @@
     If the user checks this box, we will remember their selection and never ask for it again. [CHAR LIMIT=NONE]-->
   <string name="speed_dial_remember_this_choice">Remember this choice</string>
 
-  <!-- Title of a dialog asking the user to choose their favorite mode of communication for a
+  <!-- Title of a dialog asking the user to choose their the mode/type of communication for a
     specific contact where communication modes are video calling and voice calling. [CHAR LIMIT=NONE]-->
-  <string name="speed_dial_disambig_dialog_title">Choose a Favorite mode</string>
+  <string name="speed_dial_disambig_dialog_title">Choose call type</string>
 
   <!-- Text for a button that places a video call [CHAR LIMIT=15]-->
   <string name="disambig_option_video_call">Video call</string>
diff --git a/java/com/android/dialer/theme/res/values/styles.xml b/java/com/android/dialer/theme/res/values/styles.xml
index d65d2af..8412aaa 100644
--- a/java/com/android/dialer/theme/res/values/styles.xml
+++ b/java/com/android/dialer/theme/res/values/styles.xml
@@ -53,4 +53,10 @@
     <item name="android:background">@color/actionbar_background_color</item>
     <item name="background">@color/actionbar_background_color</item>
   </style>
+
+  <!-- This Checkbox style helps align checkboxes with the common list element layout(Image + text) -->
+  <style name="DialerCheckboxStyle" parent="Widget.AppCompat.CompoundButton.CheckBox">
+    <item name="android:layout_marginStart">20dp</item>
+    <item name="android:paddingLeft">12dp</item>
+  </style>
 </resources>
diff --git a/java/com/android/dialer/widget/ContactPhotoView.java b/java/com/android/dialer/widget/ContactPhotoView.java
index 03d25de..a84111f 100644
--- a/java/com/android/dialer/widget/ContactPhotoView.java
+++ b/java/com/android/dialer/widget/ContactPhotoView.java
@@ -75,9 +75,9 @@
   }
 
   private void hideBadge() {
-    contactBadgeContainer.setVisibility(View.INVISIBLE);
-    videoCallBadge.setVisibility(View.INVISIBLE);
-    rttCallBadge.setVisibility(View.INVISIBLE);
+    contactBadgeContainer.setVisibility(View.GONE);
+    videoCallBadge.setVisibility(View.GONE);
+    rttCallBadge.setVisibility(View.GONE);
   }
 
   /** Sets the contact photo and its badge to be displayed. */
@@ -100,10 +100,10 @@
       // (a bug): In theory a video call could be downgraded to voice and upgraded to RTT call
       // again, this might end up a call with video and RTT features both set. Update logic here if
       // that could happen. Also update {@link Coalescer#meetsCallFeatureCriteria}.
-      rttCallBadge.setVisibility(INVISIBLE);
+      rttCallBadge.setVisibility(View.GONE);
     } else if (photoInfo.getIsRtt()) {
       contactBadgeContainer.setVisibility(View.VISIBLE);
-      videoCallBadge.setVisibility(INVISIBLE);
+      videoCallBadge.setVisibility(View.GONE);
       rttCallBadge.setVisibility(View.VISIBLE);
     } else {
       hideBadge();