summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);