diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index cd5cce4f3ee78..3bd7dd339a9e9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -183,7 +183,6 @@ public class NotificationShelf extends ActivatableNotificationView implements } viewState.hidden = !mAmbientState.isShadeExpanded() - || mAmbientState.isQsCustomizerShowing() || algorithmState.firstViewInShelf == null; final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java index 9846b28ba5f9a..4559e1350f127 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java @@ -72,7 +72,6 @@ public class AmbientState { private boolean mPanelFullWidth; private boolean mPulsing; private boolean mUnlockHintRunning; - private boolean mQsCustomizerShowing; private int mIntrinsicPadding; private float mHideAmount; private boolean mAppearing; @@ -503,14 +502,6 @@ public class AmbientState { return mUnlockHintRunning; } - public boolean isQsCustomizerShowing() { - return mQsCustomizerShowing; - } - - public void setQsCustomizerShowing(boolean qsCustomizerShowing) { - mQsCustomizerShowing = qsCustomizerShowing; - } - public void setIntrinsicPadding(int intrinsicPadding) { mIntrinsicPadding = intrinsicPadding; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 2673ebdd1f6ac..32f37add2efe7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -4868,12 +4868,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mAmbientState.setUnlockHintRunning(running); } - @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) - public void setQsCustomizerShowing(boolean isShowing) { - mAmbientState.setQsCustomizerShowing(isShowing); - requestChildrenUpdate(); - } - @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void setHeadsUpGoingAwayAnimationsAllowed(boolean headsUpGoingAwayAnimationsAllowed) { mHeadsUpGoingAwayAnimationsAllowed = headsUpGoingAwayAnimationsAllowed; @@ -4881,13 +4875,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - pw.println(String.format("[%s: pulsing=%s qsCustomizerShowing=%s visibility=%s" + pw.println(String.format("[%s: pulsing=%s visibility=%s" + " alpha=%f scrollY:%d maxTopPadding=%d showShelfOnly=%s" + " qsExpandFraction=%f" + " hideAmount=%f]", this.getClass().getSimpleName(), mPulsing ? "T" : "f", - mAmbientState.isQsCustomizerShowing() ? "T" : "f", getVisibility() == View.VISIBLE ? "visible" : getVisibility() == View.GONE ? "gone" : "invisible", diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index aeeb95ffb7556..4752d5cb53aaf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -1066,6 +1066,7 @@ public class NotificationPanelViewController extends PanelViewController { constraintSet.setMargin(R.id.notification_stack_scroller, TOP, topMargin); constraintSet.setMargin(R.id.qs_frame, TOP, topMargin); constraintSet.applyTo(mNotificationContainerParent); + mNotificationContainerParent.setSplitShadeEnabled(mShouldUseSplitNotificationShade); updateKeyguardStatusViewAlignment(false /* animate */); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java index ed8fb31aea329..68e28cdba975a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java @@ -22,7 +22,6 @@ import android.graphics.Canvas; import android.util.AttributeSet; import android.view.View; import android.view.WindowInsets; -import android.widget.FrameLayout; import androidx.constraintlayout.widget.ConstraintLayout; @@ -31,7 +30,6 @@ import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.fragments.FragmentHostManager.FragmentListener; import com.android.systemui.plugins.qs.QS; import com.android.systemui.statusbar.notification.AboveShelfObserver; -import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import java.util.ArrayList; import java.util.Comparator; @@ -42,8 +40,8 @@ import java.util.Comparator; public class NotificationsQuickSettingsContainer extends ConstraintLayout implements FragmentListener, AboveShelfObserver.HasViewAboveShelfChangedListener { - private FrameLayout mQsFrame; - private NotificationStackScrollLayout mStackScroller; + private View mQsFrame; + private View mStackScroller; private View mKeyguardStatusBar; private boolean mQsExpanded; private boolean mCustomizerAnimating; @@ -52,10 +50,10 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout private int mBottomPadding; private int mStackScrollerMargin; - private boolean mHasViewsAboveShelf; private ArrayList mDrawingOrderedChildren = new ArrayList<>(); private ArrayList mLayoutDrawingOrder = new ArrayList<>(); private final Comparator mIndexComparator = Comparator.comparingInt(this::indexOfChild); + private boolean mSplitShadeEnabled; public NotificationsQuickSettingsContainer(Context context, AttributeSet attrs) { super(context, attrs); @@ -144,7 +142,6 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout public void setCustomizerShowing(boolean isShowing) { mCustomizing = isShowing; updateBottomMargin(); - mStackScroller.setQsCustomizerShowing(isShowing); } public void setDetailShowing(boolean isShowing) { @@ -152,8 +149,19 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout updateBottomMargin(); } + /** + * Sets if split shade is enabled and adjusts margins/paddings depending on QS details and + * customizer state + */ + public void setSplitShadeEnabled(boolean splitShadeEnabled) { + mSplitShadeEnabled = splitShadeEnabled; + // in case device was rotated while showing QS details/customizer + updateBottomMargin(); + } + private void updateBottomMargin() { - if (mCustomizing || mDetailShowing) { + // in split shade, QS state changes should not influence notifications panel + if (!mSplitShadeEnabled && (mCustomizing || mDetailShowing)) { // Clear out bottom paddings/margins so the qs customization can be full height. setPadding(0, 0, 0, 0); setBottomMargin(mStackScroller, 0); @@ -171,7 +179,6 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout @Override public void onHasViewsAboveShelfChanged(boolean hasViewsAboveShelf) { - mHasViewsAboveShelf = hasViewsAboveShelf; invalidate(); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java index 3f9ea182fe3f3..a1e2cfcdfd97c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java @@ -356,6 +356,7 @@ public class NotificationPanelViewTest extends SysuiTestCase { mNotificationContainerParent.addView(newViewWithId(R.id.qs_frame)); mNotificationContainerParent.addView(newViewWithId(R.id.notification_stack_scroller)); mNotificationContainerParent.addView(mKeyguardStatusView); + mNotificationContainerParent.onFinishInflate(); when(mView.findViewById(R.id.notification_container_parent)) .thenReturn(mNotificationContainerParent); when(mFragmentService.getFragmentHostManager(mView)).thenReturn(mFragmentHostManager);