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
This commit is contained in:
Jason Monk
2016-07-25 10:18:30 -04:00
parent 0df1d34e6e
commit 35a9c14cc6

View File

@@ -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();
}
};