diff options
20 files changed, 99 insertions, 148 deletions
diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java index 756fd6125..6715e2b21 100644 --- a/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java +++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java @@ -16,8 +16,6 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import java.util.Optional; @@ -25,14 +23,10 @@ import java.util.Optional; public interface AssistedDialingMediator { /** Returns {@code true} if the current client platform supports Assisted Dialing. */ - public boolean isPlatformEligible(); + boolean isPlatformEligible(); /** Returns the country code in which the library thinks the user typically resides. */ - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) - public Optional<String> userHomeCountryCode(); + Optional<String> userHomeCountryCode(); - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) - public Optional<TransformationInfo> attemptAssistedDial(@NonNull String numberToTransform); + Optional<TransformationInfo> attemptAssistedDial(@NonNull String numberToTransform); } diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java index 7214437ab..7fdb8dafc 100644 --- a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java +++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java @@ -16,10 +16,7 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import com.android.dialer.common.LogUtil; import java.util.Optional; @@ -30,7 +27,6 @@ import java.util.Optional; * call is eligible for assisted dialing, and performing the transformation of numbers eligible for * assisted dialing. */ -@RequiresApi(VERSION_CODES.N) final class AssistedDialingMediatorImpl implements AssistedDialingMediator { private final LocationDetector locationDetector; @@ -58,8 +54,6 @@ final class AssistedDialingMediatorImpl implements AssistedDialingMediator { /** Returns the country code in which the library thinks the user typically resides. */ @Override - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) public Optional<String> userHomeCountryCode() { return locationDetector.getUpperCaseUserHomeCountry(); } @@ -69,8 +63,6 @@ final class AssistedDialingMediatorImpl implements AssistedDialingMediator { * transformed number should be capable of dialing out of the User's current country and * successfully connecting with a contact in the User's home country. */ - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) @Override public Optional<TransformationInfo> attemptAssistedDial(@NonNull String numberToTransform) { Optional<String> userHomeCountryCode = locationDetector.getUpperCaseUserHomeCountry(); diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java index 9a40e0576..cb3ca79f9 100644 --- a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java +++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java @@ -16,8 +16,6 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import java.util.Optional; @@ -26,16 +24,12 @@ public final class AssistedDialingMediatorStub implements AssistedDialingMediato /** Always returns an empty Optional. */ @Override - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) public Optional<TransformationInfo> attemptAssistedDial(@NonNull String numberToTransform) { return Optional.empty(); } /** Always returns an empty Optional. */ @Override - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) public Optional<String> userHomeCountryCode() { return Optional.empty(); } diff --git a/java/com/android/dialer/assisteddialing/ConcreteCreator.java b/java/com/android/dialer/assisteddialing/ConcreteCreator.java index 050774340..b4f926dd3 100644 --- a/java/com/android/dialer/assisteddialing/ConcreteCreator.java +++ b/java/com/android/dialer/assisteddialing/ConcreteCreator.java @@ -16,13 +16,10 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; import android.content.Context; import android.os.Build; -import android.os.Build.VERSION_CODES; import android.preference.PreferenceManager; import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; import android.support.v4.os.UserManagerCompat; import android.telephony.TelephonyManager; import com.android.dialer.common.LogUtil; @@ -36,13 +33,11 @@ import com.android.dialer.strictmode.StrictModeUtils; * <p>This helps keep the dependencies required by AssistedDialingMediator for assisted dialing * explicit. */ -@TargetApi(VERSION_CODES.N) public final class ConcreteCreator { - // Floor set at N due to use of Optional. - @VisibleForTesting public static final int BUILD_CODE_FLOOR = Build.VERSION_CODES.N; - // Ceiling set at P because this feature will ship as part of the framework in Q. - @VisibleForTesting public static final int BUILD_CODE_CEILING = 28; + // Ceiling set at P (version code 28) because this feature will ship as part of the framework in + // Q. + public static final int BUILD_CODE_CEILING = 28; /** * Creates a new AssistedDialingMediator @@ -105,8 +100,7 @@ public final class ConcreteCreator { throw new NullPointerException("Provided configProvider was null"); } - return (Build.VERSION.SDK_INT >= BUILD_CODE_FLOOR - && Build.VERSION.SDK_INT <= BUILD_CODE_CEILING) + return Build.VERSION.SDK_INT <= BUILD_CODE_CEILING && configProvider.getBoolean("assisted_dialing_enabled", false); } diff --git a/java/com/android/dialer/assisteddialing/Constraints.java b/java/com/android/dialer/assisteddialing/Constraints.java index cae3734be..41a3e92b2 100644 --- a/java/com/android/dialer/assisteddialing/Constraints.java +++ b/java/com/android/dialer/assisteddialing/Constraints.java @@ -16,9 +16,7 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; import android.content.Context; -import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; @@ -35,8 +33,6 @@ import java.util.Locale; import java.util.Optional; /** Ensures that a number is eligible for Assisted Dialing */ -@TargetApi(VERSION_CODES.N) -@SuppressWarnings("AndroidApiChecker") // Use of optional final class Constraints { private final PhoneNumberUtil phoneNumberUtil; private final Context context; @@ -46,7 +42,7 @@ final class Constraints { * Create a new instance of Constraints. * * @param context The context used to determine whether or not a number is an emergency number. - * @param configProviderCountryCodes A csv of supported country codes, e.g. "US,CA" + * @param countryCodeProvider A csv of supported country codes, e.g. "US,CA" */ public Constraints(@NonNull Context context, @NonNull CountryCodeProvider countryCodeProvider) { if (context == null) { @@ -73,7 +69,7 @@ final class Constraints { * @return A boolean indicating whether or not the provided values are eligible for assisted * dialing. */ - public boolean meetsPreconditions( + boolean meetsPreconditions( @NonNull String numberToCheck, @NonNull String userHomeCountryCode, @NonNull String userRoamingCountryCode) { diff --git a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java index 118696e9b..04b229150 100644 --- a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java +++ b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java @@ -16,8 +16,6 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.ArraySet; @@ -32,8 +30,6 @@ import java.util.StringTokenizer; import java.util.stream.Collectors; /** A class to provide the appropriate country codes related to assisted dialing. */ -@TargetApi(VERSION_CODES.N) -@SuppressWarnings("AndroidApiChecker") // Java 8 APIs public final class CountryCodeProvider { // TODO(erfanian): Ensure the below standard is consistent between libphonenumber and the diff --git a/java/com/android/dialer/assisteddialing/LocationDetector.java b/java/com/android/dialer/assisteddialing/LocationDetector.java index 8e7535c1b..9fa944125 100644 --- a/java/com/android/dialer/assisteddialing/LocationDetector.java +++ b/java/com/android/dialer/assisteddialing/LocationDetector.java @@ -16,8 +16,6 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.telephony.TelephonyManager; @@ -36,7 +34,7 @@ final class LocationDetector { private final TelephonyManager telephonyManager; private final String userProvidedHomeCountry; - public LocationDetector( + LocationDetector( @NonNull TelephonyManager telephonyManager, @Nullable String userProvidedHomeCountry) { if (telephonyManager == null) { throw new NullPointerException("Provided TelephonyManager was null"); @@ -53,9 +51,7 @@ final class LocationDetector { * Returns what we believe to be the User's home country. This should resolve to * PROPERTY_ICC_OPERATOR_ISO_COUNTRY */ - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) - public Optional<String> getUpperCaseUserHomeCountry() { + Optional<String> getUpperCaseUserHomeCountry() { if (!TextUtils.isEmpty(userProvidedHomeCountry)) { LogUtil.i( @@ -73,9 +69,7 @@ final class LocationDetector { } /** Returns what we believe to be the User's current (roaming) country */ - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) - public Optional<String> getUpperCaseUserRoamingCountry() { + Optional<String> getUpperCaseUserRoamingCountry() { // TODO Increase coverage of location resolution?? String networkCountryIso = telephonyManager.getNetworkCountryIso(); if (networkCountryIso != null) { diff --git a/java/com/android/dialer/assisteddialing/NumberTransformer.java b/java/com/android/dialer/assisteddialing/NumberTransformer.java index 8bbad329d..eabf8564e 100644 --- a/java/com/android/dialer/assisteddialing/NumberTransformer.java +++ b/java/com/android/dialer/assisteddialing/NumberTransformer.java @@ -16,9 +16,6 @@ package com.android.dialer.assisteddialing; -import android.annotation.TargetApi; -import android.os.Build.VERSION_CODES; -import android.support.annotation.NonNull; import android.text.TextUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.strictmode.StrictModeUtils; @@ -33,21 +30,9 @@ final class NumberTransformer { private final PhoneNumberUtil phoneNumberUtil; private final Constraints constraints; - public NumberTransformer(Constraints constraints) { + NumberTransformer(Constraints constraints) { this.constraints = constraints; - this.phoneNumberUtil = StrictModeUtils.bypass(() -> PhoneNumberUtil.getInstance()); - } - - /** - * Returns a boolean for callers to quickly determine whether or not the AssistedDialingMediator - * thinks an attempt at assisted dialing is likely to succeed. - */ - public boolean canDoAssistedDialingTransformation( - @NonNull String numberToCheck, - @NonNull String userHomeCountryCode, - @NonNull String userRoamingCountryCode) { - return constraints.meetsPreconditions( - numberToCheck, userHomeCountryCode, userRoamingCountryCode); + this.phoneNumberUtil = StrictModeUtils.bypass(PhoneNumberUtil::getInstance); } /** @@ -57,9 +42,7 @@ final class NumberTransformer { * transformation fails, we return an empty optional. The operation can be considered a success * when the Optional we return has a value set. */ - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(VERSION_CODES.N) - public Optional<TransformationInfo> doAssistedDialingTransformation( + Optional<TransformationInfo> doAssistedDialingTransformation( String numbertoTransform, String userHomeCountryCode, String userRoamingCountryCode) { if (!constraints.meetsPreconditions( diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java index 965a16975..2da25287e 100644 --- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java +++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java @@ -15,10 +15,8 @@ */ package com.android.dialer.assisteddialing.ui; -import android.annotation.TargetApi; import android.icu.util.ULocale; import android.icu.util.ULocale.Builder; -import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; @@ -38,8 +36,6 @@ import java.util.List; import java.util.Optional; /** The setting for Assisted Dialing */ -@TargetApi(VERSION_CODES.N) -@SuppressWarnings("AndroidApiChecker") // Java 8 APIs public class AssistedDialingSettingFragment extends PreferenceFragment { private CountryCodeProvider countryCodeProvider; diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java index 9e227553b..4d268f35b 100644 --- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java +++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java @@ -263,14 +263,13 @@ public abstract class SpeedDialUiItem { return defaultChannel(); } - // Default channel is a video channel, so find it's corresponding voice channel - Channel prevChannel = channels().get(0); - for (int i = 1; i < channels().size(); i++) { - Channel currentChannel = channels().get(i); - if (currentChannel.equals(defaultChannel())) { - return prevChannel; + // Default channel is a video channel, so find it's corresponding voice channel by number since + // unreachable channels may not be in the list + for (Channel currentChannel : channels()) { + if (currentChannel.number().equals(defaultChannel().number()) + && currentChannel.technology() == Channel.VOICE) { + return currentChannel; } - prevChannel = currentChannel; } return null; } @@ -306,7 +305,8 @@ public abstract class SpeedDialUiItem { public abstract String photoUri(); /** - * Since a contact can have multiple phone numbers and each number can have multiple technologies, + * Returns a list of channels available. A Duo channel is included iff it is reachable. Since a + * contact can have multiple phone numbers and each number can have multiple technologies, * enumerate each one here so that the user can choose the correct one. Each channel here * represents a row in the {@link com.android.dialer.speeddial.DisambigDialog}. * @@ -330,7 +330,11 @@ public abstract class SpeedDialUiItem { public abstract ImmutableList<Channel> channels(); /** - * Will be null when the user hasn't chosen a default yet. + * Will be null when the user hasn't chosen a default yet. Note that a default channel may not be + * in the list returned by {@link #channels()}. This is because that list does not contain an + * unreachable Duo channel. When the default channel is a Duo channel and it becomes unreachable, + * it will remain as the default channel but disappear in the list returned by {@link + * #channels()}. * * @see com.android.dialer.speeddial.database.SpeedDialEntry#defaultChannel() */ diff --git a/java/com/android/dialer/theme/common/res/values/text_styles.xml b/java/com/android/dialer/theme/common/res/values/text_styles.xml index 0d1fd850e..df5dafa31 100644 --- a/java/com/android/dialer/theme/common/res/values/text_styles.xml +++ b/java/com/android/dialer/theme/common/res/values/text_styles.xml @@ -43,6 +43,12 @@ <item name="android:fontFamily">sans-serif-regular</item> </style> + <style name="Dialer.TextAppearance.Primary2" parent="TextAppearance.AppCompat"> + <item name="android:textColor">?android:attr/textColorPrimary</item> + <item name="android:textSize">16sp</item> + <item name="android:fontFamily">sans-serif-regular</item> + </style> + <style name="Dialer.TextAppearance.Secondary" parent="TextAppearance.AppCompat"> <item name="android:textColor">?android:attr/textColorSecondary</item> <item name="android:textSize">14sp</item> @@ -81,6 +87,11 @@ <item name="android:maxLines">1</item> </style> + <style name="Dialer.TextAppearance.Primary2.Ellipsize"> + <item name="android:ellipsize">end</item> + <item name="android:maxLines">1</item> + </style> + <style name="Dialer.TextAppearance.Secondary.Ellipsize"> <item name="android:ellipsize">end</item> <item name="android:maxLines">1</item> diff --git a/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java b/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java index 39a791d5f..89e45dca7 100644 --- a/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java +++ b/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java @@ -21,6 +21,7 @@ import android.os.Bundle; import android.support.annotation.IntDef; import android.view.View; import android.view.View.OnClickListener; +import android.widget.Button; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -46,14 +47,21 @@ public class RecordVoicemailGreetingActivity extends Activity implements OnClick private int currentState; private int duration; private RecordButton recordButton; + private Button saveButton; + private Button redoButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_record_voicemail_greeting); + recordButton = findViewById(R.id.record_button); + saveButton = findViewById(R.id.save_button); + redoButton = findViewById(R.id.redo_button); + duration = 0; setState(RECORD_GREETING_INIT); + recordButton.setOnClickListener(this); } @Override @@ -83,18 +91,32 @@ public class RecordVoicemailGreetingActivity extends Activity implements OnClick case RECORD_GREETING_INIT: recordButton.setState(state); recordButton.setTracks(0, 0); + setSaveRedoButtonsEnabled(false); break; case RECORD_GREETING_PLAYING_BACK: case RECORD_GREETING_RECORDED: recordButton.setState(state); recordButton.setTracks(0, (float) duration / MAX_GREETING_DURATION_MS); + setSaveRedoButtonsEnabled(true); break; case RECORD_GREETING_RECORDING: recordButton.setState(state); recordButton.setTracks(0, 1f); + setSaveRedoButtonsEnabled(false); break; default: break; } } + + /** Enables/Disables save and redo buttons in the layout */ + private void setSaveRedoButtonsEnabled(boolean enabled) { + if (enabled) { + saveButton.setVisibility(View.VISIBLE); + redoButton.setVisibility(View.VISIBLE); + } else { + saveButton.setVisibility(View.GONE); + redoButton.setVisibility(View.GONE); + } + } } diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java index b9e6744ea..dd1fc4f37 100644 --- a/java/com/android/incallui/CallCardPresenter.java +++ b/java/com/android/incallui/CallCardPresenter.java @@ -469,6 +469,8 @@ public class CallCardPresenter .setSessionModificationState(primary.getVideoTech().getSessionModificationState()) .setDisconnectCause(primary.getDisconnectCause()) .setConnectionLabel(getConnectionLabel()) + .setPrimaryColor( + InCallPresenter.getInstance().getThemeColorManager().getPrimaryColor()) .setSimSuggestionReason(getSimSuggestionReason()) .setConnectionIcon(getCallStateIcon()) .setGatewayNumber(getGatewayNumber()) diff --git a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml index 3a68bd4f6..b5f1e4bb3 100644 --- a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml +++ b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml @@ -118,9 +118,9 @@ android:layout_marginStart="24dp" android:layout_marginEnd="24dp"/> - <!-- TODO(a bug): textColorPrimary or textColorPrimaryInverse? --> <TextView android:id="@+id/incall_important_call_badge" + style="@style/Dialer.TextAppearance.SubHeader" android:layout_width="wrap_content" android:layout_height="32dp" android:layout_marginTop="4dp" @@ -129,7 +129,6 @@ android:gravity="center" android:maxLines="1" android:text="@string/call_incoming_important" - style="@style/Dialer.TextAppearance.SubHeader" android:textColor="?android:attr/colorBackground"/> <FrameLayout @@ -138,9 +137,7 @@ android:layout_height="wrap_content"/> <include - layout="@layout/device_number_row" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> + layout="@layout/device_number_row"/> <FrameLayout android:id="@+id/incall_data_container" diff --git a/java/com/android/incallui/calllocation/impl/res/drawable/bg_location_card.xml b/java/com/android/incallui/calllocation/impl/res/drawable/bg_location_card.xml index 0bcba95f2..c0924468c 100644 --- a/java/com/android/incallui/calllocation/impl/res/drawable/bg_location_card.xml +++ b/java/com/android/incallui/calllocation/impl/res/drawable/bg_location_card.xml @@ -17,5 +17,5 @@ <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/ripple_material_light"> - <item android:drawable="@android:color/white"/> + <item android:drawable="?android:attr/colorBackgroundFloating"/> </ripple> diff --git a/java/com/android/incallui/calllocation/impl/res/values/styles.xml b/java/com/android/incallui/calllocation/impl/res/values/styles.xml deleted file mode 100644 index 45e9c98d4..000000000 --- a/java/com/android/incallui/calllocation/impl/res/values/styles.xml +++ /dev/null @@ -1,47 +0,0 @@ -<!-- - ~ Copyright (C) 2018 The Android Open Source Project - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License - --> -<resources> - - <style name="LocationAddressTitleTextStyle"> - <item name="android:textSize">14sp</item> - <item name="android:textColor">#dd000000</item> - <item name="android:fontFamily">sans-serif-medium</item> - </style> - - <style name="LocationAddressTextStyle"> - <item name="android:textSize">16sp</item> - <item name="android:textColor">#dd000000</item> - <item name="android:fontFamily">sans-serif</item> - </style> - - <style name="LocationLatLongTextStyle"> - <item name="android:textSize">14sp</item> - <item name="android:textColor">#88000000</item> - <item name="android:fontFamily">sans-serif</item> - </style> - - <style name="LocationLoadingTextStyle"> - <item name="android:textSize">14sp</item> - <item name="android:textColor">#dd000000</item> - <item name="android:fontFamily">sans-serif</item> - </style> - - <style name="LocationErrorTextStyle"> - <item name="android:textSize">14sp</item> - <item name="android:textColor">#dd000000</item> - <item name="android:fontFamily">sans-serif</item> - </style> -</resources> diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java index 82a103a61..d242c3a14 100644 --- a/java/com/android/incallui/contactgrid/TopRow.java +++ b/java/com/android/incallui/contactgrid/TopRow.java @@ -21,8 +21,12 @@ import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.Spanned; import android.text.TextDirectionHeuristics; import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.incallui.call.state.DialerCallState; @@ -141,8 +145,7 @@ public class TopRow { } else if (state.isWifi() && !TextUtils.isEmpty(state.connectionLabel())) { return state.connectionLabel(); } else if (isAccount(state)) { - return context.getString( - R.string.contact_grid_incoming_via_template, state.connectionLabel()); + return getColoredConnectionLabel(context, state); } else if (state.isWorkCall()) { return context.getString(R.string.contact_grid_incoming_work_call); } else { @@ -150,6 +153,22 @@ public class TopRow { } } + private static Spannable getColoredConnectionLabel(Context context, PrimaryCallState state) { + Assert.isNotNull(state.connectionLabel()); + String label = + context.getString(R.string.contact_grid_incoming_via_template, state.connectionLabel()); + Spannable spannable = new SpannableString(label); + + int start = label.indexOf(state.connectionLabel()); + int end = start + state.connectionLabel().length(); + spannable.setSpan( + new ForegroundColorSpan(state.primaryColor()), + start, + end, + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + return spannable; + } + private static CharSequence getLabelForIncomingVideo( Context context, @SessionModificationState int sessionModificationState, boolean isWifi) { if (sessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { diff --git a/java/com/android/incallui/contactgrid/res/layout/device_number_row.xml b/java/com/android/incallui/contactgrid/res/layout/device_number_row.xml index 4f8bbad5a..f4792d8ed 100644 --- a/java/com/android/incallui/contactgrid/res/layout/device_number_row.xml +++ b/java/com/android/incallui/contactgrid/res/layout/device_number_row.xml @@ -19,21 +19,19 @@ android:id="@+id/contactgrid_location_divider" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_gravity="bottom" - android:background="#D8D8D8" + android:background="@color/dialer_divider_line_color" android:visibility="gone"/> <TextView android:id="@+id/contactgrid_device_number_text" + style="@style/Dialer.TextAppearance.Primary2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:padding="16dp" - android:background="@android:color/white" - android:elevation="2dp" + android:background="?android:attr/colorBackgroundFloating" + android:elevation="4dp" android:gravity="start" android:orientation="vertical" - android:textColor="#DD000000" - android:textSize="16sp" android:visibility="gone"/> </merge>
\ No newline at end of file diff --git a/java/com/android/incallui/contactgrid/res/values/strings.xml b/java/com/android/incallui/contactgrid/res/values/strings.xml index 7c0f5a679..9ee10c327 100644 --- a/java/com/android/incallui/contactgrid/res/values/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values/strings.xml @@ -89,7 +89,7 @@ <string name="contact_grid_incoming_work_call">Work call from</string> <!-- Displayed in the answer call screen for incoming calls via a phone account. --> - <string name="contact_grid_incoming_via_template">Incoming via <xliff:g id="provider_name">%s</xliff:g></string> + <string name="contact_grid_incoming_via_template">Call via <xliff:g id="provider_name">%s</xliff:g> from</string> <!-- Displayed in the answer call screen for incoming spam calls. --> <string name="contact_grid_incoming_suspected_spam">Suspected spam caller</string> diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java index 423f86875..e07caf1b6 100644 --- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java +++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java @@ -17,6 +17,7 @@ package com.android.incallui.incall.protocol; import android.graphics.drawable.Drawable; +import android.support.annotation.ColorInt; import android.support.annotation.IntDef; import android.support.annotation.Nullable; import android.telecom.DisconnectCause; @@ -59,6 +60,8 @@ public abstract class PrimaryCallState { @Nullable public abstract String connectionLabel(); + public abstract @ColorInt int primaryColor(); + @Nullable public abstract SuggestionProvider.Reason simSuggestionReason(); @@ -127,7 +130,8 @@ public abstract class PrimaryCallState { .setIsBusinessNumber(false) .setSupportsCallOnHold(true) .setSwapToSecondaryButtonState(ButtonState.NOT_SUPPORT) - .setIsAssistedDialed(false); + .setIsAssistedDialed(false) + .setPrimaryColor(0); } /** Builder class for primary call state info. */ @@ -148,6 +152,8 @@ public abstract class PrimaryCallState { public abstract Builder setConnectionIcon(Drawable connectionIcon); + public abstract Builder setPrimaryColor(@ColorInt int color); + public abstract Builder setGatewayNumber(String gatewayNumber); public abstract Builder setCallSubject(String callSubject); |