Fixing notifications in split shade when customizing QS

- disabling changing container margins/paddings when customizer is shown in split shade
- removing notifying stack scroller about customizer changes in split shade - this should not be needed anymore as now expanded QS and QS customizer always take full height of the screen

Bug: 193223224
Test: manual
Change-Id: Ice02529d1f6b78c8ff885be3270734ac23ee80e8
This commit is contained in:
Michal Brzezinski
2021-07-13 11:44:06 +01:00
parent 45613c7bdb
commit acffc8901c
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()
|| mAmbientState.isQsCustomizerShowing()
|| algorithmState.firstViewInShelf == null;
final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf(

View File

@@ -70,7 +70,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;
@@ -483,14 +482,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;
}

View File

@@ -4853,12 +4853,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;
@@ -4866,13 +4860,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",

View File

@@ -1049,6 +1049,7 @@ public class NotificationPanelViewController extends PanelViewController {
constraintSet.getConstraint(R.id.notification_stack_scroller).layout.mWidth = panelWidth;
constraintSet.getConstraint(R.id.qs_frame).layout.mWidth = qsWidth;
constraintSet.applyTo(mNotificationContainerParent);
mNotificationContainerParent.setSplitShadeEnabled(mShouldUseSplitNotificationShade);
updateKeyguardStatusViewAlignment(false /* animate */);

View File

@@ -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<View> mDrawingOrderedChildren = new ArrayList<>();
private ArrayList<View> mLayoutDrawingOrder = new ArrayList<>();
private final Comparator<View> 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();
}
}

View File

@@ -351,6 +351,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);