Merge "Fix for scrolling flicker in OverlappingPaneLayout" into lmp-preview-dev
diff --git a/res/drawable-hdpi/ic_remove_highlight.png b/res/drawable-hdpi/ic_remove_highlight.png
deleted file mode 100644
index 435ee36..0000000
--- a/res/drawable-hdpi/ic_remove_highlight.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_remove_highlight.png b/res/drawable-mdpi/ic_remove_highlight.png
deleted file mode 100644
index 6a961cb..0000000
--- a/res/drawable-mdpi/ic_remove_highlight.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_remove_highlight.png b/res/drawable-xhdpi/ic_remove_highlight.png
deleted file mode 100644
index 57949e3..0000000
--- a/res/drawable-xhdpi/ic_remove_highlight.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_remove_highlight.png b/res/drawable-xxhdpi/ic_remove_highlight.png
deleted file mode 100644
index 23ee8f6..0000000
--- a/res/drawable-xxhdpi/ic_remove_highlight.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
index c7a788d..71e58cb 100644
--- a/res/layout/dialtacts_activity.xml
+++ b/res/layout/dialtacts_activity.xml
@@ -35,49 +35,8 @@
             android:layout_height="match_parent"
             android:layout_width="match_parent"
             android:id="@+id/dialtacts_frame"
-            android:clipChildren="false"
-            >
-        </FrameLayout>
-        <!-- Search entry box and remove view -->
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:id="@+id/search_and_remove_view_container"
-            android:visibility="gone"
-            >
-        </FrameLayout>
+            android:clipChildren="false" />
     </RelativeLayout>
-    <com.android.dialer.list.RemoveView
-        android:layout_width="match_parent"
-        android:layout_height="56dp"
-        android:id="@+id/remove_view"
-        android:layout_alignParentTop="true"
-        >
-        <LinearLayout
-            android:id="@+id/remove_view_container"
-            android:layout_height="match_parent"
-            android:layout_width="match_parent"
-            android:gravity="center"
-            android:orientation="horizontal"
-            android:visibility="gone" >
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/remove_view_icon"
-                android:src="@drawable/ic_remove"
-                android:contentDescription="@string/remove_contact"
-                />
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/remove_view_text"
-                android:textSize="@dimen/remove_text_size"
-                android:textColor="@color/remove_text_color"
-                android:text="@string/remove_contact"
-                />
-        </LinearLayout>
-    </com.android.dialer.list.RemoveView >
     <FrameLayout
         android:id="@+id/floating_action_button_container"
         android:layout_width="@dimen/floating_action_button_width"
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
index 02dcbe3..1de8364 100644
--- a/res/layout/lists_fragment.xml
+++ b/res/layout/lists_fragment.xml
@@ -16,10 +16,11 @@
 
 <com.android.dialer.widget.OverlappingPaneLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/lists_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:animateLayoutChanges="true"
-    android:id="@+id/lists_frame">
+    android:animateLayoutChanges="true" >
+
     <ListView
         android:id="@+id/shortcut_card_list"
         android:layout_width="match_parent"
@@ -29,24 +30,71 @@
         android:clipToPadding="false"
         android:fadingEdge="none"
         android:divider="@null" />
-    <LinearLayout
+
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-        <com.android.dialer.list.ViewPagerTabs
-            android:id="@+id/lists_pager_header"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <com.android.dialer.list.ViewPagerTabs
+                android:id="@+id/lists_pager_header"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/tab_height"
+                android:textAllCaps="true"
+                android:orientation="horizontal"
+                android:layout_gravity="top"
+                android:elevation="@dimen/tab_elevation"
+                style="@style/DialtactsActionBarTabTextStyle" />
+
+            <android.support.v4.view.ViewPager
+                android:id="@+id/lists_pager"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1" />
+
+        </LinearLayout>
+
+        <com.android.dialer.list.RemoveView
+            android:id="@+id/remove_view"
             android:layout_width="match_parent"
             android:layout_height="@dimen/tab_height"
-            android:textAllCaps="true"
-            android:orientation="horizontal"
-            android:layout_gravity="top"
-            android:elevation="@dimen/tab_elevation"
-            style="@style/DialtactsActionBarTabTextStyle" />
-        <android.support.v4.view.ViewPager
-            android:id="@+id/lists_pager"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1">
-        </android.support.v4.view.ViewPager>
-    </LinearLayout>
+            android:layout_alignParentTop="true" >
+
+            <LinearLayout
+                android:id="@+id/remove_view_content"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:background="@color/actionbar_background_color"
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:visibility="gone" >
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:layout_marginBottom="8dp"
+                    android:id="@+id/remove_view_icon"
+                    android:src="@drawable/ic_remove"
+                    android:contentDescription="@string/remove_contact"
+                    android:tint="@color/remove_text_color" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:id="@+id/remove_view_text"
+                    android:textSize="@dimen/remove_text_size"
+                    android:textColor="@color/remove_text_color"
+                    android:text="@string/remove_contact" />
+
+            </LinearLayout>
+
+        </com.android.dialer.list.RemoveView >
+
+    </FrameLayout>
+
 </com.android.dialer.widget.OverlappingPaneLayout>
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
index 1e6b999..d34dc7a 100644
--- a/res/layout/phone_favorite_tile_view.xml
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -17,7 +17,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/contact_tile"
     class="com.android.dialer.list.PhoneFavoriteSquareTileView"
-    android:paddingEnd="@dimen/contact_tile_divider_width">
+    android:paddingEnd="@dimen/contact_tile_divider_width"
+    android:paddingBottom="@dimen/contact_tile_divider_width">
 
     <RelativeLayout
         android:id="@+id/contact_favorite_card"
@@ -50,8 +51,6 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingLeft="@dimen/contact_tile_text_side_padding"
-            android:paddingRight="@dimen/contact_tile_text_side_padding"
             android:paddingStart="@dimen/contact_tile_text_side_padding"
             android:paddingEnd="@dimen/contact_tile_text_side_padding"
             android:paddingBottom="@dimen/contact_tile_text_bottom_padding"
diff --git a/res/values/colors.xml b/res/values/colors.xml
index a5ad641..9264e30 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -40,7 +40,7 @@
     <color name="item_selected">#660099cc</color>
 
     <!-- Background color of new dialer activity -->
-    <color name="background_dialer_light">#fbfbfb</color>
+    <color name="background_dialer_light">#f6f6f6</color>
     <!-- Background color of dialer list items (contacts, call log entries) -->
     <color name="background_dialer_list_items">@color/background_dialer_light</color>
 
@@ -72,8 +72,7 @@
     <!-- Text color for no favorites message -->
     <color name="nofavorite_text_color">#777777</color>
 
-    <!-- Text color for the "Remove" text in its regular state -->
-    <color name="remove_text_color">#555555</color>
+    <color name="remove_text_color">#ffffff</color>
 
     <!-- Text color for the "Remove" text when a contact is dragged on top of the remove view -->
     <color name="remove_highlighted_text_color">#FF3F3B</color>
@@ -81,6 +80,7 @@
     <!-- Color of the bottom border below the contacts grid on the main dialer screen. -->
     <color name="contacts_grid_bottom_border_color">#16000000</color>
 
+    <color name="call_log_expanded_background_color">#ffffff</color>
     <!-- Color of actions in expanded call log entries.  This text color represents actions such
          as call back, play voicemail, etc. -->
     <color name="call_log_action_text">#1dc7db</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4db5ae4..53292e1 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -51,7 +51,7 @@
     <item name="contact_tile_height_to_width_ratio" type="dimen">76%</item>
     <dimen name="contact_tile_text_side_padding">12dp</dimen>
     <dimen name="contact_tile_text_bottom_padding">9dp</dimen>
-    <dimen name="favorites_row_top_padding">1dp</dimen>
+    <dimen name="favorites_row_top_padding">2dp</dimen>
     <dimen name="favorites_row_bottom_padding">0dp</dimen>
     <dimen name="favorites_row_start_padding">1dp</dimen>
 
@@ -111,7 +111,7 @@
     <dimen name="search_box_right_padding">8dp</dimen>
     <!-- Padding around the icon in the search box. -->
     <dimen name="search_box_icon_margin">4dp</dimen>
-    <dimen name="search_box_search_icon_padding">4dp</dimen>
+    <dimen name="search_box_search_icon_padding">2dp</dimen>
     <dimen name="search_box_collapsed_text_margin_left">24dp</dimen>
     <dimen name="search_box_expanded_text_margin_left">26dp</dimen>
     <!-- Size of the icon (voice search, close search) in the search box. -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 96ebe90..65b0f30 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -16,7 +16,7 @@
   -->
 <resources>
     <style name="DialtactsTheme"
-           parent="android:Theme.Quantum.Light">
+           parent="android:Theme.Material.Light">
         <item name="android:textColorPrimary">@color/dialtacts_primary_text_color</item>
         <item name="android:textColorSecondary">@color/dialtacts_secondary_text_color</item>
         <item name="android:windowActionBarOverlay">true</item>
@@ -36,7 +36,7 @@
         <item name="list_item_padding_top">12dp</item>
         <item name="list_item_padding_right">0dip</item>
         <item name="list_item_padding_bottom">12dp</item>
-        <item name="list_item_padding_left">0dip</item>
+        <item name="list_item_padding_left">16dp</item>
         <item name="list_item_gap_between_image_and_text">8dip</item>
         <item name="list_item_gap_between_label_and_data">5dip</item>
         <item name="list_item_presence_icon_margin">4dip</item>
@@ -51,7 +51,7 @@
         <item name="list_item_header_height">30dip</item>
         <item name="list_item_data_width_weight">5</item>
         <item name="list_item_label_width_weight">3</item>
-        <item name="contact_browser_list_padding_left">16dp</item>
+        <item name="contact_browser_list_padding_left">0dp</item>
         <item name="contact_browser_list_padding_right">0dp</item>
         <item name="contact_browser_background">@color/background_dialer_light</item>
         <item name="list_item_name_text_color">@color/contact_list_name_text_color</item>
@@ -77,13 +77,13 @@
 
     <!-- Action bar overflow menu icon. -->
     <style name="DialtactsActionBarOverflow"
-           parent="@android:style/Widget.Quantum.Light.ActionButton.Overflow">
+           parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
         <item name="android:src">@drawable/ic_menu_overflow_lt</item>
     </style>
 
     <!-- Action bar overflow menu icon.  White with no shadow. -->
     <style name="DialtactsActionBarOverflowWhite"
-           parent="@android:style/Widget.Quantum.Light.ActionButton.Overflow">
+           parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
         <item name="android:src">@drawable/overflow_menu</item>
     </style>
 
@@ -117,7 +117,7 @@
         <item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflowWhite</item>
     </style>
 
-    <style name="DialtactsActionBarStyle" parent="android:Widget.Quantum.ActionBar">
+    <style name="DialtactsActionBarStyle" parent="android:Widget.Material.ActionBar">
         <item name="android:background">@color/actionbar_background_color</item>
         <item name="android:titleTextStyle">@style/DialtactsActionBarTitleText</item>
         <item name="android:height">@dimen/action_bar_height</item>
@@ -132,20 +132,19 @@
 
     <!-- Text in the action bar at the top of the screen -->
     <style name="DialtactsActionBarTitleText"
-           parent="@android:style/TextAppearance.Quantum.Widget.ActionBar.Title">
+           parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
         <item name="android:textColor">@color/actionbar_text_color</item>
     </style>
 
     <!-- Text style for tabs. -->
     <style name="DialtactsActionBarTabTextStyle"
-           parent="android:style/Widget.Quantum.Light.ActionBar.TabText">
+           parent="android:style/Widget.Material.Light.ActionBar.TabText">
         <item name="android:textColor">@color/tab_text_color</item>
         <item name="android:textSize">@dimen/tab_text_size</item>
-        <item name="android:fontFamily">@string/tab_font_family</item>
-        <item name="android:textStyle">bold</item>
+        <item name="android:fontFamily">"sans-serif-medium"</item>
     </style>
 
-    <style name="ListViewStyle" parent="@android:style/Widget.Quantum.Light.ListView">
+    <style name="ListViewStyle" parent="@android:style/Widget.Material.Light.ListView">
         <item name="android:overScrollMode">always</item>
     </style>
 
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index fc63690..d4ba6a2 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -49,17 +49,12 @@
 import android.view.View;
 import android.view.View.OnDragListener;
 import android.view.View.OnTouchListener;
-import android.view.animation.AccelerateInterpolator;
 import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
 import android.view.animation.AnimationUtils;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.Interpolator;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AbsListView.OnScrollListener;
 import android.widget.EditText;
 import android.widget.ImageButton;
-import android.widget.ImageView;
 import android.widget.PopupMenu;
 import android.widget.RelativeLayout;
 import android.widget.Toast;
@@ -84,7 +79,6 @@
 import com.android.dialer.list.SpeedDialFragment;
 import com.android.dialer.list.PhoneFavoriteSquareTileView;
 import com.android.dialer.list.RegularSearchFragment;
-import com.android.dialer.list.RemoveView;
 import com.android.dialer.list.SearchFragment;
 import com.android.dialer.list.SmartDialSearchFragment;
 import com.android.dialer.widget.ActionBarController;
@@ -197,13 +191,6 @@
     private EditText mSearchView;
     private View mVoiceSearchButton;
 
-    /**
-     * View that contains the "Remove" dialog that shows up when the user long presses a contact.
-     * If the user releases a contact when hovering on top of this, the contact is unfavorited and
-     * removed from the speed dial list.
-     */
-    private View mRemoveViewContainer;
-
     private String mSearchQuery;
 
     private DialerDatabaseHelper mDialerDatabaseHelper;
@@ -238,8 +225,7 @@
         @Override
         public boolean onDrag(View v, DragEvent event) {
             if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
-                mDragDropController.handleDragHovered(v, (int) event.getX(),
-                        (int) event.getY());
+                mDragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
             }
             return true;
         }
@@ -395,8 +381,6 @@
         mFloatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
         mFloatingActionButton.setOnClickListener(this);
 
-        mRemoveViewContainer = findViewById(R.id.remove_view_container);
-
         mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
         SmartDialPrefix.initializeNanpSettings(this);
     }
@@ -1006,9 +990,9 @@
     @Override
     public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
         if (mListsFragment.isPaneOpen()) {
-            mActionBarController.slideActionBarUp(true);
+            mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_SHOWN_ALPHA);
         }
-        mRemoveViewContainer.setVisibility(View.VISIBLE);
+        mListsFragment.showRemoveView(true);
     }
 
     @Override
@@ -1021,9 +1005,9 @@
     @Override
     public void onDragFinished(int x, int y) {
         if (mListsFragment.isPaneOpen()) {
-            mActionBarController.slideActionBarDown(true);
+            mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_HIDDEN_ALPHA);
         }
-        mRemoveViewContainer.setVisibility(View.GONE);
+        mListsFragment.showRemoveView(false);
     }
 
     @Override
@@ -1036,8 +1020,7 @@
     @Override
     public void setDragDropController(DragDropController dragController) {
         mDragDropController = dragController;
-        ((RemoveView) findViewById(R.id.remove_view))
-                .setDragDropController(dragController);
+        mListsFragment.getRemoveView().setDragDropController(dragController);
     }
 
     @Override
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 924a17f..4ef1977 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -254,6 +254,10 @@
     private ImageView mBadgeImageView;
     private TextView mBadgeText;
 
+    private int mCallLogBackgroundColor;
+    private int mExpandedBackgroundColor;
+    private float mExpandedTranslationZ;
+
     /** Listener for the primary or secondary actions in the list.
      *  Primary opens the call details.
      *  Secondary calls or plays.
@@ -355,6 +359,9 @@
 
         Resources resources = mContext.getResources();
         CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
+        mCallLogBackgroundColor = resources.getColor(R.color.background_dialer_list_items);
+        mExpandedBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
+        mExpandedTranslationZ = resources.getDimension(R.dimen.call_log_expanded_translation_z);
 
         mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
         mPhoneNumberHelper = new PhoneNumberDisplayHelper(resources);
@@ -862,10 +869,8 @@
 
             views.actionsView.setVisibility(View.VISIBLE);
             views.actionsView.setAlpha(1.0f);
-            views.callLogEntryView.setBackgroundColor(
-                    callLogItem.getResources().getColor(R.color.background_dialer_light));
-            callLogItem.setTranslationZ(callLogItem.getResources().getDimension(
-                    R.dimen.call_log_expanded_translation_z));
+            views.callLogEntryView.setBackgroundColor(mExpandedBackgroundColor);
+            callLogItem.setTranslationZ(mExpandedTranslationZ);
 
             // Attempt to give accessibility focus to one of the action buttons.
             // This ensures that a user realizes the expansion occurred.
@@ -882,8 +887,7 @@
                 views.actionsView.setVisibility(View.GONE);
             }
 
-            views.callLogEntryView.setBackgroundColor(
-                    callLogItem.getResources().getColor(R.color.background_dialer_list_items));
+            views.callLogEntryView.setBackgroundColor(mCallLogBackgroundColor);
             callLogItem.setTranslationZ(0);
         }
     }
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 3eedcda..134c2a7 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -174,7 +174,7 @@
     /** Remembers if we need to clear digits field when the screen is completely gone. */
     private boolean mClearDigitsOnStop;
 
-    private View mOverflowMenuButton;
+    private PopupMenu mOverflowPopupMenu;
     private View mDelete;
     private ToneGenerator mToneGenerator;
     private final Object mToneGeneratorLock = new Object();
@@ -310,10 +310,6 @@
         if (isDigitsEmpty()) {
             mDigitsFilledByIntent = false;
             mDigits.setCursorVisible(false);
-            // Set to INVISIBLE instead of GONE so that text (eg. "Type number to add") is centered.
-            mOverflowMenuButton.setVisibility(View.INVISIBLE);
-        } else if (mDialpadView.canDigitsBeEdited()){
-            mOverflowMenuButton.setVisibility(View.VISIBLE);
         }
 
         if (mDialpadQueryListener != null) {
@@ -392,9 +388,6 @@
         mDialpadChooser = (ListView) fragmentView.findViewById(R.id.dialpadChooser);
         mDialpadChooser.setOnItemClickListener(this);
 
-        mOverflowMenuButton = mDialpadView.getOverflowMenuButton();
-        mOverflowMenuButton.setOnClickListener(this);
-
         return fragmentView;
     }
 
@@ -657,8 +650,10 @@
 
         mSmsPackageComponentName = DialerUtils.getSmsComponent(activity);
 
-        final PopupMenu overflowMenu = buildOptionsMenu(mOverflowMenuButton);
-        mOverflowMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener());
+        View overflowMenuButton = mDialpadView.getOverflowMenuButton();
+        mOverflowPopupMenu = buildOptionsMenu(overflowMenuButton);
+        overflowMenuButton.setOnTouchListener(mOverflowPopupMenu.getDragToOpenListener());
+        overflowMenuButton.setOnClickListener(this);
     }
 
     @Override
@@ -851,11 +846,22 @@
      * @param invoker the View that invoked the options menu, to act as an anchor location.
      */
     private PopupMenu buildOptionsMenu(View invoker) {
-        final PopupMenu popupMenu = new PopupMenu(getActivity(), invoker);
+        final PopupMenu popupMenu = new PopupMenu(getActivity(), invoker) {
+            @Override
+            public void show() {
+                final Menu menu = getMenu();
+                final MenuItem sendMessage = menu.findItem(R.id.menu_send_message);
+                sendMessage.setVisible(mSmsPackageComponentName != null);
+
+                boolean enable = !isDigitsEmpty();
+                for (int i = 0; i < menu.size(); i++) {
+                    menu.getItem(i).setEnabled(enable);
+                }
+
+                super.show();
+            }
+        };
         popupMenu.inflate(R.menu.dialpad_options);
-        final Menu menu = popupMenu.getMenu();
-        final MenuItem sendMessage = menu.findItem(R.id.menu_send_message);
-        sendMessage.setVisible(mSmsPackageComponentName != null);
         popupMenu.setOnMenuItemClickListener(this);
         return popupMenu;
     }
@@ -883,7 +889,7 @@
                 return;
             }
             case R.id.dialpad_overflow: {
-                buildOptionsMenu(view).show();
+                mOverflowPopupMenu.show();
                 break;
             }
             default: {
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index ab790ed..bdd2d6c 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -68,6 +68,9 @@
     private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE =
             "key_last_dismissed_call_shortcut_date";
 
+    public static final float REMOVE_VIEW_SHOWN_ALPHA = 0.5f;
+    public static final float REMOVE_VIEW_HIDDEN_ALPHA = 1;
+
     // Used with LoaderManager
     private static int MISSED_CALL_LOADER = 1;
 
@@ -81,6 +84,8 @@
     private ViewPagerTabs mViewPagerTabs;
     private ViewPagerAdapter mViewPagerAdapter;
     private ListView mShortcutCardsListView;
+    private RemoveView mRemoveView;
+    private View mRemoveViewContent;
     private SpeedDialFragment mSpeedDialFragment;
     private CallLogFragment mRecentsFragment;
     private AllContactsFragment mAllContactsFragment;
@@ -267,6 +272,9 @@
         mShortcutCardsListView = (ListView) parentView.findViewById(R.id.shortcut_card_list);
         mShortcutCardsListView.setAdapter(mMergedAdapter);
 
+        mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
+        mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
+
         setupPaneLayout((OverlappingPaneLayout) parentView);
 
         return parentView;
@@ -335,6 +343,19 @@
         }
     }
 
+    public void showRemoveView(boolean show) {
+        mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
+        mRemoveView.setAlpha(show ? 0 : 1);
+        mRemoveView.animate().alpha(show ? 1 : 0).start();
+
+        if (mShortcutCardsListView.getCount() > 0) {
+            View v = mShortcutCardsListView.getChildAt(0);
+            v.animate().withLayer()
+                    .alpha(show ? REMOVE_VIEW_SHOWN_ALPHA : REMOVE_VIEW_HIDDEN_ALPHA)
+                    .start();
+        }
+    }
+
     public boolean shouldShowActionBar() {
         return mIsPanelOpen && mActionBar != null;
     }
@@ -361,4 +382,8 @@
     public SpeedDialFragment getSpeedDialFragment() {
         return mSpeedDialFragment;
     }
+
+    public RemoveView getRemoveView() {
+        return mRemoveView;
+    }
 }
diff --git a/src/com/android/dialer/list/RemoveView.java b/src/com/android/dialer/list/RemoveView.java
index ae358fc..fdb08f6 100644
--- a/src/com/android/dialer/list/RemoveView.java
+++ b/src/com/android/dialer/list/RemoveView.java
@@ -21,7 +21,6 @@
     int mUnhighlightedColor;
     int mHighlightedColor;
     Drawable mRemoveDrawable;
-    Drawable mRemoveHighlightedDrawable;
 
     public RemoveView(Context context) {
       super(context);
@@ -43,7 +42,6 @@
         mUnhighlightedColor = r.getColor(R.color.remove_text_color);
         mHighlightedColor = r.getColor(R.color.remove_highlighted_text_color);
         mRemoveDrawable = r.getDrawable(R.drawable.ic_remove);
-        mRemoveHighlightedDrawable = r.getDrawable(R.drawable.ic_remove_highlight);
     }
 
     public void setDragDropController(DragDropController controller) {
@@ -79,13 +77,13 @@
 
     private void setAppearanceNormal() {
         mRemoveText.setTextColor(mUnhighlightedColor);
-        mRemoveIcon.setImageDrawable(mRemoveDrawable);
+        mRemoveIcon.setColorFilter(mUnhighlightedColor);
         invalidate();
     }
 
     private void setAppearanceHighlighted() {
         mRemoveText.setTextColor(mHighlightedColor);
-        mRemoveIcon.setImageDrawable(mRemoveHighlightedDrawable);
+        mRemoveIcon.setColorFilter(mHighlightedColor);
         invalidate();
     }
 }
diff --git a/src/com/android/dialer/widget/ActionBarController.java b/src/com/android/dialer/widget/ActionBarController.java
index 67037a2..0e94df4 100644
--- a/src/com/android/dialer/widget/ActionBarController.java
+++ b/src/com/android/dialer/widget/ActionBarController.java
@@ -187,6 +187,10 @@
         mIsActionBarSlidUp = false;
     }
 
+    public void setAlpha(float alphaValue) {
+        mSearchBox.animate().alpha(alphaValue).start();
+    }
+
     /**
      * Saves the current state of the action bar into a provided {@link Bundle}
      */