[Output Switcher] Fix layout for ongoing session

If a device is not a host and has ongoing session, we should not show
the volume bar.

Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest
Bug: 276313834
Change-Id: I05cdc5c80d59978413259ef8ebdf5a1cda479f3a
This commit is contained in:
shaoweishen
2023-03-30 14:05:19 +00:00
committed by Shaowei Shen
parent 5bbe99a299
commit c9425f5ed1
3 changed files with 16 additions and 8 deletions

View File

@@ -205,7 +205,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
&& mController.isSubStatusSupported()
&& mController.isAdvancedLayoutSupported() && device.hasSubtext()) {
boolean isActiveWithOngoingSession =
(device.hasOngoingSession() && currentlyConnected);
(device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded(
mController.getSelectedMediaDevice(), device)));
boolean isHost = device.isHostForOngoingSession()
&& isActiveWithOngoingSession;
if (isHost) {
@@ -224,10 +225,17 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
if (isActiveWithOngoingSession) {
//Selected device which has ongoing session, disable seekbar since we
//only allow volume control on Host
initSeekbar(device, isCurrentSeekbarInvisible);
mCurrentActivePosition = position;
}
setUpDeviceIcon(device);
boolean showSeekbar =
(!device.hasOngoingSession() && currentlyConnected);
if (showSeekbar) {
updateTitleIcon(R.drawable.media_output_icon_volume,
mController.getColorItemContent());
initSeekbar(device, isCurrentSeekbarInvisible);
} else {
setUpDeviceIcon(device);
}
mSubTitleText.setText(device.getSubtextString());
Drawable deviceStatusIcon =
device.hasOngoingSession() ? mContext.getDrawable(
@@ -241,8 +249,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
updateTwoLineLayoutContentAlpha(
updateClickActionBasedOnSelectionBehavior(device)
? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
setTwoLineLayout(device, isActiveWithOngoingSession /* bFocused */,
isActiveWithOngoingSession /* showSeekBar */,
setTwoLineLayout(device, currentlyConnected /* bFocused */,
showSeekbar /* showSeekBar */,
false /* showProgressBar */, true /* showSubtitle */,
deviceStatusIcon != null /* showStatus */,
isActiveWithOngoingSession /* isFakeActive */);

View File

@@ -270,10 +270,10 @@ public abstract class MediaOutputBaseAdapter extends
final Drawable backgroundDrawable;
if (mController.isAdvancedLayoutSupported() && mController.isSubStatusSupported()) {
backgroundDrawable = mContext.getDrawable(
showSeekBar ? R.drawable.media_output_item_background_active
showSeekBar || isFakeActive ? R.drawable.media_output_item_background_active
: R.drawable.media_output_item_background).mutate();
backgroundDrawable.setTint(
showSeekBar ? mController.getColorConnectedItemBackground()
showSeekBar || isFakeActive ? mController.getColorConnectedItemBackground()
: mController.getColorItemBackground());
mIconAreaLayout.setBackgroundTintList(
ColorStateList.valueOf(showProgressBar || isFakeActive

View File

@@ -532,7 +532,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE);