diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 0720704e78e52..d152887f811b6 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -50,6 +50,7 @@ public class QSPanel extends ViewGroup { private int mPanelPaddingBottom; private int mDualTileUnderlap; private boolean mExpanded; + private boolean mListening; private TileRecord mDetailRecord; private Callback mCallback; @@ -100,9 +101,14 @@ public class QSPanel extends ViewGroup { if (!mExpanded) { showDetail(false /*show*/, mDetailRecord); } + } + + public void setListening(boolean listening) { + if (mListening == listening) return; + mListening = listening; for (TileRecord r : mRecords) { - r.tile.setListening(mExpanded); - if (mExpanded) { + r.tile.setListening(mListening); + if (mListening) { r.tile.refreshState(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index c82bdf6b061e7..fd2db8edb71a7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -35,6 +35,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.android.systemui.R; +import com.android.systemui.qs.QSPanel; import com.android.systemui.statusbar.ExpandableView; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.GestureRecorder; @@ -61,7 +62,7 @@ public class NotificationPanelView extends PanelView implements private KeyguardPageSwipeHelper mPageSwiper; private StatusBarHeaderView mHeader; private View mQsContainer; - private View mQsPanel; + private QSPanel mQsPanel; private View mKeyguardStatusView; private ObservableScrollView mScrollView; private TextView mClockView; @@ -136,7 +137,7 @@ public class NotificationPanelView extends PanelView implements mHeader.setOverlayParent(this); mKeyguardStatusView = findViewById(R.id.keyguard_status_view); mQsContainer = findViewById(R.id.quick_settings_container); - mQsPanel = findViewById(R.id.quick_settings_panel); + mQsPanel = (QSPanel) findViewById(R.id.quick_settings_panel); mClockView = (TextView) findViewById(R.id.clock_view); mScrollView = (ObservableScrollView) findViewById(R.id.scroll_view); mScrollView.setListener(this); @@ -873,6 +874,20 @@ public class NotificationPanelView extends PanelView implements super.onExpandingFinished(); mNotificationStackScroller.onExpansionStopped(); mIsExpanding = false; + if (mExpandedHeight == 0f) { + mHeader.setListening(false); + mQsPanel.setListening(false); + } else { + mHeader.setListening(true); + mQsPanel.setListening(true); + } + } + + @Override + public void instantExpand() { + super.instantExpand(); + mHeader.setListening(true); + mQsPanel.setListening(true); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java index 9e9de5d65dfa6..3e2dcef10c66e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java @@ -45,6 +45,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL private static final float EXPANSION_RUBBERBAND_FACTOR = 0.35f; private boolean mExpanded; + private boolean mListening; private boolean mOverscrolled; private boolean mKeyguardShowing; @@ -145,6 +146,14 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL return mExpandedHeight; } + public void setListening(boolean listening) { + if (listening == mListening) { + return; + } + mListening = listening; + updateBrightnessControllerState(); + } + public void setExpanded(boolean expanded, boolean overscrolled) { boolean changed = expanded != mExpanded; boolean overscrollChanged = overscrolled != mOverscrolled; @@ -154,7 +163,6 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL updateHeights(); updateVisibilities(); updateSystemIconsLayoutParams(); - updateBrightnessControllerState(); updateZTranslation(); updateClickTargets(); updateWidth(); @@ -254,7 +262,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL } private void updateBrightnessControllerState() { - if (mExpanded) { + if (mListening) { mBrightnessController.registerCallbacks(); } else { mBrightnessController.unregisterCallbacks();