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

Commit 4a2b799b authored by Alexandr Shabalin's avatar Alexandr Shabalin Committed by Android (Google) Code Review
Browse files

Merge changes Ia4a0eeb4,Iad24c97d into main

* changes:
  Set mCurrentActivePosition in one place.
  Move special case states to the top of the `onBind` condition.
parents b36c0a29 0c304bd6
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -209,8 +209,13 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                        && !mController.isCurrentConnectedDeviceRemote()) {
                    connectionState = ConnectionState.CONNECTED;
                    restrictVolumeAdjustment = true;
                    mCurrentActivePosition = position;
                    clickListener = v -> onItemClick(v, device);
                } else if (currentlyConnected && isMutingExpectedDeviceExist
                        && !mController.isCurrentConnectedDeviceRemote()) {
                    // mark as disconnected and set special click listener
                    clickListener = v -> cancelMuteAwaitConnection();
                } else if (device.getState() == MediaDeviceState.STATE_GROUPING) {
                    connectionState = ConnectionState.CONNECTING;
                } else if (mShouldGroupSelectedMediaItems
                        && mController.getSelectedMediaDevice().size() > 1
                        && isDeviceIncluded(mController.getSelectedMediaDevice(), device)) {
@@ -225,13 +230,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                    boolean isActiveWithOngoingSession =
                            device.hasOngoingSession() && (currentlyConnected || isSelected);
                    if (isActiveWithOngoingSession) {
                        mCurrentActivePosition = position;
                        ongoingSessionStatus = new OngoingSessionStatus(
                                device.isHostForOngoingSession());
                        connectionState = ConnectionState.CONNECTED;
                    } else {
                        if (currentlyConnected) {
                            mCurrentActivePosition = position;
                            connectionState = ConnectionState.CONNECTED;
                        }
                        clickListener = getClickListenerBasedOnSelectionBehavior(device);
@@ -242,8 +245,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                    deviceStatusIcon = mContext.getDrawable(R.drawable.media_output_status_failed);
                    subtitle = mContext.getString(R.string.media_output_dialog_connect_failed);
                    clickListener = v -> onItemClick(v, device);
                } else if (device.getState() == MediaDeviceState.STATE_GROUPING) {
                    connectionState = ConnectionState.CONNECTING;
                } else if (mController.getSelectedMediaDevice().size() > 1 && isSelected) {
                    // selected device in group
                    groupStatus = new GroupStatus(
@@ -251,16 +252,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                            isDeselectable /* deselectable */);
                    connectionState = ConnectionState.CONNECTED;
                } else if (currentlyConnected) {
                    connectionState = ConnectionState.CONNECTED;
                    // single selected device
                    if (isMutingExpectedDeviceExist
                            && !mController.isCurrentConnectedDeviceRemote()) {
                        // mark as disconnected and set special click listener
                        clickListener = v -> cancelMuteAwaitConnection();
                    } else if (device.hasOngoingSession()) {
                        mCurrentActivePosition = position;
                    if (device.hasOngoingSession()) {
                        ongoingSessionStatus = new OngoingSessionStatus(
                                device.isHostForOngoingSession());
                        connectionState = ConnectionState.CONNECTED;
                    } else if (mController.isCurrentConnectedDeviceRemote()
                            && !mController.getSelectableMediaDevice().isEmpty()) {
                        //If device is connected and there's other selectable devices, layout as
@@ -268,10 +264,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                        groupStatus = new GroupStatus(
                                true /* selected */,
                                isDeselectable /* isDeselectable */);
                        connectionState = ConnectionState.CONNECTED;
                    } else {
                        mCurrentActivePosition = position;
                        connectionState = ConnectionState.CONNECTED;
                    }
                } else if (isSelectable) {
                    //groupable device
@@ -289,6 +281,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                }
            }

            if (connectionState == ConnectionState.CONNECTED || isDeviceGroup) {
                mCurrentActivePosition = position;
            }

            if (isDeviceGroup) {
                String sessionName = mController.getSessionName() == null ? ""
                        : mController.getSessionName().toString();