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

Commit 4ed5c3aa authored by tim peng's avatar tim peng Committed by Android (Google) Code Review
Browse files

Merge "Add 12dp padding above the first slice item" into rvc-dev

parents 6e68e34f 2f47d771
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
-->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slice_slider_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
+3 −0
Original line number Diff line number Diff line
@@ -427,4 +427,7 @@

    <!-- Developer options shared data screens related dimensions -->
    <dimen name="list_preferred_item_padding">16dp</dimen>

    <!-- Output switcher panel related dimensions -->
    <dimen name="output_switcher_slice_padding_top">12dp</dimen>
</resources>
+21 −2
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package com.android.settings.panel;

import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDICATOR_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;

import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -24,6 +26,7 @@ import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
@@ -81,7 +84,7 @@ public class PanelSlicesAdapter

    @Override
    public void onBindViewHolder(@NonNull SliceRowViewHolder sliceRowViewHolder, int position) {
        sliceRowViewHolder.onBind(mSliceLiveData.get(position));
        sliceRowViewHolder.onBind(mSliceLiveData.get(position), position);
    }

    /**
@@ -116,15 +119,21 @@ public class PanelSlicesAdapter

        @VisibleForTesting
        final SliceView sliceView;
        @VisibleForTesting
        final LinearLayout mSliceSliderLayout;

        public SliceRowViewHolder(View view) {
            super(view);
            sliceView = view.findViewById(R.id.slice_view);
            sliceView.setMode(SliceView.MODE_LARGE);
            sliceView.setShowTitleItems(true);
            mSliceSliderLayout = view.findViewById(R.id.slice_slider_layout);
        }

        public void onBind(LiveData<Slice> sliceLiveData) {
        /**
         * Called when the view is displayed.
         */
        public void onBind(LiveData<Slice> sliceLiveData, int position) {
            sliceLiveData.observe(mPanelFragment.getViewLifecycleOwner(), sliceView);

            // Do not show the divider above media devices switcher slice per request
@@ -133,6 +142,16 @@ public class PanelSlicesAdapter
                mDividerAllowedAbove = false;
            }

            // Customize output switcher slice top padding
            if (position == 0 && (slice.getUri().equals(MEDIA_OUTPUT_SLICE_URI)
                    || slice.getUri().equals(MEDIA_OUTPUT_GROUP_SLICE_URI))) {
                final int paddingTop = mPanelFragment.getResources().getDimensionPixelSize(
                        R.dimen.output_switcher_slice_padding_top);
                mSliceSliderLayout.setPadding(mSliceSliderLayout.getPaddingLeft(), paddingTop,
                        mSliceSliderLayout.getPaddingRight(),
                        mSliceSliderLayout.getPaddingBottom());
            }

            // Log Panel interaction
            sliceView.setOnSliceActionListener(
                    ((eventInfo, sliceItem) -> {
+54 −0
Original line number Diff line number Diff line
@@ -18,7 +18,9 @@ package com.android.settings.panel;

import static com.android.settings.panel.PanelContent.VIEW_TYPE_SLIDER;
import static com.android.settings.panel.PanelSlicesAdapter.MAX_NUM_OF_SLICES;
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDICATOR_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;

import static com.google.common.truth.Truth.assertThat;

@@ -139,6 +141,58 @@ public class PanelSlicesAdapterTest {
        assertThat(viewHolder.isDividerAllowedAbove()).isFalse();
    }

    @Test
    public void outputSwitcherSlice_shouldAddFirstItemPadding() {
        addTestLiveData(MEDIA_OUTPUT_SLICE_URI);

        final PanelSlicesAdapter adapter =
                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
        final int position = 0;
        final ViewGroup view = new FrameLayout(mContext);
        final SliceRowViewHolder viewHolder =
                adapter.onCreateViewHolder(view, 0 /* view type*/);

        adapter.onBindViewHolder(viewHolder, position);

        assertThat(viewHolder.mSliceSliderLayout.getPaddingTop()).isEqualTo(
                mPanelFragment.getResources().getDimensionPixelSize(
                        R.dimen.output_switcher_slice_padding_top));
    }

    @Test
    public void outputSwitcherGroupSlice_shouldAddFirstItemPadding() {
        addTestLiveData(MEDIA_OUTPUT_GROUP_SLICE_URI);

        final PanelSlicesAdapter adapter =
                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
        final int position = 0;
        final ViewGroup view = new FrameLayout(mContext);
        final SliceRowViewHolder viewHolder =
                adapter.onCreateViewHolder(view, 0 /* view type*/);

        adapter.onBindViewHolder(viewHolder, position);

        assertThat(viewHolder.mSliceSliderLayout.getPaddingTop()).isEqualTo(
                mPanelFragment.getResources().getDimensionPixelSize(
                        R.dimen.output_switcher_slice_padding_top));
    }

    @Test
    public void mediaOutputIndicatorSlice_shouldNotAddFirstItemPadding() {
        addTestLiveData(MEDIA_OUTPUT_INDICATOR_SLICE_URI);

        final PanelSlicesAdapter adapter =
                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
        final int position = 0;
        final ViewGroup view = new FrameLayout(mContext);
        final SliceRowViewHolder viewHolder =
                adapter.onCreateViewHolder(view, 0 /* view type*/);

        adapter.onBindViewHolder(viewHolder, position);

        assertThat(viewHolder.mSliceSliderLayout.getPaddingTop()).isEqualTo(0);
    }

    @Test
    public void onCreateViewHolder_viewTypeSlider_verifyLayout() {
        final PanelSlicesAdapter adapter =