From 48e093e6dfceab58ea53f1f996d55e9a1dc51358 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 15 Jul 2016 10:37:07 -0400 Subject: [PATCH] QS Detail: Don't animate switch before panel open This will make it more obvious that wifi gets turned on by opening the panel as the animation of the state change will be visible. Change-Id: I6ceb0bef914a9ff368b1bdb750d19aeb43593e78 Fixes: 29057528 --- .../src/com/android/systemui/qs/QSDetail.java | 17 ++++++++++++++++- .../systemui/qs/tiles/BluetoothTile.java | 2 +- .../com/android/systemui/qs/tiles/DndTile.java | 2 +- .../com/android/systemui/qs/tiles/WifiTile.java | 2 +- 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 c63be9ce9760f..6206cef971b02 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 7a2391043fef5..794610e50f932 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 { 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 04cb55331554d..91821bad988af 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 { 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 661212c13d7a6..1f915ee9475f8 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 { mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_WIFI_SETTINGS)); return; } + showDetail(true); if (!mState.value) { mController.setWifiEnabled(true); mState.value = true; } - showDetail(true); } @Override