diff options
4 files changed, 19 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index c63be9ce9760..6206cef971b0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -67,6 +67,8 @@ public class QSDetail extends LinearLayout { private boolean mTriggeredExpand; private int mOpenX; private int mOpenY; + private boolean mAnimating; + private boolean mSwitchState; public QSDetail(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -158,7 +160,7 @@ public class QSDetail extends LinearLayout { mQsDetailHeader.setClickable(false); } else { mQsDetailHeaderSwitch.setVisibility(VISIBLE); - mQsDetailHeaderSwitch.setChecked(toggleState); + handleToggleStateChanged(toggleState); mQsDetailHeader.setClickable(true); mQsDetailHeader.setOnClickListener(new OnClickListener() { @Override @@ -228,6 +230,7 @@ public class QSDetail extends LinearLayout { } sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); if (visibleDiff) { + mAnimating = true; if (mFullyExpanded || mDetailAdapter != null) { setAlpha(1); mClipper.animateCircularClip(x, y, mDetailAdapter != null, listener); @@ -241,6 +244,10 @@ public class QSDetail extends LinearLayout { } private void handleToggleStateChanged(boolean state) { + mSwitchState = state; + if (mAnimating) { + return; + } mQsDetailHeaderSwitch.setChecked(state); } @@ -257,6 +264,10 @@ public class QSDetail extends LinearLayout { } } + private void checkPendingAnimations() { + handleToggleStateChanged(mSwitchState); + } + private final QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() { @Override public void onToggleStateChanged(final boolean state) { @@ -294,6 +305,8 @@ 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; + checkPendingAnimations(); }; @Override @@ -303,6 +316,8 @@ public class QSDetail extends LinearLayout { mQsPanel.setGridContentVisibility(false); mHeader.setVisibility(View.INVISIBLE); } + mAnimating = false; + checkPendingAnimations(); } }; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 7a2391043fef..794610e50f93 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -90,11 +90,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); return; } + showDetail(true); if (!mState.value) { mState.value = true; mController.setBluetoothEnabled(true); } - showDetail(true); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index 04cb55331554..91821bad988a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -122,9 +122,9 @@ public class DndTile extends QSTile<QSTile.BooleanState> { if (mState.value) { mController.setZen(Global.ZEN_MODE_OFF, null, TAG); } else { + showDetail(true); int zen = Prefs.getInt(mContext, Prefs.Key.DND_FAVORITE_ZEN, Global.ZEN_MODE_ALARMS); mController.setZen(zen, null, TAG); - showDetail(true); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index 661212c13d7a..1f915ee9475f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -113,11 +113,11 @@ public class WifiTile extends QSTile<QSTile.SignalState> { mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_WIFI_SETTINGS)); return; } + showDetail(true); if (!mState.value) { mController.setWifiEnabled(true); mState.value = true; } - showDetail(true); } @Override |