Merge "Use correct style for GTalk-IM; fixes the height of the secondary icon"
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
index b57e85c..0d94622 100644
--- a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
@@ -63,16 +63,17 @@
 
         <ImageView
             android:id="@+id/presence_icon"
-            android:layout_width="32dip"
-            android:layout_height="@dimen/detail_min_line_item_height"
-            android:layout_marginLeft="5dip"
-            android:gravity="center"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="4dip"
+            android:layout_gravity="center_vertical"
             android:scaleType="centerInside" />
 
         <TextView
             android:id="@+id/kind"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:visibility="gone" />
 
         <TextView
@@ -80,6 +81,7 @@
             style="@style/ContactDetailItemType"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_gravity="center_vertical"
             android:paddingRight="16dip" />
 
         <View
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index e292f39..4d6ed5f 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -64,6 +64,15 @@
                 android:layout_height="wrap_content"
                 android:orientation="horizontal">
 
+                <ImageView
+                    android:id="@+id/presence_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="4dip"
+                    android:layout_gravity="center_vertical"
+                    android:gravity="center"
+                    android:scaleType="centerInside" />
+
                 <TextView
                     android:id="@+id/type"
                     style="@style/ContactDetailItemType"
@@ -90,14 +99,6 @@
                 android:visibility="gone" />
 
         </LinearLayout>
-
-        <ImageView
-            android:id="@+id/presence_icon"
-            android:layout_width="32dip"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="5dip"
-            android:gravity="center"
-            android:scaleType="centerInside" />
     </com.android.contacts.detail.PrimaryActionViewContainer>
 
     <View
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index ca99c79..4d50a39 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -43,6 +43,7 @@
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.widget.TransitionAnimationView;
 import com.android.internal.telephony.ITelephony;
+import com.google.common.annotations.VisibleForTesting;
 
 import android.app.Activity;
 import android.app.Fragment;
@@ -122,8 +123,6 @@
 
     private static final String TAG = "ContactDetailFragment";
 
-    private static final int LOADER_DETAILS = 1;
-
     private interface ContextMenuIds {
         static final int COPY_TEXT = 0;
         static final int CLEAR_DEFAULT = 1;
@@ -132,7 +131,6 @@
 
     private static final String KEY_CONTACT_URI = "contactUri";
     private static final String KEY_LIST_STATE = "liststate";
-    private static final String LOADER_ARG_CONTACT_URI = "contactUri";
 
     private Context mContext;
     private View mView;
@@ -605,7 +603,7 @@
                         final DetailViewEntry imEntry = DetailViewEntry.fromValues(mContext, imMime,
                                 imKind, dataId, entryValues, mContactData.isDirectoryEntry(),
                                 mContactData.getDirectoryId());
-                        buildImActions(imEntry, entryValues);
+                        buildImActions(mContext, imEntry, entryValues);
                         imEntry.applyStatus(status, false);
                         mImEntries.add(imEntry);
                     }
@@ -617,7 +615,7 @@
                     mPostalEntries.add(entry);
                 } else if (Im.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build IM entries
-                    buildImActions(entry, entryValues);
+                    buildImActions(mContext, entry, entryValues);
 
                     // Apply presence and status details when available
                     final DataStatus status = mContactData.getStatuses().get(entry.id);
@@ -936,11 +934,11 @@
     }
 
     /**
-     * Build {@link Intent} to launch an action for the given {@link Im} or
-     * {@link Email} row. If the result is non-null, it either contains one or two Intents
-     * (e.g. [Text, Videochat] or just [Text])
+     * Writes the Instant Messaging action into the given entry value.
      */
-    public static void buildImActions(DetailViewEntry entry, ContentValues values) {
+    @VisibleForTesting
+    public static void buildImActions(Context context, DetailViewEntry entry,
+            ContentValues values) {
         final boolean isEmail = Email.CONTENT_ITEM_TYPE.equals(values.getAsString(Data.MIMETYPE));
 
         if (!isEmail && !isProtocolValid(values)) {
@@ -958,6 +956,8 @@
             final Integer chatCapabilityObj = values.getAsInteger(Im.CHAT_CAPABILITY);
             final int chatCapability = chatCapabilityObj == null ? 0 : chatCapabilityObj;
             entry.chatCapability = chatCapability;
+            entry.typeString = Im.getProtocolLabel(context.getResources(), Im.PROTOCOL_GOOGLE_TALK,
+                    null).toString();
             if ((chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0) {
                 entry.actionIcon = R.drawable.sym_action_talk_holo_light;
                 entry.intent =
diff --git a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
index cfab94a..02faa24 100644
--- a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
+++ b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
@@ -43,7 +43,7 @@
         values.put(Im.DATA, TEST_ADDRESS);
 
         DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
-        ContactDetailFragment.buildImActions(entry, values);
+        ContactDetailFragment.buildImActions(mContext, entry, values);
         assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
         assertEquals("xmpp:" + TEST_ADDRESS + "?message", entry.intent.getData().toString());
 
@@ -60,7 +60,7 @@
         values.put(Im.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO);
 
         DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
-        ContactDetailFragment.buildImActions(entry, values);
+        ContactDetailFragment.buildImActions(mContext, entry, values);
         assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
         assertEquals("xmpp:" + TEST_ADDRESS + "?message", entry.intent.getData().toString());
 
@@ -79,7 +79,7 @@
                 Im.CAPABILITY_HAS_VOICE);
 
         DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
-        ContactDetailFragment.buildImActions(entry, values);
+        ContactDetailFragment.buildImActions(mContext, entry, values);
         assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
         assertEquals("xmpp:" + TEST_ADDRESS + "?message", entry.intent.getData().toString());
 
@@ -98,7 +98,7 @@
         values.put(Im.DATA, TEST_ADDRESS);
 
         DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
-        ContactDetailFragment.buildImActions(entry, values);
+        ContactDetailFragment.buildImActions(mContext, entry, values);
         assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
 
         final Uri data = entry.intent.getData();
@@ -121,7 +121,7 @@
                 Im.CAPABILITY_HAS_VOICE);
 
         DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
-        ContactDetailFragment.buildImActions(entry, values);
+        ContactDetailFragment.buildImActions(mContext, entry, values);
         assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
         assertEquals("xmpp:" + TEST_ADDRESS + "?message", entry.intent.getData().toString());