diff --git a/res/drawable-hdpi/ic_delete_wht_24dp.png b/res/drawable-hdpi/ic_delete_wht_24dp.png
new file mode 100644
index 0000000..9fb43b0
--- /dev/null
+++ b/res/drawable-hdpi/ic_delete_wht_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_delete_dk.png b/res/drawable-hdpi/ic_menu_delete_dk.png
deleted file mode 100644
index 2960449..0000000
--- a/res/drawable-hdpi/ic_menu_delete_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_delete_wht_24dp.png b/res/drawable-mdpi/ic_delete_wht_24dp.png
new file mode 100644
index 0000000..c903fd1
--- /dev/null
+++ b/res/drawable-mdpi/ic_delete_wht_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_delete_dk.png b/res/drawable-mdpi/ic_menu_delete_dk.png
deleted file mode 100644
index 9db8403..0000000
--- a/res/drawable-mdpi/ic_menu_delete_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_delete_wht_24dp.png b/res/drawable-xhdpi/ic_delete_wht_24dp.png
new file mode 100644
index 0000000..be1ee4d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_delete_wht_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_delete_dk.png b/res/drawable-xhdpi/ic_menu_delete_dk.png
deleted file mode 100644
index 61b762f..0000000
--- a/res/drawable-xhdpi/ic_menu_delete_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_delete_wht_24dp.png b/res/drawable-xxhdpi/ic_delete_wht_24dp.png
new file mode 100644
index 0000000..eb63792
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_delete_wht_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_delete_dk.png b/res/drawable-xxhdpi/ic_menu_delete_dk.png
deleted file mode 100644
index 88445fc..0000000
--- a/res/drawable-xxhdpi/ic_menu_delete_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_calllog_delete.xml b/res/drawable/ic_calllog_delete.xml
index e81da9a..2f9f0ae 100644
--- a/res/drawable/ic_calllog_delete.xml
+++ b/res/drawable/ic_calllog_delete.xml
@@ -15,6 +15,6 @@
 -->
 
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_delete_dk"
+    android:src="@drawable/ic_delete_wht_24dp"
     android:gravity="center"
     android:tint="@color/actionbar_icon_color" />
diff --git a/src/com/android/dialer/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index a432daf..be5ee72 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -85,7 +85,8 @@
 
         // Show the video icon if the call had video enabled.
         views.callTypeIcons.setShowVideo(
-                (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
+                (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
+                        && DialerUtils.isVideoEnabled());
         views.callTypeIcons.requestLayout();
         views.callTypeIcons.setVisibility(View.VISIBLE);
 
diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
index 105462f..7a8b922 100644
--- a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
+++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
@@ -122,7 +122,8 @@
         TextView durationView = (TextView) result.findViewById(R.id.duration);
 
         int callType = details.callTypes[0];
-        boolean isVideoCall = (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO;
+        boolean isVideoCall = (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
+                && DialerUtils.isVideoEnabled();
 
         callTypeIconView.clear();
         callTypeIconView.add(callType);
diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java
index b2c1e2d..78a0105 100644
--- a/src/com/android/dialer/calllog/CallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java
@@ -23,6 +23,7 @@
 import com.android.dialer.PhoneCallDetails;
 import com.android.dialer.PhoneCallDetailsHelper;
 import com.android.dialer.R;
+import com.android.dialer.util.DialerUtils;
 
 /**
  * Helper class to fill in the views of a call log entry.
@@ -153,7 +154,8 @@
         }
 
         // If call had video capabilities, add the "Video Call" string.
-        if ((details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
+        if ((details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO &&
+                DialerUtils.isVideoEnabled()) {
             callDescription.append(mResources.getString(R.string.description_video_call));
         }
 
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index 2bceaf9..8e4382c 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -26,6 +26,7 @@
 import com.android.dialer.calllog.ContactInfo;
 import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+import com.android.dialer.util.DialerUtils;
 
 /**
  * List adapter to display regular search results.
@@ -73,9 +74,8 @@
         // a dialable number, then clicking add to contact should add it as a number.
         // Otherwise, it should add it to a new contact as a name.
         setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
-        // TODO: Write utility method to check subscriptions and settings, and use it to determine
-        // whether to enable or disable video call shortcut.
-        setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, showNumberShortcuts);
+        setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
+                showNumberShortcuts && DialerUtils.isVideoEnabled());
         super.setQueryString(queryString);
     }
 }
diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
index d9aa846..231611d 100644
--- a/src/com/android/dialer/list/SmartDialNumberListAdapter.java
+++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
@@ -32,6 +32,7 @@
 import com.android.dialer.dialpad.SmartDialNameMatcher;
 import com.android.dialer.dialpad.SmartDialPrefix;
 import com.android.dialer.dialpad.SmartDialMatchPosition;
+import com.android.dialer.util.DialerUtils;
 
 import java.util.ArrayList;
 
@@ -118,9 +119,8 @@
     public void setQueryString(String queryString) {
         final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
         setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
-        // TODO: Write utility method to check subscriptions and settings, and use it to determine
-        // whether to enable or disable video call shortcut.
-        setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, showNumberShortcuts);
+        setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
+                showNumberShortcuts && DialerUtils.isVideoEnabled());
         super.setQueryString(queryString);
     }
 }
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
index 93a055d..e24b642 100644
--- a/src/com/android/dialer/util/DialerUtils.java
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -169,4 +169,10 @@
             imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
         }
     }
+
+    public static boolean isVideoEnabled() {
+        // TODO: Write utility methods to check subscriptions and settings, and use it to determine
+        // whether to enable or disable video call functionality.
+        return false;
+    }
 }
