[Output Switcher] Disable icon clicklistener for volume fixed
when device's volume is disabled, we should also disable click for volume icon. Also add safety check for getItemViewType. Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest Bug: 268063427 Change-Id: Ib19c84d624829620b206a3374c32ea1d5f5124cf
This commit is contained in:
@@ -146,6 +146,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (mController.isAdvancedLayoutSupported()
|
||||
&& position >= mController.getMediaItemList().size()) {
|
||||
Log.d(TAG, "Incorrect position for item type: " + position);
|
||||
return MediaItem.MediaItemType.TYPE_GROUP_DIVIDER;
|
||||
}
|
||||
return mController.isAdvancedLayoutSupported()
|
||||
? mController.getMediaItemList().get(position).getMediaItemType()
|
||||
: super.getItemViewType(position);
|
||||
|
||||
@@ -333,7 +333,7 @@ public abstract class MediaOutputBaseAdapter extends
|
||||
if (!mController.isVolumeControlEnabled(device)) {
|
||||
disableSeekBar();
|
||||
} else {
|
||||
enableSeekBar();
|
||||
enableSeekBar(device);
|
||||
}
|
||||
mSeekBar.setMaxVolume(device.getMaxVolume());
|
||||
final int currentVolume = device.getCurrentVolume();
|
||||
@@ -369,13 +369,6 @@ public abstract class MediaOutputBaseAdapter extends
|
||||
if (mIsInitVolumeFirstTime) {
|
||||
mIsInitVolumeFirstTime = false;
|
||||
}
|
||||
if (mController.isAdvancedLayoutSupported()) {
|
||||
updateIconAreaClickListener((v) -> {
|
||||
mSeekBar.resetVolume();
|
||||
mController.adjustVolume(device, 0);
|
||||
updateMutedVolumeIcon();
|
||||
});
|
||||
}
|
||||
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
@@ -556,11 +549,21 @@ public abstract class MediaOutputBaseAdapter extends
|
||||
protected void disableSeekBar() {
|
||||
mSeekBar.setEnabled(false);
|
||||
mSeekBar.setOnTouchListener((v, event) -> true);
|
||||
if (mController.isAdvancedLayoutSupported()) {
|
||||
updateIconAreaClickListener(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void enableSeekBar() {
|
||||
private void enableSeekBar(MediaDevice device) {
|
||||
mSeekBar.setEnabled(true);
|
||||
mSeekBar.setOnTouchListener((v, event) -> false);
|
||||
if (mController.isAdvancedLayoutSupported()) {
|
||||
updateIconAreaClickListener((v) -> {
|
||||
mSeekBar.resetVolume();
|
||||
mController.adjustVolume(device, 0);
|
||||
updateMutedVolumeIcon();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected void setUpDeviceIcon(MediaDevice device) {
|
||||
|
||||
Reference in New Issue
Block a user