Merge "Fixing notifications in split shade when customizing QS" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
bfe708d973
@@ -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(
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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 */);
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user