diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index ee55a807443bc..662b6a74aedb4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -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(); } };