Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6db16d4 authored by Alex Shabalin's avatar Alex Shabalin
Browse files

Extract rendering of device item and device group in the list.

This change is required to further split rendering logic from the UI
state generation, so that the new UI theme could be added.

Flag: EXEMPT refactor
Bug: 387570618
Test: atest SystemUiRoboTests:MediaOutputAdapterTest
    atest SystemUIGoogleRoboRNGTests:MediaOutputAdapterScreenshotTest
Change-Id: I87d7aae8db679ee96ad7c6134668daf11d2f76c3
parent e57b68c0
Loading
Loading
Loading
Loading
+40 −22
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
            }

            boolean isDeviceGroup = false;
            boolean hideGroupItem = false;
            GroupStatus groupStatus = null;
            OngoingSessionStatus ongoingSessionStatus = null;
            ConnectionState connectionState = ConnectionState.DISCONNECTED;
@@ -218,11 +219,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                    connectionState = ConnectionState.CONNECTING;
                } else if (mShouldGroupSelectedMediaItems && hasMultipleSelectedDevices()
                        && isSelected) {
                    if (!mediaItem.isFirstDeviceInGroup()) {
                        mItemLayout.setVisibility(View.GONE);
                        return;
                    } else {
                    if (mediaItem.isFirstDeviceInGroup()) {
                        isDeviceGroup = true;
                    } else {
                        hideGroupItem = true;
                    }
                } else { // A connected or disconnected device.
                    subtitle = device.hasSubtext() ? device.getSubtextString() : null;
@@ -257,14 +257,23 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
            }

            if (isDeviceGroup) {
                String sessionName = mController.getSessionName() == null ? ""
                        : mController.getSessionName().toString();
                updateTitle(sessionName);
                updateUnmutedVolumeIcon(null /* device */);
                updateGroupSeekBar(getGroupItemContentDescription(sessionName));
                updateEndAreaForDeviceGroup();
                updateItemBackground(ConnectionState.CONNECTED);
                renderDeviceGroupItem();
            } else {
                renderDeviceItem(hideGroupItem, device, connectionState, restrictVolumeAdjustment,
                        groupStatus, ongoingSessionStatus, clickListener, deviceDisabled, subtitle,
                        deviceStatusIcon);
            }
        }

        private void renderDeviceItem(boolean hideGroupItem, MediaDevice device,
                ConnectionState connectionState, boolean restrictVolumeAdjustment,
                GroupStatus groupStatus, OngoingSessionStatus ongoingSessionStatus,
                View.OnClickListener clickListener, boolean deviceDisabled, String subtitle,
                Drawable deviceStatusIcon) {
            if (hideGroupItem) {
                mItemLayout.setVisibility(View.GONE);
                return;
            }
            updateTitle(device.getName());
            updateTitleIcon(device, connectionState, restrictVolumeAdjustment);
            updateSeekBar(device, connectionState, restrictVolumeAdjustment,
@@ -277,6 +286,15 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
            updateDeviceStatusIcon(deviceStatusIcon);
            updateItemBackground(connectionState);
        }

        private void renderDeviceGroupItem() {
            String sessionName = mController.getSessionName() == null ? ""
                    : mController.getSessionName().toString();
            updateTitle(sessionName);
            updateUnmutedVolumeIcon(null /* device */);
            updateGroupSeekBar(getGroupItemContentDescription(sessionName));
            updateEndAreaForDeviceGroup();
            updateItemBackground(ConnectionState.CONNECTED);
        }

        private OngoingSessionStatus getOngoingSessionStatus(MediaDevice device) {