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

Commit 35a9c14c authored by Jason Monk's avatar Jason Monk
Browse files

QS: Cleanup detail toggle on

 - Fix animating state to not animate when already on
 - Fix enabled state to not be disable during initial animation

Change-Id: Id9c2d160bb65ee9c859f67a6d310f9b84d1b8944
Fixes: 30292340
parent 0df1d34e
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public class QSDetail extends LinearLayout {
    private boolean mTriggeredExpand;
    private int mOpenX;
    private int mOpenY;
    private boolean mAnimating;
    private boolean mAnimatingOpen;
    private boolean mSwitchState;

    public QSDetail(Context context, @Nullable AttributeSet attrs) {
@@ -160,7 +160,7 @@ public class QSDetail extends LinearLayout {
                mQsDetailHeader.setClickable(false);
            } else {
                mQsDetailHeaderSwitch.setVisibility(VISIBLE);
                handleToggleStateChanged(toggleState);
                handleToggleStateChanged(toggleState, adapter.getToggleEnabled());
                mQsDetailHeader.setClickable(true);
                mQsDetailHeader.setOnClickListener(new OnClickListener() {
                    @Override
@@ -230,7 +230,7 @@ public class QSDetail extends LinearLayout {
        }
        sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
        if (visibleDiff) {
            mAnimating = true;
            mAnimatingOpen = adapter != null;
            if (mFullyExpanded || mDetailAdapter != null) {
                setAlpha(1);
                mClipper.animateCircularClip(x, y, mDetailAdapter != null, listener);
@@ -243,13 +243,12 @@ public class QSDetail extends LinearLayout {
        }
    }

    private void handleToggleStateChanged(boolean state) {
    private void handleToggleStateChanged(boolean state, boolean toggleEnabled) {
        mSwitchState = state;
        if (mAnimating) {
        if (mAnimatingOpen) {
            return;
        }
        mQsDetailHeaderSwitch.setChecked(state);
        final boolean toggleEnabled = mDetailAdapter != null && mDetailAdapter.getToggleEnabled();
        mQsDetailHeader.setEnabled(toggleEnabled);
        mQsDetailHeaderSwitch.setEnabled(toggleEnabled);
    }
@@ -268,7 +267,8 @@ public class QSDetail extends LinearLayout {
    }

    private void checkPendingAnimations() {
        handleToggleStateChanged(mSwitchState);
        handleToggleStateChanged(mSwitchState,
                            mDetailAdapter != null && mDetailAdapter.getToggleEnabled());
    }

    private final QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() {
@@ -277,7 +277,8 @@ public class QSDetail extends LinearLayout {
            post(new Runnable() {
                @Override
                public void run() {
                    handleToggleStateChanged(state);
                    handleToggleStateChanged(state,
                            mDetailAdapter != null && mDetailAdapter.getToggleEnabled());
                }
            });
        }
@@ -308,7 +309,7 @@ public class QSDetail extends LinearLayout {
            // If we have been cancelled, remove the listener so that onAnimationEnd doesn't get
            // called, this will avoid accidentally turning off the grid when we don't want to.
            animation.removeListener(this);
            mAnimating = false;
            mAnimatingOpen = false;
            checkPendingAnimations();
        };

@@ -319,7 +320,7 @@ public class QSDetail extends LinearLayout {
                mQsPanel.setGridContentVisibility(false);
                mHeader.setVisibility(View.INVISIBLE);
            }
            mAnimating = false;
            mAnimatingOpen = false;
            checkPendingAnimations();
        }
    };