Remove the shortcut/recents card.

- Delete SwipeableShortcutCard, ShortcutCardsManager.
- Remove related references in ListsFragment, layouts, helpers for
swipe behavrio, dimensions, and ids.
+ Update sliding logic in ListsFragment.

It's not ideal to use a frame layout to provide spacing/color, but this
is the most straightforward way to maintain behavior for now. This
can/should be revisited if removing the OverlappingPaneLayout.

Bug: 19372817
Change-Id: I789119fb8f87ea19cda545eec7c722306fc2813d
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
index a11c89f..26f62c7 100644
--- a/res/layout/lists_fragment.xml
+++ b/res/layout/lists_fragment.xml
@@ -21,11 +21,11 @@
     android:layout_height="match_parent"
     android:animateLayoutChanges="true" >
 
-    <com.android.dialer.list.SwipeableShortcutCard
-        android:id="@+id/shortcut_card"
+    <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is the
+         easiest way to preserve correct pane scrolling and searchbar collapse/expand behaviors. -->
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="@dimen/action_bar_height_large"
+        android:layout_height="@dimen/action_bar_height_large"
         android:background="@color/actionbar_background_color" />
 
     <FrameLayout
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b8b93cb..e4097e3 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -64,18 +64,6 @@
     <dimen name="favorites_row_end_padding">0dp</dimen>
     <dimen name="favorites_row_undo_text_side_padding">32dp</dimen>
 
-    <!-- Dimensions for most recent call shortcut cards -->
-    <dimen name="recent_call_log_item_translation_z">3dp</dimen>
-    <dimen name="recent_call_log_item_margin_horizontal">8dp</dimen>
-    <dimen name="recent_call_log_item_margin_top">4dp</dimen>
-    <dimen name="recent_call_log_item_margin_bottom">6dp</dimen>
-
-    <!-- The maximum amount to clip on the left and right of the recent call shortcut card -->
-    <dimen name="recent_call_log_item_horizontal_clip_limit">20dp</dimen>
-    <dimen name="recent_call_log_item_padding_start">8dp</dimen>
-    <dimen name="recent_call_log_item_padding_top">12dp</dimen>
-    <dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
-
     <dimen name="call_log_item_extra_padding_vertical">4dp</dimen>
 
 
diff --git a/res/values/ids.xml b/res/values/ids.xml
deleted file mode 100644
index 2b09504..0000000
--- a/res/values/ids.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2012 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
-  -->
-<resources>
-    <item type="id"
-        name="is_swipeable_tag" />
-    <item type="id"
-        name="contact_entry_index_tag" />
-</resources>
\ No newline at end of file
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 9ae5c57..098b647 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -42,7 +42,7 @@
  *
  * Contains a ViewPager that contains various contact lists like the Speed Dial list and the
  * All Contacts list. This will also eventually contain the logic that allows sliding the
- * ViewPager containing the lists up above the shortcut cards and pin it against the top of the
+ * ViewPager containing the lists up above the search bar and pin it against the top of the
  * screen.
  */
 public class ListsFragment extends Fragment implements CallLogQueryHandler.Listener,
@@ -76,7 +76,6 @@
     private ViewPager mViewPager;
     private ViewPagerTabs mViewPagerTabs;
     private ViewPagerAdapter mViewPagerAdapter;
-    private SwipeableShortcutCard mShortcutCard;
     private RemoveView mRemoveView;
     private View mRemoveViewContent;
     private SpeedDialFragment mSpeedDialFragment;
@@ -107,26 +106,10 @@
     private PanelSlideCallbacks mPanelSlideCallbacks = new PanelSlideCallbacks() {
         @Override
         public void onPanelSlide(View panel, float slideOffset) {
-            // For every 1 percent that the panel is slid upwards, clip 1 percent off the top
-            // edge of the shortcut card, to achieve the animated effect of the shortcut card
-            // being pushed out of view when the panel is slid upwards. slideOffset is 1 when
-            // the shortcut card is fully exposed, and 0 when completely hidden.
-            if (mShortcutCard.isShown()) {
-                float ratioCardHidden = (1 - slideOffset);
-                mShortcutCard.clipCard(ratioCardHidden);
-            }
-
             if (mActionBar != null) {
-                // Amount of available space that is not being hidden by the bottom pane
-                final int shortcutCardHeight =
-                        mShortcutCard.isShown() ? mShortcutCard.getHeight() : 0;
-                final int topPaneHeight = (int) (slideOffset * shortcutCardHeight);
-
-                final int availableActionBarHeight =
-                        Math.min(mActionBar.getHeight(), topPaneHeight);
-                final ActionBarController controller =
+                ActionBarController controller =
                         ((HostInterface) getActivity()).getActionBarController();
-                controller.setHideOffset(mActionBar.getHeight() - availableActionBarHeight);
+                controller.setHideOffset((int) (mActionBar.getHeight() * (1 - slideOffset)));
 
                 if (!mActionBar.isShowing()) {
                     mActionBar.show();
@@ -307,9 +290,6 @@
         mViewPagerTabs.setViewPager(mViewPager);
         addOnPageChangeListener(mViewPagerTabs);
 
-        mShortcutCard = (SwipeableShortcutCard) parentView.findViewById(R.id.shortcut_card);
-        new ShortcutCardsManager(getActivity(), this, mCallLogAdapter, mShortcutCard);
-
         mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
         mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
 
@@ -349,20 +329,6 @@
         mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL, mLastCallShortcutDate);
     }
 
-    public void dismissShortcut(View view) {
-        mLastCallShortcutDate = mCurrentCallShortcutDate;
-        final SharedPreferences prefs = view.getContext().getSharedPreferences(
-                DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
-        prefs.edit().putLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, mLastCallShortcutDate)
-                .apply();
-        fetchCalls();
-
-        LayoutTransition transition = mOverlappingPaneLayout.getLayoutTransition();
-        // Turns on animations for all types of layout changes so that they occur for
-        // height changes.
-        transition.enableTransitionType(LayoutTransition.CHANGING);
-    }
-
     public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
         if (!mOnPageChangeListeners.contains(onPageChangeListener)) {
             mOnPageChangeListeners.add(onPageChangeListener);
@@ -399,14 +365,6 @@
         mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
         mRemoveView.setAlpha(show ? 0 : 1);
         mRemoveView.animate().alpha(show ? 1 : 0).start();
-
-        if (mShortcutCard.isShown()) {
-            final View child = mShortcutCard.getChildAt(0);
-            if (child != null) {
-                child.animate().withLayer()
-                        .alpha(show ? REMOVE_VIEW_SHOWN_ALPHA : REMOVE_VIEW_HIDDEN_ALPHA).start();
-            }
-        }
     }
 
     public boolean shouldShowActionBar() {
diff --git a/src/com/android/dialer/list/ShortcutCardsManager.java b/src/com/android/dialer/list/ShortcutCardsManager.java
deleted file mode 100644
index 8b8a7ba..0000000
--- a/src/com/android/dialer/list/ShortcutCardsManager.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * Licensed to 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.
- */
-package com.android.dialer.list;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.DataSetObserver;
-import android.view.View;
-
-import com.android.dialer.calllog.CallLogAdapter;
-import com.android.dialer.calllog.CallLogNotificationsHelper;
-import com.android.dialer.calllog.CallLogQueryHandler;
-import com.android.dialer.list.SwipeHelper.OnItemGestureListener;
-
-/**
- * Handles the logic that displays call shortcuts from
- * {@link com.android.dialer.calllog.CallLogAdapter} in the form of cards.
- */
-public class ShortcutCardsManager {
-
-    private class CustomDataSetObserver extends DataSetObserver {
-        @Override
-        public void onChanged() {
-            updateShortcutCard();
-        }
-    }
-
-    private static final String TAG = ShortcutCardsManager.class.getSimpleName();
-
-    // The position of the shortcut card within the CallLogAdapter
-    private static final int SHORTCUT_CARD_INDEX = 0;
-
-    private final CallLogAdapter mCallLogAdapter;
-    private final ListsFragment mFragment;
-    private final SwipeableShortcutCard mShortcutCard;
-
-    private final Context mContext;
-
-    private final DataSetObserver mObserver;
-
-    private final CallLogQueryHandler mCallLogQueryHandler;
-
-    private final OnItemGestureListener mCallLogOnItemSwipeListener =
-            new OnItemGestureListener() {
-        @Override
-        public void onSwipe(View view) {
-            mCallLogQueryHandler.markNewCallsAsOld();
-            mCallLogQueryHandler.markNewVoicemailsAsOld();
-            CallLogNotificationsHelper.removeMissedCallNotifications(mContext);
-            CallLogNotificationsHelper.updateVoicemailNotifications(mContext);
-            mFragment.dismissShortcut(view);
-        }
-
-        @Override
-        public void onTouch() {}
-
-        @Override
-        public boolean isSwipeEnabled() {
-            return true;
-        }
-    };
-
-    private final CallLogQueryHandler.Listener mCallLogQueryHandlerListener =
-            new CallLogQueryHandler.Listener() {
-        @Override
-        public void onVoicemailStatusFetched(Cursor statusCursor) {}
-
-        @Override
-        public boolean onCallsFetched(Cursor combinedCursor) {
-            mCallLogAdapter.invalidateCache();
-            mCallLogAdapter.changeCursor(combinedCursor);
-            mCallLogAdapter.notifyDataSetChanged();
-            // Return true; took ownership of cursor
-            return true;
-        }
-    };
-
-    public ShortcutCardsManager(Context context,
-            ListsFragment fragment,
-            CallLogAdapter callLogAdapter,
-            SwipeableShortcutCard shortcutCard) {
-        mContext = context;
-        mFragment = fragment;
-        mShortcutCard = shortcutCard;
-
-        mCallLogAdapter = callLogAdapter;
-        mObserver = new CustomDataSetObserver();
-        mCallLogAdapter.registerDataSetObserver(mObserver);
-        mCallLogQueryHandler = new CallLogQueryHandler(mContext.getContentResolver(),
-                mCallLogQueryHandlerListener);
-        mShortcutCard.setOnItemSwipeListener(mCallLogOnItemSwipeListener);
-    }
-
-    /**
-     * Updates the contents of the shortcut card with the view provided by the
-     * {@link CallLogAdapter}.
-     */
-    private void updateShortcutCard() {
-        final int count = mCallLogAdapter.getCount();
-        final View convertView = mShortcutCard.getChildAt(SHORTCUT_CARD_INDEX);
-        if (count <= SHORTCUT_CARD_INDEX) {
-            if (convertView != null) {
-                convertView.setVisibility(View.GONE);
-            }
-        } else {
-            mShortcutCard.setVisibility(View.VISIBLE);
-            final View view = mCallLogAdapter.getView(SHORTCUT_CARD_INDEX, convertView,
-                    mShortcutCard);
-            mShortcutCard.removeAllViews();
-            mShortcutCard.prepareChildView(view);
-            mShortcutCard.addView(view);
-            view.setVisibility(View.VISIBLE);
-        }
-    }
-}
diff --git a/src/com/android/dialer/list/SwipeHelper.java b/src/com/android/dialer/list/SwipeHelper.java
deleted file mode 100644
index 03300df4..0000000
--- a/src/com/android/dialer/list/SwipeHelper.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * Licensed to 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.
- */
-
-package com.android.dialer.list;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.RectF;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-import android.view.View;
-import android.view.animation.LinearInterpolator;
-
-import com.android.dialer.R;
-
-/**
- * Copy of packages/apps/UnifiedEmail - com.android.mail.ui.SwipeHelper with changes.
- */
-public class SwipeHelper {
-    static final String TAG = SwipeHelper.class.getSimpleName();
-    private static final boolean DEBUG_INVALIDATE = false;
-    private static final boolean CONSTRAIN_SWIPE = true;
-    private static final boolean FADE_OUT_DURING_SWIPE = true;
-    private static final boolean DISMISS_IF_SWIPED_FAR_ENOUGH = true;
-    private static final boolean LOG_SWIPE_DISMISS_VELOCITY = false; // STOPSHIP - DEBUG ONLY
-
-    public static final int IS_SWIPEABLE_TAG = R.id.is_swipeable_tag;
-    public static final Object IS_SWIPEABLE = new Object();
-
-    public static final int X = 0;
-    public static final int Y = 1;
-
-    private static LinearInterpolator sLinearInterpolator = new LinearInterpolator();
-
-    private static int SWIPE_ESCAPE_VELOCITY = -1;
-    private static int DEFAULT_ESCAPE_ANIMATION_DURATION;
-    private static int MAX_ESCAPE_ANIMATION_DURATION;
-    private static int MAX_DISMISS_VELOCITY;
-    private static int SNAP_ANIM_LEN;
-    private static int SWIPE_SCROLL_SLOP;
-    private static float MIN_SWIPE;
-    private static float MIN_VERT;
-    private static float MIN_LOCK;
-
-    public static float ALPHA_FADE_START = 0f; // fraction of thumbnail width
-                                               // where fade starts
-    static final float ALPHA_FADE_END = 0.7f; // fraction of thumbnail width
-                                              // beyond which alpha->0
-    private static final float FACTOR = 1.2f;
-
-    private static final int PROTECTION_PADDING = 50;
-
-    private float mMinAlpha = 0.3f;
-
-    private float mPagingTouchSlop;
-    private final SwipeHelperCallback mCallback;
-    private final int mSwipeDirection;
-    private final VelocityTracker mVelocityTracker;
-
-    private float mInitialTouchPosX;
-    private boolean mDragging;
-    private View mCurrView;
-    private View mCurrAnimView;
-    private boolean mCanCurrViewBeDimissed;
-    private float mDensityScale;
-    private float mLastY;
-    private float mInitialTouchPosY;
-
-    private float mStartAlpha;
-    private boolean mProtected = false;
-
-    private float mChildSwipedFarEnoughFactor = 0.4f;
-    private float mChildSwipedFastEnoughFactor = 0.05f;
-
-    public SwipeHelper(Context context, int swipeDirection, SwipeHelperCallback callback, float densityScale,
-            float pagingTouchSlop) {
-        mCallback = callback;
-        mSwipeDirection = swipeDirection;
-        mVelocityTracker = VelocityTracker.obtain();
-        mDensityScale = densityScale;
-        mPagingTouchSlop = pagingTouchSlop;
-        if (SWIPE_ESCAPE_VELOCITY == -1) {
-            Resources res = context.getResources();
-            SWIPE_ESCAPE_VELOCITY = res.getInteger(R.integer.swipe_escape_velocity);
-            DEFAULT_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.escape_animation_duration);
-            MAX_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.max_escape_animation_duration);
-            MAX_DISMISS_VELOCITY = res.getInteger(R.integer.max_dismiss_velocity);
-            SNAP_ANIM_LEN = res.getInteger(R.integer.snap_animation_duration);
-            SWIPE_SCROLL_SLOP = res.getInteger(R.integer.swipe_scroll_slop);
-            MIN_SWIPE = res.getDimension(R.dimen.min_swipe);
-            MIN_VERT = res.getDimension(R.dimen.min_vert);
-            MIN_LOCK = res.getDimension(R.dimen.min_lock);
-        }
-    }
-
-    public void setDensityScale(float densityScale) {
-        mDensityScale = densityScale;
-    }
-
-    public void setPagingTouchSlop(float pagingTouchSlop) {
-        mPagingTouchSlop = pagingTouchSlop;
-    }
-
-    public void setChildSwipedFarEnoughFactor(float factor) {
-        mChildSwipedFarEnoughFactor = factor;
-    }
-
-    public void setChildSwipedFastEnoughFactor(float factor) {
-        mChildSwipedFastEnoughFactor = factor;
-    }
-
-    private float getVelocity(VelocityTracker vt) {
-        return mSwipeDirection == X ? vt.getXVelocity() :
-                vt.getYVelocity();
-    }
-
-    private ObjectAnimator createTranslationAnimation(View v, float newPos) {
-        ObjectAnimator anim = ObjectAnimator.ofFloat(v,
-                mSwipeDirection == X ? "translationX" : "translationY", newPos);
-        return anim;
-    }
-
-    private ObjectAnimator createDismissAnimation(View v, float newPos, int duration) {
-        ObjectAnimator anim = createTranslationAnimation(v, newPos);
-        anim.setInterpolator(sLinearInterpolator);
-        anim.setDuration(duration);
-        return anim;
-    }
-
-    private float getPerpendicularVelocity(VelocityTracker vt) {
-        return mSwipeDirection == X ? vt.getYVelocity() :
-                vt.getXVelocity();
-    }
-
-    private void setTranslation(View v, float translate) {
-        if (mSwipeDirection == X) {
-            v.setTranslationX(translate);
-        } else {
-            v.setTranslationY(translate);
-        }
-    }
-
-    private float getSize(View v) {
-        return mSwipeDirection == X ? v.getMeasuredWidth() :
-                v.getMeasuredHeight();
-    }
-
-    public void setMinAlpha(float minAlpha) {
-        mMinAlpha = minAlpha;
-    }
-
-    private float getAlphaForOffset(View view) {
-        float viewSize = getSize(view);
-        final float fadeSize = ALPHA_FADE_END * viewSize;
-        float result = mStartAlpha;
-        float pos = view.getTranslationX();
-        if (pos >= viewSize * ALPHA_FADE_START) {
-            result = mStartAlpha - (pos - viewSize * ALPHA_FADE_START) / fadeSize;
-        } else if (pos < viewSize * (mStartAlpha - ALPHA_FADE_START)) {
-            result = mStartAlpha + (viewSize * ALPHA_FADE_START + pos) / fadeSize;
-        }
-        return Math.max(mMinAlpha, result);
-    }
-
-    // invalidate the view's own bounds all the way up the view hierarchy
-    public static void invalidateGlobalRegion(View view) {
-        invalidateGlobalRegion(
-                view,
-                new RectF(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
-    }
-
-    // invalidate a rectangle relative to the view's coordinate system all the way up the view
-    // hierarchy
-    public static void invalidateGlobalRegion(View view, RectF childBounds) {
-        // childBounds.offset(view.getTranslationX(), view.getTranslationY());
-        if (DEBUG_INVALIDATE)
-            Log.v(TAG, "-------------");
-        while (view.getParent() != null && view.getParent() instanceof View) {
-            view = (View) view.getParent();
-            view.getMatrix().mapRect(childBounds);
-            view.invalidate((int) Math.floor(childBounds.left),
-                    (int) Math.floor(childBounds.top),
-                    (int) Math.ceil(childBounds.right),
-                    (int) Math.ceil(childBounds.bottom));
-            if (DEBUG_INVALIDATE) {
-                Log.v(TAG, "INVALIDATE(" + (int) Math.floor(childBounds.left)
-                        + "," + (int) Math.floor(childBounds.top)
-                        + "," + (int) Math.ceil(childBounds.right)
-                        + "," + (int) Math.ceil(childBounds.bottom));
-            }
-        }
-    }
-
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        final int action = ev.getAction();
-        switch (action) {
-            case MotionEvent.ACTION_DOWN:
-                mLastY = ev.getY();
-                mDragging = false;
-                mCurrView = mCallback.getChildAtPosition(ev);
-                mVelocityTracker.clear();
-                if (mCurrView != null) {
-                    mCurrAnimView = mCallback.getChildContentView(mCurrView);
-                    mStartAlpha = mCurrAnimView.getAlpha();
-                    mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
-                    mVelocityTracker.addMovement(ev);
-                    mInitialTouchPosX = ev.getX();
-                    mInitialTouchPosY = ev.getY();
-                }
-                break;
-            case MotionEvent.ACTION_MOVE:
-                if (mCurrView != null) {
-                    // Check the movement direction.
-                    if (mLastY >= 0 && !mDragging) {
-                        float currY = ev.getY();
-                        float currX = ev.getX();
-                        float deltaY = Math.abs(currY - mInitialTouchPosY);
-                        float deltaX = Math.abs(currX - mInitialTouchPosX);
-                        if (deltaY > SWIPE_SCROLL_SLOP && deltaY > (FACTOR * deltaX)) {
-                            mLastY = ev.getY();
-                            mCallback.onScroll();
-                            return false;
-                        }
-                    }
-                    mVelocityTracker.addMovement(ev);
-                    float pos = ev.getX();
-                    float delta = pos - mInitialTouchPosX;
-                    if (Math.abs(delta) > mPagingTouchSlop) {
-                        mCallback.onBeginDrag(mCallback.getChildContentView(mCurrView));
-                        mDragging = true;
-                        mInitialTouchPosX = ev.getX() - mCurrAnimView.getTranslationX();
-                        mInitialTouchPosY = ev.getY();
-                    }
-                }
-                mLastY = ev.getY();
-                break;
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
-                mDragging = false;
-                mCurrView = null;
-                mCurrAnimView = null;
-                mLastY = -1;
-                break;
-        }
-        return mDragging;
-    }
-
-    /**
-     * @param view The view to be dismissed
-     * @param velocity The desired pixels/second speed at which the view should
-     *            move
-     */
-    private void dismissChild(final View view, float velocity) {
-        final View animView = mCallback.getChildContentView(view);
-        final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
-        float newPos = determinePos(animView, velocity);
-        int duration = determineDuration(animView, newPos, velocity);
-
-        animView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
-        ObjectAnimator anim = createDismissAnimation(animView, newPos, duration);
-        anim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                mCallback.onChildDismissed(view);
-                animView.setLayerType(View.LAYER_TYPE_NONE, null);
-            }
-        });
-        anim.addUpdateListener(new AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
-                    animView.setAlpha(getAlphaForOffset(animView));
-                }
-                invalidateGlobalRegion(animView);
-            }
-        });
-        anim.start();
-    }
-
-    private int determineDuration(View animView, float newPos, float velocity) {
-        int duration = MAX_ESCAPE_ANIMATION_DURATION;
-        if (velocity != 0) {
-            duration = Math
-                    .min(duration,
-                            (int) (Math.abs(newPos - animView.getTranslationX()) * 1000f / Math
-                                    .abs(velocity)));
-        } else {
-            duration = DEFAULT_ESCAPE_ANIMATION_DURATION;
-        }
-        return duration;
-    }
-
-    private float determinePos(View animView, float velocity) {
-        float newPos = 0;
-        if (velocity < 0 || (velocity == 0 && animView.getTranslationX() < 0)
-                // if we use the Menu to dismiss an item in landscape, animate up
-                || (velocity == 0 && animView.getTranslationX() == 0 && mSwipeDirection == Y)) {
-            newPos = -getSize(animView);
-        } else {
-            newPos = getSize(animView);
-        }
-        return newPos;
-    }
-
-    public void snapChild(final View view, float velocity) {
-        final View animView = mCallback.getChildContentView(view);
-        final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
-        ObjectAnimator anim = createTranslationAnimation(animView, 0);
-        int duration = SNAP_ANIM_LEN;
-        anim.setDuration(duration);
-        anim.addUpdateListener(new AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
-                    animView.setAlpha(getAlphaForOffset(animView));
-                }
-                invalidateGlobalRegion(animView);
-            }
-        });
-        anim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                animView.setAlpha(mStartAlpha);
-                mCallback.onDragCancelled(mCurrView);
-            }
-        });
-        anim.start();
-    }
-
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (!mDragging || mProtected) {
-            return false;
-        }
-        mVelocityTracker.addMovement(ev);
-        final int action = ev.getAction();
-        switch (action) {
-            case MotionEvent.ACTION_OUTSIDE:
-            case MotionEvent.ACTION_MOVE:
-                if (mCurrView != null) {
-                    float deltaX = ev.getX() - mInitialTouchPosX;
-                    float deltaY = Math.abs(ev.getY() - mInitialTouchPosY);
-                    // If the user has gone vertical and not gone horizontalish AT
-                    // LEAST minBeforeLock, switch to scroll. Otherwise, cancel
-                    // the swipe.
-                    if (!mDragging && deltaY > MIN_VERT && (Math.abs(deltaX)) < MIN_LOCK
-                            && deltaY > (FACTOR * Math.abs(deltaX))) {
-                        mCallback.onScroll();
-                        return false;
-                    }
-                    float minDistance = MIN_SWIPE;
-                    if (Math.abs(deltaX) < minDistance) {
-                        // Don't start the drag until at least X distance has
-                        // occurred.
-                        return true;
-                    }
-                    // don't let items that can't be dismissed be dragged more
-                    // than maxScrollDistance
-                    if (CONSTRAIN_SWIPE && !mCallback.canChildBeDismissed(mCurrView)) {
-                        float size = getSize(mCurrAnimView);
-                        float maxScrollDistance = 0.15f * size;
-                        if (Math.abs(deltaX) >= size) {
-                            deltaX = deltaX > 0 ? maxScrollDistance : -maxScrollDistance;
-                        } else {
-                            deltaX = maxScrollDistance
-                                    * (float) Math.sin((deltaX / size) * (Math.PI / 2));
-                        }
-                    }
-                    setTranslation(mCurrAnimView, deltaX);
-                    if (FADE_OUT_DURING_SWIPE && mCanCurrViewBeDimissed) {
-                        mCurrAnimView.setAlpha(getAlphaForOffset(mCurrAnimView));
-                    }
-                    invalidateGlobalRegion(mCallback.getChildContentView(mCurrView));
-                }
-                break;
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
-                if (mCurrView != null) {
-                    float maxVelocity = MAX_DISMISS_VELOCITY * mDensityScale;
-                    mVelocityTracker.computeCurrentVelocity(1000 /* px/sec */, maxVelocity);
-                    float escapeVelocity = SWIPE_ESCAPE_VELOCITY * mDensityScale;
-                    float velocity = getVelocity(mVelocityTracker);
-                    float perpendicularVelocity = getPerpendicularVelocity(mVelocityTracker);
-
-                    // Decide whether to dismiss the current view
-                    // Tweak constants below as required to prevent erroneous
-                    // swipe/dismiss
-                    float translation = Math.abs(mCurrAnimView.getTranslationX());
-                    float currAnimViewSize = getSize(mCurrAnimView);
-                    // Long swipe = translation of {@link #mChildSwipedFarEnoughFactor} * width
-                    boolean childSwipedFarEnough = DISMISS_IF_SWIPED_FAR_ENOUGH
-                            && translation > mChildSwipedFarEnoughFactor * currAnimViewSize;
-                    // Fast swipe = > escapeVelocity and translation of
-                    // {@link #mChildSwipedFastEnoughFactor} * width
-                    boolean childSwipedFastEnough = (Math.abs(velocity) > escapeVelocity)
-                            && (Math.abs(velocity) > Math.abs(perpendicularVelocity))
-                            && (velocity > 0) == (mCurrAnimView.getTranslationX() > 0)
-                            && translation > mChildSwipedFastEnoughFactor * currAnimViewSize;
-                    if (LOG_SWIPE_DISMISS_VELOCITY) {
-                        Log.v(TAG, "Swipe/Dismiss: " + velocity + "/" + escapeVelocity + "/"
-                                + perpendicularVelocity + ", x: " + translation + "/"
-                                + currAnimViewSize);
-                    }
-
-                    boolean dismissChild = mCallback.canChildBeDismissed(mCurrView)
-                            && (childSwipedFastEnough || childSwipedFarEnough);
-
-                    if (dismissChild) {
-                        dismissChild(mCurrView, childSwipedFastEnough ? velocity : 0f);
-                    } else {
-                        snapChild(mCurrView, velocity);
-                    }
-                }
-                break;
-        }
-        return true;
-    }
-
-    public static void setSwipeable(View view, boolean swipeable) {
-        view.setTag(IS_SWIPEABLE_TAG, swipeable ? IS_SWIPEABLE : null);
-    }
-
-    public static boolean isSwipeable(View view) {
-        return IS_SWIPEABLE == view.getTag(IS_SWIPEABLE_TAG);
-    }
-
-    public interface SwipeHelperCallback {
-        View getChildAtPosition(MotionEvent ev);
-
-        View getChildContentView(View v);
-
-        void onScroll();
-
-        boolean canChildBeDismissed(View v);
-
-        void onBeginDrag(View v);
-
-        void onChildDismissed(View v);
-
-        void onDragCancelled(View v);
-
-    }
-
-    public interface OnItemGestureListener {
-        public void onSwipe(View view);
-
-        public void onTouch();
-
-        public boolean isSwipeEnabled();
-    }
-}
diff --git a/src/com/android/dialer/list/SwipeableShortcutCard.java b/src/com/android/dialer/list/SwipeableShortcutCard.java
deleted file mode 100644
index db2210a..0000000
--- a/src/com/android/dialer/list/SwipeableShortcutCard.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * 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.
- */
-package com.android.dialer.list;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.dialer.R;
-import com.android.dialer.list.SwipeHelper.OnItemGestureListener;
-import com.android.dialer.list.SwipeHelper.SwipeHelperCallback;
-
-/**
- * The swipeable call log row.
- */
-public class SwipeableShortcutCard extends FrameLayout implements SwipeHelperCallback {
-
-    private static final float CLIP_CARD_BARELY_HIDDEN_RATIO = 0.001f;
-    private static final float CLIP_CARD_MOSTLY_HIDDEN_RATIO = 0.9f;
-    // Fade out 5x faster than the hidden ratio.
-    private static final float CLIP_CARD_OPACITY_RATIO = 5f;
-
-    final int mCallLogMarginHorizontal;
-    final int mCallLogMarginTop;
-    final int mCallLogMarginBottom;
-    final int mCallLogPaddingStart;
-    final int mCallLogPaddingTop;
-    final int mCallLogPaddingBottom;
-    final int mShortCardBackgroundColor;
-
-    private SwipeHelper mSwipeHelper;
-    private OnItemGestureListener mOnItemSwipeListener;
-
-    private float mPreviousTranslationZ = 0;
-    private Rect mClipRect = new Rect();
-
-    public SwipeableShortcutCard(Context context) {
-        this(context, null);
-    }
-
-    public SwipeableShortcutCard(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public SwipeableShortcutCard(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        final Resources resources = getResources();
-        final float densityScale =resources.getDisplayMetrics().density;
-        final float pagingTouchSlop = ViewConfiguration.get(context)
-                .getScaledPagingTouchSlop();
-        mSwipeHelper = new SwipeHelper(context, SwipeHelper.X, this,
-                densityScale, pagingTouchSlop);
-
-        mCallLogMarginHorizontal =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_horizontal);
-        mCallLogMarginTop =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_top);
-        mCallLogMarginBottom =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_bottom);
-        mCallLogPaddingStart =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_start);
-        mCallLogPaddingTop =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_top);
-        mCallLogPaddingBottom =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_bottom);
-        mShortCardBackgroundColor =
-                resources.getColor(R.color.call_log_expanded_background_color, null);
-    }
-
-    void prepareChildView(View view) {
-        // Override CallLogAdapter's accessibility behavior; don't expand the shortcut card.
-        view.setAccessibilityDelegate(null);
-        view.setBackgroundResource(R.drawable.rounded_corner_bg);
-
-        final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
-                FrameLayout.LayoutParams.MATCH_PARENT,
-                FrameLayout.LayoutParams.WRAP_CONTENT);
-        params.setMargins(mCallLogMarginHorizontal, mCallLogMarginTop, mCallLogMarginHorizontal,
-                mCallLogMarginBottom);
-        view.setLayoutParams(params);
-
-        LinearLayout actionView =
-                (LinearLayout) view.findViewById(R.id.primary_action_view);
-        actionView.setPaddingRelative(mCallLogPaddingStart, mCallLogPaddingTop,
-                actionView.getPaddingEnd(), mCallLogPaddingBottom);
-
-        // TODO: Set content description including type/location and time information.
-        TextView nameView = (TextView) actionView.findViewById(R.id.name);
-
-        actionView.setContentDescription(
-                TextUtils.expandTemplate(
-                        getResources().getString(R.string.description_call_back_action),
-                        nameView.getText()));
-
-        mPreviousTranslationZ = getResources().getDimensionPixelSize(
-                R.dimen.recent_call_log_item_translation_z);
-        view.setTranslationZ(mPreviousTranslationZ);
-
-        final ViewGroup callLogItem = (ViewGroup) view.findViewById(R.id.call_log_list_item);
-        // Reset the internal call log item view if it is being recycled
-        callLogItem.setTranslationX(0);
-        callLogItem.setTranslationY(0);
-        callLogItem.setAlpha(1);
-        callLogItem.setClipBounds(null);
-        setChildrenOpacity(callLogItem, 1.0f);
-
-        callLogItem.findViewById(R.id.call_log_row)
-                .setBackgroundColor(mShortCardBackgroundColor);
-
-        callLogItem.findViewById(R.id.call_indicator_icon).setVisibility(View.VISIBLE);
-    }
-
-    @Override
-    public View getChildAtPosition(MotionEvent ev) {
-        return getChildCount() > 0 ? getChildAt(0) : null;
-    }
-
-    @Override
-    public View getChildContentView(View v) {
-        return v.findViewById(R.id.call_log_list_item);
-    }
-
-    @Override
-    public void onScroll() {}
-
-    @Override
-    public boolean canChildBeDismissed(View v) {
-        return true;
-    }
-
-    @Override
-    public void onBeginDrag(View v) {
-        // We do this so the underlying ScrollView knows that it won't get
-        // the chance to intercept events anymore
-        requestDisallowInterceptTouchEvent(true);
-    }
-
-    @Override
-    public void onChildDismissed(View v) {
-        if (v != null && mOnItemSwipeListener != null) {
-            mOnItemSwipeListener.onSwipe(v);
-        }
-    }
-
-    @Override
-    public void onDragCancelled(View v) {}
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        if (mSwipeHelper != null) {
-            return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
-        } else {
-            return super.onInterceptTouchEvent(ev);
-        }
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (mSwipeHelper != null) {
-            return mSwipeHelper.onTouchEvent(ev) || super.onTouchEvent(ev);
-        } else {
-            return super.onTouchEvent(ev);
-        }
-    }
-
-    public void setOnItemSwipeListener(OnItemGestureListener listener) {
-        mOnItemSwipeListener = listener;
-    }
-
-    /**
-     * Clips the card by a specified amount.
-     *
-     * @param ratioHidden A float indicating how much of each edge of the card should be
-     *         clipped. If 0, the entire card is displayed. If 0.5f, each edge is hidden
-     *         entirely, thus obscuring the entire card.
-     */
-    public void clipCard(float ratioHidden) {
-        final View viewToClip = getChildAt(0);
-        if (viewToClip == null) {
-            return;
-        }
-        int width = viewToClip.getWidth();
-        int height = viewToClip.getHeight();
-
-        if (ratioHidden <= CLIP_CARD_BARELY_HIDDEN_RATIO) {
-            viewToClip.setTranslationZ(mPreviousTranslationZ);
-        } else if (viewToClip.getTranslationZ() != 0){
-            mPreviousTranslationZ = viewToClip.getTranslationZ();
-            viewToClip.setTranslationZ(0);
-        }
-
-        if (ratioHidden > CLIP_CARD_MOSTLY_HIDDEN_RATIO) {
-            mClipRect.set(0, 0 , 0, 0);
-        } else {
-            int newTop = (int) (ratioHidden * height);
-            mClipRect.set(0, newTop, width, height);
-
-            // Since the pane will be overlapping with the action bar, apply a vertical offset
-            // to top align the clipped card in the viewable area;
-            viewToClip.setTranslationY(-newTop);
-        }
-        viewToClip.setClipBounds(mClipRect);
-
-        // If the view has any children, fade them out of view.
-        final ViewGroup viewGroup = (ViewGroup) viewToClip;
-        setChildrenOpacity(
-                viewGroup, Math.max(0, 1 - (CLIP_CARD_OPACITY_RATIO  * ratioHidden)));
-    }
-
-    private void setChildrenOpacity(ViewGroup viewGroup, float alpha) {
-        final int count = viewGroup.getChildCount();
-        for (int i = 0; i < count; i++) {
-            viewGroup.getChildAt(i).setAlpha(alpha);
-        }
-    }
-}
\ No newline at end of file