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:
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user