diff options
Diffstat (limited to 'java/com')
12 files changed, 244 insertions, 92 deletions
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java index 672043b6e..4dc294e76 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java @@ -28,7 +28,6 @@ import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdLi import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog; import com.android.dialer.common.Assert; -import com.android.dialer.dialercontact.DialerContact; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.protos.ProtoParsers; @@ -42,26 +41,27 @@ import com.android.dialer.protos.ProtoParsers; */ public final class CallDetailsActivity extends CallDetailsActivityCommon { public static final String EXTRA_COALESCED_CALL_LOG_IDS = "coalesced_call_log_ids"; - public static final String EXTRA_CONTACT = "contact"; + public static final String EXTRA_HEADER_INFO = "header_info"; private static final int CALL_DETAILS_LOADER_ID = 0; /** IDs of call log entries, used to retrieve them from the annotated call log. */ private CoalescedIds coalescedCallLogIds; - private DialerContact contact; + /** Info to be shown in the header. */ + private CallDetailsHeaderInfo headerInfo; /** Returns an {@link Intent} to launch this activity. */ public static Intent newInstance( Context context, CoalescedIds coalescedAnnotatedCallLogIds, - DialerContact contact, + CallDetailsHeaderInfo callDetailsHeaderInfo, boolean canReportCallerId, boolean canSupportAssistedDialing) { Intent intent = new Intent(context, CallDetailsActivity.class); - ProtoParsers.put(intent, EXTRA_CONTACT, Assert.isNotNull(contact)); ProtoParsers.put( intent, EXTRA_COALESCED_CALL_LOG_IDS, Assert.isNotNull(coalescedAnnotatedCallLogIds)); + ProtoParsers.put(intent, EXTRA_HEADER_INFO, Assert.isNotNull(callDetailsHeaderInfo)); intent.putExtra(EXTRA_CAN_REPORT_CALLER_ID, canReportCallerId); intent.putExtra(EXTRA_CAN_SUPPORT_ASSISTED_DIALING, canSupportAssistedDialing); return intent; @@ -70,14 +70,17 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { @Override protected void handleIntent(Intent intent) { Assert.checkArgument(intent.hasExtra(EXTRA_COALESCED_CALL_LOG_IDS)); + Assert.checkArgument(intent.hasExtra(EXTRA_HEADER_INFO)); Assert.checkArgument(intent.hasExtra(EXTRA_CAN_REPORT_CALLER_ID)); Assert.checkArgument(intent.hasExtra(EXTRA_CAN_SUPPORT_ASSISTED_DIALING)); - contact = ProtoParsers.getTrusted(intent, EXTRA_CONTACT, DialerContact.getDefaultInstance()); setCallDetailsEntries(CallDetailsEntries.getDefaultInstance()); coalescedCallLogIds = ProtoParsers.getTrusted( intent, EXTRA_COALESCED_CALL_LOG_IDS, CoalescedIds.getDefaultInstance()); + headerInfo = + ProtoParsers.getTrusted( + intent, EXTRA_HEADER_INFO, CallDetailsHeaderInfo.getDefaultInstance()); getLoaderManager() .initLoader( @@ -91,7 +94,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { DeleteCallDetailsListener deleteCallDetailsListener) { return new CallDetailsAdapter( this, - contact, + headerInfo, getCallDetailsEntries(), callDetailsHeaderListener, reportCallIdListener, @@ -100,7 +103,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { @Override protected String getNumber() { - return contact.getNumber(); + return headerInfo.getDialerPhoneNumber().getNormalizedNumber(); } /** diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java index dfa472a71..2a4c1efca 100644 --- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java +++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java @@ -16,12 +16,12 @@ package com.android.dialer.calldetails; + import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; -import com.android.dialer.dialercontact.DialerContact; /** * A {@link RecyclerView.Adapter} for {@link CallDetailsActivity}. @@ -31,11 +31,12 @@ import com.android.dialer.dialercontact.DialerContact; */ final class CallDetailsAdapter extends CallDetailsAdapterCommon { - private final DialerContact contact; + /** Info to be shown in the header. */ + private final CallDetailsHeaderInfo headerInfo; CallDetailsAdapter( Context context, - DialerContact contact, + CallDetailsHeaderInfo calldetailsHeaderInfo, CallDetailsEntries callDetailsEntries, CallDetailsHeaderListener callDetailsHeaderListener, CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener, @@ -46,26 +47,29 @@ final class CallDetailsAdapter extends CallDetailsAdapterCommon { callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); - this.contact = contact; + this.headerInfo = calldetailsHeaderInfo; } @Override protected CallDetailsHeaderViewHolder createCallDetailsHeaderViewHolder( View container, CallDetailsHeaderListener callDetailsHeaderListener) { return new CallDetailsHeaderViewHolder( - container, contact.getNumber(), contact.getPostDialDigits(), callDetailsHeaderListener); + container, + headerInfo.getDialerPhoneNumber().getNormalizedNumber(), + headerInfo.getDialerPhoneNumber().getPostDialPortion(), + callDetailsHeaderListener); } @Override protected void bindCallDetailsHeaderViewHolder( CallDetailsHeaderViewHolder callDetailsHeaderViewHolder, int position) { - callDetailsHeaderViewHolder.updateContactInfo(contact, getCallbackAction()); + callDetailsHeaderViewHolder.updateContactInfo(headerInfo, getCallbackAction()); callDetailsHeaderViewHolder.updateAssistedDialingInfo( getCallDetailsEntries().getEntries(position)); } @Override protected String getNumber() { - return contact.getNumber(); + return headerInfo.getDialerPhoneNumber().getNormalizedNumber(); } } diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java index 34ed68836..e4fded173 100644 --- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java +++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java @@ -37,6 +37,7 @@ import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener; import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.contactphoto.ContactPhotoManager; import com.android.dialer.dialercontact.DialerContact; +import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent; import com.android.dialer.logging.InteractionEvent; import com.android.dialer.logging.Logger; @@ -182,6 +183,19 @@ public class CallDetailsHeaderViewHolder extends RecyclerView.ViewHolder setCallbackAction(callbackAction); } + void updateContactInfo(CallDetailsHeaderInfo headerInfo, @CallbackAction int callbackAction) { + GlidePhotoManagerComponent.get(context) + .glidePhotoManager() + .loadQuickContactBadge(contactPhoto, headerInfo.getPhotoInfo()); + + nameView.setText(headerInfo.getPrimaryText()); + numberView.setText(headerInfo.getSecondaryText()); + + // TODO(a bug): show SIM info in the TextView returned by getNetworkView(). + + setCallbackAction(callbackAction); + } + private void setCallbackAction(@CallbackAction int callbackAction) { this.callbackAction = callbackAction; switch (callbackAction) { diff --git a/java/com/android/dialer/calldetails/proto/call_details_header_info.proto b/java/com/android/dialer/calldetails/proto/call_details_header_info.proto new file mode 100644 index 000000000..ea7ba1e72 --- /dev/null +++ b/java/com/android/dialer/calldetails/proto/call_details_header_info.proto @@ -0,0 +1,36 @@ +syntax = "proto2"; + +option java_package = "com.android.dialer.calldetails"; +option java_multiple_files = true; +option optimize_for = LITE_RUNTIME; + + +import "java/com/android/dialer/phonenumberproto/dialer_phone_number.proto"; +import "java/com/android/dialer/glidephotomanager/photo_info.proto"; + +package com.android.dialer.calldetails; + +// Contains information for the header in CallDetailsActivity +// Next ID: 5 +message CallDetailsHeaderInfo { + // The number of all call detail entries. + optional com.android.dialer.DialerPhoneNumber dialer_phone_number = 1; + + // Information used to load the contact photo. + optional com.android.dialer.glidephotomanager.PhotoInfo photo_info = 2; + + // Primary text of the header, which can be + // (1) a presentation name (e.g., "Restricted", "Unknown", etc.), + // (2) the contact name, or + // (3) the formatted number. + optional string primary_text = 3; + + // Secondary test of the header, which describes the number. + // Some examples are: + // "Mobile • 555-1234", + // "Blocked • Mobile • 555-1234", and + // "Spam • Mobile • 555-1234". + optional string secondary_text = 4; + + // TODO(a bug): Add SIM info. +}
\ No newline at end of file diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java index 184f7abf0..fd5f6a348 100644 --- a/java/com/android/dialer/calllog/ui/menu/Modules.java +++ b/java/com/android/dialer/calllog/ui/menu/Modules.java @@ -22,11 +22,12 @@ import android.telecom.PhoneAccountHandle; import android.text.TextUtils; import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo; import com.android.dialer.calldetails.CallDetailsActivity; +import com.android.dialer.calldetails.CallDetailsHeaderInfo; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.calllog.model.CoalescedRow; -import com.android.dialer.calllogutils.CallLogContactTypes; -import com.android.dialer.calllogutils.PhoneNumberDisplayUtil; -import com.android.dialer.dialercontact.DialerContact; +import com.android.dialer.calllogutils.CallLogEntryText; +import com.android.dialer.calllogutils.NumberAttributesConverter; +import com.android.dialer.glidephotomanager.PhotoInfo; import com.android.dialer.historyitemactions.DividerModule; import com.android.dialer.historyitemactions.HistoryItemActionModule; import com.android.dialer.historyitemactions.IntentModule; @@ -106,8 +107,6 @@ final class Modules { } } - // TODO(zachh): Revisit if DialerContact is the best thing to pass to CallDetails; could - // it use a HistoryItemPrimaryActionInfo instead? modules.add(createModuleForAccessingCallDetails(context, row)); modules.add(new DeleteCallLogItemModule(context, row.coalescedIds())); @@ -156,43 +155,31 @@ final class Modules { CallDetailsActivity.newInstance( context, row.coalescedIds(), - createDialerContactFromRow(context, row), + createCallDetailsHeaderInfoFromRow(context, row), canReportAsInvalidNumber, canSupportAssistedDialing), R.string.call_details_menu_label, R.drawable.quantum_ic_info_outline_vd_theme_24); } - private static DialerContact createDialerContactFromRow(Context context, CoalescedRow row) { - Optional<String> presentationName = - PhoneNumberDisplayUtil.getNameForPresentation(context, row.numberPresentation()); - if (presentationName.isPresent()) { - return DialerContact.newBuilder() - .setNameOrNumber(presentationName.get()) - .setContactType(CallLogContactTypes.getContactType(row)) - .build(); - } + private static CallDetailsHeaderInfo createCallDetailsHeaderInfoFromRow( + Context context, CoalescedRow row) { + return CallDetailsHeaderInfo.newBuilder() + .setDialerPhoneNumber(row.number()) + .setPhotoInfo(createPhotoInfoFromRow(row)) + .setPrimaryText(CallLogEntryText.buildPrimaryText(context, row).toString()) + .setSecondaryText( + CallLogEntryText.buildSecondaryTextForBottomSheet(context, row).toString()) + .build(); + } - String normalizedNumber = row.number().getNormalizedNumber(); - DialerContact.Builder dialerContactBuilder = - DialerContact.newBuilder() - .setNumber(normalizedNumber) - .setContactType(CallLogContactTypes.getContactType(row)) - .setPhotoId(row.numberAttributes().getPhotoId()); - - if (!row.numberAttributes().getName().isEmpty()) { - dialerContactBuilder.setNameOrNumber(row.numberAttributes().getName()); - if (row.formattedNumber() != null) { - dialerContactBuilder.setDisplayNumber(row.formattedNumber()); - } - } else if (!TextUtils.isEmpty(row.formattedNumber())) { - dialerContactBuilder.setNameOrNumber(row.formattedNumber()); + private static PhotoInfo createPhotoInfoFromRow(CoalescedRow row) { + PhotoInfo.Builder photoInfoBuilder = + NumberAttributesConverter.toPhotoInfoBuilder(row.numberAttributes()) + .setIsVideo((row.features() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO); + if (!TextUtils.isEmpty(row.formattedNumber())) { + photoInfoBuilder.setFormattedNumber(row.formattedNumber()); } - - dialerContactBuilder.setNumberLabel(row.numberAttributes().getNumberTypeLabel()); - dialerContactBuilder.setPhotoUri(row.numberAttributes().getPhotoUri()); - dialerContactBuilder.setContactUri(row.numberAttributes().getLookupUri()); - - return dialerContactBuilder.build(); + return photoInfoBuilder.build(); } } diff --git a/java/com/android/dialer/calllogutils/CallLogContactTypes.java b/java/com/android/dialer/calllogutils/CallLogContactTypes.java deleted file mode 100644 index 58651560f..000000000 --- a/java/com/android/dialer/calllogutils/CallLogContactTypes.java +++ /dev/null @@ -1,38 +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 - */ - -package com.android.dialer.calllogutils; - -import com.android.dialer.calllog.model.CoalescedRow; -import com.android.dialer.lettertile.LetterTileDrawable; - -/** Determines the {@link LetterTileDrawable.ContactType} for a {@link CoalescedRow}. */ -public class CallLogContactTypes { - - /** Determines the {@link LetterTileDrawable.ContactType} for a {@link CoalescedRow}. */ - @LetterTileDrawable.ContactType - public static int getContactType(CoalescedRow row) { - // TODO(zachh): Set these fields correctly. - boolean isVoicemail = false; - boolean isSpam = false; - boolean isBusiness = false; - int numberPresentation = row.numberPresentation(); - boolean isConference = false; - - return LetterTileDrawable.getContactTypeFromPrimitives( - isVoicemail, isSpam, isBusiness, numberPresentation, isConference); - } -} diff --git a/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java b/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java index f4338ce7a..ccc9420c6 100644 --- a/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java +++ b/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java @@ -49,7 +49,7 @@ public abstract class HistoryItemPrimaryActionInfo { @Nullable public abstract Intent intent(); - // TODO(zachh): Add SIM info here if should be shown in bottom sheet. + // TODO(a bug): Add SIM info. /** Builder for {@link HistoryItemPrimaryActionInfo}. */ @AutoValue.Builder diff --git a/java/com/android/incallui/commontheme/res/values/colors.xml b/java/com/android/incallui/commontheme/res/values/colors.xml index 50b06179f..27c1b6c20 100644 --- a/java/com/android/incallui/commontheme/res/values/colors.xml +++ b/java/com/android/incallui/commontheme/res/values/colors.xml @@ -21,4 +21,6 @@ <!-- Background color for spam. This color must match one of background_colors_dark in call UI. --> <color name="incall_call_spam_background_color">@color/blocked_contact_background</color> + + <color name="divider_line_color">#D8D8D8</color> </resources> diff --git a/java/com/android/incallui/rtt/impl/AudioSelectMenu.java b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java new file mode 100644 index 000000000..2d4ab3989 --- /dev/null +++ b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java @@ -0,0 +1,83 @@ +/* + * 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 + */ + +package com.android.incallui.rtt.impl; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.PorterDuff.Mode; +import android.telecom.CallAudioState; +import android.view.View; +import android.widget.PopupWindow; +import com.android.incallui.incall.protocol.InCallButtonUiDelegate; + +/** Audio select menu for RTT call. */ +public class AudioSelectMenu extends PopupWindow { + + private final InCallButtonUiDelegate inCallButtonUiDelegate; + private final Context context; + private final OnButtonClickListener onButtonClickListener; + + interface OnButtonClickListener { + void onBackPressed(); + } + + AudioSelectMenu( + Context context, + InCallButtonUiDelegate inCallButtonUiDelegate, + OnButtonClickListener onButtonClickListener) { + super(context); + this.context = context; + this.inCallButtonUiDelegate = inCallButtonUiDelegate; + this.onButtonClickListener = onButtonClickListener; + View view = View.inflate(context, R.layout.audio_route, null); + setContentView(view); + setOnDismissListener(this::dismiss); + setFocusable(true); + setWidth(context.getResources().getDimensionPixelSize(R.dimen.rtt_overflow_menu_width)); + view.findViewById(R.id.audioroute_back) + .setOnClickListener( + v -> { + dismiss(); + this.onButtonClickListener.onBackPressed(); + }); + CallAudioState audioState = inCallButtonUiDelegate.getCurrentAudioState(); + initItem( + view.findViewById(R.id.audioroute_bluetooth), CallAudioState.ROUTE_BLUETOOTH, audioState); + initItem(view.findViewById(R.id.audioroute_speaker), CallAudioState.ROUTE_SPEAKER, audioState); + initItem( + view.findViewById(R.id.audioroute_headset), CallAudioState.ROUTE_WIRED_HEADSET, audioState); + initItem( + view.findViewById(R.id.audioroute_earpiece), CallAudioState.ROUTE_EARPIECE, audioState); + } + + private void initItem(RttCheckableButton item, final int itemRoute, CallAudioState audioState) { + int selectedColor = + context.getColor(com.android.incallui.audioroute.R.color.dialer_theme_color); + if ((audioState.getSupportedRouteMask() & itemRoute) == 0) { + item.setVisibility(View.GONE); + } else if (audioState.getRoute() == itemRoute) { + item.setTextColor(selectedColor); + item.setCompoundDrawableTintList(ColorStateList.valueOf(selectedColor)); + item.setCompoundDrawableTintMode(Mode.SRC_ATOP); + } + item.setOnClickListener( + (v) -> { + dismiss(); + inCallButtonUiDelegate.setAudioRoute(itemRoute); + }); + } +} diff --git a/java/com/android/incallui/rtt/impl/RttChatFragment.java b/java/com/android/incallui/rtt/impl/RttChatFragment.java index c6eef9ca2..dd55ccff7 100644 --- a/java/com/android/incallui/rtt/impl/RttChatFragment.java +++ b/java/com/android/incallui/rtt/impl/RttChatFragment.java @@ -48,7 +48,6 @@ import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.common.UiUtil; -import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; import com.android.incallui.call.DialerCall.State; import com.android.incallui.hold.OnHoldFragment; @@ -447,8 +446,12 @@ public class RttChatFragment extends Fragment @Override public void showAudioRouteSelector() { - AudioRouteSelectorDialogFragment.newInstance(inCallButtonUiDelegate.getCurrentAudioState()) - .show(getChildFragmentManager(), null); + AudioSelectMenu audioSelectMenu = + new AudioSelectMenu( + getContext(), + inCallButtonUiDelegate, + () -> overflowMenu.showAtLocation(getView(), Gravity.TOP | Gravity.RIGHT, 0, 0)); + audioSelectMenu.showAtLocation(getView(), Gravity.TOP | Gravity.RIGHT, 0, 0); } @Override diff --git a/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml b/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml new file mode 100644 index 000000000..89b5c76f0 --- /dev/null +++ b/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="180dp" + android:layout_height="wrap_content" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:background="@drawable/overflow_menu_background" + android:orientation="vertical"> + <com.android.incallui.rtt.impl.RttCheckableButton + android:id="@+id/audioroute_back" + style="@style/RttButton" + android:drawableStart="@drawable/quantum_ic_arrow_back_vd_theme_24" + android:text="@string/rtt_button_back"/> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="@color/divider_line_color"/> + <com.android.incallui.rtt.impl.RttCheckableButton + android:id="@+id/audioroute_bluetooth" + style="@style/RttButton" + android:drawableStart="@drawable/quantum_ic_bluetooth_audio_vd_theme_24" + android:text="@string/audioroute_bluetooth"/> + <com.android.incallui.rtt.impl.RttCheckableButton + android:id="@+id/audioroute_speaker" + style="@style/RttButton" + android:drawableStart="@drawable/quantum_ic_volume_up_vd_theme_24" + android:text="@string/audioroute_speaker"/> + <com.android.incallui.rtt.impl.RttCheckableButton + android:id="@+id/audioroute_earpiece" + style="@style/RttButton" + android:drawableStart="@drawable/quantum_ic_phone_in_talk_vd_theme_24" + android:text="@string/audioroute_phone"/> + <com.android.incallui.rtt.impl.RttCheckableButton + android:id="@+id/audioroute_headset" + style="@style/RttButton" + android:drawableStart="@drawable/quantum_ic_headset_vd_theme_24" + android:text="@string/audioroute_headset"/> +</LinearLayout>
\ No newline at end of file diff --git a/java/com/android/incallui/rtt/impl/res/values/strings.xml b/java/com/android/incallui/rtt/impl/res/values/strings.xml index 0b9eb71f4..dce16fdda 100644 --- a/java/com/android/incallui/rtt/impl/res/values/strings.xml +++ b/java/com/android/incallui/rtt/impl/res/values/strings.xml @@ -23,4 +23,8 @@ <!-- Content description for avatar of RTT chat message. [CHAR LIMIT=NONE] --> <string name="content_description_rtt_chat_avatar">Avatar</string> + + <!-- Text for back button. [CHAR LIMIT=20] --> + <string name="rtt_button_back">Back</string> + </resources>
\ No newline at end of file |