Loading packages/SystemUI/res/layout/media_output_list_item_advanced.xml +3 −1 Original line number Diff line number Diff line Loading @@ -110,7 +110,9 @@ android:id="@+id/subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:singleLine="true" android:maxLines="1" android:textColor="@color/media_dialog_item_main_content" android:textSize="14sp" Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +24 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.Log; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -175,9 +174,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mCurrentActivePosition = position; updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device)); initMutingExpectedDevice(); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && device.hasSubtext()) { initFakeActiveDevice(); } else if (device.hasSubtext()) { boolean isActiveWithOngoingSession = (device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded( mController.getSelectedMediaDevice(), device))); Loading Loading @@ -267,6 +265,27 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { setUpDeviceIcon(device); updateFullItemClickListener(v -> cancelMuteAwaitConnection()); setSingleLineLayout(getItemTitle(device)); } else if (device.hasOngoingSession()) { mCurrentActivePosition = position; if (device.isHostForOngoingSession()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); updateEndClickAreaAsSessionEditing(device); mEndClickIcon.setVisibility(View.VISIBLE); setSingleLineLayout(getItemTitle(device), true /* showSeekBar */, false /* showProgressBar */, false /* showCheckBox */, true /* showEndTouchArea */); initSeekbar(device, isCurrentSeekbarInvisible); } else { updateDeviceStatusIcon(mContext.getDrawable( R.drawable.ic_sound_bars_anim)); mStatusIcon.setVisibility(View.VISIBLE); updateSingleLineLayoutContentAlpha( updateClickActionBasedOnSelectionBehavior(device) ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA); setSingleLineLayout(getItemTitle(device)); initFakeActiveDevice(); } } else if (mController.isCurrentConnectedDeviceRemote() && !mController.getSelectableMediaDevice().isEmpty()) { //If device is connected and there's other selectable devices, layout as Loading Loading @@ -351,7 +370,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { ColorStateList.valueOf(mController.getColorItemContent())); mEndClickIcon.setOnClickListener( v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v)); mEndTouchArea.setOnClickListener(v -> mCheckBox.performClick()); mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick()); } public void updateEndClickAreaColor(int color) { Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -188,6 +188,7 @@ public abstract class MediaOutputBaseAdapter extends mContainerLayout.setContentDescription(null); mTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setSelected(true); mTwoLineTitleText.setTextColor(mController.getColorItemContent()); mVolumeValueText.setTextColor(mController.getColorItemContent()); mSeekBar.setProgressTintList( Loading Loading @@ -417,7 +418,7 @@ public abstract class MediaOutputBaseAdapter extends mIconAreaLayout.setOnClickListener(listener); } void initMutingExpectedDevice() { void initFakeActiveDevice() { disableSeekBar(); updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); Loading packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java +44 −0 Original line number Diff line number Diff line Loading @@ -279,6 +279,50 @@ public class MediaOutputAdapterTest extends SysuiTestCase { assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE); } @Test public void onBindViewHolder_bindConnectedRemoteDeviceWithOnGoingSession_verifyView() { when(mMediaDevice1.hasOngoingSession()).thenReturn(true); when(mMediaOutputController.getSelectableMediaDevice()).thenReturn( ImmutableList.of()); when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true); mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter .onCreateViewHolder(new LinearLayout(mContext), 0); mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE); } @Test public void onBindViewHolder_bindConnectedRemoteDeviceWithHostOnGoingSession_verifyView() { when(mMediaDevice1.hasOngoingSession()).thenReturn(true); when(mMediaDevice1.isHostForOngoingSession()).thenReturn(true); when(mMediaOutputController.getSelectableMediaDevice()).thenReturn( ImmutableList.of()); when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true); mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter .onCreateViewHolder(new LinearLayout(mContext), 0); mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE); } @Test public void onBindViewHolder_bindConnectedDeviceWithMutingExpectedDeviceExist_verifyView() { when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true); Loading Loading
packages/SystemUI/res/layout/media_output_list_item_advanced.xml +3 −1 Original line number Diff line number Diff line Loading @@ -110,7 +110,9 @@ android:id="@+id/subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:singleLine="true" android:maxLines="1" android:textColor="@color/media_dialog_item_main_content" android:textSize="14sp" Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +24 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.Log; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -175,9 +174,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mCurrentActivePosition = position; updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device)); initMutingExpectedDevice(); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && device.hasSubtext()) { initFakeActiveDevice(); } else if (device.hasSubtext()) { boolean isActiveWithOngoingSession = (device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded( mController.getSelectedMediaDevice(), device))); Loading Loading @@ -267,6 +265,27 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { setUpDeviceIcon(device); updateFullItemClickListener(v -> cancelMuteAwaitConnection()); setSingleLineLayout(getItemTitle(device)); } else if (device.hasOngoingSession()) { mCurrentActivePosition = position; if (device.isHostForOngoingSession()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); updateEndClickAreaAsSessionEditing(device); mEndClickIcon.setVisibility(View.VISIBLE); setSingleLineLayout(getItemTitle(device), true /* showSeekBar */, false /* showProgressBar */, false /* showCheckBox */, true /* showEndTouchArea */); initSeekbar(device, isCurrentSeekbarInvisible); } else { updateDeviceStatusIcon(mContext.getDrawable( R.drawable.ic_sound_bars_anim)); mStatusIcon.setVisibility(View.VISIBLE); updateSingleLineLayoutContentAlpha( updateClickActionBasedOnSelectionBehavior(device) ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA); setSingleLineLayout(getItemTitle(device)); initFakeActiveDevice(); } } else if (mController.isCurrentConnectedDeviceRemote() && !mController.getSelectableMediaDevice().isEmpty()) { //If device is connected and there's other selectable devices, layout as Loading Loading @@ -351,7 +370,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { ColorStateList.valueOf(mController.getColorItemContent())); mEndClickIcon.setOnClickListener( v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v)); mEndTouchArea.setOnClickListener(v -> mCheckBox.performClick()); mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick()); } public void updateEndClickAreaColor(int color) { Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -188,6 +188,7 @@ public abstract class MediaOutputBaseAdapter extends mContainerLayout.setContentDescription(null); mTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setSelected(true); mTwoLineTitleText.setTextColor(mController.getColorItemContent()); mVolumeValueText.setTextColor(mController.getColorItemContent()); mSeekBar.setProgressTintList( Loading Loading @@ -417,7 +418,7 @@ public abstract class MediaOutputBaseAdapter extends mIconAreaLayout.setOnClickListener(listener); } void initMutingExpectedDevice() { void initFakeActiveDevice() { disableSeekBar(); updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); Loading
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java +44 −0 Original line number Diff line number Diff line Loading @@ -279,6 +279,50 @@ public class MediaOutputAdapterTest extends SysuiTestCase { assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE); } @Test public void onBindViewHolder_bindConnectedRemoteDeviceWithOnGoingSession_verifyView() { when(mMediaDevice1.hasOngoingSession()).thenReturn(true); when(mMediaOutputController.getSelectableMediaDevice()).thenReturn( ImmutableList.of()); when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true); mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter .onCreateViewHolder(new LinearLayout(mContext), 0); mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE); } @Test public void onBindViewHolder_bindConnectedRemoteDeviceWithHostOnGoingSession_verifyView() { when(mMediaDevice1.hasOngoingSession()).thenReturn(true); when(mMediaDevice1.isHostForOngoingSession()).thenReturn(true); when(mMediaOutputController.getSelectableMediaDevice()).thenReturn( ImmutableList.of()); when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true); mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter .onCreateViewHolder(new LinearLayout(mContext), 0); mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE); } @Test public void onBindViewHolder_bindConnectedDeviceWithMutingExpectedDeviceExist_verifyView() { when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true); Loading