From f538f0dd78bd5bd0ef87829b86156501ade6fbec Mon Sep 17 00:00:00 2001 From: Galia Peycheva Date: Wed, 5 Aug 2020 15:52:35 +0200 Subject: [PATCH] Add volume dialog icons specific for tv We add 3 new volume icons - when tv is muted, when the volume is low and when it is high. The threshold between low and high is 12 (i.e. maxVolume / 2). We introduce a new config - config_show_low_media_volume_icon. By default this is disabled. Only for tv it is enabled. The low volume icon for non-tv devices is the same as the normal media volume icon (ic_volume_media). Therefore, if the config is enabled on a non-tv device, there would be no visible change. Test: m && flash && check new icons are in place Change-Id: I07ffc24312a5aa59dc491f967042d4cb3685e101 --- .../drawable-television/ic_volume_media.xml | 26 +++++++++++++++++ .../ic_volume_media_low.xml | 26 +++++++++++++++++ .../ic_volume_media_mute.xml | 27 +++++++++++++++++ .../res/drawable/ic_volume_media_low.xml | 18 ++++++++++++ .../SystemUI/res/values-television/config.xml | 3 ++ packages/SystemUI/res/values/config.xml | 2 ++ .../systemui/volume/VolumeDialogImpl.java | 29 ++++++++++++++----- 7 files changed, 123 insertions(+), 8 deletions(-) create mode 100644 packages/SystemUI/res/drawable-television/ic_volume_media.xml create mode 100644 packages/SystemUI/res/drawable-television/ic_volume_media_low.xml create mode 100644 packages/SystemUI/res/drawable-television/ic_volume_media_mute.xml create mode 100644 packages/SystemUI/res/drawable/ic_volume_media_low.xml diff --git a/packages/SystemUI/res/drawable-television/ic_volume_media.xml b/packages/SystemUI/res/drawable-television/ic_volume_media.xml new file mode 100644 index 0000000000000..e43c4b471db4e --- /dev/null +++ b/packages/SystemUI/res/drawable-television/ic_volume_media.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/packages/SystemUI/res/drawable-television/ic_volume_media_low.xml b/packages/SystemUI/res/drawable-television/ic_volume_media_low.xml new file mode 100644 index 0000000000000..0f6dc9517f533 --- /dev/null +++ b/packages/SystemUI/res/drawable-television/ic_volume_media_low.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/packages/SystemUI/res/drawable-television/ic_volume_media_mute.xml b/packages/SystemUI/res/drawable-television/ic_volume_media_mute.xml new file mode 100644 index 0000000000000..4b59e13516d28 --- /dev/null +++ b/packages/SystemUI/res/drawable-television/ic_volume_media_mute.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_volume_media_low.xml b/packages/SystemUI/res/drawable/ic_volume_media_low.xml new file mode 100644 index 0000000000000..87591de39d54f --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_volume_media_low.xml @@ -0,0 +1,18 @@ + + + + diff --git a/packages/SystemUI/res/values-television/config.xml b/packages/SystemUI/res/values-television/config.xml index 1696aab661481..7b1479acc35ea 100644 --- a/packages/SystemUI/res/values-television/config.xml +++ b/packages/SystemUI/res/values-television/config.xml @@ -43,4 +43,7 @@ com.android.systemui.toast.ToastUI com.android.systemui.onehanded.OneHandedUI + + + true diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index f407a8dcc57fa..390693ca376bc 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -578,4 +578,6 @@ 150 + + false diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 06c5289adab0d..4b119dd7e1768 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -150,6 +150,8 @@ public class VolumeDialogImpl implements VolumeDialog, private boolean mShowing; private boolean mShowA11yStream; + private final boolean mShowLowMediaVolumeIcon; + private int mActiveStream; private int mPrevActiveStream; private boolean mAutomute = VolumePrefs.DEFAULT_ENABLE_AUTOMUTE; @@ -175,6 +177,8 @@ public class VolumeDialogImpl implements VolumeDialog, mShowActiveStreamOnly = showActiveStreamOnly(); mHasSeenODICaptionsTooltip = Prefs.getBoolean(context, Prefs.Key.HAS_SEEN_ODI_CAPTIONS_TOOLTIP, false); + mShowLowMediaVolumeIcon = + mContext.getResources().getBoolean(R.bool.config_showLowMediaVolumeIcon); } @Override @@ -1025,19 +1029,28 @@ public class VolumeDialogImpl implements VolumeDialog, final boolean iconEnabled = (mAutomute || ss.muteSupported) && !zenMuted; row.icon.setEnabled(iconEnabled); row.icon.setAlpha(iconEnabled ? 1 : 0.5f); - final int iconRes = - isRingVibrate ? R.drawable.ic_volume_ringer_vibrate - : isRingSilent || zenMuted ? row.iconMuteRes - : ss.routedToBluetooth - ? isStreamMuted(ss) ? R.drawable.ic_volume_media_bt_mute - : R.drawable.ic_volume_media_bt - : isStreamMuted(ss) ? row.iconMuteRes : row.iconRes; + final int iconRes; + if (isRingVibrate) { + iconRes = R.drawable.ic_volume_ringer_vibrate; + } else if (isRingSilent || zenMuted) { + iconRes = row.iconMuteRes; + } else if (ss.routedToBluetooth) { + iconRes = isStreamMuted(ss) ? R.drawable.ic_volume_media_bt_mute + : R.drawable.ic_volume_media_bt; + } else if (isStreamMuted(ss)) { + iconRes = row.iconMuteRes; + } else { + iconRes = mShowLowMediaVolumeIcon && ss.level * 2 < (ss.levelMax + ss.levelMin) + ? R.drawable.ic_volume_media_low : row.iconRes; + } + row.icon.setImageResource(iconRes); row.iconState = iconRes == R.drawable.ic_volume_ringer_vibrate ? Events.ICON_STATE_VIBRATE : (iconRes == R.drawable.ic_volume_media_bt_mute || iconRes == row.iconMuteRes) ? Events.ICON_STATE_MUTE - : (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes) + : (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes + || iconRes == R.drawable.ic_volume_media_low) ? Events.ICON_STATE_UNMUTE : Events.ICON_STATE_UNKNOWN; if (iconEnabled) {