Adding proper chat capability icons to contact detail

Change-Id: I4d9e01e08a8d70bb6e1591f92436a5ab7c194be6
diff --git a/src/com/android/contacts/ContactPresenceIconUtil.java b/src/com/android/contacts/ContactPresenceIconUtil.java
index 1a2d58e..81a1bed 100644
--- a/src/com/android/contacts/ContactPresenceIconUtil.java
+++ b/src/com/android/contacts/ContactPresenceIconUtil.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.StatusUpdates;
 
 /**
@@ -26,7 +27,7 @@
 public class ContactPresenceIconUtil {
     /**
      * Get the presence icon resource according the status.
-     * 
+     *
      * @return null means don't show the status icon.
      */
     public static Drawable getPresenceIcon (Context context, int status) {
@@ -45,4 +46,41 @@
                 return null;
         }
     }
+
+    public static Drawable getCapabilityIcon(Context context, int status, int chatCapability) {
+        int resourceId = 0;
+        if ((chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0) {
+            switch(status) {
+                case StatusUpdates.AVAILABLE:
+                    resourceId = android.R.drawable.presence_video_online;
+                    break;
+                case StatusUpdates.IDLE:
+                case StatusUpdates.AWAY:
+                    resourceId = android.R.drawable.presence_video_away;
+                    break;
+                case StatusUpdates.DO_NOT_DISTURB:
+                    resourceId = android.R.drawable.presence_video_busy;
+                    break;
+            }
+        } else if ((chatCapability & Im.CAPABILITY_HAS_VOICE) != 0) {
+            switch(status) {
+                case StatusUpdates.AVAILABLE:
+                    resourceId = android.R.drawable.presence_audio_online;
+                    break;
+                case StatusUpdates.IDLE:
+                case StatusUpdates.AWAY:
+                    resourceId = android.R.drawable.presence_audio_away;
+                    break;
+                case StatusUpdates.DO_NOT_DISTURB:
+                    resourceId = android.R.drawable.presence_audio_busy;
+                    break;
+            }
+        }
+
+        if (resourceId != 0) {
+            return context.getResources().getDrawable(resourceId);
+        }
+
+        return null;
+    }
 }