diff --git a/packages/SystemUI/res/drawable/media_output_icon_volume.xml b/packages/SystemUI/res/drawable/media_output_icon_volume.xml new file mode 100644 index 0000000000000..fce4e0022c7a3 --- /dev/null +++ b/packages/SystemUI/res/drawable/media_output_icon_volume.xml @@ -0,0 +1,10 @@ + + + diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java index 73c778589c78c..58a35ff7e350a 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java @@ -143,6 +143,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { if (mController.isTransferring()) { if (device.getState() == MediaDeviceState.STATE_CONNECTING && !mController.hasAdjustVolumeUserRestriction()) { + setUpDeviceIcon(device); mProgressBar.getIndeterminateDrawable().setColorFilter( new PorterDuffColorFilter( mController.getColorItemContent(), @@ -151,11 +152,13 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { false /* showSeekBar*/, true /* showProgressBar */, false /* showStatus */); } else { + setUpDeviceIcon(device); setSingleLineLayout(getItemTitle(device), false /* bFocused */); } } else { // Set different layout for each device if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) { + setUpDeviceIcon(device); mTitleText.setAlpha(DEVICE_CONNECTED_ALPHA); mTitleIcon.setAlpha(DEVICE_CONNECTED_ALPHA); mStatusIcon.setImageDrawable( @@ -167,6 +170,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mSubTitleText.setText(R.string.media_output_dialog_connect_failed); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } else if (device.getState() == MediaDeviceState.STATE_GROUPING) { + setUpDeviceIcon(device); mProgressBar.getIndeterminateDrawable().setColorFilter( new PorterDuffColorFilter( mController.getColorItemContent(), @@ -179,6 +183,9 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { boolean isDeviceDeselectable = isDeviceIncluded( mController.getDeselectableMediaDevice(), device); mTitleText.setTextColor(mController.getColorItemContent()); + mTitleIcon.setImageDrawable( + mContext.getDrawable(R.drawable.media_output_icon_volume)); + mTitleIcon.setColorFilter(mController.getColorItemContent()); setSingleLineLayout(getItemTitle(device), true /* bFocused */, true /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); @@ -207,6 +214,9 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mStatusIcon.setImageDrawable( mContext.getDrawable(R.drawable.media_output_status_check)); mStatusIcon.setColorFilter(mController.getColorItemContent()); + mTitleIcon.setImageDrawable( + mContext.getDrawable(R.drawable.media_output_icon_volume)); + mTitleIcon.setColorFilter(mController.getColorItemContent()); mTitleText.setTextColor(mController.getColorItemContent()); setSingleLineLayout(getItemTitle(device), true /* bFocused */, true /* showSeekBar */, @@ -215,6 +225,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { setUpContentDescriptionForView(mContainerLayout, false, device); mCurrentActivePosition = position; } else if (isDeviceIncluded(mController.getSelectableMediaDevice(), device)) { + setUpDeviceIcon(device); mCheckBox.setOnCheckedChangeListener(null); mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(false); @@ -227,6 +238,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { false /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); } else { + setUpDeviceIcon(device); setSingleLineLayout(getItemTitle(device), false /* bFocused */); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java index 5c2cc0b6af35f..b407e76f1b116 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -166,15 +166,6 @@ public abstract class MediaOutputBaseAdapter extends void onBind(MediaDevice device, boolean topMargin, boolean bottomMargin, int position) { mDeviceId = device.getId(); - ThreadUtils.postOnBackgroundThread(() -> { - Icon icon = mController.getDeviceIconCompat(device).toIcon(mContext); - ThreadUtils.postOnMainThread(() -> { - if (!TextUtils.equals(mDeviceId, device.getId())) { - return; - } - mTitleIcon.setImageIcon(icon); - }); - }); } abstract void onBind(int customizedItem, boolean topMargin, boolean bottomMargin); @@ -414,5 +405,17 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar.setEnabled(false); mSeekBar.setOnTouchListener((v, event) -> true); } + + protected void setUpDeviceIcon(MediaDevice device) { + ThreadUtils.postOnBackgroundThread(() -> { + Icon icon = mController.getDeviceIconCompat(device).toIcon(mContext); + ThreadUtils.postOnMainThread(() -> { + if (!TextUtils.equals(mDeviceId, device.getId())) { + return; + } + mTitleIcon.setImageIcon(icon); + }); + }); + } } }