summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2014-03-14 21:54:11 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-03-14 21:54:11 +0000
commit621de47b9b06e46d9f9da4ff620749d5bf2294fc (patch)
tree3ac187522e32c95797d4bf34fdfff8b6491eb65a
parent827a94c58c53566c6e4595e7869556ff12f7a996 (diff)
parent7d0342493edef18bcbb40fcc4bd35f23489056a7 (diff)
Merge "Modify InCallUI to hold/unhold calls through Telecomm" into master-nova
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonPresenter.java19
-rw-r--r--InCallUI/src/com/android/incallui/CallInfoTranslator.java4
-rw-r--r--InCallUI/src/com/android/incallui/InCallServiceImpl.java9
3 files changed, 29 insertions, 3 deletions
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index e2bfa1627..02b0237d8 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -224,9 +224,22 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
return;
}
- Log.d(this, "holding: " + mCall.getCallId());
-
- CallCommandClient.getInstance().hold(mCall.getCallId(), checked);
+ // Notify Telecomm that the user hit the hold button.
+ InCallAdapter telecommAdapter = InCallPresenter.getInstance().getTelecommAdapter();
+ if (telecommAdapter != null) {
+ String callId = CallInfoTranslator.getTelecommCallId(mCall);
+ if (callId != null) {
+ if (checked) {
+ Log.i(this, "Putting the call on hold: " + callId);
+ telecommAdapter.holdCall(callId);
+ } else {
+ Log.i(this, "Removing the call from hold: " + callId);
+ telecommAdapter.unholdCall(callId);
+ }
+ } else {
+ Log.wtf(this, "Telecomm callId not found for call: " + mCall.getCallId());
+ }
+ }
}
public void mergeClicked() {
diff --git a/InCallUI/src/com/android/incallui/CallInfoTranslator.java b/InCallUI/src/com/android/incallui/CallInfoTranslator.java
index fc4bd4940..697c5ea82 100644
--- a/InCallUI/src/com/android/incallui/CallInfoTranslator.java
+++ b/InCallUI/src/com/android/incallui/CallInfoTranslator.java
@@ -72,6 +72,10 @@ final class CallInfoTranslator {
call.setState(translateCallState(callInfo.getState()));
call.setNumber(callInfo.getHandle());
+ // TODO: Each CallService needs to provide information what kind of call capabilities they
+ // support. For now, always assume that all calls support hold by default.
+ call.addCapabilities(Call.Capabilities.HOLD);
+
return call;
}
diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
index 09991d7b6..93986ff57 100644
--- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
@@ -85,4 +85,13 @@ public class InCallServiceImpl extends android.telecomm.InCallService {
CallInfoTranslator.removeCall(callId);
}
}
+
+ /** {@inheritDoc} */
+ @Override protected void setOnHold(String callId) {
+ Call call = CallInfoTranslator.getCall(callId);
+ if (null != call) {
+ call.setState(Call.State.ONHOLD);
+ CallList.getInstance().onUpdate(call);
+ }
+ }
}