Polish the suggestion card in quick contact.

1) Add the title and help message to make user understand it easily.
2) Change the suggestion card UI to make it small when user doesn't
want to show it and expand it if it's useful.

BUG 24988440

Change-Id: I92f5bf13bee949140a86f35404347c365a6f1d1e
diff --git a/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/layout/quickcontact_collapsed_suggestion_card.xml b/res/layout/quickcontact_collapsed_suggestion_card.xml
new file mode 100644
index 0000000..dbd3eee
--- /dev/null
+++ b/res/layout/quickcontact_collapsed_suggestion_card.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    style="@style/ExpandingEntryCardStyle"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:visibility="gone"
+    android:id="@+id/collapsed_suggestion_card">
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:orientation="horizontal"
+        android:clickable="true"
+        android:id="@+id/collapsed_suggestion_header">
+
+        <ImageView
+                android:src="@drawable/quantum_ic_assistant_grey600_24"
+                android:layout_width="@dimen/detail_network_icon_size"
+                android:layout_height="@dimen/detail_network_icon_size"
+                android:layout_margin="16dip"
+                android:layout_gravity="center_vertical"/>
+
+        <TextView
+                android:id="@+id/collapsed_suggestion_card_title"
+                android:textSize="@dimen/expanding_entry_card_title_text_size"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:textColor="@color/quickcontact_entry_header_text_color"
+                android:singleLine="true"
+                android:ellipsize="end"
+                android:paddingTop="@dimen/quickcontact_suggestion_card_image_spacing"
+                android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <ImageView
+                android:src="@drawable/ic_menu_expander_minimized_holo_light"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical|end"
+                android:layout_alignParentEnd="true"
+                android:paddingStart="@dimen/editor_round_button_padding_left"
+                android:paddingEnd="@dimen/editor_round_button_padding_right"
+                android:paddingTop="@dimen/editor_round_button_padding_top"
+                android:paddingBottom="@dimen/editor_round_button_padding_bottom"/>
+    </LinearLayout>>
+
+</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_content.xml b/res/layout/quickcontact_content.xml
index 9c4e644..a6a8abb 100644
--- a/res/layout/quickcontact_content.xml
+++ b/res/layout/quickcontact_content.xml
@@ -54,7 +54,8 @@
             android:visibility="gone"
             cardview:cardCornerRadius="@dimen/expanding_entry_card_card_corner_radius" />
 
-        <include layout="@layout/quickcontact_suggestion_card" />
+        <include layout="@layout/quickcontact_collapsed_suggestion_card" />
+        <include layout="@layout/quickcontact_expand_suggestion_card" />
 
     </LinearLayout>
 
diff --git a/res/layout/quickcontact_expand_suggestion_card.xml b/res/layout/quickcontact_expand_suggestion_card.xml
new file mode 100644
index 0000000..c2c32cd
--- /dev/null
+++ b/res/layout/quickcontact_expand_suggestion_card.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<!--
+  Layout for the expand suggestion card in QuickContact.
+-->
+<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    style="@style/ExpandingEntryCardStyle"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:visibility="gone"
+    android:id="@+id/expand_suggestion_card">
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:textColor="@color/quickcontact_entry_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingTop="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_help"
+            android:textSize="@dimen/expanding_entry_card_title_text_size"
+            android:text="@string/suggestion_card_help_message"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_header_text_color"
+            android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingEnd="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_this_contact"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:text="@string/suggestion_card_this_contact_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_sub_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <LinearLayout
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
+            android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:id="@+id/suggestion_icon"
+                android:layout_width="@dimen/quickcontact_suggestion_card_icon_height"
+                android:layout_height="@dimen/quickcontact_suggestion_card_icon_width"
+                android:layout_gravity="center_vertical"
+                android:layout_marginStart="@dimen/quickcontact_suggestion_card_image_spacing"
+                android:scaleType="fitCenter" />
+
+            <TextView
+                    android:id="@+id/suggestion_for_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/quickcontact_entry_header_text_color"
+                    android:singleLine="true"
+                    android:ellipsize="end"
+                    android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
+                    android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing"/>
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_duplicates_title"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:text="@string/suggestion_card_duplicates_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_sub_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/suggestion_list"
+            android:animateLayoutChanges="true"
+            android:orientation="vertical" />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|end"
+            android:orientation="horizontal">
+
+            <Button
+                android:id="@+id/cancel_button"
+                style="?android:attr/buttonBarButtonStyle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/quickcontact_suggestion_cancel_button"/>
+
+            <Button
+                android:id="@+id/link_button"
+                style="?android:attr/buttonBarButtonStyle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/quickcontact_suggestion_link_button"
+                android:paddingEnd="@dimen/quickcontact_suggestion_card_image_spacing"/>
+        </LinearLayout>
+    </LinearLayout>
+</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_suggestion_card.xml b/res/layout/quickcontact_suggestion_card.xml
deleted file mode 100644
index 1419bc8..0000000
--- a/res/layout/quickcontact_suggestion_card.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 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.
--->
-
-<!--
-  Layout for the suggestion card in QuickContact.
--->
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:card_view="http://schemas.android.com/apk/res-auto"
-    style="@style/ExpandingEntryCardStyle"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:visibility="gone"
-    android:id="@+id/suggestion_card_view">
-
-    <LinearLayout
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
-            android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
-            android:orientation="horizontal">
-
-            <ImageView
-                android:id="@+id/suggestion_icon"
-                android:layout_width="@dimen/quickcontact_suggestion_card_icon_height"
-                android:layout_height="@dimen/quickcontact_suggestion_card_icon_width"
-                android:layout_gravity="center_vertical"
-                android:layout_marginStart="@dimen/quickcontact_suggestion_card_image_spacing"
-                android:scaleType="fitCenter" />
-
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:layout_gravity="center_vertical"
-                android:layout_weight="1"
-                android:layout_toEndOf="@+id/line_vertical_separator"
-                android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
-                android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing">
-
-                <TextView
-                    android:id="@+id/suggestion_for_name"
-                    android:textSize="@dimen/expanding_entry_card_title_text_size"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:textColor="@color/quickcontact_entry_header_text_color"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textAlignment="viewStart"/>
-
-                <TextView
-                    android:id="@+id/suggestion_number"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:textAlignment="viewStart"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textColor="@color/quickcontact_entry_sub_header_text_color" />
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/suggestion_summary"
-                    android:textAlignment="viewStart"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textColor="@color/quickcontact_entry_sub_header_text_color" />
-            </LinearLayout>
-
-            <View
-                android:id="@+id/line_vertical_separator"
-                android:layout_width="@dimen/divider_line_height"
-                android:layout_height="match_parent"
-                android:layout_toEndOf="@+id/expand_suggestion_button"
-                android:background="@color/divider_line_color_light"/>
-
-            <ImageView
-                android:id="@+id/expand_suggestion_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical|end"
-                android:layout_alignParentEnd="true"
-                android:paddingStart="@dimen/editor_round_button_padding_left"
-                android:paddingEnd="@dimen/editor_round_button_padding_right"
-                android:paddingTop="@dimen/editor_round_button_padding_top"
-                android:paddingBottom="@dimen/editor_round_button_padding_bottom"/>
-
-        </LinearLayout>
-
-        <View
-            android:id="@+id/title_separator"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/divider_line_height"
-            android:paddingTop="@dimen/editor_round_button_padding_top"
-            android:background="@color/divider_line_color_light"/>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:id="@+id/suggestion_list"
-            android:animateLayoutChanges="true"
-            android:orientation="vertical" />
-
-        <View
-            android:id="@+id/title_separator2"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/divider_line_height"
-            android:background="@color/divider_line_color_light"
-            android:visibility="gone"/>
-
-        <Button
-            android:id="@+id/link_button"
-            style="?android:attr/buttonBarButtonStyle"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/quickcontact_suggestion_link_button"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color"
-            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
-    </LinearLayout>
-</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_suggestion_contact_item.xml b/res/layout/quickcontact_suggestion_contact_item.xml
index 76792f8..e7c5af6 100644
--- a/res/layout/quickcontact_suggestion_contact_item.xml
+++ b/res/layout/quickcontact_suggestion_contact_item.xml
@@ -30,6 +30,7 @@
         android:layout_gravity="center_vertical" />
 
     <LinearLayout
+        android:id="@+id/suggestion_contact_item"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
@@ -41,22 +42,20 @@
             android:id="@+id/aggregation_suggestion_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textSize="@dimen/expanding_entry_card_title_text_size"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color"
             android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
             android:singleLine="true"
             android:ellipsize="end"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/quickcontact_entry_header_text_color" />
 
         <TextView
-            android:id="@+id/aggregation_suggestion_account_type"
+            android:id="@+id/aggregation_suggestion_account_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceSmall"
             android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
             android:singleLine="true"
-            android:ellipsize="end"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color" />
+            android:ellipsize="end" />
 
     </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4454306..e440ab5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -768,12 +768,21 @@
     <string name="quick_contact_display_name_with_phonetic"><xliff:g id="display_name">%s</xliff:g> (<xliff:g id="phonetic_name">%s</xliff:g>)</string>
 
     <!-- Button used in quick contact suggestion card to link selected contacts. [CHAR LIMIT=30]-->
-    <string name="quickcontact_suggestion_link_button">Link</string>
+    <string name="quickcontact_suggestion_link_button">LINK CONTACTS</string>
+
+    <!-- Button used in quick contact suggestion card to collapse suggestion card. [CHAR LIMIT=30]-->
+    <string name="quickcontact_suggestion_cancel_button">CANCEL</string>
+
+    <!-- Suggestion card title in quick contact UI [CHAR LIMIT=100] -->
+    <plurals name="quickcontact_suggestion_card_title">
+        <item quantity="one">1 Duplicate Detected</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> Duplicates Detected</item>
+    </plurals>
 
     <!-- Suggestions number in quick contact suggestion card [CHAR LIMIT=60] -->
     <plurals name="quickcontact_suggestions_number">
-        <item quantity="one">1 suggested contact</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> suggested contacts</item>
+        <item quantity="one">1 linked contact</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> linked contacts</item>
     </plurals>
 
     <!-- Account type number for suggestions in quick contact suggestion card [CHAR LIMIT=30]-->
@@ -787,4 +796,13 @@
 
     <!-- Linked contacts title showing in contact editor UI. [CHAR LIMIT=30]-->
     <string name="compact_editor_linked_contacts_title">Linked contacts</string>
+
+    <!-- "This contact" title showing in suggestion card in Quick contact. [CHAR LIMIT=30]-->
+    <string name="suggestion_card_this_contact_title">This contact</string>
+
+    <!-- "Duplicates" title showing in suggestion card in Quick contact. [CHAR LIMIT=30]-->
+    <string name="suggestion_card_duplicates_title">Duplicates</string>
+
+    <!-- Help message showing in suggestion card in Quick contact. [CHAR LIMIT=500]-->
+    <string name="suggestion_card_help_message">Clean up duplicate contacts to see all info in one place. For more details on a contact tap on the avatar. You can always change the profile photo or separate contacts at anytime.</string>
 </resources>
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 2f37387..d501e77 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -200,6 +200,8 @@
     private static final String KEY_THEME_COLOR = "theme_color";
     private static final String KEY_IS_SUGGESTION_LIST_COLLAPSED = "is_suggestion_list_collapsed";
     private static final String KEY_SELECTED_SUGGESTION_CONTACTS = "selected_suggestion_contacts";
+    private static final String KEY_PREVIOUS_CONTACT_ID = "previous_contact_id";
+    private static final String KEY_SUGGESTIONS_AUTO_SELECTED = "suggestions_auto_seleted";
 
     private static final int ANIMATION_STATUS_BAR_COLOR_CHANGE_DURATION = 150;
     private static final int REQUEST_CODE_CONTACT_EDITOR_ACTIVITY = 1;
@@ -245,17 +247,19 @@
     private ExpandingEntryCardView mAboutCard;
 
     // Suggestion card.
-    private CardView mSuggestionCardView;
+    private CardView mCollapsedSuggestionCardView;
+    private CardView mExpandSuggestionCardView;
+    private View mCollapasedSuggestionHeader;
+    private TextView mCollapsedSuggestionCardTitle;
+    private TextView mExpandSuggestionCardTitle;
     private ImageView mSuggestionSummaryPhoto;
     private TextView mSuggestionForName;
-    private TextView mSuggestionNumber;
-    private TextView mSuggestionSummary;
-    private ImageView mSuggestionExpansionButton;
     private LinearLayout mSuggestionList;
-    private View mSuggestionSeparator;
+    private Button mSuggestionsCancelButton;
     private Button mSuggestionsLinkButton;
     private boolean mIsSuggestionListCollapsed;
-    private long mPreviousSuggestionForContactId = 0;
+    private boolean mSuggestionsShouldAutoSelected = true;
+    private long mPreviousContactId = 0;
 
     private MultiShrinkScroller mScroller;
     private SelectAccountDialogFragmentListener mSelectAccountFragmentListener;
@@ -483,36 +487,34 @@
     @Override
     public void onAggregationSuggestionChange() {
         mSuggestions = mAggregationSuggestionEngine.getSuggestions();
-        mSuggestionCardView.setVisibility(View.GONE);
+        mCollapsedSuggestionCardView.setVisibility(View.GONE);
+        mExpandSuggestionCardView.setVisibility(View.GONE);
         mSuggestionList.removeAllViews();
 
         final String suggestionForName = mContactData.getDisplayName();
         final int suggestionNumber = mSuggestions.size();
-        final String suggestionSummary = getSuggestionAccountSummary(mSuggestions);
 
         if (suggestionNumber <= 0) {
             mSelectedAggregationIds.clear();
             return;
         }
 
-        mSuggestionCardView.setVisibility(View.VISIBLE);
-
-        // Take the first suggestion 's photo as the summary photo.
-        // TODO: take all suggestions' photos.
-        final Suggestion firstSuggestion = mSuggestions.get(0);
-        if (firstSuggestion.photo != null) {
+        final byte[] photoBytes = mContactData.getThumbnailPhotoBinaryData();
+        if (photoBytes != null) {
             mSuggestionSummaryPhoto.setImageBitmap(BitmapFactory.decodeByteArray(
-                    firstSuggestion.photo, 0, firstSuggestion.photo.length));
+                    photoBytes, 0, photoBytes.length));
         } else {
             mSuggestionSummaryPhoto.setImageDrawable(
                     ContactPhotoManager.getDefaultAvatarDrawableForContact(
                             getResources(), false, null));
         }
 
+        final String suggestionTitle = getResources().getQuantityString(
+                R.plurals.quickcontact_suggestion_card_title, suggestionNumber, suggestionNumber);
+        mCollapsedSuggestionCardTitle.setText(suggestionTitle);
+        mExpandSuggestionCardTitle.setText(suggestionTitle);
+
         mSuggestionForName.setText(suggestionForName);
-        mSuggestionNumber.setText(getResources().getQuantityString(
-                R.plurals.quickcontact_suggestions_number, suggestionNumber, suggestionNumber));
-        mSuggestionSummary.setText(suggestionSummary);
 
         final Set<Long> suggestionContactIds = new HashSet<>();
         for (Suggestion suggestion : mSuggestions) {
@@ -520,77 +522,31 @@
             suggestionContactIds.add(suggestion.contactId);
         }
 
+        if (mIsSuggestionListCollapsed) {
+            collapseSuggestionList();
+        } else {
+            expandSuggestionList();
+        }
+
         // Remove contact Ids that are not suggestions.
         final Set<Long> selectedSuggestionIds = com.google.common.collect.Sets.intersection(
                 mSelectedAggregationIds, suggestionContactIds);
         mSelectedAggregationIds = new TreeSet<>(selectedSuggestionIds);
-
-        mSuggestionExpansionButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                if (mIsSuggestionListCollapsed) {
-                    expandSuggestionList();
-                } else {
-                    collapseSuggestionList();
-                }
-            }
-        });
     }
 
     private void collapseSuggestionList() {
-        mSuggestionList.setVisibility(View.GONE);
-        mSuggestionSeparator.setVisibility(View.GONE);
-        mSuggestionExpansionButton.setImageResource(
-                R.drawable.ic_menu_expander_minimized_holo_light);
+        mCollapsedSuggestionCardView.setVisibility(View.VISIBLE);
+        mExpandSuggestionCardView.setVisibility(View.GONE);
         mIsSuggestionListCollapsed = true;
     }
 
     private void expandSuggestionList() {
-        mSuggestionList.setVisibility(View.VISIBLE);
-        mSuggestionSeparator.setVisibility(View.VISIBLE);
-        mSuggestionExpansionButton.setImageResource(
-                R.drawable.ic_menu_expander_maximized_holo_light);
+        mCollapsedSuggestionCardView.setVisibility(View.GONE);
+        mExpandSuggestionCardView.setVisibility(View.VISIBLE);
         mIsSuggestionListCollapsed = false;
     }
-    /**
-     * Return summary like "Google(2),LinkedIn" for 3 suggestions.
-     */
-    private String getSuggestionAccountSummary(List<Suggestion> suggestions) {
-        Map<String, Integer> accountTypeMap = new HashMap<String, Integer>();
-        for (Suggestion suggestion : suggestions) {
-            final com.android.contacts.editor.AggregationSuggestionEngine.RawContact rawContact =
-                    suggestion.rawContacts.get(0);
-            final String displayAccountType = getDisplayAccountType(
-                    rawContact.accountType, rawContact.dataSet);
-            if (accountTypeMap.containsKey(displayAccountType)) {
-                int count = accountTypeMap.get(displayAccountType);
-                count++;
-                accountTypeMap.put(displayAccountType, count);
-            } else {
-                accountTypeMap.put(displayAccountType, 1);
-            }
-        }
 
-        final Set<String> accountTypeWithNumber = new HashSet<>();
-        for (String accountType : accountTypeMap.keySet()) {
-            final String number = getResources().getQuantityString(
-                    R.plurals.quickcontact_suggestion_account_type_number,
-                    accountTypeMap.get(accountType),
-                    accountTypeMap.get(accountType));
-            accountTypeWithNumber.add(getResources().getString(
-                    R.string.quickcontact_suggestion_account_type, accountType, number));
-        }
-        return TextUtils.join(",", accountTypeWithNumber);
-    }
-
-    private String getDisplayAccountType(String accountTypeString, String dataSet) {
-        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(this);
-        final AccountType accountType = accountTypeManager.getAccountType(
-                accountTypeString, dataSet);
-        return accountType.getDisplayLabel(this).toString();
-    }
-
-    private View inflateSuggestionListView(Suggestion suggestion) {
+    private View inflateSuggestionListView(final Suggestion suggestion) {
         final LayoutInflater layoutInflater = LayoutInflater.from(this);
         final View suggestionView = layoutInflater.inflate(
                 R.layout.quickcontact_suggestion_contact_item, null);
@@ -608,17 +564,21 @@
         final TextView name = (TextView) suggestionView.findViewById(R.id.aggregation_suggestion_name);
         name.setText(suggestion.name);
 
-        final TextView accountTypeView = (TextView) suggestionView.findViewById(
-                R.id.aggregation_suggestion_account_type);
-        final String accountTypeString = suggestion.rawContacts.get(0).accountType;
-        final String dataSet = suggestion.rawContacts.get(0).dataSet;
-        final String displayAccountType = getDisplayAccountType(accountTypeString, dataSet);
-        if (!TextUtils.isEmpty(displayAccountType)) {
-            accountTypeView.setText(displayAccountType);
+        final TextView accountNameView = (TextView) suggestionView.findViewById(
+                R.id.aggregation_suggestion_account_name);
+        final String accountName = suggestion.rawContacts.get(0).accountName;
+        if (!TextUtils.isEmpty(accountName)) {
+            accountNameView.setText("From " + accountName);
+        } else {
+            accountNameView.setVisibility(View.GONE);
         }
 
         final CheckBox checkbox = (CheckBox) suggestionView.findViewById(R.id.suggestion_checkbox);
-        checkbox.setChecked(mSelectedAggregationIds.contains(suggestion.contactId));
+        checkbox.setChecked(mSuggestionsShouldAutoSelected ||
+                mSelectedAggregationIds.contains(suggestion.contactId));
+        if (checkbox.isChecked()) {
+            mSelectedAggregationIds.add(suggestion.contactId);
+        }
         checkbox.setTag(suggestion.contactId);
         checkbox.setOnClickListener(new OnClickListener() {
             @Override
@@ -629,9 +589,11 @@
                     mSelectedAggregationIds.add(contactId);
                 } else {
                     mSelectedAggregationIds.remove(contactId);
+                    mSuggestionsShouldAutoSelected = false;
                 }
             }
         });
+
         return suggestionView;
     }
 
@@ -908,18 +870,23 @@
         mRecentCard = (ExpandingEntryCardView) findViewById(R.id.recent_card);
         mAboutCard = (ExpandingEntryCardView) findViewById(R.id.about_card);
 
-        mSuggestionCardView = (CardView) findViewById(R.id.suggestion_card_view);
+        mCollapsedSuggestionCardView = (CardView) findViewById(R.id.collapsed_suggestion_card);
+        mExpandSuggestionCardView = (CardView) findViewById(R.id.expand_suggestion_card);
+        mCollapasedSuggestionHeader = findViewById(R.id.collapsed_suggestion_header);
+        mCollapsedSuggestionCardTitle = (TextView) findViewById(
+                R.id.collapsed_suggestion_card_title);
+        mExpandSuggestionCardTitle = (TextView) findViewById(R.id.expand_suggestion_card_title);
         mSuggestionSummaryPhoto = (ImageView) findViewById(R.id.suggestion_icon);
         mSuggestionForName = (TextView) findViewById(R.id.suggestion_for_name);
-        mSuggestionNumber = (TextView) findViewById(R.id.suggestion_number);
-        mSuggestionSummary = (TextView) findViewById(R.id.suggestion_summary);
-        mSuggestionExpansionButton = (ImageView) findViewById(R.id.expand_suggestion_button);
-        mSuggestionSeparator = findViewById(R.id.title_separator2);
         mSuggestionList = (LinearLayout) findViewById(R.id.suggestion_list);
+        mSuggestionsCancelButton= (Button) findViewById(R.id.cancel_button);
         mSuggestionsLinkButton = (Button) findViewById(R.id.link_button);
         if (savedInstanceState != null) {
             mIsSuggestionListCollapsed = savedInstanceState.getBoolean(
                     KEY_IS_SUGGESTION_LIST_COLLAPSED, true);
+            mPreviousContactId = savedInstanceState.getLong(KEY_PREVIOUS_CONTACT_ID);
+            mSuggestionsShouldAutoSelected = savedInstanceState.getBoolean(
+                    KEY_SUGGESTIONS_AUTO_SELECTED, true);
             mSelectedAggregationIds = (TreeSet<Long>)
                     savedInstanceState.getSerializable(KEY_SELECTED_SUGGESTION_CONTACTS);
         } else {
@@ -927,7 +894,25 @@
             mSelectedAggregationIds.clear();
         }
 
-        mSuggestionExpansionButton.setClickable(true);
+        mCollapasedSuggestionHeader.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mCollapsedSuggestionCardView.setVisibility(View.GONE);
+                mExpandSuggestionCardView.setVisibility(View.VISIBLE);
+                mIsSuggestionListCollapsed = false;
+                mSuggestionsShouldAutoSelected = true;
+            }
+        });
+
+        mSuggestionsCancelButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mCollapsedSuggestionCardView.setVisibility(View.VISIBLE);
+                mExpandSuggestionCardView.setVisibility(View.GONE);
+                mIsSuggestionListCollapsed = true;
+            }
+        });
+
         mSuggestionsLinkButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -1070,6 +1055,9 @@
             savedInstanceState.putInt(KEY_THEME_COLOR, mColorFilterColor);
         }
         savedInstanceState.putBoolean(KEY_IS_SUGGESTION_LIST_COLLAPSED, mIsSuggestionListCollapsed);
+        savedInstanceState.putLong(KEY_PREVIOUS_CONTACT_ID, mPreviousContactId);
+        savedInstanceState.putBoolean(
+                KEY_SUGGESTIONS_AUTO_SELECTED, mSuggestionsShouldAutoSelected);
         savedInstanceState.putSerializable(
                 KEY_SELECTED_SUGGESTION_CONTACTS, mSelectedAggregationIds);
     }
@@ -1316,13 +1304,10 @@
 
     private void populateSuggestionCard() {
         // Initialize suggestion related view and data.
-        if (mIsSuggestionListCollapsed) {
-            collapseSuggestionList();
-        } else {
-            expandSuggestionList();
-        }
-        if (mPreviousSuggestionForContactId != mContactData.getId()) {
-            mSuggestionCardView.setVisibility(View.GONE);
+        if (mPreviousContactId != mContactData.getId()) {
+            mCollapsedSuggestionCardView.setVisibility(View.GONE);
+            mExpandSuggestionCardView.setVisibility(View.GONE);
+            mIsSuggestionListCollapsed = true;
             mSuggestionList.removeAllViews();
         }
 
@@ -1335,12 +1320,12 @@
         }
 
         mAggregationSuggestionEngine.setContactId(mContactData.getId());
-        if (mPreviousSuggestionForContactId != 0
-                && mPreviousSuggestionForContactId != mContactData.getId()) {
+        if (mPreviousContactId != 0
+                && mPreviousContactId != mContactData.getId()) {
             // Clear selected Ids when listing suggestions for new contact Id.
             mSelectedAggregationIds.clear();
         }
-        mPreviousSuggestionForContactId = mContactData.getId();
+        mPreviousContactId = mContactData.getId();
 
         // Trigger suggestion engine to compute suggestions.
         final ContentValues values = new ContentValues();