summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2015-04-15 02:04:51 -0700
committerAndrew Lee <anwlee@google.com>2015-04-16 13:41:14 -0700
commit5f108c95fc76445f67d69a8570424c159953d556 (patch)
tree143c7c544a654c8b37524ca1aa9668c97ec47857
parent65a246396debcf45cd5ea934c8d0cb218ef59b26 (diff)
Show IMS Conference StatusHints in InCall.
A lot of this logic for figuring out what label should be shown seems like it should be determined in the presenter, rather than passing through all this information to the fragment, but it can be cleaned up at another time. + minor layout tweak. Bug: 20181703 Change-Id: I392ce7cffc8c05eb94859892e899ce7c693895aa
-rw-r--r--InCallUI/res/layout/primary_call_info.xml3
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java20
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java9
3 files changed, 20 insertions, 12 deletions
diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml
index 8f0c0e24d..207b95bef 100644
--- a/InCallUI/res/layout/primary_call_info.xml
+++ b/InCallUI/res/layout/primary_call_info.xml
@@ -44,7 +44,8 @@
<ImageView android:id="@+id/callStateIcon"
android:layout_width="16dp"
android:layout_height="match_parent"
- android:layout_marginEnd="8dp"
+ android:layout_marginStart="6dp"
+ android:layout_marginEnd="10dp"
android:tint="@color/incall_accent_color"
android:alpha="0.0"
android:scaleType="center"
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 88ab73a60..c6f61be01 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -482,10 +482,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
String connectionLabel,
Drawable callStateIcon,
String gatewayNumber,
- boolean isWifi) {
+ boolean isWifi,
+ boolean isConference) {
boolean isGatewayCall = !TextUtils.isEmpty(gatewayNumber);
CharSequence callStateLabel = getCallStateLabelFromState(state, videoState,
- sessionModificationState, disconnectCause, connectionLabel, isGatewayCall, isWifi);
+ sessionModificationState, disconnectCause, connectionLabel, isGatewayCall, isWifi,
+ isConference);
Log.v(this, "setCallState " + callStateLabel);
Log.v(this, "DisconnectCause " + disconnectCause.toString());
@@ -651,15 +653,17 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
* 3. Incoming calls will only display "Incoming via..." for accounts.
* 4. Video calls, and session modification states (eg. requesting video).
* 5. Incoming and active Wi-Fi calls will show label provided by hint.
+ *
+ * TODO: Move this to the CallCardPresenter.
*/
private CharSequence getCallStateLabelFromState(int state, int videoState,
int sessionModificationState, DisconnectCause disconnectCause, String label,
- boolean isGatewayCall, boolean isWifi) {
+ boolean isGatewayCall, boolean isWifi, boolean isConference) {
final Context context = getView().getContext();
CharSequence callStateLabel = null; // Label to display as part of the call banner
- boolean isSpecialCall = label != null;
- boolean isAccount = isSpecialCall && !isGatewayCall;
+ boolean hasSuggestedLabel = label != null;
+ boolean isAccount = hasSuggestedLabel && !isGatewayCall;
switch (state) {
case Call.State.IDLE:
@@ -668,7 +672,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
case Call.State.ACTIVE:
// We normally don't show a "call state label" at all in this state
// (but we can use the call state label to display the provider name).
- if (isAccount || isWifi) {
+ if ((isAccount || isWifi || isConference) && hasSuggestedLabel) {
callStateLabel = label;
} else if (sessionModificationState
== Call.SessionModificationState.REQUEST_FAILED) {
@@ -688,7 +692,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
break;
case Call.State.CONNECTING:
case Call.State.DIALING:
- if (isSpecialCall && !isWifi) {
+ if (hasSuggestedLabel && !isWifi) {
callStateLabel = context.getString(R.string.calling_via_template, label);
} else {
callStateLabel = context.getString(R.string.card_title_dialing);
@@ -699,7 +703,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
break;
case Call.State.INCOMING:
case Call.State.CALL_WAITING:
- if (isWifi) {
+ 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 cb17b5e90..89cb659d0 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -244,7 +244,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
null,
null,
null,
- false /* isWifi */);
+ false /* isWifi */,
+ false /* isConference */);
getUi().showHdAudioIndicator(false);
}
@@ -291,7 +292,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
getConnectionLabel(),
getCallStateIcon(),
getGatewayNumber(),
- primaryCallCan(Details.CAPABILITY_WIFI));
+ primaryCallCan(Details.CAPABILITY_WIFI),
+ mPrimary.isConferenceCall());
boolean showHdAudioIndicator =
isPrimaryCallActive() && primaryCallCan(Details.CAPABILITY_HIGH_DEF_AUDIO);
@@ -762,7 +764,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
String providerLabel, boolean isConference, boolean isVideoCall);
void setCallState(int state, int videoState, int sessionModificationState,
DisconnectCause disconnectCause, String connectionLabel,
- Drawable connectionIcon, String gatewayNumber, boolean isWifi);
+ Drawable connectionIcon, String gatewayNumber, boolean isWifi,
+ boolean isConference);
void setPrimaryCallElapsedTime(boolean show, long duration);
void setPrimaryName(String name, boolean nameIsNumber);
void setPrimaryImage(Drawable image);