From bea76bf6e5de3c99990490d9b66023b99a926111 Mon Sep 17 00:00:00 2001 From: yueg Date: Tue, 10 Apr 2018 16:41:49 -0700 Subject: Change speaker button for in call UI and bubble. Bug: 74238896 Test: ButtonControllerTest PiperOrigin-RevId: 192370117 Change-Id: I265cc9541957c2dd376176ed7a703b4938fe4563 --- .../android/incallui/ReturnToCallController.java | 6 +++--- .../incallui/incall/impl/ButtonController.java | 22 ++++++++++---------- .../res/drawable/incall_button_background_more.xml | 17 ++++++++++++++- .../android/incallui/rtt/impl/RttOverflowMenu.java | 2 +- .../speakerbuttonlogic/SpeakerButtonInfo.java | 13 +++++++----- .../res/drawable/volume_bluetooth.xml | 24 ++++++++++++++++++++++ 6 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml (limited to 'java') diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java index 0850e913a..fcb6fe090 100644 --- a/java/com/android/incallui/ReturnToCallController.java +++ b/java/com/android/incallui/ReturnToCallController.java @@ -303,13 +303,13 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio Action.builder() .setIconDrawable(context.getDrawable(speakerButtonInfo.icon)) .setSecondaryIconDrawable( - speakerButtonInfo.checkable + speakerButtonInfo.nonBluetoothMode ? null : context.getDrawable(R.drawable.quantum_ic_arrow_drop_down_vd_theme_24)) .setName(context.getText(speakerButtonInfo.label)) - .setCheckable(speakerButtonInfo.checkable) + .setCheckable(speakerButtonInfo.nonBluetoothMode) .setChecked(speakerButtonInfo.isChecked) - .setIntent(speakerButtonInfo.checkable ? toggleSpeaker : showSpeakerSelect) + .setIntent(speakerButtonInfo.nonBluetoothMode ? toggleSpeaker : showSpeakerSelect) .build()); // End call actions.add( diff --git a/java/com/android/incallui/incall/impl/ButtonController.java b/java/com/android/incallui/incall/impl/ButtonController.java index 9106dab9d..328ebbe67 100644 --- a/java/com/android/incallui/incall/impl/ButtonController.java +++ b/java/com/android/incallui/incall/impl/ButtonController.java @@ -312,10 +312,10 @@ interface ButtonController { @StringRes private int label = R.string.incall_label_speaker; @DrawableRes private int icon = R.drawable.quantum_ic_volume_up_vd_theme_24; - private boolean checkable; + private boolean nonBluetoothMode; private CharSequence contentDescription; - private CharSequence checkedContentDescription; - private CharSequence uncheckedContentDescription; + private CharSequence isOnContentDescription; + private CharSequence isOffContentDescription; public SpeakerButtonController(@NonNull InCallButtonUiDelegate delegate) { this.delegate = delegate; @@ -367,31 +367,31 @@ interface ButtonController { button.setEnabled(isEnabled && isAllowed); button.setVisibility(View.VISIBLE); button.setChecked(isChecked); - button.setOnClickListener(checkable ? null : this); - button.setOnCheckedChangeListener(checkable ? this : null); + button.setOnClickListener(nonBluetoothMode ? null : this); + button.setOnCheckedChangeListener(nonBluetoothMode ? this : null); button.setLabelText(label); button.setIconDrawable(icon); button.setContentDescription( - isChecked ? checkedContentDescription : uncheckedContentDescription); - button.setShouldShowMoreIndicator(!checkable); + (nonBluetoothMode && !isChecked) ? isOffContentDescription : isOnContentDescription); + button.setShouldShowMoreIndicator(!nonBluetoothMode); } } public void setAudioState(CallAudioState audioState) { SpeakerButtonInfo info = new SpeakerButtonInfo(audioState); - checkable = info.checkable; + nonBluetoothMode = info.nonBluetoothMode; isChecked = info.isChecked; label = info.label; icon = info.icon; @StringRes int contentDescriptionResId = info.contentDescription; contentDescription = delegate.getContext().getText(contentDescriptionResId); - checkedContentDescription = + isOnContentDescription = TextUtils.concat( contentDescription, delegate.getContext().getText(R.string.incall_talkback_speaker_on)); - uncheckedContentDescription = + isOffContentDescription = TextUtils.concat( contentDescription, delegate.getContext().getText(R.string.incall_talkback_speaker_off)); @@ -406,7 +406,7 @@ interface ButtonController { @Override public void onCheckedChanged(CheckableLabeledButton checkableLabeledButton, boolean isChecked) { checkableLabeledButton.setContentDescription( - isChecked ? checkedContentDescription : uncheckedContentDescription); + isChecked ? isOnContentDescription : isOffContentDescription); delegate.toggleSpeakerphone(); } } diff --git a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml index 6755f0fae..8faa35bea 100644 --- a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml +++ b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml @@ -1,4 +1,18 @@ - + @@ -25,6 +39,7 @@ diff --git a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java index deee8ee15..e9f9d0428 100644 --- a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java +++ b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java @@ -87,7 +87,7 @@ public class RttOverflowMenu extends PopupWindow implements OnCheckedChangeListe void setAudioState(CallAudioState audioState) { SpeakerButtonInfo info = new SpeakerButtonInfo(audioState); - if (info.checkable) { + if (info.nonBluetoothMode) { speakerButton.setChecked(info.isChecked); speakerButton.setOnClickListener(null); speakerButton.setOnCheckedChangeListener(this); diff --git a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java index 58fd40fb4..0c873b2af 100644 --- a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java +++ b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java @@ -39,34 +39,37 @@ public class SpeakerButtonInfo { @DrawableRes public final int icon; @StringRes public final int contentDescription; @StringRes public final int label; - public final boolean checkable; + public final boolean nonBluetoothMode; public final boolean isChecked; public SpeakerButtonInfo(CallAudioState audioState) { if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) == CallAudioState.ROUTE_BLUETOOTH) { - checkable = false; - isChecked = false; + nonBluetoothMode = false; label = R.string.incall_label_audio; if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH) == CallAudioState.ROUTE_BLUETOOTH) { - icon = R.drawable.quantum_ic_bluetooth_audio_vd_theme_24; + icon = R.drawable.volume_bluetooth; contentDescription = R.string.incall_content_description_bluetooth; + isChecked = true; } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER) == CallAudioState.ROUTE_SPEAKER) { icon = R.drawable.quantum_ic_volume_up_vd_theme_24; contentDescription = R.string.incall_content_description_speaker; + isChecked = true; } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET) == CallAudioState.ROUTE_WIRED_HEADSET) { icon = R.drawable.quantum_ic_headset_vd_theme_24; contentDescription = R.string.incall_content_description_headset; + isChecked = true; } else { icon = R.drawable.quantum_ic_phone_in_talk_vd_theme_24; contentDescription = R.string.incall_content_description_earpiece; + isChecked = false; } } else { - checkable = true; + nonBluetoothMode = true; isChecked = audioState.getRoute() == CallAudioState.ROUTE_SPEAKER; label = R.string.incall_label_speaker; icon = R.drawable.quantum_ic_volume_up_vd_theme_24; diff --git a/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml b/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml new file mode 100644 index 000000000..59dfdf3bf --- /dev/null +++ b/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml @@ -0,0 +1,24 @@ + + + + \ No newline at end of file -- cgit v1.2.3