Dialer: Add call waiting vibrate option

Change-Id: Id903310aa0ef74fe01349e39262159e4795f4501
diff --git a/InCallUI/src/com/android/incallui/InCallVibrationHandler.java b/InCallUI/src/com/android/incallui/InCallVibrationHandler.java
index 42845df..20722a8 100644
--- a/InCallUI/src/com/android/incallui/InCallVibrationHandler.java
+++ b/InCallUI/src/com/android/incallui/InCallVibrationHandler.java
@@ -31,6 +31,7 @@
 
     private static final int MSG_VIBRATE_45_SEC = 1;
 
+    private static final String KEY_VIBRATE_CALL_WAITING = "incall_vibrate_call_waiting";
     private static final String KEY_VIBRATE_OUTGOING = "incall_vibrate_outgoing";
     private static final String KEY_VIBRATE_45SECS = "incall_vibrate_45secs";
     private static final String KEY_VIBRATE_HANGUP = "incall_vibrate_hangup";
@@ -64,6 +65,10 @@
                 handleOutgoingCallVibration(activeCall);
             }
             mActiveCall = activeCall;
+        } else if (activeCall != null && callList.getIncomingCall() != null
+                && !callList.getIncomingCall().equals(activeCall)) {
+            Log.d(this, "New incoming call" + callList.getIncomingCall());
+            handleCallWaitingVibration(activeCall);
         } else if (activeCall == null && mActiveCall != null) {
             Log.d(this, "Transition from active call " + mActiveCall);
             handleCallEnd(mActiveCall);
@@ -83,6 +88,13 @@
         }
     }
 
+    private void handleCallWaitingVibration(Call call) {
+        Log.d(this, "Start call waiting vibration");
+        if (mPrefs.getBoolean(KEY_VIBRATE_CALL_WAITING, false)) {
+            vibrate(200, 300, 500);
+        }
+    }
+
     private void handleCallEnd(Call call) {
         long durationMillis = System.currentTimeMillis() - call.getConnectTimeMillis();
         DisconnectCause cause = call.getDisconnectCause();
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 614f018..d396e24 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -18,6 +18,7 @@
     <!-- In-call vibrate options -->
     <string name="incall_vibration_category_title">In-call vibration</string>
     <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="vibrate_call_waiting">Vibrate on call waiting</string>
     <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
     <string name="incall_vibrate_45_title">Vibrate every minute</string>
     <string name="incall_vibrate_45_summary">Vibrates at 45s of every minute during outgoing calls</string>
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index a1170ad..9bc6e4b 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -52,6 +52,10 @@
             android:title="@string/incall_vibrate_outgoing_title" />
 
         <SwitchPreference
+            android:key="incall_vibrate_call_waiting"
+            android:title="@string/vibrate_call_waiting"/>
+
+        <SwitchPreference
             android:key="incall_vibrate_hangup"
             android:title="@string/incall_vibrate_hangup_title" />