Fixes text overlapping secondary icon

Bug: 16858313
Change-Id: I64f535b8f803ebb9e60ce3337aa1f64e995f2222
diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
index a536f8c..22126ac 100644
--- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -67,7 +67,7 @@
      */
     public static final class Entry {
 
-        private final int mViewId;
+        private final int mId;
         private final Drawable mIcon;
         private final String mHeader;
         private final String mSubHeader;
@@ -82,21 +82,21 @@
         private final boolean mIsEditable;
         private final EntryContextMenuInfo mEntryContextMenuInfo;
 
-        public Entry(int viewId, Drawable icon, String header, String subHeader, String text,
+        public Entry(int id, Drawable icon, String header, String subHeader, String text,
                 Intent intent, Drawable alternateIcon, Intent alternateIntent,
                 String alternateContentDescription, boolean shouldApplyColor,
                 boolean isEditable, EntryContextMenuInfo entryContextMenuInfo) {
-            this(viewId, icon, header, subHeader, null, text, null, intent, alternateIcon,
+            this(id, icon, header, subHeader, null, text, null, intent, alternateIcon,
                     alternateIntent, alternateContentDescription, shouldApplyColor, isEditable,
                     entryContextMenuInfo);
         }
 
-        public Entry(int viewId, Drawable mainIcon, String header, String subHeader,
+        public Entry(int id, Drawable mainIcon, String header, String subHeader,
                 Drawable subHeaderIcon, String text, Drawable textIcon, Intent intent,
                 Drawable alternateIcon, Intent alternateIntent, String alternateContentDescription,
                 boolean shouldApplyColor, boolean isEditable,
                 EntryContextMenuInfo entryContextMenuInfo) {
-            mViewId = viewId;
+            mId = id;
             mIcon = mainIcon;
             mHeader = header;
             mSubHeader = subHeader;
@@ -160,8 +160,8 @@
             return mIsEditable;
         }
 
-        int getViewId() {
-            return mViewId;
+        int getId() {
+            return mId;
         }
 
         EntryContextMenuInfo getEntryContextMenuInfo() {
@@ -491,7 +491,6 @@
                 R.layout.expanding_entry_card_item, this, false);
 
         view.setContextMenuInfo(entry.getEntryContextMenuInfo());
-        view.setId(entry.getViewId());
 
         final ImageView icon = (ImageView) view.findViewById(R.id.icon);
         icon.setVisibility(iconVisibility);
@@ -535,7 +534,7 @@
 
         if (entry.getIntent() != null) {
             view.setOnClickListener(mOnClickListener);
-            view.setTag(entry.getIntent());
+            view.setTag(new EntryTag(entry.getId(), entry.getIntent()));
         }
 
         // If only the header is visible, add a top margin to match icon's top margin.
@@ -555,8 +554,7 @@
         if (entry.getAlternateIcon() != null && entry.getAlternateIntent() != null) {
             alternateIcon.setImageDrawable(entry.getAlternateIcon());
             alternateIcon.setOnClickListener(mOnClickListener);
-            alternateIcon.setTag(entry.getAlternateIntent());
-            alternateIcon.setId(entry.getViewId());
+            alternateIcon.setTag(new EntryTag(entry.getId(), entry.getAlternateIntent()));
             alternateIcon.setVisibility(View.VISIBLE);
             alternateIcon.setContentDescription(entry.getAlternateContentDescription());
 
@@ -808,4 +806,22 @@
             return mCopyLabel;
         }
     }
+
+    static final class EntryTag {
+        private final int mId;
+        private final Intent mIntent;
+
+        public EntryTag(int id, Intent intent) {
+            mId = id;
+            mIntent = intent;
+        }
+
+        public int getId() {
+            return mId;
+        }
+
+        public Intent getIntent() {
+            return mIntent;
+        }
+    }
 }
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 172eb0d..edcb662 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -128,6 +128,7 @@
 import com.android.contacts.interactions.SmsInteractionsLoader;
 import com.android.contacts.quickcontact.ExpandingEntryCardView.Entry;
 import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryContextMenuInfo;
+import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryTag;
 import com.android.contacts.quickcontact.ExpandingEntryCardView.ExpandingEntryCardViewListener;
 import com.android.contacts.util.ImageViewDrawableSetter;
 import com.android.contacts.util.PhoneCapabilityTester;
@@ -287,18 +288,19 @@
     final OnClickListener mEntryClickHandler = new OnClickListener() {
         @Override
         public void onClick(View v) {
-            // Data Id is stored as the entry view id
-            final int dataId = v.getId();
+            final Object entryTagObject = v.getTag();
+            if (entryTagObject == null || !(entryTagObject instanceof EntryTag)) {
+                Log.w(TAG, "EntryTag was not used correctly");
+                return;
+            }
+            final EntryTag entryTag = (EntryTag) entryTagObject;
+            final Intent intent = entryTag.getIntent();
+            final int dataId = entryTag.getId();
+
             if (dataId == CARD_ENTRY_ID_EDIT_CONTACT) {
                 editContact();
                 return;
             }
-            final Object intentObject = v.getTag();
-            if (intentObject == null || !(intentObject instanceof Intent)) {
-                Log.w(TAG, "Intent tag was not used correctly");
-                return;
-            }
-            final Intent intent = (Intent) intentObject;
 
             // Default to USAGE_TYPE_CALL. Usage is summed among all types for sorting each data id
             // so the exact usage type is not necessary in all cases