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

Commit cb2307cb authored by Jason Monk's avatar Jason Monk
Browse files

Bring back the QS circles

Test: visual
Bug: 70798861
Change-Id: I1a68c98cf3d507171223970918fd9cb20d880b66
parent 7ac85a3b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ public class QSIconViewImpl extends QSIconView {

            if (iv instanceof SlashImageView) {
                ((SlashImageView) iv).setAnimationEnabled(shouldAnimate);
                ((SlashImageView) iv).setState(state.slash, d);
                ((SlashImageView) iv).setState(null, d);
            } else {
                iv.setImageDrawable(d);
            }
+57 −1
Original line number Diff line number Diff line
@@ -13,7 +13,12 @@
 */
package com.android.systemui.qs.tileimpl;

import static com.android.systemui.qs.tileimpl.QSIconViewImpl.QS_ANIM_LENGTH;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
@@ -22,16 +27,21 @@ import android.os.Looper;
import android.os.Message;
import android.service.quicksettings.Tile;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.Switch;

import com.android.settingslib.Utils;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.*;
import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile.BooleanState;

public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
@@ -47,6 +57,12 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
    private boolean mCollapsedView;
    private boolean mClicked;

    private final ImageView mBg;
    private final int mColorActive;
    private final int mColorInactive;
    private final int mColorDisabled;
    private int mCircleColor;

    public QSTileBaseView(Context context, QSIconView icon) {
        this(context, icon, false);
    }
@@ -60,6 +76,10 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        mIconFrame.setForegroundGravity(Gravity.CENTER);
        int size = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size);
        addView(mIconFrame, new LayoutParams(size, size));
        mBg = new ImageView(getContext());
        mBg.setScaleType(ScaleType.FIT_CENTER);
        mBg.setImageResource(R.drawable.ic_qs_circle);
        mIconFrame.addView(mBg);
        mIcon = icon;
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -73,6 +93,11 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
        setBackground(mTileBackground);

        mColorActive = Utils.getColorAttr(context, android.R.attr.colorAccent);
        mColorDisabled = Utils.getDisabled(context,
                Utils.getColorAttr(context, android.R.attr.textColorTertiary));
        mColorInactive = Utils.getColorAttr(context, android.R.attr.textColorSecondary);

        setPadding(0, 0, 0, 0);
        setClipChildren(false);
        setClipToPadding(false);
@@ -80,6 +105,10 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        setFocusable(true);
    }

    public View getBgCicle() {
        return mBg;
    }

    protected Drawable newTileBackground() {
        final int[] attrs = new int[]{android.R.attr.selectableItemBackgroundBorderless};
        final TypedArray ta = getContext().obtainStyledAttributes(attrs);
@@ -150,6 +179,20 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
    }

    protected void handleStateChanged(QSTile.State state) {
        int circleColor = getCircleColor(state.state);
        if (circleColor != mCircleColor) {
            if (mBg.isShown()) {
                ValueAnimator animator = ValueAnimator.ofArgb(mCircleColor, circleColor)
                        .setDuration(QS_ANIM_LENGTH);
                animator.addUpdateListener(animation -> mBg.setImageTintList(ColorStateList.valueOf(
                        (Integer) animation.getAnimatedValue())));
                animator.start();
            } else {
                QSIconViewImpl.setTint(mBg, circleColor);
            }
            mCircleColor = circleColor;
        }

        setClickable(state.state != Tile.STATE_UNAVAILABLE);
        mIcon.setIcon(state);
        setContentDescription(state.contentDescription);
@@ -163,6 +206,19 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        }
    }

    private int getCircleColor(int state) {
        switch (state) {
            case Tile.STATE_ACTIVE:
                return mColorActive;
            case Tile.STATE_INACTIVE:
            case Tile.STATE_UNAVAILABLE:
                return mColorDisabled;
            default:
                Log.e(TAG, "Invalid state " + state);
                return 0;
        }
    }

    @Override
    public void setClickable(boolean clickable) {
        super.setClickable(clickable);
+3 −3
Original line number Diff line number Diff line
@@ -373,11 +373,11 @@ public abstract class QSTileImpl<TState extends State> implements QSTile {
        switch (state) {
            case Tile.STATE_UNAVAILABLE:
                return Utils.getDisabled(context,
                        Utils.getColorAttr(context, android.R.attr.colorForeground));
                        Utils.getColorAttr(context, android.R.attr.textColorSecondary));
            case Tile.STATE_INACTIVE:
                return Utils.getColorAttr(context, android.R.attr.textColorHint);
                return Utils.getColorAttr(context, android.R.attr.textColorSecondary);
            case Tile.STATE_ACTIVE:
                return Utils.getColorAttr(context, android.R.attr.textColorPrimary);
                return Utils.getColorAttr(context, android.R.attr.colorPrimary);
            default:
                Log.e("QSTile", "Invalid state " + state);
                return 0;