summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2018-03-22 18:04:23 -0700
committerCopybara-Service <copybara-piper@google.com>2018-03-26 22:16:40 -0700
commit4fde0acedbfb4802ac3ee236507a0c5a485f59e7 (patch)
tree3b19bf3035748695dd25b0a145e1c3f3670d87d1
parentf4b484485a4519a99d797bd9c0c1cc902cfc7414 (diff)
Show SIM auto select reason in in call UI
The assisted dialed string will also along show with the "calling via" label. To handle the long string, Top row is now a marquee. Bug: 72571130 Test: Unit tests PiperOrigin-RevId: 190156719 Change-Id: I18a13712bdc9d780f744ef65a1773d249e40fb15
-rw-r--r--java/com/android/dialer/callintent/CallIntentBuilder.java2
-rw-r--r--java/com/android/dialer/precall/impl/CallingAccountSelector.java5
-rw-r--r--java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java2
-rw-r--r--java/com/android/incallui/CallCardPresenter.java17
-rw-r--r--java/com/android/incallui/contactgrid/ContactGridManager.java4
-rw-r--r--java/com/android/incallui/contactgrid/TopRow.java33
-rw-r--r--java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml2
-rw-r--r--java/com/android/incallui/contactgrid/res/values/strings.xml11
-rw-r--r--java/com/android/incallui/incall/protocol/PrimaryCallState.java6
9 files changed, 81 insertions, 1 deletions
diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index ff490c296..9d9fcf4da 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -25,6 +25,7 @@ import android.os.SystemClock;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.telecom.Call.Details;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -168,6 +169,7 @@ public class CallIntentBuilder implements Parcelable {
return callSubject;
}
+ /** Additional data the in call UI can read with {@link Details#getIntentExtras()} */
public Bundle getOutgoingCallExtras() {
return outgoingCallExtras;
}
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index b7f071d58..a5dc6a097 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -159,6 +159,11 @@ public class CallingAccountSelector implements PreCallAction {
LogUtil.i(
"CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
builder.setPhoneAccountHandle(result.getSuggestion().get().phoneAccountHandle);
+ builder
+ .getOutgoingCallExtras()
+ .putString(
+ SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON,
+ result.getSuggestion().get().reason.name());
pendingAction.finish();
return;
}
diff --git a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
index cfa37c883..f710f734c 100644
--- a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
@@ -30,6 +30,8 @@ import java.util.List;
/** Provides hints to the user when selecting a SIM to make a call. */
public interface SuggestionProvider {
+ String EXTRA_SIM_SUGGESTION_REASON = "sim_suggestion_reason";
+
/** The reason the suggestion is made. */
enum Reason {
UNKNOWN,
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 8eb07c579..49f819bab 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -54,6 +54,7 @@ import com.android.dialer.multimedia.MultimediaData;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.postcall.PostCall;
+import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -478,6 +479,7 @@ public class CallCardPresenter
.setSessionModificationState(primary.getVideoTech().getSessionModificationState())
.setDisconnectCause(primary.getDisconnectCause())
.setConnectionLabel(getConnectionLabel())
+ .setSimSuggestionReason(getSimSuggestionReason())
.setConnectionIcon(getCallStateIcon())
.setGatewayNumber(getGatewayNumber())
.setCallSubject(shouldShowCallSubject(primary) ? primary.getCallSubject() : null)
@@ -988,6 +990,21 @@ public class CallCardPresenter
return primary.getCallProviderLabel();
}
+ @Nullable
+ private SuggestionProvider.Reason getSimSuggestionReason() {
+ String value =
+ primary.getIntentExtras().getString(SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON);
+ if (value == null) {
+ return null;
+ }
+ try {
+ return SuggestionProvider.Reason.valueOf(value);
+ } catch (IllegalArgumentException e) {
+ LogUtil.e("CallCardPresenter.getConnectionLabel", "unknown reason " + value);
+ return null;
+ }
+ }
+
private Drawable getCallStateIcon() {
// Return connection icon if one exists.
StatusHints statusHints = primary.getStatusHints();
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index 327eaf2b8..d8b1f5004 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -244,6 +244,10 @@ public class ContactGridManager {
statusTextView.setText(info.label);
statusTextView.setVisibility(View.VISIBLE);
statusTextView.setSingleLine(info.labelIsSingleLine);
+ // Required to start the marquee
+ // This will send a AccessibilityEvent.TYPE_VIEW_SELECTED, but has no observable effect on
+ // talkback.
+ statusTextView.setSelected(true);
}
if (info.icon == null) {
diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java
index f551092d4..89300caa8 100644
--- a/java/com/android/incallui/contactgrid/TopRow.java
+++ b/java/com/android/incallui/contactgrid/TopRow.java
@@ -166,7 +166,22 @@ public class TopRow {
private static CharSequence getLabelForDialing(Context context, PrimaryCallState state) {
if (!TextUtils.isEmpty(state.connectionLabel()) && !state.isWifi()) {
- return context.getString(R.string.incall_calling_via_template, state.connectionLabel());
+ CharSequence label = getCallingViaLabel(context, state);
+
+ if (state.isAssistedDialed() && state.assistedDialingExtras() != null) {
+ LogUtil.i("TopRow.getLabelForDialing", "using assisted dialing with via label.");
+ String countryCode =
+ String.valueOf(state.assistedDialingExtras().transformedNumberCountryCallingCode());
+ label =
+ TextUtils.concat(
+ label,
+ " • ",
+ context.getString(
+ R.string.incall_connecting_assited_dialed_component,
+ countryCode,
+ state.assistedDialingExtras().userHomeCountryCode()));
+ }
+ return label;
} else {
if (state.isVideoCall()) {
if (state.isWifi()) {
@@ -189,6 +204,22 @@ public class TopRow {
}
}
+ private static CharSequence getCallingViaLabel(Context context, PrimaryCallState state) {
+ if (state.simSuggestionReason() != null) {
+ switch (state.simSuggestionReason()) {
+ case FREQUENT:
+ return context.getString(
+ R.string.incall_calling_on_recent_choice_template, state.connectionLabel());
+ case INTRA_CARRIER:
+ return context.getString(
+ R.string.incall_calling_on_same_carrier_template, state.connectionLabel());
+ default:
+ break;
+ }
+ }
+ return context.getString(R.string.incall_calling_via_template, state.connectionLabel());
+ }
+
private static CharSequence getConnectionLabel(PrimaryCallState state) {
if (!TextUtils.isEmpty(state.connectionLabel())
&& (isAccount(state) || state.isWifi() || state.isConference())) {
diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
index 42066f286..2f9ca3ea8 100644
--- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
+++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
@@ -40,6 +40,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
+ android:ellipsize="marquee"
+ android:scrollHorizontally="true"
android:textAppearance="@style/Dialer.Incall.TextAppearance"
tools:text="Captain Holt"/>
</LinearLayout>
diff --git a/java/com/android/incallui/contactgrid/res/values/strings.xml b/java/com/android/incallui/contactgrid/res/values/strings.xml
index c6bdb11ba..7c0f5a679 100644
--- a/java/com/android/incallui/contactgrid/res/values/strings.xml
+++ b/java/com/android/incallui/contactgrid/res/values/strings.xml
@@ -20,6 +20,14 @@
[CHAR LIMIT=40] -->
<string name="incall_calling_via_template">Calling via <xliff:g id="provider_name">%s</xliff:g></string>
+ <!-- Title displayed in the overlay for outgoing calls when the provider is automatically chosen
+ because it is the same provider the callee is using. [CHAR LIMIT=60] -->
+ <string name="incall_calling_on_same_carrier_template">Calling on same carrier <xliff:g id="provider_name">%s</xliff:g></string>
+
+ <!-- Title displayed in the overlay for outgoing calls when the provider is automatically chosen
+ because the user has selected it multiple times. [CHAR LIMIT=60] -->
+ <string name="incall_calling_on_recent_choice_template">Calling on recent choice <xliff:g id="provider_name">%s</xliff:g></string>
+
<!-- Displayed above the contact name during an outgoing phone call. Indicates that the call is
in the connecting stage. -->
<string name="incall_connecting">Calling…</string>
@@ -27,6 +35,9 @@
<!-- Display information related to assisted dialing, for example Calling using +1 (US)… -->
<string name="incall_connecting_assited_dialed">Calling using +<xliff:g example="1" id="ad_country_code">%1$s</xliff:g> (<xliff:g example="1" id="ad_user_home_locale">%2$s</xliff:g>)\u2026</string>
+ <!-- String appended to the outgoing call title for additional information related to assisted dialing, for example "Calling via <CARRIER> • Using +1 (US)… "-->
+ <string name="incall_connecting_assited_dialed_component">Using +<xliff:g example="1" id="ad_country_code">%1$s</xliff:g> (<xliff:g example="1" id="ad_user_home_locale">%2$s</xliff:g>)\u2026</string>
+
<!-- Displayed above the contact name when an external call is being pulled to the local
device. -->
<string name="incall_transferring">Transferring…</string>
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index 1d536e9b9..1d23036fc 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -23,6 +23,7 @@ import android.telecom.DisconnectCause;
import android.text.TextUtils;
import com.android.dialer.assisteddialing.TransformationInfo;
import com.android.dialer.common.Assert;
+import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCall.State;
import com.android.incallui.videotech.utils.SessionModificationState;
@@ -60,6 +61,9 @@ public abstract class PrimaryCallState {
public abstract String connectionLabel();
@Nullable
+ public abstract SuggestionProvider.Reason simSuggestionReason();
+
+ @Nullable
public abstract Drawable connectionIcon();
@Nullable
@@ -141,6 +145,8 @@ public abstract class PrimaryCallState {
public abstract Builder setConnectionLabel(String connectionLabel);
+ public abstract Builder setSimSuggestionReason(SuggestionProvider.Reason reason);
+
public abstract Builder setConnectionIcon(Drawable connectionIcon);
public abstract Builder setGatewayNumber(String gatewayNumber);