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

Commit 600fe676 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "QS tile transition fixes." into pi-dev

parents bb5b42ee a5902ea6
Loading
Loading
Loading
Loading
+15 −4
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@ package com.android.systemui.qs.tileimpl;


import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;
import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;


import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.ColorStateList;
@@ -127,7 +129,6 @@ public class QSIconViewImpl extends QSIconView {
    }
    }


    protected void setIcon(ImageView iv, QSTile.State state) {
    protected void setIcon(ImageView iv, QSTile.State state) {
        updateIcon(iv, state);
        if (state.disabledByPolicy) {
        if (state.disabledByPolicy) {
            iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color));
            iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color));
        } else {
        } else {
@@ -137,7 +138,7 @@ public class QSIconViewImpl extends QSIconView {
            int color = getColor(state.state);
            int color = getColor(state.state);
            mState = state.state;
            mState = state.state;
            if (iv.isShown() && mTint != 0) {
            if (iv.isShown() && mTint != 0) {
                animateGrayScale(mTint, color, iv);
                animateGrayScale(mTint, color, iv, () -> updateIcon(iv, state));
                mTint = color;
                mTint = color;
            } else {
            } else {
                if (iv instanceof AlphaControlledSlashImageView) {
                if (iv instanceof AlphaControlledSlashImageView) {
@@ -147,7 +148,10 @@ public class QSIconViewImpl extends QSIconView {
                    setTint(iv, color);
                    setTint(iv, color);
                }
                }
                mTint = color;
                mTint = color;
                updateIcon(iv, state);
            }
            }
        } else {
            updateIcon(iv, state);
        }
        }
    }
    }


@@ -155,7 +159,8 @@ public class QSIconViewImpl extends QSIconView {
        return getColorForState(getContext(), state);
        return getColorForState(getContext(), state);
    }
    }


    public static void animateGrayScale(int fromColor, int toColor, ImageView iv) {
    public static void animateGrayScale(int fromColor, int toColor, ImageView iv,
            final Runnable endRunnable) {
        if (iv instanceof AlphaControlledSlashImageView) {
        if (iv instanceof AlphaControlledSlashImageView) {
            ((AlphaControlledSlashImageView)iv)
            ((AlphaControlledSlashImageView)iv)
                    .setFinalImageTintList(ColorStateList.valueOf(toColor));
                    .setFinalImageTintList(ColorStateList.valueOf(toColor));
@@ -175,10 +180,16 @@ public class QSIconViewImpl extends QSIconView {


                setTint(iv, Color.argb(alpha, channel, channel, channel));
                setTint(iv, Color.argb(alpha, channel, channel, channel));
            });
            });

            anim.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    endRunnable.run();
                }
            });
            anim.start();
            anim.start();
        } else {
        } else {
            setTint(iv, toColor);
            setTint(iv, toColor);
            endRunnable.run();
        }
        }
    }
    }


+19 −6
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.qs.AlphaControlledSignalTileView;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSIconViewImpl;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
@@ -60,6 +61,7 @@ public class WifiTile extends QSTileImpl<SignalState> {


    protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback();
    protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback();
    private final ActivityStarter mActivityStarter;
    private final ActivityStarter mActivityStarter;
    private boolean mExpectDisabled;


    public WifiTile(QSHost host) {
    public WifiTile(QSHost host) {
        super(host);
        super(host);
@@ -120,6 +122,15 @@ public class WifiTile extends QSTileImpl<SignalState> {
        // Immediately enter transient state when turning on wifi.
        // Immediately enter transient state when turning on wifi.
        refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING);
        refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING);
        mController.setWifiEnabled(!wifiEnabled);
        mController.setWifiEnabled(!wifiEnabled);
        mExpectDisabled = wifiEnabled;
        if (mExpectDisabled) {
            mHandler.postDelayed(() -> {
                if (mExpectDisabled) {
                    mExpectDisabled = false;
                    refreshState();
                }
            }, QSIconViewImpl.QS_ANIM_LENGTH);
        }
    }
    }


    @Override
    @Override
@@ -143,11 +154,13 @@ public class WifiTile extends QSTileImpl<SignalState> {
    @Override
    @Override
    protected void handleUpdateState(SignalState state, Object arg) {
    protected void handleUpdateState(SignalState state, Object arg) {
        if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
        if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
        final CallbackInfo cb;
        final CallbackInfo cb = mSignalCallback.mInfo;
        if (arg != null && arg instanceof CallbackInfo) {
        if (mExpectDisabled) {
            cb = (CallbackInfo) arg;
            if (cb.enabled) {
                return; // Ignore updates until disabled event occurs.
            } else {
            } else {
            cb = mSignalCallback.mInfo;
                mExpectDisabled = false;
            }
        }
        }
        boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING;
        boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING;
        boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null);
        boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null);
@@ -288,7 +301,7 @@ public class WifiTile extends QSTileImpl<SignalState> {
            if (isShowingDetail()) {
            if (isShowingDetail()) {
                mDetailAdapter.updateItems();
                mDetailAdapter.updateItems();
            }
            }
            refreshState(mInfo);
            refreshState();
        }
        }
    }
    }