IMS: Handle incoming conference call
Show Incoming conference call on UI when incoming conference call
is received.
Change-Id: I5701624712122b876e0e284217d3c0aa8a0e6351
CRs-Fixed: 992617
diff --git a/InCallUI/res/values/qtistrings.xml b/InCallUI/res/values/qtistrings.xml
index 963276e..c926b57 100644
--- a/InCallUI/res/values/qtistrings.xml
+++ b/InCallUI/res/values/qtistrings.xml
@@ -30,7 +30,7 @@
-->
<!-- The xml contains Qti specific resource strings neede for any value added features. -->
-<resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Dtermine whether emergency calls should be marked. -->
<bool name="mark_emergency_call">true</bool>
<!-- Call substate label -->
@@ -133,4 +133,14 @@
<string name="session_modify_cause_downgrade_lipsync">Call downgraded due to lipsync</string>
<!-- Session modify cause code downgrade generic error -->
<string name="session_modify_cause_downgrade_generic_error">Call downgraded due to generic error</string>
+
+ <!-- In-call screen: status label for an incoming conference call [CHAR LIMIT=25] -->
+ <string name="card_title_incoming_conf_call">Incoming conference call</string>
+ <!-- In-call screen: status label for an incoming video conference call [CHAR LIMIT=25] -->
+ <string name="card_title_incoming_video_conf_call">Incoming video conference</string>
+ <!-- The "label" of the in-call Notification for an incoming conference ringing call. [CHAR LIMIT=60] -->
+ <string name="notification_incoming_conf_call">Incoming conference call</string>
+ <!-- Title displayed in the overlay for incoming conference calls which include the name of the provider.
+ [CHAR LIMIT=40] -->
+ <string name="incoming_conf_via_template">Incoming conference via <xliff:g id="provider_name">%s</xliff:g></string>
</resources>
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 5ba8ab5..5717fe4 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -988,4 +988,16 @@
public String toSimpleString() {
return super.toString();
}
+
+ public boolean isIncomingConfCall() {
+ int callState = getState();
+ if (callState == State.INCOMING || callState == State.CALL_WAITING) {
+ Bundle extras = getExtras();
+ boolean incomingConf = (extras == null)? false :
+ extras.getBoolean(QtiImsExtUtils.QTI_IMS_INCOMING_CONF_EXTRA_KEY, false);
+ Log.d(this, "isIncomingConfCall = " + incomingConf);
+ return incomingConf;
+ }
+ return false;
+ }
}
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 2bca6f2..c46e472 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -1197,7 +1197,17 @@
break;
case Call.State.INCOMING:
case Call.State.CALL_WAITING:
- if (isWifi && hasSuggestedLabel) {
+ if (isConference) {
+ if (isAccount) {
+ callStateLabel = context.getString(
+ R.string.incoming_conf_via_template, label);
+ } else if (VideoUtils.isVideoCall(videoState)) {
+ callStateLabel = context.getString(
+ R.string.card_title_incoming_video_conf_call);
+ } else {
+ callStateLabel = context.getString(R.string.card_title_incoming_conf_call);
+ }
+ } else if (isWifi && hasSuggestedLabel) {
callStateLabel = label;
} else if (isAccount) {
callStateLabel = context.getString(R.string.incoming_via_template, label);
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 8b2a4ab..7bc7b8f 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -443,6 +443,7 @@
|| (mPrimaryContactInfo == null ? false
: mPrimaryContactInfo.userType == ContactsUtils.USER_TYPE_WORK);
InCallPresenter.getInstance().setThemeColors();
+ boolean isConfCall = mPrimary.isConferenceCall() || mPrimary.isIncomingConfCall();
getUi().setCallState(
mPrimary.getState(),
mPrimary.getVideoState(),
@@ -452,7 +453,7 @@
getCallStateIcon(),
getGatewayNumber(),
mPrimary.hasProperty(Details.PROPERTY_WIFI),
- mPrimary.isConferenceCall(),
+ isConfCall,
isWorkCall);
maybeShowHdAudioIcon();
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index b6bb45a..1a6fa96 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -588,7 +588,9 @@
}
if (isIncomingOrWaiting) {
- if (call.hasProperty(Details.PROPERTY_WIFI)) {
+ if (call.isIncomingConfCall()) {
+ resId = R.string.notification_incoming_conf_call;
+ } else if (call.hasProperty(Details.PROPERTY_WIFI)) {
resId = R.string.notification_incoming_call_wifi;
} else {
resId = R.string.notification_incoming_call;