summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java8
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java97
2 files changed, 51 insertions, 54 deletions
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index cb89b8559..1b23b0127 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -513,11 +513,11 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
}
@Override
- public void setCallDetails(android.telecomm.Call.Details details) {
- }
-
- @Override
public void setCallbackNumber(String callbackNumber, boolean isEmergencyCall) {
+ if (mInCallMessageLabel == null) {
+ return;
+ }
+
if (TextUtils.isEmpty(callbackNumber)) {
mInCallMessageLabel.setVisibility(View.GONE);
return;
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 99d7f33f1..ce30f7a6e 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -232,21 +232,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
int callState = Call.State.IDLE;
if (mPrimary != null) {
callState = mPrimary.getState();
-
- getUi().setCallState(
- callState,
- mPrimary.getVideoState(),
- mPrimary.getSessionModificationState(),
- mPrimary.getDisconnectCause(),
- getConnectionLabel(),
- getCallProviderIcon(mPrimary),
- getGatewayNumber());
-
- String currentNumber = getNumberFromHandle(mPrimary.getHandle());
- if (PhoneNumberUtils.isEmergencyNumber(currentNumber)) {
- String callbackNumber = getSubscriptionNumber();
- setCallbackNumber(callbackNumber, true);
- }
+ updatePrimaryCallState();
} else {
getUi().setCallState(
callState,
@@ -272,11 +258,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
@Override
public void onDetailsChanged(Call call, android.telecomm.Call.Details details) {
- getUi().setCallDetails(details);
-
- if (mPrimary != null) {
- setCallbackNumberIfSet(details);
- }
+ updatePrimaryCallState();
}
private String getSubscriptionNumber() {
@@ -295,45 +277,45 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
return null;
}
- private void setCallbackNumberIfSet(android.telecomm.Call.Details details) {
- String callbackNumber = null;
-
- String currentNumber = getNumberFromHandle(mPrimary.getHandle());
- boolean isEmergencyCall = PhoneNumberUtils.isEmergencyNumber(currentNumber);
+ private void updatePrimaryCallState() {
+ if (getUi() != null && mPrimary != null) {
+ getUi().setCallState(
+ mPrimary.getState(),
+ mPrimary.getVideoState(),
+ mPrimary.getSessionModificationState(),
+ mPrimary.getDisconnectCause(),
+ getConnectionLabel(),
+ getConnectionIcon(),
+ getGatewayNumber());
+ setCallbackNumber();
+ }
+ }
- StatusHints statusHints = details.getStatusHints();
- if (statusHints != null) {
- Bundle extras = statusHints.getExtras();
- if (extras != null) {
- callbackNumber = extras.getString(
- TelecommManager.EXTRA_CALL_BACK_NUMBER, null);
+ private void setCallbackNumber() {
+ String callbackNumber = null;
- if (isEmergencyCall) {
- callbackNumber = getSubscriptionNumber();
+ boolean isEmergencyCall = PhoneNumberUtils.isEmergencyNumber(
+ getNumberFromHandle(mPrimary.getHandle()));
+ if (isEmergencyCall) {
+ callbackNumber = getSubscriptionNumber();
+ } else {
+ StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+ if (statusHints != null) {
+ Bundle extras = statusHints.getExtras();
+ if (extras != null) {
+ callbackNumber = extras.getString(TelecommManager.EXTRA_CALL_BACK_NUMBER);
}
- } else {
- Log.d(this, "No extras; not updating callback number");
}
- } else {
- Log.d(this, "No status hints; not updating callback number");
- }
-
- setCallbackNumber(callbackNumber, isEmergencyCall);
- }
-
- private void setCallbackNumber(String callbackNumber, boolean isEmergencyCall) {
- if (TextUtils.isEmpty(callbackNumber)) {
- Log.d(this, "No callback number; aborting");
- return;
}
- final TelephonyManager telephonyManager =
+ TelephonyManager telephonyManager =
(TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
String simNumber = telephonyManager.getLine1Number();
- if (!PhoneNumberUtils.compare(callbackNumber, simNumber) && !isEmergencyCall) {
+ if (PhoneNumberUtils.compare(callbackNumber, simNumber)) {
Log.d(this, "Numbers are the same; not showing the callback number");
- return;
+ callbackNumber = null;
}
+
getUi().setCallbackNumber(callbackNumber, isEmergencyCall);
}
@@ -600,6 +582,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
* For example, "calling via [Account/Google Voice]" for outgoing calls.
*/
private String getConnectionLabel() {
+ StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+ if (statusHints != null && !TextUtils.isEmpty(statusHints.getLabel())) {
+ return statusHints.getLabel().toString();
+ }
+
if (hasOutgoingGatewayCall() && getUi() != null) {
// Return the label for the gateway app on outgoing calls.
final PackageManager pm = mContext.getPackageManager();
@@ -615,6 +602,17 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
return getCallProviderLabel(mPrimary);
}
+ private Drawable getConnectionIcon() {
+ StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+ if (statusHints != null && statusHints.getIconId() != 0) {
+ Drawable icon = statusHints.getIcon(mContext);
+ if (icon != null) {
+ return icon;
+ }
+ }
+ return getCallProviderIcon(mPrimary);
+ }
+
private boolean hasOutgoingGatewayCall() {
// We only display the gateway information while DIALING so return false for any othe
// call state.
@@ -704,7 +702,6 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
void setPrimaryLabel(String label);
void setEndCallButtonEnabled(boolean enabled);
void setCallbackNumber(String number, boolean isEmergencyCalls);
- void setCallDetails(android.telecomm.Call.Details details);
void setPhotoVisible(boolean isVisible);
void setProgressSpinnerVisible(boolean visible);
}