Merge "Fixing notifications in split shade when customizing QS" into sc-v2-dev

This commit is contained in:
Michał Brzeziński
2021-07-15 09:59:28 +00:00
committed by Android (Google) Code Review
6 changed files with 18 additions and 26 deletions

View File

@@ -183,7 +183,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
} }
viewState.hidden = !mAmbientState.isShadeExpanded() viewState.hidden = !mAmbientState.isShadeExpanded()
|| mAmbientState.isQsCustomizerShowing()
|| algorithmState.firstViewInShelf == null; || algorithmState.firstViewInShelf == null;
final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf( final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf(

View File

@@ -72,7 +72,6 @@ public class AmbientState {
private boolean mPanelFullWidth; private boolean mPanelFullWidth;
private boolean mPulsing; private boolean mPulsing;
private boolean mUnlockHintRunning; private boolean mUnlockHintRunning;
private boolean mQsCustomizerShowing;
private int mIntrinsicPadding; private int mIntrinsicPadding;
private float mHideAmount; private float mHideAmount;
private boolean mAppearing; private boolean mAppearing;
@@ -503,14 +502,6 @@ public class AmbientState {
return mUnlockHintRunning; return mUnlockHintRunning;
} }
public boolean isQsCustomizerShowing() {
return mQsCustomizerShowing;
}
public void setQsCustomizerShowing(boolean qsCustomizerShowing) {
mQsCustomizerShowing = qsCustomizerShowing;
}
public void setIntrinsicPadding(int intrinsicPadding) { public void setIntrinsicPadding(int intrinsicPadding) {
mIntrinsicPadding = intrinsicPadding; mIntrinsicPadding = intrinsicPadding;
} }

View File

@@ -4868,12 +4868,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mAmbientState.setUnlockHintRunning(running); mAmbientState.setUnlockHintRunning(running);
} }
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
public void setQsCustomizerShowing(boolean isShowing) {
mAmbientState.setQsCustomizerShowing(isShowing);
requestChildrenUpdate();
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW) @ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
public void setHeadsUpGoingAwayAnimationsAllowed(boolean headsUpGoingAwayAnimationsAllowed) { public void setHeadsUpGoingAwayAnimationsAllowed(boolean headsUpGoingAwayAnimationsAllowed) {
mHeadsUpGoingAwayAnimationsAllowed = headsUpGoingAwayAnimationsAllowed; mHeadsUpGoingAwayAnimationsAllowed = headsUpGoingAwayAnimationsAllowed;
@@ -4881,13 +4875,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW) @ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 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" + " alpha=%f scrollY:%d maxTopPadding=%d showShelfOnly=%s"
+ " qsExpandFraction=%f" + " qsExpandFraction=%f"
+ " hideAmount=%f]", + " hideAmount=%f]",
this.getClass().getSimpleName(), this.getClass().getSimpleName(),
mPulsing ? "T" : "f", mPulsing ? "T" : "f",
mAmbientState.isQsCustomizerShowing() ? "T" : "f",
getVisibility() == View.VISIBLE ? "visible" getVisibility() == View.VISIBLE ? "visible"
: getVisibility() == View.GONE ? "gone" : getVisibility() == View.GONE ? "gone"
: "invisible", : "invisible",

View File

@@ -1066,6 +1066,7 @@ public class NotificationPanelViewController extends PanelViewController {
constraintSet.setMargin(R.id.notification_stack_scroller, TOP, topMargin); constraintSet.setMargin(R.id.notification_stack_scroller, TOP, topMargin);
constraintSet.setMargin(R.id.qs_frame, TOP, topMargin); constraintSet.setMargin(R.id.qs_frame, TOP, topMargin);
constraintSet.applyTo(mNotificationContainerParent); constraintSet.applyTo(mNotificationContainerParent);
mNotificationContainerParent.setSplitShadeEnabled(mShouldUseSplitNotificationShade);
updateKeyguardStatusViewAlignment(false /* animate */); updateKeyguardStatusViewAlignment(false /* animate */);

View File

@@ -22,7 +22,6 @@ import android.graphics.Canvas;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.WindowInsets; import android.view.WindowInsets;
import android.widget.FrameLayout;
import androidx.constraintlayout.widget.ConstraintLayout; 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.fragments.FragmentHostManager.FragmentListener;
import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QS;
import com.android.systemui.statusbar.notification.AboveShelfObserver; import com.android.systemui.statusbar.notification.AboveShelfObserver;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
@@ -42,8 +40,8 @@ import java.util.Comparator;
public class NotificationsQuickSettingsContainer extends ConstraintLayout public class NotificationsQuickSettingsContainer extends ConstraintLayout
implements FragmentListener, AboveShelfObserver.HasViewAboveShelfChangedListener { implements FragmentListener, AboveShelfObserver.HasViewAboveShelfChangedListener {
private FrameLayout mQsFrame; private View mQsFrame;
private NotificationStackScrollLayout mStackScroller; private View mStackScroller;
private View mKeyguardStatusBar; private View mKeyguardStatusBar;
private boolean mQsExpanded; private boolean mQsExpanded;
private boolean mCustomizerAnimating; private boolean mCustomizerAnimating;
@@ -52,10 +50,10 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout
private int mBottomPadding; private int mBottomPadding;
private int mStackScrollerMargin; private int mStackScrollerMargin;
private boolean mHasViewsAboveShelf;
private ArrayList<View> mDrawingOrderedChildren = new ArrayList<>(); private ArrayList<View> mDrawingOrderedChildren = new ArrayList<>();
private ArrayList<View> mLayoutDrawingOrder = new ArrayList<>(); private ArrayList<View> mLayoutDrawingOrder = new ArrayList<>();
private final Comparator<View> mIndexComparator = Comparator.comparingInt(this::indexOfChild); private final Comparator<View> mIndexComparator = Comparator.comparingInt(this::indexOfChild);
private boolean mSplitShadeEnabled;
public NotificationsQuickSettingsContainer(Context context, AttributeSet attrs) { public NotificationsQuickSettingsContainer(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
@@ -144,7 +142,6 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout
public void setCustomizerShowing(boolean isShowing) { public void setCustomizerShowing(boolean isShowing) {
mCustomizing = isShowing; mCustomizing = isShowing;
updateBottomMargin(); updateBottomMargin();
mStackScroller.setQsCustomizerShowing(isShowing);
} }
public void setDetailShowing(boolean isShowing) { public void setDetailShowing(boolean isShowing) {
@@ -152,8 +149,19 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout
updateBottomMargin(); 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() { 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. // Clear out bottom paddings/margins so the qs customization can be full height.
setPadding(0, 0, 0, 0); setPadding(0, 0, 0, 0);
setBottomMargin(mStackScroller, 0); setBottomMargin(mStackScroller, 0);
@@ -171,7 +179,6 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout
@Override @Override
public void onHasViewsAboveShelfChanged(boolean hasViewsAboveShelf) { public void onHasViewsAboveShelfChanged(boolean hasViewsAboveShelf) {
mHasViewsAboveShelf = hasViewsAboveShelf;
invalidate(); invalidate();
} }
} }

View File

@@ -356,6 +356,7 @@ public class NotificationPanelViewTest extends SysuiTestCase {
mNotificationContainerParent.addView(newViewWithId(R.id.qs_frame)); mNotificationContainerParent.addView(newViewWithId(R.id.qs_frame));
mNotificationContainerParent.addView(newViewWithId(R.id.notification_stack_scroller)); mNotificationContainerParent.addView(newViewWithId(R.id.notification_stack_scroller));
mNotificationContainerParent.addView(mKeyguardStatusView); mNotificationContainerParent.addView(mKeyguardStatusView);
mNotificationContainerParent.onFinishInflate();
when(mView.findViewById(R.id.notification_container_parent)) when(mView.findViewById(R.id.notification_container_parent))
.thenReturn(mNotificationContainerParent); .thenReturn(mNotificationContainerParent);
when(mFragmentService.getFragmentHostManager(mView)).thenReturn(mFragmentHostManager); when(mFragmentService.getFragmentHostManager(mView)).thenReturn(mFragmentHostManager);