Remove unnecessary logic from PhoneFavoritesMergedAdapter

Bug: 13963734
Change-Id: Ieee5631b8b6b5f36b3d6304ca653642f055453d8
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 3144b86..ab3cd64 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -143,8 +143,7 @@
         mCallLogAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
                 new ContactInfoHelper(getActivity(), currentCountryIso), false, false);
 
-        mMergedAdapter = new PhoneFavoriteMergedAdapter(getActivity(), this, null,
-                mCallLogAdapter, null, null);
+        mMergedAdapter = new PhoneFavoriteMergedAdapter(getActivity(), this, mCallLogAdapter);
     }
 
     @Override
diff --git a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
index 03ff67e..122e062 100644
--- a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
@@ -35,8 +35,8 @@
 import com.android.dialer.list.SwipeHelper.SwipeHelperCallback;
 
 /**
- * An adapter that combines items from {@link com.android.contacts.common.list.ContactTileAdapter}
- * and {@link com.android.dialer.calllog.CallLogAdapter} into a single list.
+ * An adapter that displays call shortcuts from {@link com.android.dialer.calllog.CallLogAdapter}
+ * in the form of cards.
  */
 public class PhoneFavoriteMergedAdapter extends BaseAdapter {
 
@@ -49,14 +49,8 @@
 
     private static final String TAG = PhoneFavoriteMergedAdapter.class.getSimpleName();
 
-    private static final int TILE_INTERACTION_TEASER_VIEW_POSITION = 3;
-    private static final int TILE_INTERACTION_TEASER_VIEW_ID = -2;
-    private static final int FAVORITES_MENU_ITEM_ID = -3;
-    private final PhoneFavoritesTileAdapter mContactTileAdapter;
     private final CallLogAdapter mCallLogAdapter;
-    private final View mPhoneFavoritesMenu;
     private final ListsFragment mFragment;
-    private final TileInteractionTeaserView mTileInteractionTeaserView;
 
     private final int mCallLogPadding;
 
@@ -101,20 +95,14 @@
 
     public PhoneFavoriteMergedAdapter(Context context,
             ListsFragment fragment,
-            PhoneFavoritesTileAdapter contactTileAdapter,
-            CallLogAdapter callLogAdapter,
-            View phoneFavoritesMenu,
-            TileInteractionTeaserView tileInteractionTeaserView) {
+            CallLogAdapter callLogAdapter) {
         final Resources resources = context.getResources();
         mContext = context;
         mFragment = fragment;
         mCallLogPadding = resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding);
-        mContactTileAdapter = contactTileAdapter;
         mCallLogAdapter = callLogAdapter;
         mObserver = new CustomDataSetObserver();
         mCallLogAdapter.registerDataSetObserver(mObserver);
-        mPhoneFavoritesMenu = phoneFavoritesMenu;
-        mTileInteractionTeaserView = tileInteractionTeaserView;
         mCallLogQueryHandler = new CallLogQueryHandler(mContext.getContentResolver(),
                 mCallLogQueryHandlerListener);
     }
@@ -134,51 +122,12 @@
 
     @Override
     public Object getItem(int position) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-
-        if (callLogAdapterCount > 0) {
-            if (position < callLogAdapterCount) {
-                return mCallLogAdapter.getItem(position);
-            }
-        }
-        // Set position to the position of the actual favorite contact in the favorites adapter
-        position = getAdjustedPositionInContactTileAdapter(position);
-
-        return mContactTileAdapter.getItem(position);
+        return mCallLogAdapter.getItem(position);
     }
 
-    /**
-     * In order to ensure that items have stable ids (for animation purposes), we need to
-     * guarantee that every single item has a unique ID, even across data set changes.
-     *
-     * These are the ranges of IDs reserved for each item type.
-     *
-     * -4 and lower: CallLogAdapterItems representing most recent call.
-     * -3: Favorites menu
-     * -2: Teaser
-     * 0 to (N -1): Rows of tiled contacts, where N is equal to the max rows of tiled contacts
-     * N to infinity: Rows of regular contacts. Their item id is calculated by N + contact_id,
-     * where contact_id is guaranteed to never be negative.
-     */
     @Override
     public long getItemId(int position) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-        if (position < callLogAdapterCount) {
-            // Call log items are not animated, so reusing their position for IDs is fine.
-            return FAVORITES_MENU_ITEM_ID - 1 - position;
-        } else if (position == TILE_INTERACTION_TEASER_VIEW_POSITION + callLogAdapterCount &&
-                mTileInteractionTeaserView.getShouldDisplayInList()) {
-            return TILE_INTERACTION_TEASER_VIEW_ID;
-        } else if (position == callLogAdapterCount) {
-            return FAVORITES_MENU_ITEM_ID;
-        } else if (position < (callLogAdapterCount + mContactTileAdapter.getCount() +
-                getTeaserViewCount() + 1)) {
-            return mContactTileAdapter.getItemId(
-                    getAdjustedPositionInContactTileAdapter(position));
-        } else {
-            // Default fallback.  We don't normally get here.
-            return FAVORITES_MENU_ITEM_ID;
-        }
+        return position;
     }
 
     @Override
@@ -196,73 +145,32 @@
 
     @Override
     public int getItemViewType(int position) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-
-        if (position < callLogAdapterCount) {
-            return 0;
-        } else if (position == TILE_INTERACTION_TEASER_VIEW_POSITION + callLogAdapterCount &&
-                mTileInteractionTeaserView.getShouldDisplayInList()) {
-            // View type of the teaser row is the last view type of the contact tile adapter +2
-            return mContactTileAdapter.getViewTypeCount() + 2;
-        } else if (position == callLogAdapterCount) {
-            // View type of the favorites menu is last view type of contact tile adapter +3
-            return mContactTileAdapter.getViewTypeCount() + 3;
-        } else if (position < getCount()) {
-            return mContactTileAdapter.getItemViewType(
-                    getAdjustedPositionInContactTileAdapter(position));
-        } else {
-            // Catch-all - we shouldn't get here but if we do use the same as the favorites menu.
-            return mContactTileAdapter.getViewTypeCount() + 3;
-        }
+        return mCallLogAdapter.getItemViewType(position);
     }
 
-    /**
-     * Determines the view for a specified position.
-     *
-     * @param position Position for which to retrieve view.
-     * @return view corresponding to position.
-     */
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-
-        if (callLogAdapterCount > 0 && position < callLogAdapterCount) {
-            // Handle case where we are requesting the view for the "most recent caller".
-
-            final SwipeableCallLogRow wrapper;
-            if (convertView == null) {
-                wrapper = new SwipeableCallLogRow(mContext);
-                wrapper.setOnItemSwipeListener(mCallLogOnItemSwipeListener);
-            } else {
-                wrapper = (SwipeableCallLogRow) convertView;
-            }
-
-            // Special case wrapper view for the most recent call log item. This allows
-            // us to create a card-like effect for the more recent call log item in
-            // the PhoneFavoriteMergedAdapter, but keep the original look of the item in
-            // the CallLogAdapter.
-            final View view = mCallLogAdapter.getView(position, convertView == null ?
-                    null : wrapper.getChildAt(0), parent);
-            wrapper.removeAllViews();
-            final View callLogItem = view.findViewById(R.id.call_log_list_item);
-            // Reset the internal call log item view if it is being recycled
-            callLogItem.setTranslationX(0);
-            callLogItem.setAlpha(1);
-            wrapper.addView(view);
-            return wrapper;
-        } else if (position == callLogAdapterCount) {
-            // If position is just after the entries in the mCallLogAdapter (most recent call),
-            // return the favorites menu.
-            return mPhoneFavoritesMenu;
+        final SwipeableCallLogRow wrapper;
+        if (convertView == null) {
+            wrapper = new SwipeableCallLogRow(mContext);
+            wrapper.setOnItemSwipeListener(mCallLogOnItemSwipeListener);
+        } else {
+            wrapper = (SwipeableCallLogRow) convertView;
         }
 
-        // Set position to the position of the actual favorite contact in the favorites adapter.
-        // Adjusts based on the presence of other views, such as the favorites menu.
-        position = getAdjustedPositionInContactTileAdapter(position);
-
-        // Favorites section
-        final View view = mContactTileAdapter.getView(position, convertView, parent);
-        return view;
+        // Special case wrapper view for the most recent call log item. This allows
+        // us to create a card-like effect for the more recent call log item in
+        // the PhoneFavoriteMergedAdapter, but keep the original look of the item in
+        // the CallLogAdapter.
+        final View view = mCallLogAdapter.getView(position, convertView == null ?
+                null : wrapper.getChildAt(0), parent);
+        wrapper.removeAllViews();
+        final View callLogItem = view.findViewById(R.id.call_log_list_item);
+        // Reset the internal call log item view if it is being recycled
+        callLogItem.setTranslationX(0);
+        callLogItem.setAlpha(1);
+        wrapper.addView(view);
+        return wrapper;
     }
 
     @Override
@@ -272,39 +180,7 @@
 
     @Override
     public boolean isEnabled(int position) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-        if (position < callLogAdapterCount) {
-            return mCallLogAdapter.isEnabled(position);
-        } else { // For favorites section
-            return mContactTileAdapter.isEnabled(
-                    getAdjustedPositionInContactTileAdapter(position));
-        }
-    }
-
-    /**
-     * Given the current position in the merged adapter, return the index in the
-     * mContactTileAdapter this position corresponds to.
-     *
-     * @param position current position in the overall (merged) adapter.
-     * @return position in the mContactTileAdapter.
-     */
-    public int getAdjustedPositionInContactTileAdapter(int position) {
-        final int callLogAdapterCount = mCallLogAdapter.getCount();
-        if (position - callLogAdapterCount > TILE_INTERACTION_TEASER_VIEW_POSITION &&
-                mTileInteractionTeaserView.getShouldDisplayInList()) {
-            return position - callLogAdapterCount - 2;
-        } else {
-            return position - callLogAdapterCount - 1;
-        }
-    }
-
-    /**
-     * Determines the number of teaser views visible.
-     * @return 1 or 0 depending on if the teaser view is showing.
-     */
-    private int getTeaserViewCount() {
-        return (mContactTileAdapter.getCount() > TILE_INTERACTION_TEASER_VIEW_POSITION &&
-                mTileInteractionTeaserView.getShouldDisplayInList() ? 1 : 0);
+        return mCallLogAdapter.isEnabled(position);
     }
 
     /**