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
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index ee55a80..662b6a7 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 @@
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 @@
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 @@
}
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 @@
}
}
- 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 @@
}
private void checkPendingAnimations() {
- handleToggleStateChanged(mSwitchState);
+ handleToggleStateChanged(mSwitchState,
+ mDetailAdapter != null && mDetailAdapter.getToggleEnabled());
}
private final QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() {
@@ -277,7 +277,8 @@
post(new Runnable() {
@Override
public void run() {
- handleToggleStateChanged(state);
+ handleToggleStateChanged(state,
+ mDetailAdapter != null && mDetailAdapter.getToggleEnabled());
}
});
}
@@ -308,7 +309,7 @@
// 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 @@
mQsPanel.setGridContentVisibility(false);
mHeader.setVisibility(View.INVISIBLE);
}
- mAnimating = false;
+ mAnimatingOpen = false;
checkPendingAnimations();
}
};