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

Commit b637656f authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Align QSCustomizer with QSPanel

Align shapes and positions

Test: manual
Bug: 171319433
Change-Id: Iee2ddb2617d38315071545ee765d623255ce0e4a
parent b56fc740
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -91,9 +91,6 @@
    <!-- The number of columns in the QuickSettings -->
    <!-- The number of columns in the QuickSettings -->
    <integer name="quick_settings_num_columns">3</integer>
    <integer name="quick_settings_num_columns">3</integer>


    <!-- The number of columns in the Quick Settings customizer -->
    <integer name="quick_settings_edit_num_columns">@integer/quick_settings_num_columns</integer>

    <!-- The number of rows in the QuickSettings -->
    <!-- The number of rows in the QuickSettings -->
    <integer name="quick_settings_max_rows">3</integer>
    <integer name="quick_settings_max_rows">3</integer>


+0 −4
Original line number Original line Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.qs


import android.content.Context
import android.content.Context
import android.util.AttributeSet
import android.util.AttributeSet
import com.android.systemui.R


open class SideLabelTileLayout(
open class SideLabelTileLayout(
    context: Context,
    context: Context,
@@ -28,9 +27,6 @@ open class SideLabelTileLayout(
    override fun updateResources(): Boolean {
    override fun updateResources(): Boolean {
        return super.updateResources().also {
        return super.updateResources().also {
            mMaxAllowedRows = 4
            mMaxAllowedRows = 4
            mCellMarginHorizontal = (mCellMarginHorizontal * 1.2).toInt()
            mCellMarginVertical = mCellMarginHorizontal
            mMaxCellHeight = context.resources.getDimensionPixelSize(R.dimen.qs_quick_tile_size)
        }
        }
    }
    }


+7 −6
Original line number Original line Diff line number Diff line
@@ -16,19 +16,19 @@ package com.android.systemui.qs.customize;


import android.content.Context;
import android.content.Context;
import android.view.View;
import android.view.View;
import android.widget.TextView;


import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.tileimpl.QSTileView;
import com.android.systemui.qs.tileimpl.QSTileView;


public class CustomizeTileView extends QSTileView {
public class CustomizeTileView extends QSTileView implements TileAdapter.CustomizeView {
    private boolean mShowAppLabel;
    private boolean mShowAppLabel;


    public CustomizeTileView(Context context, QSIconView icon) {
    public CustomizeTileView(Context context, QSIconView icon) {
        super(context, icon);
        super(context, icon);
    }
    }


    @Override
    public void setShowAppLabel(boolean showAppLabel) {
    public void setShowAppLabel(boolean showAppLabel) {
        mShowAppLabel = showAppLabel;
        mShowAppLabel = showAppLabel;
        mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE);
        mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE);
@@ -41,10 +41,6 @@ public class CustomizeTileView extends QSTileView {
        mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE);
        mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE);
    }
    }


    public TextView getAppLabel() {
        return mSecondLine;
    }

    @Override
    @Override
    protected boolean animationsEnabled() {
    protected boolean animationsEnabled() {
        return false;
        return false;
@@ -54,4 +50,9 @@ public class CustomizeTileView extends QSTileView {
    public boolean isLongClickable() {
    public boolean isLongClickable() {
        return false;
        return false;
    }
    }

    @Override
    public void changeState(QSTile.State state) {
        handleStateChanged(state);
    }
}
}
+50 −0
Original line number Original line Diff line number Diff line
package com.android.systemui.qs.customize

import android.content.Context
import android.graphics.drawable.Drawable
import android.view.View
import com.android.systemui.plugins.qs.QSIconView
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.qs.tileimpl.QSTileViewHorizontal

/**
 * Class for displaying tiles in [QSCustomizer] with the new design (labels on the side).
 *
 * This is a class parallel to [CustomizeTileView], but inheriting from [QSTileViewHorizontal].
 */
class CustomizeTileViewHorizontal(
    context: Context,
    icon: QSIconView
) : QSTileViewHorizontal(context, icon),
    TileAdapter.CustomizeView {

    private var showAppLabel = false

    override fun setShowAppLabel(showAppLabel: Boolean) {
        this.showAppLabel = showAppLabel
        mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE
        mLabel.isSingleLine = showAppLabel
    }

    override fun handleStateChanged(state: QSTile.State) {
        super.handleStateChanged(state)
        mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE
    }

    override fun animationsEnabled(): Boolean {
        return false
    }

    override fun isLongClickable(): Boolean {
        return false
    }

    override fun changeState(state: QSTile.State) {
        handleStateChanged(state)
    }

    override fun newTileBackground(): Drawable? {
        super.newTileBackground()
        return paintDrawable
    }
}
 No newline at end of file
+56 −25
Original line number Original line Diff line number Diff line
@@ -14,6 +14,8 @@


package com.android.systemui.qs.customize;
package com.android.systemui.qs.customize;


import static com.android.systemui.qs.dagger.QSFlagsModule.QS_LABELS_FLAG;

import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources;
@@ -30,6 +32,7 @@ import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.TextView;


import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup;
import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup;
@@ -41,6 +44,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;


import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSEditEvent;
import com.android.systemui.qs.QSEditEvent;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.customize.TileAdapter.Holder;
import com.android.systemui.qs.customize.TileAdapter.Holder;
@@ -49,11 +53,13 @@ import com.android.systemui.qs.customize.TileQueryHelper.TileStateListener;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.tileimpl.QSIconViewImpl;
import com.android.systemui.qs.tileimpl.QSIconViewImpl;
import com.android.systemui.qs.tileimpl.QSTileView;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;


import javax.inject.Inject;
import javax.inject.Inject;
import javax.inject.Named;


/** */
/** */
@QSScope
@QSScope
@@ -75,7 +81,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
    private static final int ACTION_ADD = 1;
    private static final int ACTION_ADD = 1;
    private static final int ACTION_MOVE = 2;
    private static final int ACTION_MOVE = 2;


    private static final int NUM_COLUMNS_ID = R.integer.quick_settings_edit_num_columns;
    private static final int NUM_COLUMNS_ID = R.integer.quick_settings_num_columns;


    private final Context mContext;
    private final Context mContext;


@@ -102,9 +108,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
    private final AccessibilityDelegateCompat mAccessibilityDelegate;
    private final AccessibilityDelegateCompat mAccessibilityDelegate;
    private RecyclerView mRecyclerView;
    private RecyclerView mRecyclerView;
    private int mNumColumns;
    private int mNumColumns;
    private final boolean mUseHorizontalTiles;


    @Inject
    @Inject
    public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger) {
    public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger,
            @Named(QS_LABELS_FLAG) boolean useHorizontalTiles) {
        mContext = context;
        mContext = context;
        mHost = qsHost;
        mHost = qsHost;
        mUiEventLogger = uiEventLogger;
        mUiEventLogger = uiEventLogger;
@@ -114,6 +122,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles);
        mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles);
        mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID);
        mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID);
        mAccessibilityDelegate = new TileAdapterDelegate();
        mAccessibilityDelegate = new TileAdapterDelegate();
        mUseHorizontalTiles = useHorizontalTiles;
    }
    }


    @Override
    @Override
@@ -271,7 +280,10 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        }
        }
        FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent,
        FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent,
                false);
                false);
        frame.addView(new CustomizeTileView(context, new QSIconViewImpl(context)));
        View view = mUseHorizontalTiles
                ? new CustomizeTileViewHorizontal(context, new QSIconViewImpl(context))
                : new CustomizeTileView(context, new QSIconViewImpl(context));
        frame.addView(view);
        return new Holder(frame);
        return new Holder(frame);
    }
    }


@@ -354,8 +366,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        }
        }
        info.state.expandedAccessibilityClassName = "";
        info.state.expandedAccessibilityClassName = "";


        holder.mTileView.handleStateChanged(info.state);
        // The holder has a tileView, therefore this call is not null
        holder.mTileView.setShowAppLabel(position > mEditIndex && !info.isSystem);
        holder.getTileAsCustomizeView().changeState(info.state);
        holder.getTileAsCustomizeView().setShowAppLabel(position > mEditIndex && !info.isSystem);
        holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
        holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
        holder.mTileView.setClickable(true);
        holder.mTileView.setClickable(true);
        holder.mTileView.setOnClickListener(null);
        holder.mTileView.setOnClickListener(null);
@@ -534,32 +547,42 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
    }
    }


    public class Holder extends ViewHolder {
    public class Holder extends ViewHolder {
        private CustomizeTileView mTileView;
        private QSTileView mTileView;


        public Holder(View itemView) {
        public Holder(View itemView) {
            super(itemView);
            super(itemView);
            if (itemView instanceof FrameLayout) {
            if (itemView instanceof FrameLayout) {
                mTileView = (CustomizeTileView) ((FrameLayout) itemView).getChildAt(0);
                mTileView = (QSTileView) ((FrameLayout) itemView).getChildAt(0);
                if (mTileView instanceof CustomizeTileView) {
                    mTileView.setBackground(null);
                    mTileView.setBackground(null);
                }
                mTileView.getIcon().disableAnimation();
                mTileView.getIcon().disableAnimation();
                mTileView.setTag(this);
                mTileView.setTag(this);
                ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate);
                ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate);
            }
            }
        }
        }


        @Nullable
        public CustomizeView getTileAsCustomizeView() {
            return (CustomizeView) mTileView;
        }

        public void clearDrag() {
        public void clearDrag() {
            itemView.clearAnimation();
            itemView.clearAnimation();
            if (mTileView instanceof CustomizeTileView) {
                mTileView.findViewById(R.id.tile_label).clearAnimation();
                mTileView.findViewById(R.id.tile_label).clearAnimation();
                mTileView.findViewById(R.id.tile_label).setAlpha(1);
                mTileView.findViewById(R.id.tile_label).setAlpha(1);
                mTileView.getAppLabel().clearAnimation();
                mTileView.getAppLabel().clearAnimation();
                mTileView.getAppLabel().setAlpha(.6f);
                mTileView.getAppLabel().setAlpha(.6f);
            }
            }
        }


        public void startDrag() {
        public void startDrag() {
            itemView.animate()
            itemView.animate()
                    .setDuration(DRAG_LENGTH)
                    .setDuration(DRAG_LENGTH)
                    .scaleX(DRAG_SCALE)
                    .scaleX(DRAG_SCALE)
                    .scaleY(DRAG_SCALE);
                    .scaleY(DRAG_SCALE);
            if (mTileView instanceof CustomizeTileView) {
                mTileView.findViewById(R.id.tile_label).animate()
                mTileView.findViewById(R.id.tile_label).animate()
                        .setDuration(DRAG_LENGTH)
                        .setDuration(DRAG_LENGTH)
                        .alpha(0);
                        .alpha(0);
@@ -567,12 +590,14 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
                        .setDuration(DRAG_LENGTH)
                        .setDuration(DRAG_LENGTH)
                        .alpha(0);
                        .alpha(0);
            }
            }
        }


        public void stopDrag() {
        public void stopDrag() {
            itemView.animate()
            itemView.animate()
                    .setDuration(DRAG_LENGTH)
                    .setDuration(DRAG_LENGTH)
                    .scaleX(1)
                    .scaleX(1)
                    .scaleY(1);
                    .scaleY(1);
            if (mTileView instanceof CustomizeTileView) {
                mTileView.findViewById(R.id.tile_label).animate()
                mTileView.findViewById(R.id.tile_label).animate()
                        .setDuration(DRAG_LENGTH)
                        .setDuration(DRAG_LENGTH)
                        .alpha(1);
                        .alpha(1);
@@ -580,6 +605,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
                        .setDuration(DRAG_LENGTH)
                        .setDuration(DRAG_LENGTH)
                        .alpha(.6f);
                        .alpha(.6f);
            }
            }
        }


        boolean canRemove() {
        boolean canRemove() {
            return canRemoveFromPosition(getLayoutPosition());
            return canRemoveFromPosition(getLayoutPosition());
@@ -722,7 +748,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
                int position = mCurrentDrag.getAdapterPosition();
                int position = mCurrentDrag.getAdapterPosition();
                if (position == RecyclerView.NO_POSITION) return;
                if (position == RecyclerView.NO_POSITION) return;
                TileInfo info = mTiles.get(position);
                TileInfo info = mTiles.get(position);
                mCurrentDrag.mTileView.setShowAppLabel(
                ((CustomizeView) mCurrentDrag.mTileView).setShowAppLabel(
                        position > mEditIndex && !info.isSystem);
                        position > mEditIndex && !info.isSystem);
                mCurrentDrag.stopDrag();
                mCurrentDrag.stopDrag();
                mCurrentDrag = null;
                mCurrentDrag = null;
@@ -782,4 +808,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        public void onSwiped(ViewHolder viewHolder, int direction) {
        public void onSwiped(ViewHolder viewHolder, int direction) {
        }
        }
    };
    };

    interface CustomizeView {
        void setShowAppLabel(boolean showAppLabel);
        void changeState(@NonNull QSTile.State state);
    }
}
}
Loading