Merge "[Output Switcher] Support ongoing session for active device" into udc-dev
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
@@ -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)));
|
||||
@@ -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
|
||||
@@ -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) {
|
||||
|
||||
@@ -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(
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user