Standardize and replace assets with vectors

Standarize naming of vector drawables and replace png
assets with vector drawables.

Test: build and run GoogleContactsTests
      manual side by side sanity check with previous version

Bug: 33251913
Change-Id: Iafea5c1bba738c57437888da999fc2909d0765fd
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 37e165f..f0bc37e 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -425,7 +425,7 @@
                         && groupMetaData.groupId == groupListItem.getGroupId()) {
                     updateMenuSelection(menuItem);
                 }
-                menuItem.setIcon(R.drawable.ic_menu_label);
+                menuItem.setIcon(R.drawable.quantum_ic_label_vd_theme_24);
                 menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -450,7 +450,7 @@
         // Create a menu item in the sub menu to add new groups
         final MenuItem menuItem = subMenu.add(R.id.nav_groups_items, Menu.NONE,
                 Menu.NONE, getString(R.string.menu_new_group_action_bar));
-        menuItem.setIcon(R.drawable.ic_add);
+        menuItem.setIcon(R.drawable.quantum_ic_add_vd_theme_24);
         menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
             @Override
             public boolean onMenuItemClick(MenuItem item) {
diff --git a/src/com/android/contacts/SimImportService.java b/src/com/android/contacts/SimImportService.java
index 9e7884f..f21e1e1 100644
--- a/src/com/android/contacts/SimImportService.java
+++ b/src/com/android/contacts/SimImportService.java
@@ -192,7 +192,7 @@
                 .setAutoCancel(true)
                 .setContentTitle(this.getString(R.string.importing_sim_finished_title))
                 .setColor(this.getResources().getColor(R.color.dialtacts_theme_color))
-                .setSmallIcon(R.drawable.ic_check_mark)
+                .setSmallIcon(R.drawable.quantum_ic_done_vd_theme_24)
                 .setContentIntent(PendingIntent.getActivity(this, 0, intent, 0));
         return builder.build();
     }
@@ -205,7 +205,7 @@
                 .setContentTitle(this.getString(R.string.importing_sim_failed_title))
                 .setContentText(this.getString(R.string.importing_sim_failed_message))
                 .setColor(this.getResources().getColor(R.color.dialtacts_theme_color))
-                .setSmallIcon(R.drawable.ic_error_black_24dp)
+                .setSmallIcon(R.drawable.quantum_ic_error_vd_theme_24)
                 .setContentIntent(PendingIntent.getActivity(this, 0, intent, 0));
         return builder.build();
     }
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 39ec2d3..1bfd832 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -38,6 +38,7 @@
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 import android.widget.FrameLayout;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout.LayoutParams;
 import android.widget.SearchView.OnCloseListener;
@@ -152,7 +153,9 @@
         mSearchView = (EditText) mSearchContainer.findViewById(R.id.search_view);
         mSearchView.setHint(mActivity.getString(mSearchHintResId));
         mSearchView.addTextChangedListener(new SearchTextWatcher());
-        mSearchContainer.findViewById(R.id.search_back_button).setOnClickListener(
+        final ImageButton searchBackButton = (ImageButton) mSearchContainer
+                .findViewById(R.id.search_back_button);
+        searchBackButton.setOnClickListener(
                 new OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -161,6 +164,7 @@
                 }
             }
         });
+        searchBackButton.getDrawable().setAutoMirrored(true);
 
         mClearSearchView = mSearchContainer.findViewById(R.id.search_close_button);
         mClearSearchView.setOnClickListener(
@@ -331,7 +335,7 @@
             newFlags |= ActionBar.DISPLAY_SHOW_TITLE;
             mToolbar.setContentInsetsRelative(mMaxToolbarContentInsetStart,
                     mToolbar.getContentInsetEnd());
-            mToolbar.setNavigationIcon(R.drawable.ic_menu_hamburger);
+            mToolbar.setNavigationIcon(R.drawable.quantum_ic_menu_vd_theme_24);
         } else {
             mToolbar.setNavigationIcon(null);
         }
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index e57b7d0..ee4b726 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -19,9 +19,12 @@
 import android.app.Fragment;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
+import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.util.Log;
@@ -689,6 +692,12 @@
 
         final MenuItem searchItem = menu.findItem(R.id.menu_search);
         searchItem.setVisible(!mIsSearchMode && mIsSearchSupported);
+
+        final Drawable searchIcon = searchItem.getIcon();
+        if (searchIcon != null) {
+            searchIcon.mutate().setColorFilter(ContextCompat.getColor(this,
+                    R.color.actionbar_icon_color), PorterDuff.Mode.SRC_ATOP);
+        }
         return true;
     }
 
diff --git a/src/com/android/contacts/detail/ContactDisplayUtils.java b/src/com/android/contacts/detail/ContactDisplayUtils.java
index b1bdc6e..6803e9d 100644
--- a/src/com/android/contacts/detail/ContactDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDisplayUtils.java
@@ -31,7 +31,6 @@
 import android.util.Log;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
 
@@ -42,7 +41,6 @@
 import com.android.contacts.model.dataitem.OrganizationDataItem;
 import com.android.contacts.preference.ContactsPreferences;
 import com.android.contacts.util.MoreMath;
-
 import com.google.common.collect.Iterables;
 
 import java.util.List;
@@ -156,34 +154,14 @@
     /**
      * Sets the starred state of this contact.
      */
-    public static void configureStarredImageView(ImageView starredView, boolean isDirectoryEntry,
-            boolean isUserProfile, boolean isStarred) {
-        // Check if the starred state should be visible
-        if (!isDirectoryEntry && !isUserProfile) {
-            starredView.setVisibility(View.VISIBLE);
-            final int resId = isStarred
-                    ? R.drawable.btn_star_on_normal_holo_light
-                    : R.drawable.btn_star_off_normal_holo_light;
-            starredView.setImageResource(resId);
-            starredView.setTag(isStarred);
-            starredView.setContentDescription(starredView.getResources().getString(
-                    isStarred ? R.string.menu_removeStar : R.string.menu_addStar));
-        } else {
-            starredView.setVisibility(View.GONE);
-        }
-    }
-
-    /**
-     * Sets the starred state of this contact.
-     */
     public static void configureStarredMenuItem(MenuItem starredMenuItem, boolean isDirectoryEntry,
             boolean isUserProfile, boolean isStarred) {
         // Check if the starred state should be visible
         if (!isDirectoryEntry && !isUserProfile) {
             starredMenuItem.setVisible(true);
             final int resId = isStarred
-                    ? R.drawable.ic_star_24dp
-                    : R.drawable.ic_star_outline_24dp;
+                    ? R.drawable.quantum_ic_star_vd_theme_24
+                    : R.drawable.quantum_ic_star_border_vd_theme_24;
             starredMenuItem.setIcon(resId);
             starredMenuItem.setChecked(isStarred);
             starredMenuItem.setTitle(isStarred ? R.string.menu_removeStar : R.string.menu_addStar);
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index f2f00a5..213648f 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -1241,8 +1241,9 @@
                 toolbar.setTitle(R.string.contact_editor_title_read_only_contact);
                 // Set activity title for Talkback
                 getEditorActivity().setTitle(R.string.contact_editor_title_read_only_contact);
-                toolbar.setNavigationIcon(R.drawable.ic_back_arrow);
+                toolbar.setNavigationIcon(R.drawable.quantum_ic_arrow_back_vd_theme_24);
                 toolbar.setNavigationContentDescription(R.string.back_arrow_content_description);
+                toolbar.getNavigationIcon().setAutoMirrored(true);
             }
         }
 
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
index 2748155..0810ab8 100644
--- a/src/com/android/contacts/editor/EditorUiUtils.java
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
@@ -157,32 +157,37 @@
     public static Drawable getMimeTypeDrawable(Context context, String mimeType) {
         switch (mimeType) {
             case StructuredName.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_person_black_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_person_vd_theme_24);
             case StructuredPostal.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_place_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_place_vd_theme_24);
             case SipAddress.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_dialer_sip_black_24dp);
+                return context.getResources().getDrawable(
+                        R.drawable.quantum_ic_dialer_sip_vd_theme_24);
             case Phone.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_phone_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_phone_vd_theme_24);
             case Im.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_message_24dp);
+                return context.getResources().getDrawable(
+                        R.drawable.quantum_ic_message_vd_theme_24);
             case Event.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_event_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_event_vd_theme_24);
             case Email.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_email_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_email_vd_theme_24);
             case Website.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_public_black_24dp);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_public_vd_theme_24);
             case Photo.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_camera_alt_black_24dp);
+                return context.getResources().getDrawable(
+                        R.drawable.quantum_ic_camera_alt_vd_theme_24);
             case GroupMembership.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_menu_label);
+                return context.getResources().getDrawable(R.drawable.quantum_ic_label_vd_theme_24);
             case Organization.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_business_black_24dp);
+                return context.getResources().getDrawable(
+                        R.drawable.quantum_ic_business_vd_theme_24);
             case Note.CONTENT_ITEM_TYPE:
-                return context.getResources().getDrawable(R.drawable.ic_insert_comment_black_24dp);
+                return context.getResources().getDrawable(
+                        R.drawable.quantum_ic_insert_comment_vd_theme_24);
             case Relation.CONTENT_ITEM_TYPE:
                 return context.getResources().getDrawable(
-                        R.drawable.ic_circles_extended_black_24dp);
+                        R.drawable.quantum_ic_circles_ext_vd_theme_24);
             default:
                 return null;
         }
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 9f17674..4711bcb 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -619,7 +619,7 @@
         primary = mCurrentRawContactDelta.getPrimaryEntry(StructuredName.CONTENT_ITEM_TYPE);
         final String name = primary != null ? primary.getAsString(StructuredName.DISPLAY_NAME) :
             getContext().getString(R.string.missing_name);
-        final Drawable nameDrawable = context.getDrawable(R.drawable.ic_person_24dp);
+        final Drawable nameDrawable = context.getDrawable(R.drawable.quantum_ic_person_vd_theme_24);
         final String nameContentDescription = res.getString(R.string.header_name_entry);
         bindData(nameDrawable, nameContentDescription, name, /* type */ null,
                 /* isFirstEntry */ true);
@@ -627,7 +627,7 @@
         // Phones
         final ArrayList<ValuesDelta> phones = mCurrentRawContactDelta
                 .getMimeEntries(Phone.CONTENT_ITEM_TYPE);
-        final Drawable phoneDrawable = context.getDrawable(R.drawable.ic_phone_24dp);
+        final Drawable phoneDrawable = context.getDrawable(R.drawable.quantum_ic_phone_vd_theme_24);
         final String phoneContentDescription = res.getString(R.string.header_phone_entry);
         if (phones != null) {
             boolean isFirstPhoneBound = true;
@@ -653,7 +653,7 @@
         // Emails
         final ArrayList<ValuesDelta> emails = mCurrentRawContactDelta
                 .getMimeEntries(Email.CONTENT_ITEM_TYPE);
-        final Drawable emailDrawable = context.getDrawable(R.drawable.ic_email_24dp);
+        final Drawable emailDrawable = context.getDrawable(R.drawable.quantum_ic_email_vd_theme_24);
         final String emailContentDescription = res.getString(R.string.header_email_entry);
         if (emails != null) {
             boolean isFirstEmailBound = true;
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index c8a41af..c3a240a 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -182,8 +182,8 @@
      */
     private void setupExpansionView(boolean shouldExist, boolean collapsed) {
         final Drawable expandIcon = getContext().getDrawable(collapsed
-                ? R.drawable.ic_menu_expand_minimized_24dp
-                : R.drawable.ic_menu_expand_maximized_24dp);
+                ? R.drawable.quantum_ic_expand_more_vd_theme_24
+                : R.drawable.quantum_ic_expand_less_vd_theme_24);
         mExpansionView.setImageDrawable(expandIcon);
         mExpansionView.setContentDescription(collapsed ? mExpandButtonDescription
                 : mCollapseButtonDescription);
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index 4c6f020..ea7ab64 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -18,17 +18,21 @@
 import android.app.Activity;
 import android.app.LoaderManager.LoaderCallbacks;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.CursorLoader;
 import android.content.Intent;
 import android.content.Loader;
 import android.database.Cursor;
 import android.database.CursorWrapper;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
+import android.support.v4.content.ContextCompat;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
@@ -64,7 +68,6 @@
 import com.android.contacts.model.account.AccountWithDataSet;
 import com.android.contacts.util.ImplicitIntentsUtil;
 import com.android.contactsbind.FeedbackHelper;
-
 import com.google.common.primitives.Longs;
 
 import java.util.ArrayList;
@@ -267,25 +270,33 @@
         final boolean isGroupEditable = mGroupMetaData != null && mGroupMetaData.editable;
         final boolean isGroupReadOnly = mGroupMetaData != null && mGroupMetaData.readOnly;
 
-        setVisible(menu, R.id.menu_multi_send_email, !mIsEditMode && !isGroupEmpty());
-        setVisible(menu, R.id.menu_multi_send_message, !mIsEditMode && !isGroupEmpty());
-        setVisible(menu, R.id.menu_add, isGroupEditable && !isSelectionMode);
-        setVisible(menu, R.id.menu_rename_group, !isGroupReadOnly && !isSelectionMode);
-        setVisible(menu, R.id.menu_delete_group, !isGroupReadOnly && !isSelectionMode);
-        setVisible(menu, R.id.menu_edit_group, isGroupEditable && !mIsEditMode && !isSelectionMode
-                && !isGroupEmpty());
-        setVisible(menu, R.id.menu_remove_from_group, isGroupEditable && isSelectionMode &&
-                !mIsEditMode);
+        setVisible(getContext(), menu, R.id.menu_multi_send_email, !mIsEditMode && !isGroupEmpty());
+        setVisible(getContext(), menu, R.id.menu_multi_send_message,
+                !mIsEditMode && !isGroupEmpty());
+        setVisible(getContext(), menu, R.id.menu_add, isGroupEditable && !isSelectionMode);
+        setVisible(getContext(), menu, R.id.menu_rename_group,
+                !isGroupReadOnly && !isSelectionMode);
+        setVisible(getContext(), menu, R.id.menu_delete_group,
+                !isGroupReadOnly && !isSelectionMode);
+        setVisible(getContext(), menu, R.id.menu_edit_group,
+                isGroupEditable && !mIsEditMode && !isSelectionMode && !isGroupEmpty());
+        setVisible(getContext(), menu, R.id.menu_remove_from_group,
+                isGroupEditable && isSelectionMode && !mIsEditMode);
     }
 
     private boolean isGroupEmpty() {
         return getAdapter() != null && getAdapter().isEmpty();
     }
 
-    private static void setVisible(Menu menu, int id, boolean visible) {
+    private static void setVisible(Context context, Menu menu, int id, boolean visible) {
         final MenuItem menuItem = menu.findItem(id);
         if (menuItem != null) {
             menuItem.setVisible(visible);
+            final Drawable icon = menuItem.getIcon();
+            if (icon != null) {
+                icon.mutate().setColorFilter(ContextCompat.getColor(context,
+                        R.color.actionbar_icon_color), PorterDuff.Mode.SRC_ATOP);
+            }
         }
     }
 
diff --git a/src/com/android/contacts/interactions/CalendarInteraction.java b/src/com/android/contacts/interactions/CalendarInteraction.java
index 2ee0a71..9b7ab31 100644
--- a/src/com/android/contacts/interactions/CalendarInteraction.java
+++ b/src/com/android/contacts/interactions/CalendarInteraction.java
@@ -20,7 +20,7 @@
 public class CalendarInteraction implements ContactInteraction {
     private static final String TAG = CalendarInteraction.class.getSimpleName();
 
-    private static final int CALENDAR_ICON_RES = R.drawable.ic_event_24dp;
+    private static final int CALENDAR_ICON_RES = R.drawable.quantum_ic_event_vd_theme_24;
 
     private ContentValues mValues;
 
diff --git a/src/com/android/contacts/interactions/CallLogInteraction.java b/src/com/android/contacts/interactions/CallLogInteraction.java
index d3ac802..8890478 100644
--- a/src/com/android/contacts/interactions/CallLogInteraction.java
+++ b/src/com/android/contacts/interactions/CallLogInteraction.java
@@ -49,7 +49,7 @@
 public class CallLogInteraction implements ContactInteraction {
 
     private static final String URI_TARGET_PREFIX = "tel:";
-    private static final int CALL_LOG_ICON_RES = R.drawable.ic_phone_24dp;
+    private static final int CALL_LOG_ICON_RES = R.drawable.quantum_ic_phone_vd_theme_24;
     private static final int CALL_ARROW_ICON_RES = R.drawable.ic_call_arrow;
     private static BidiFormatter sBidiFormatter = BidiFormatter.getInstance();
 
diff --git a/src/com/android/contacts/interactions/SmsInteraction.java b/src/com/android/contacts/interactions/SmsInteraction.java
index ada8f9b..4aad07b 100644
--- a/src/com/android/contacts/interactions/SmsInteraction.java
+++ b/src/com/android/contacts/interactions/SmsInteraction.java
@@ -35,7 +35,7 @@
 public class SmsInteraction implements ContactInteraction {
 
     private static final String URI_TARGET_PREFIX = "smsto:";
-    private static final int SMS_ICON_RES = R.drawable.ic_message_24dp_mirrored;
+    private static final int SMS_ICON_RES = R.drawable.quantum_ic_message_vd_theme_24;
     private static BidiFormatter sBidiFormatter = BidiFormatter.getInstance();
 
     private ContentValues mValues;
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index 4670200..d4b83c6 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -103,7 +103,7 @@
                 break;
             }
             case ContactListFilter.FILTER_TYPE_STARRED: {
-                bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred);
+                bindView(R.drawable.quantum_ic_star_vd_theme_24, R.string.list_filter_all_starred);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_CUSTOM: {
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
index 2a91ee8..4f42a0f 100644
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ b/src/com/android/contacts/list/ContactListItemView.java
@@ -394,7 +394,7 @@
             }
             mVideoCallIcon.setContentDescription(getContext().getString(
                     R.string.description_search_video_call));
-            mVideoCallIcon.setImageResource(R.drawable.ic_search_video_call);
+            mVideoCallIcon.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
             mVideoCallIcon.setScaleType(ScaleType.CENTER);
             mVideoCallIcon.setVisibility(View.VISIBLE);
             mVideoCallIcon.setOnClickListener(new OnClickListener() {
@@ -1031,7 +1031,8 @@
         mHeaderView = new ImageView(getContext());
         final ImageView headerImageView = (ImageView) mHeaderView;
         headerImageView.setImageDrawable(
-                getResources().getDrawable(R.drawable.ic_material_star, getContext().getTheme()));
+                getResources().getDrawable(R.drawable.quantum_ic_star_vd_theme_24,
+                        getContext().getTheme()));
         headerImageView.setImageTintList(ColorStateList.valueOf(getResources()
                 .getColor(R.color.material_star_pink)));
         headerImageView.setContentDescription(
@@ -1338,7 +1339,7 @@
             final int position) {
         if (mDeleteImageButton == null) {
             mDeleteImageButton = new AppCompatImageButton(getContext());
-            mDeleteImageButton.setImageResource(R.drawable.ic_cancel_black_24dp);
+            mDeleteImageButton.setImageResource(R.drawable.quantum_ic_cancel_vd_theme_24);
             mDeleteImageButton.setScaleType(ScaleType.CENTER);
             mDeleteImageButton.setBackgroundColor(Color.TRANSPARENT);
             mDeleteImageButton.setContentDescription(
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 74c9f65..079c5a5 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -28,12 +28,15 @@
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.database.Cursor;
+import android.graphics.PorterDuff;
 import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
+import android.support.v4.content.ContextCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.text.TextUtils;
 import android.util.Log;
@@ -978,6 +981,15 @@
         // Debug options need to be visible even in search mode.
         makeMenuItemVisible(menu, R.id.export_database, mEnableDebugMenuOptions &&
                 hasExportIntentHandler());
+
+        // Light tint the icons for normal mode, dark tint for search or selection mode.
+        for (int i = 0; i < menu.size(); ++i) {
+            final Drawable icon = menu.getItem(i).getIcon();
+            if (icon != null && !isSearchOrSelectionMode) {
+                icon.mutate().setColorFilter(ContextCompat.getColor(getContext(),
+                        R.color.actionbar_icon_color), PorterDuff.Mode.SRC_ATOP);
+            }
+        }
     }
 
     private void makeMenuItemVisible(Menu menu, int itemId, boolean visible) {
diff --git a/src/com/android/contacts/list/HeaderEntryContactListAdapter.java b/src/com/android/contacts/list/HeaderEntryContactListAdapter.java
index 4a31950..43c2428 100644
--- a/src/com/android/contacts/list/HeaderEntryContactListAdapter.java
+++ b/src/com/android/contacts/list/HeaderEntryContactListAdapter.java
@@ -64,7 +64,7 @@
             } else {
                 itemView = (ContactListItemView) convertView;
             }
-            itemView.setDrawableResource(R.drawable.ic_search_add_contact);
+            itemView.setDrawableResource(R.drawable.quantum_ic_person_add_vd_theme_24);
             itemView.setDisplayName(getContext().getResources().getString(
                     R.string.header_entry_contact_list_adapter_header_title));
             return itemView;
diff --git a/src/com/android/contacts/list/ShortcutIntentBuilder.java b/src/com/android/contacts/list/ShortcutIntentBuilder.java
index a9bc5ea..d7ac53a 100644
--- a/src/com/android/contacts/list/ShortcutIntentBuilder.java
+++ b/src/com/android/contacts/list/ShortcutIntentBuilder.java
@@ -294,11 +294,11 @@
             // Make the URI a direct tel: URI so that it will always continue to work
             phoneUri = Uri.fromParts(PhoneAccount.SCHEME_TEL, phoneNumber, null);
             bitmap = generatePhoneNumberIcon(drawable, phoneType, phoneLabel,
-                    R.drawable.ic_call);
+                    R.drawable.quantum_ic_phone_vd_theme_24);
         } else {
             phoneUri = Uri.fromParts(ContactsUtils.SCHEME_SMSTO, phoneNumber, null);
             bitmap = generatePhoneNumberIcon(drawable, phoneType, phoneLabel,
-                    R.drawable.ic_message_24dp_mirrored);
+                    R.drawable.quantum_ic_message_vd_theme_24);
         }
 
         Intent shortcutIntent = new Intent(shortcutAction, phoneUri);
diff --git a/src/com/android/contacts/model/account/BaseAccountType.java b/src/com/android/contacts/model/account/BaseAccountType.java
index d5d1887..a62f353 100644
--- a/src/com/android/contacts/model/account/BaseAccountType.java
+++ b/src/com/android/contacts/model/account/BaseAccountType.java
@@ -249,7 +249,7 @@
     protected DataKind addDataKindPhone(Context context) throws DefinitionException {
         DataKind kind = addKind(new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup,
                 Weight.PHONE, true));
-        kind.iconAltRes = R.drawable.ic_message_24dp_mirrored;
+        kind.iconAltRes = R.drawable.quantum_ic_message_vd_theme_24;
         kind.iconAltDescriptionRes = R.string.sms;
         kind.actionHeader = new PhoneActionInflater();
         kind.actionAltHeader = new PhoneActionAltInflater();
@@ -1029,7 +1029,7 @@
                     Phone.CONTENT_ITEM_TYPE, Phone.TYPE, R.string.phoneLabelsGroup, Weight.PHONE,
                     new PhoneActionInflater(), new SimpleInflater(Phone.NUMBER));
 
-            kind.iconAltRes = R.drawable.ic_message_24dp_mirrored;
+            kind.iconAltRes = R.drawable.quantum_ic_message_vd_theme_24;
             kind.iconAltDescriptionRes = R.string.sms;
             kind.actionAltHeader = new PhoneActionAltInflater();
 
diff --git a/src/com/android/contacts/model/account/FallbackAccountType.java b/src/com/android/contacts/model/account/FallbackAccountType.java
index d104330..f36f370 100644
--- a/src/com/android/contacts/model/account/FallbackAccountType.java
+++ b/src/com/android/contacts/model/account/FallbackAccountType.java
@@ -18,6 +18,9 @@
 
 import android.accounts.AuthenticatorDescription;
 import android.content.Context;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.support.v4.content.ContextCompat;
 
 import com.android.contacts.R;
 import com.android.contacts.model.dataitem.DataKind;
@@ -30,7 +33,7 @@
         this.accountType = null;
         this.dataSet = null;
         this.titleRes = R.string.account_phone;
-        this.iconRes = R.drawable.ic_device;
+        this.iconRes = R.drawable.quantum_ic_smartphone_vd_theme_24;
 
         // Note those are only set for unit tests.
         this.resourcePackageName = resPackageName;
@@ -58,6 +61,14 @@
         }
     }
 
+    @Override
+    public Drawable getDisplayIcon(Context context) {
+        final Drawable icon = context.getResources().getDrawable(iconRes);
+        icon.mutate().setColorFilter(ContextCompat.getColor(context,
+                R.color.actionbar_icon_color_grey), PorterDuff.Mode.SRC_ATOP);
+        return icon;
+    }
+
     public FallbackAccountType(Context context) {
         this(context, null);
     }
diff --git a/src/com/android/contacts/model/account/SimAccountType.java b/src/com/android/contacts/model/account/SimAccountType.java
index 6e64c64..636ee88 100644
--- a/src/com/android/contacts/model/account/SimAccountType.java
+++ b/src/com/android/contacts/model/account/SimAccountType.java
@@ -34,7 +34,7 @@
 
     public SimAccountType(Context context) {
         this.titleRes = R.string.account_sim;
-        this.iconRes = R.drawable.ic_sim_card_tinted_24dp;
+        this.iconRes = R.drawable.quantum_ic_sim_card_vd_theme_24;
 
         try {
             addDataKindStructuredName(context);
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index fd6e2b4..a3f4869 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -215,10 +215,10 @@
                         mAlternateIntent = new Intent(
                                 Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call"));
                         if (isVideoChatCapable) {
-                            mAlternateIconRes = R.drawable.sym_action_videochat_holo_light;
+                            mAlternateIconRes = R.drawable.quantum_ic_videocam_vd_theme_24;
                             mAlternateIconDescriptionRes = R.string.video_chat;
                         } else {
-                            mAlternateIconRes = R.drawable.sym_action_audiochat_holo_light;
+                            mAlternateIconRes = R.drawable.quantum_ic_mic_vd_theme_24;
                             mAlternateIconDescriptionRes = R.string.audio_chat;
                         }
                     }
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 1dfa10c..3c04f68 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -1375,7 +1375,7 @@
      */
     private void initializeNoContactDetailCard(boolean areAllRawContactsSimAccounts) {
         final Drawable phoneIcon = getResources().getDrawable(
-                R.drawable.ic_phone_24dp).mutate();
+                R.drawable.quantum_ic_phone_vd_theme_24).mutate();
         final Entry phonePromptEntry = new Entry(CARD_ENTRY_ID_EDIT_CONTACT,
                 phoneIcon, getString(R.string.quickcontact_add_phone_number),
                 /* subHeader = */ null, /* subHeaderIcon = */ null, /* text = */ null,
@@ -1388,7 +1388,7 @@
                 /* thirdContentDescription = */ null,
                 /* thirdAction = */ Entry.ACTION_NONE,
                 /* thirdExtras = */ null,
-                R.drawable.ic_phone_24dp);
+                R.drawable.quantum_ic_phone_vd_theme_24);
 
         final List<List<Entry>> promptEntries = new ArrayList<>();
         promptEntries.add(new ArrayList<Entry>(1));
@@ -1396,7 +1396,7 @@
 
         if (!areAllRawContactsSimAccounts) {
             final Drawable emailIcon = getResources().getDrawable(
-                    R.drawable.ic_email_24dp).mutate();
+                    R.drawable.quantum_ic_email_vd_theme_24).mutate();
             final Entry emailPromptEntry = new Entry(CARD_ENTRY_ID_EDIT_CONTACT,
                     emailIcon, getString(R.string.quickcontact_add_email), /* subHeader = */ null,
                     /* subHeaderIcon = */ null,
@@ -1407,7 +1407,7 @@
                     /* EntryContextMenuInfo = */ null, /* thirdIcon = */ null,
                     /* thirdIntent = */ null, /* thirdContentDescription = */ null,
                     /* thirdAction = */ Entry.ACTION_NONE, /* thirdExtras = */ null,
-                    R.drawable.ic_email_24dp);
+                    R.drawable.quantum_ic_email_vd_theme_24);
 
             promptEntries.add(new ArrayList<Entry>(1));
             promptEntries.get(1).add(emailPromptEntry);
@@ -1725,8 +1725,8 @@
                 primaryContentDescription.append(header);
                 phoneContentDescription = com.android.contacts.util.ContactDisplayUtils
                         .getTelephoneTtsSpannable(primaryContentDescription.toString(), header);
-                icon = res.getDrawable(R.drawable.ic_phone_24dp);
-                iconResourceId = R.drawable.ic_phone_24dp;
+                iconResourceId = R.drawable.quantum_ic_phone_vd_theme_24;
+                icon = res.getDrawable(iconResourceId);
                 if (PhoneCapabilityTester.isPhone(context)) {
                     intent = CallUtil.getCallIntent(phone.getNumber());
                     intent.putExtra(EXTRA_ACTION_TYPE, ActionType.CALL);
@@ -1735,7 +1735,7 @@
                         Uri.fromParts(ContactsUtils.SCHEME_SMSTO, phone.getNumber(), null));
                 alternateIntent.putExtra(EXTRA_ACTION_TYPE, ActionType.SMS);
 
-                alternateIcon = res.getDrawable(R.drawable.ic_message_24dp_mirrored);
+                alternateIcon = res.getDrawable(R.drawable.quantum_ic_message_vd_theme_24);
                 alternateContentDescription.append(res.getString(R.string.sms_custom, header));
                 smsContentDescription = com.android.contacts.util.ContactDisplayUtils
                         .getTelephoneTtsSpannable(alternateContentDescription.toString(), header);
@@ -1746,7 +1746,7 @@
                 boolean isVideoEnabled = (videoCapability & CallUtil.VIDEO_CALLING_ENABLED) != 0;
 
                 if (CallUtil.isCallWithSubjectSupported(context)) {
-                    thirdIcon = res.getDrawable(R.drawable.ic_call_note_white_24dp);
+                    thirdIcon = res.getDrawable(R.drawable.quantum_ic_perm_phone_msg_vd_theme_24);
                     thirdAction = Entry.ACTION_CALL_WITH_SUBJECT;
                     thirdContentDescription =
                             res.getString(R.string.call_with_a_note);
@@ -1773,7 +1773,7 @@
                     boolean isPresent = (carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) != 0;
 
                     if ((isPresenceEnabled && isPresent) || !isPresenceEnabled) {
-                        thirdIcon = res.getDrawable(R.drawable.ic_videocam);
+                        thirdIcon = res.getDrawable(R.drawable.quantum_ic_videocam_vd_theme_24);
                         thirdAction = Entry.ACTION_INTENT;
                         thirdIntent = CallUtil.getVideoCallIntent(phone.getNumber(),
                                 CALL_ORIGIN_QUICK_CONTACTS_ACTIVITY);
@@ -1801,8 +1801,8 @@
                     primaryContentDescription.append(text).append(" ");
                 }
                 primaryContentDescription.append(header);
-                icon = res.getDrawable(R.drawable.ic_email_24dp);
-                iconResourceId = R.drawable.ic_email_24dp;
+                iconResourceId = R.drawable.quantum_ic_email_vd_theme_24;
+                icon = res.getDrawable(iconResourceId);
             }
         } else if (dataItem instanceof StructuredPostalDataItem) {
             StructuredPostalDataItem postal = (StructuredPostalDataItem) dataItem;
@@ -1824,11 +1824,11 @@
                 alternateIntent =
                         StructuredPostalUtils.getViewPostalAddressDirectionsIntent(postalAddress);
                 alternateIntent.putExtra(EXTRA_ACTION_TYPE, ActionType.DIRECTIONS);
-                alternateIcon = res.getDrawable(R.drawable.ic_directions_24dp);
+                alternateIcon = res.getDrawable(R.drawable.quantum_ic_directions_vd_theme_24);
                 alternateContentDescription.append(res.getString(
                         R.string.content_description_directions)).append(" ").append(header);
-                icon = res.getDrawable(R.drawable.ic_place_24dp);
-                iconResourceId = R.drawable.ic_place_24dp;
+                iconResourceId = R.drawable.quantum_ic_place_vd_theme_24;
+                icon = res.getDrawable(iconResourceId);
             }
         } else if (dataItem instanceof SipAddressDataItem) {
             final SipAddressDataItem sip = (SipAddressDataItem) dataItem;
@@ -1851,8 +1851,8 @@
                     primaryContentDescription.append(text).append(" ");
                 }
                 primaryContentDescription.append(header);
-                icon = res.getDrawable(R.drawable.ic_dialer_sip_black_24dp);
-                iconResourceId = R.drawable.ic_dialer_sip_black_24dp;
+                iconResourceId = R.drawable.quantum_ic_dialer_sip_vd_theme_24;
+                icon = res.getDrawable(iconResourceId);
             }
         } else if (dataItem instanceof StructuredNameDataItem) {
             // If the name is already set and this is not the super primary value then leave the
@@ -1885,8 +1885,9 @@
                     // If a secondDataItem is available, use it to build an entry with
                     // alternate actions
                     if (secondDataItem != null) {
-                        icon = res.getDrawable(R.drawable.ic_hangout_24dp);
-                        alternateIcon = res.getDrawable(R.drawable.ic_hangout_video_24dp);
+                        icon = res.getDrawable(R.drawable.quantum_ic_hangout_vd_theme_24);
+                        alternateIcon = res.getDrawable(
+                                R.drawable.quantum_ic_hangout_video_vd_theme_24);
                         final HangoutsDataItemModel itemModel =
                                 new HangoutsDataItemModel(intent, alternateIntent,
                                         dataItem, secondDataItem, alternateContentDescription,
@@ -1900,9 +1901,9 @@
                         text = itemModel.text;
                     } else {
                         if (HANGOUTS_DATA_5_VIDEO.equals(intent.getDataString())) {
-                            icon = res.getDrawable(R.drawable.ic_hangout_video_24dp);
+                            icon = res.getDrawable(R.drawable.quantum_ic_hangout_video_vd_theme_24);
                         } else {
-                            icon = res.getDrawable(R.drawable.ic_hangout_24dp);
+                            icon = res.getDrawable(R.drawable.quantum_ic_hangout_vd_theme_24);
                         }
                     }
                 } else {
@@ -2480,8 +2481,8 @@
                 Trace.endSection();
                 Trace.beginSection("initialize permission explanation card");
 
-                final Drawable historyIcon = VectorDrawableCompat.create(
-                        getResources(), R.drawable.ic_history_24dp, null);
+                final Drawable historyIcon = getResources().getDrawable(
+                        R.drawable.quantum_ic_history_vd_theme_24);
 
                 final Entry permissionExplanationEntry = new Entry(CARD_ENTRY_ID_REQUEST_PERMISSION,
                         historyIcon, getString(R.string.permission_explanation_header),
@@ -2493,7 +2494,7 @@
                         /* isEditable = */ false, /* EntryContextMenuInfo = */ null,
                         /* thirdIcon = */ null, /* thirdIntent = */ null,
                         /* thirdContentDescription = */ null, /* thirdAction = */ Entry.ACTION_NONE,
-                        /* thirdExtras = */ null, R.drawable.ic_history_24dp);
+                        /* thirdExtras = */ null, R.drawable.quantum_ic_history_vd_theme_24);
 
                 final List<List<Entry>> permissionExplanationEntries = new ArrayList<>();
                 permissionExplanationEntries.add(new ArrayList<Entry>());
@@ -2705,10 +2706,10 @@
             editMenuItem.setVisible(true);
             if (DirectoryContactUtil.isDirectoryContact(mContactData) || InvisibleContactUtil
                     .isInvisibleAndAddable(mContactData, this)) {
-                editMenuItem.setIcon(R.drawable.ic_person_add_tinted_24dp);
+                editMenuItem.setIcon(R.drawable.quantum_ic_person_add_vd_theme_24);
                 editMenuItem.setTitle(R.string.menu_add_contact);
             } else if (isContactEditable()) {
-                editMenuItem.setIcon(R.drawable.ic_create_24dp);
+                editMenuItem.setIcon(R.drawable.quantum_ic_create_vd_theme_24);
                 editMenuItem.setTitle(R.string.menu_editContact);
             } else {
                 editMenuItem.setVisible(false);
diff --git a/src/com/android/contacts/vcard/NotificationImportExportListener.java b/src/com/android/contacts/vcard/NotificationImportExportListener.java
index c68bf0f..cf815bc 100644
--- a/src/com/android/contacts/vcard/NotificationImportExportListener.java
+++ b/src/com/android/contacts/vcard/NotificationImportExportListener.java
@@ -278,7 +278,7 @@
         return new NotificationCompat.Builder(context)
                 .setAutoCancel(true)
                 .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
-                .setSmallIcon(R.drawable.ic_check_mark)
+                .setSmallIcon(R.drawable.quantum_ic_done_vd_theme_24)
                 .setContentTitle(title)
                 .setContentText(description)
                 // If no intent provided, include an intent that won't resolve to anything.