AI 144185: Integrate cdma into the main code base.
[android/platform/packages/apps/Phone.git] / src / com / android / phone / InCallScreen.java
index 5edc0ca..f183961 100644 (file)
@@ -1032,50 +1032,66 @@ public class InCallScreen extends Activity
         final boolean hasActiveCall = !mForegroundCall.isIdle();
         final boolean hasHoldingCall = !mBackgroundCall.isIdle();
 
-        if (hasRingingCall) {
-            // If an incoming call is ringing, the CALL button is actually
-            // handled by the PhoneWindowManager.  (We do this to make
-            // sure that we'll respond to the key even if the InCallScreen
-            // hasn't come to the foreground yet.)
-            //
-            // We'd only ever get here in the extremely rare case that the
-            // incoming call started ringing *after*
-            // PhoneWindowManager.interceptKeyTq() but before the event
-            // got here, or else if the PhoneWindowManager had some
-            // problem connecting to the ITelephony service.
-            Log.w(LOG_TAG, "handleCallKey: incoming call is ringing!"
-                  + " (PhoneWindowManager should have handled this key.)");
-            // But go ahead and handle the key as normal, since the
-            // PhoneWindowManager presumably did NOT handle it:
-
-            // There's an incoming ringing call: CALL means "Answer".
-            if (hasActiveCall && hasHoldingCall) {
-                if (DBG) log("handleCallKey: ringing (both lines in use) ==> answer!");
-                internalAnswerCallBothLinesInUse();
-            } else {
-                if (DBG) log("handleCallKey: ringing ==> answer!");
+        if (mPhone.getPhoneName() == "CDMA") {
+            // WINK:TODO Teleca is this enough?
+
+            // The green CALL button means either "Answer", "Swap calls/On Hold", or
+            // "Add to 3WC", depending on the current state of the Phone.
+
+            if (hasRingingCall) {
+                if (VDBG) log("handleCallKey: ringing ==> answer!");
                 internalAnswerCall();  // Automatically holds the current active call,
                                        // if there is one
+            } else {
+                // send an empty CDMA flash string
+                PhoneUtils.switchHoldingAndActive(mPhone);
             }
-        } else if (hasActiveCall && hasHoldingCall) {
-            // Two lines are in use: CALL means "Swap calls".
-            if (DBG) log("handleCallKey: both lines in use ==> swap calls.");
-            internalSwapCalls();
-        } else if (hasHoldingCall) {
-            // There's only one line in use, AND it's on hold.
-            // In this case CALL is a shortcut for "unhold".
-            if (DBG) log("handleCallKey: call on hold ==> unhold.");
-            PhoneUtils.switchHoldingAndActive(mPhone);  // Really means "unhold" in this state
         } else {
-            // The most common case: there's only one line in use, and
-            // it's an active call (i.e. it's not on hold.)
-            // In this case CALL is a no-op.
-            // (This used to be a shortcut for "add call", but that was a
-            // bad idea because "Add call" is so infrequently-used, and
-            // because the user experience is pretty confusing if you
-            // inadvertently trigger it.)
-            if (VDBG) log("handleCallKey: call in foregound ==> ignoring.");
-            // But note we still consume this key event; see below.
+            if (hasRingingCall) {
+                // If an incoming call is ringing, the CALL button is actually
+                // handled by the PhoneWindowManager.  (We do this to make
+                // sure that we'll respond to the key even if the InCallScreen
+                // hasn't come to the foreground yet.)
+                //
+                // We'd only ever get here in the extremely rare case that the
+                // incoming call started ringing *after*
+                // PhoneWindowManager.interceptKeyTq() but before the event
+                // got here, or else if the PhoneWindowManager had some
+                // problem connecting to the ITelephony service.
+                Log.w(LOG_TAG, "handleCallKey: incoming call is ringing!"
+                      + " (PhoneWindowManager should have handled this key.)");
+                // But go ahead and handle the key as normal, since the
+                // PhoneWindowManager presumably did NOT handle it:
+
+                // There's an incoming ringing call: CALL means "Answer".
+                if (hasActiveCall && hasHoldingCall) {
+                    if (DBG) log("handleCallKey: ringing (both lines in use) ==> answer!");
+                    internalAnswerCallBothLinesInUse();
+                } else {
+                    if (DBG) log("handleCallKey: ringing ==> answer!");
+                    internalAnswerCall();  // Automatically holds the current active call,
+                                           // if there is one
+                }
+            } else if (hasActiveCall && hasHoldingCall) {
+                // Two lines are in use: CALL means "Swap calls".
+                if (DBG) log("handleCallKey: both lines in use ==> swap calls.");
+                internalSwapCalls();
+            } else if (hasHoldingCall) {
+                // There's only one line in use, AND it's on hold.
+                // In this case CALL is a shortcut for "unhold".
+                if (DBG) log("handleCallKey: call on hold ==> unhold.");
+                PhoneUtils.switchHoldingAndActive(mPhone);  // Really means "unhold" in this state
+            } else {
+                // The most common case: there's only one line in use, and
+                // it's an active call (i.e. it's not on hold.)
+                // In this case CALL is a no-op.
+                // (This used to be a shortcut for "add call", but that was a
+                // bad idea because "Add call" is so infrequently-used, and
+                // because the user experience is pretty confusing if you
+                // inadvertently trigger it.)
+                if (VDBG) log("handleCallKey: call in foregound ==> ignoring.");
+                // But note we still consume this key event; see below.
+            }
         }
 
         // We *always* consume the CALL key, since the system-wide default
@@ -3250,7 +3266,7 @@ public class InCallScreen extends Activity
          */
         static void initConfiguration(Configuration config) {
             if (VDBG) Log.d(LOG_TAG, "[InCallScreen.ConfigurationHelper] "
-                            + "initConfiguration(" + config + ")...");
+                           + "initConfiguration(" + config + ")...");
             sOrientation = config.orientation;
         }