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

Commit 169b1bda authored by Alex Shabalin's avatar Alex Shabalin
Browse files

Make the Output Switcher layout up to the spec.

This change is required for both current and the refreshed dialog UI.

1. Use constraint layout to restrict the RecyclerView max height
 instead of Java calculations which were incorrect.
2. Align album art to the left edge, remove programmatic addition
of padding.
3. Add bottom padding to the application logo to match the
spec.

Flag: EXEMPT bugfix
Bug: 400990665
Fix: 400990665
Test: atest
SystemUIGoogleScreenshotTests:com.android.systemui.media.dialog,
atest SystemUITests:com.android.systemui.media.dialog
Change-Id: I8da11afc3b04dc6b0b7ebef58e58ee024b7b15a5
parent 4be99386
Loading
Loading
Loading
Loading
+15 −12
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@
  ~ limitations under the License.
  -->

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/media_output_dialog"
    android:layout_width="@dimen/large_dialog_width"
    android:layout_height="wrap_content"
@@ -35,24 +35,25 @@
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/header_icon"
            android:layout_width="72dp"
            android:layout_height="72dp"
            android:layout_width="@dimen/media_output_dialog_header_album_icon_size"
            android:layout_height="@dimen/media_output_dialog_header_album_icon_size"
            android:layout_marginEnd="@dimen/media_output_dialog_header_icon_padding"
            android:importantForAccessibility="no"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingStart="12dp"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:gravity="top"
                android:orientation="horizontal">
                <ImageView
                    android:id="@+id/app_source_icon"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginBottom="7dp"
                    android:gravity="center_vertical"
                    android:importantForAccessibility="no"/>

@@ -103,12 +104,11 @@
        android:layout_height="wrap_content" >
    </ViewStub>

    <LinearLayout
    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/device_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        android:layout_height="0dp"
        android:layout_weight="1">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/list_result"
@@ -116,8 +116,11 @@
            android:paddingTop="8dp"
            android:clipToPadding="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHeight_max="@dimen/media_output_dialog_list_max_height"/>
    </androidx.constraintlayout.widget.ConstraintLayout>

    <LinearLayout
        android:layout_width="match_parent"
+1 −32
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowManager;
@@ -93,13 +92,10 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog
    private ImageView mAppResourceIcon;
    private ImageView mBroadcastIcon;
    private RecyclerView mDevicesRecyclerView;
    private LinearLayout mDeviceListLayout;
    private ViewGroup mDeviceListLayout;
    private LinearLayout mMediaMetadataSectionLayout;
    private Button mDoneButton;
    private Button mStopButton;
    private int mListMaxHeight;
    private int mItemHeight;
    private int mListPaddingTop;
    private WallpaperColors mWallpaperColors;
    private boolean mShouldLaunchLeBroadcastDialog;
    private boolean mIsLeBroadcastCallbackRegistered;
@@ -109,17 +105,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog

    protected Executor mExecutor;

    private final ViewTreeObserver.OnGlobalLayoutListener mDeviceListLayoutListener = () -> {
        ViewGroup.LayoutParams params = mDeviceListLayout.getLayoutParams();
        int totalItemsHeight = mAdapter.getItemCount() * mItemHeight
                + mListPaddingTop;
        int correctHeight = Math.min(totalItemsHeight, mListMaxHeight);
        // Set max height for list
        if (correctHeight != params.height) {
            params.height = correctHeight;
            mDeviceListLayout.setLayoutParams(params);
        }
    };

    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
            new BluetoothLeBroadcast.Callback() {
@@ -220,12 +205,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog
        mBroadcastSender = broadcastSender;
        mMediaSwitchingController = mediaSwitchingController;
        mLayoutManager = new LayoutManagerWrapper(mContext);
        mListMaxHeight = context.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_list_max_height);
        mItemHeight = context.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_list_item_height);
        mListPaddingTop = mContext.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_list_padding_top);
        mExecutor = Executors.newSingleThreadExecutor();
        mIncludePlaybackAndAppMetadata = includePlaybackAndAppMetadata;
    }
@@ -258,8 +237,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog
        mAppResourceIcon = mDialogView.requireViewById(R.id.app_source_icon);
        mBroadcastIcon = mDialogView.requireViewById(R.id.broadcast_icon);

        mDeviceListLayout.getViewTreeObserver().addOnGlobalLayoutListener(
                mDeviceListLayoutListener);
        // Init device list
        mLayoutManager.setAutoMeasureEnabled(true);
        mDevicesRecyclerView.setLayoutManager(mLayoutManager);
@@ -371,12 +348,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog
                mAppResourceIcon.setVisibility(View.GONE);
            }
        }
        if (mHeaderIcon.getVisibility() == View.VISIBLE) {
            final int size = getHeaderIconSize();
            final int padding = mContext.getResources().getDimensionPixelSize(
                    R.dimen.media_output_dialog_header_icon_padding);
            mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size + padding, size));
        }

        if (!mIncludePlaybackAndAppMetadata) {
            mHeaderTitle.setVisibility(View.GONE);
@@ -523,8 +494,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog

    abstract IconCompat getHeaderIcon();

    abstract int getHeaderIconSize();

    abstract CharSequence getHeaderText();

    abstract CharSequence getHeaderSubtitle();
+0 −6
Original line number Diff line number Diff line
@@ -299,12 +299,6 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {
        return mMediaSwitchingController.getHeaderIcon();
    }

    @Override
    int getHeaderIconSize() {
        return mContext.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_header_album_icon_size);
    }

    @Override
    CharSequence getHeaderText() {
        return mMediaSwitchingController.getHeaderTitle();
+0 −6
Original line number Diff line number Diff line
@@ -80,12 +80,6 @@ public class MediaOutputDialog extends MediaOutputBaseDialog {
        return mMediaSwitchingController.getHeaderIcon();
    }

    @Override
    int getHeaderIconSize() {
        return mContext.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_header_album_icon_size);
    }

    @Override
    CharSequence getHeaderText() {
        return mMediaSwitchingController.getHeaderTitle();
+0 −5
Original line number Diff line number Diff line
@@ -405,11 +405,6 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
            return mIconCompat;
        }

        @Override
        int getHeaderIconSize() {
            return 10;
        }

        @Override
        CharSequence getHeaderText() {
            return mHeaderTitle;