Uses predefined icons for google properties in the contact card

Change-Id: Ie17444f6923cfe9708005862ad262b9445c02a01
diff --git a/res/drawable-hdpi/ic_add_to_circles_black_24.png b/res/drawable-hdpi/ic_add_to_circles_black_24.png
new file mode 100644
index 0000000..6eb1fcc
--- /dev/null
+++ b/res/drawable-hdpi/ic_add_to_circles_black_24.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_google_plus_24dp.png b/res/drawable-hdpi/ic_google_plus_24dp.png
new file mode 100644
index 0000000..af17f2b
--- /dev/null
+++ b/res/drawable-hdpi/ic_google_plus_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_hangout_24dp.png b/res/drawable-hdpi/ic_hangout_24dp.png
new file mode 100644
index 0000000..496a2a0
--- /dev/null
+++ b/res/drawable-hdpi/ic_hangout_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_hangout_video_24dp.png b/res/drawable-hdpi/ic_hangout_video_24dp.png
new file mode 100644
index 0000000..0825a15
--- /dev/null
+++ b/res/drawable-hdpi/ic_hangout_video_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_add_to_circles_black_24.png b/res/drawable-mdpi/ic_add_to_circles_black_24.png
new file mode 100644
index 0000000..fbffc97
--- /dev/null
+++ b/res/drawable-mdpi/ic_add_to_circles_black_24.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_google_plus_24dp.png b/res/drawable-mdpi/ic_google_plus_24dp.png
new file mode 100644
index 0000000..d8eacf0
--- /dev/null
+++ b/res/drawable-mdpi/ic_google_plus_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_hangout_24dp.png b/res/drawable-mdpi/ic_hangout_24dp.png
new file mode 100644
index 0000000..1b0acfd
--- /dev/null
+++ b/res/drawable-mdpi/ic_hangout_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_hangout_video_24dp.png b/res/drawable-mdpi/ic_hangout_video_24dp.png
new file mode 100644
index 0000000..b54b1cb
--- /dev/null
+++ b/res/drawable-mdpi/ic_hangout_video_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_to_circles_black_24.png b/res/drawable-xhdpi/ic_add_to_circles_black_24.png
new file mode 100644
index 0000000..79116b5
--- /dev/null
+++ b/res/drawable-xhdpi/ic_add_to_circles_black_24.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_google_plus_24dp.png b/res/drawable-xhdpi/ic_google_plus_24dp.png
new file mode 100644
index 0000000..ea352d3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_google_plus_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_hangout_24dp.png b/res/drawable-xhdpi/ic_hangout_24dp.png
new file mode 100644
index 0000000..0cd7795
--- /dev/null
+++ b/res/drawable-xhdpi/ic_hangout_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_hangout_video_24dp.png b/res/drawable-xhdpi/ic_hangout_video_24dp.png
new file mode 100644
index 0000000..97b984c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_hangout_video_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_add_to_circles_black_24.png b/res/drawable-xxhdpi/ic_add_to_circles_black_24.png
new file mode 100644
index 0000000..23a2084
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_add_to_circles_black_24.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_google_plus_24dp.png b/res/drawable-xxhdpi/ic_google_plus_24dp.png
new file mode 100644
index 0000000..933cd62
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_google_plus_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_hangout_24dp.png b/res/drawable-xxhdpi/ic_hangout_24dp.png
new file mode 100644
index 0000000..16858d1
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_hangout_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_hangout_video_24dp.png b/res/drawable-xxhdpi/ic_hangout_video_24dp.png
new file mode 100644
index 0000000..4183c76
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_hangout_video_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_google_plus_24dp.png b/res/drawable-xxxhdpi/ic_google_plus_24dp.png
new file mode 100644
index 0000000..dcd6c97
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_google_plus_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_hangout_24dp.png b/res/drawable-xxxhdpi/ic_hangout_24dp.png
new file mode 100644
index 0000000..4bfdb0d
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_hangout_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_hangout_video_24dp.png b/res/drawable-xxxhdpi/ic_hangout_video_24dp.png
new file mode 100644
index 0000000..f1be2e7
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_hangout_video_24dp.png
Binary files differ
diff --git a/res/layout/expanding_entry_card_item.xml b/res/layout/expanding_entry_card_item.xml
index 46fc8cb..99738a6 100644
--- a/res/layout/expanding_entry_card_item.xml
+++ b/res/layout/expanding_entry_card_item.xml
@@ -26,11 +26,12 @@
 
     <ImageView
         android:id="@+id/icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="@dimen/expanding_entry_card_item_icon_height"
+        android:layout_height="@dimen/expanding_entry_card_item_icon_width"
         android:layout_alignParentStart="true"
         android:layout_alignParentTop="true"
-        android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing" />
+        android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing"
+        android:scaleType="fitCenter" />
 
     <TextView
         android:id="@+id/header"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ce04992..0e296fe 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -186,4 +186,6 @@
 
     <dimen name="people_activity_card_elevation">2dp</dimen>
 
+    <dimen name="expanding_entry_card_item_icon_height">24dp</dimen>
+    <dimen name="expanding_entry_card_item_icon_width">24dp</dimen>
 </resources>
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index bd5336e..4c11e91 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -173,6 +173,13 @@
     @SuppressWarnings("deprecation")
     private static final String LEGACY_AUTHORITY = android.provider.Contacts.AUTHORITY;
 
+    private static final String MIMETYPE_GPLUS_PROFILE =
+            "vnd.android.cursor.item/vnd.googleplus.profile";
+    private static final String INTENT_DATA_GPLUS_PROFILE_ADD_TO_CIRCLE = "Add to circle";
+    private static final String MIMETYPE_HANGOUTS =
+            "vnd.android.cursor.item/vnd.googleplus.profile.comm";
+    private static final String INTENT_DATA_HANGOUTS_VIDEO = "Start video call";
+
     private Uri mLookupUri;
     private String[] mExcludeMimes;
     private int mExtraMode;
@@ -1053,7 +1060,37 @@
             intent = new Intent(Intent.ACTION_VIEW);
             final Uri uri = ContentUris.withAppendedId(Data.CONTENT_URI, dataItem.getId());
             intent.setDataAndType(uri, dataItem.getMimeType());
-            icon = ResolveCache.getInstance(this).getIcon(dataItem.getMimeType(), intent);
+
+            if (intent != null) {
+                final String mimetype = intent.getType();
+
+                // Attempt to use known icons for known 3p types. Otherwise default to ResolveCache
+                switch (mimetype) {
+                    case MIMETYPE_GPLUS_PROFILE:
+                        if (INTENT_DATA_GPLUS_PROFILE_ADD_TO_CIRCLE.equals(
+                                intent.getDataString())) {
+                            icon = getResources().getDrawable(
+                                    R.drawable.ic_add_to_circles_black_24);
+                        } else {
+                            icon = getResources().getDrawable(R.drawable.ic_google_plus_24dp);
+                        }
+                        break;
+                    case MIMETYPE_HANGOUTS:
+                        if (INTENT_DATA_HANGOUTS_VIDEO.equals(intent.getDataString())) {
+                            icon = getResources().getDrawable(R.drawable.ic_hangout_video_24dp);
+                        } else {
+                            icon = getResources().getDrawable(R.drawable.ic_hangout_24dp);
+                        }
+                        break;
+                    default:
+                        icon = ResolveCache.getInstance(this).getIcon(
+                                dataItem.getMimeType(), intent);
+                        // Call mutate to create a new Drawable.ConstantState for color filtering
+                        if (icon != null) {
+                            icon.mutate();
+                        }
+                }
+            }
         }
 
         if (intent != null) {