Merge "Fix showing a cut off notification when QS is expanded" into pi-dev
This commit is contained in:
@@ -392,6 +392,8 @@ public class NotificationPanelView extends PanelView implements
|
||||
if (mQs != null) {
|
||||
mQsMinExpansionHeight = mKeyguardShowing ? 0 : mQs.getQsMinExpansionHeight();
|
||||
mQsMaxExpansionHeight = mQs.getDesiredHeight();
|
||||
mNotificationStackScroller.setMaxTopPadding(
|
||||
mQsMaxExpansionHeight + mQsNotificationTopPadding);
|
||||
}
|
||||
positionClockAndNotifications();
|
||||
if (mQsExpanded && mQsFullyExpanded) {
|
||||
@@ -588,6 +590,19 @@ public class NotificationPanelView extends PanelView implements
|
||||
mNotificationStackScroller.resetScrollPosition();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collapse(boolean delayed, float speedUpFactor) {
|
||||
if (!canPanelBeCollapsed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mQsExpanded) {
|
||||
mQsExpandImmediate = true;
|
||||
mNotificationStackScroller.setShouldShowShelfOnly(true);
|
||||
}
|
||||
super.collapse(delayed, speedUpFactor);
|
||||
}
|
||||
|
||||
public void closeQs() {
|
||||
cancelQsAnimation();
|
||||
setQsExpansion(mQsMinExpansionHeight);
|
||||
@@ -615,6 +630,7 @@ public class NotificationPanelView extends PanelView implements
|
||||
public void expandWithQs() {
|
||||
if (mQsExpansionEnabled) {
|
||||
mQsExpandImmediate = true;
|
||||
mNotificationStackScroller.setShouldShowShelfOnly(true);
|
||||
}
|
||||
expand(true /* animate */);
|
||||
}
|
||||
@@ -878,6 +894,7 @@ public class NotificationPanelView extends PanelView implements
|
||||
&& event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
|
||||
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1);
|
||||
mQsExpandImmediate = true;
|
||||
mNotificationStackScroller.setShouldShowShelfOnly(true);
|
||||
requestPanelHeightUpdate();
|
||||
|
||||
// Normally, we start listening when the panel is expanded, but here we need to start
|
||||
@@ -1321,7 +1338,9 @@ public class NotificationPanelView extends PanelView implements
|
||||
|
||||
protected void updateQsExpansion() {
|
||||
if (mQs == null) return;
|
||||
mQs.setQsExpansion(getQsExpansionFraction(), getHeaderTranslation());
|
||||
float qsExpansionFraction = getQsExpansionFraction();
|
||||
mQs.setQsExpansion(qsExpansionFraction, getHeaderTranslation());
|
||||
mNotificationStackScroller.setQsExpansionFraction(qsExpansionFraction);
|
||||
}
|
||||
|
||||
private String determineAccessibilityPaneTitle() {
|
||||
@@ -1357,7 +1376,6 @@ public class NotificationPanelView extends PanelView implements
|
||||
} else if (mQsSizeChangeAnimator != null) {
|
||||
return (int) mQsSizeChangeAnimator.getAnimatedValue();
|
||||
} else if (mKeyguardShowing) {
|
||||
|
||||
// We can only do the smoother transition on Keyguard when we also are not collapsing
|
||||
// from a scrolled quick settings.
|
||||
return interpolate(getQsExpansionFraction(),
|
||||
@@ -1527,7 +1545,6 @@ public class NotificationPanelView extends PanelView implements
|
||||
// On Keyguard, interpolate the QS expansion linearly to the panel expansion
|
||||
t = expandedHeight / (getMaxPanelHeight());
|
||||
} else {
|
||||
|
||||
// In Shade, interpolate linearly such that QS is closed whenever panel height is
|
||||
// minimum QS expansion + minStackHeight
|
||||
float panelHeightQsCollapsed = mNotificationStackScroller.getIntrinsicPadding()
|
||||
@@ -1776,6 +1793,7 @@ public class NotificationPanelView extends PanelView implements
|
||||
setListening(true);
|
||||
}
|
||||
mQsExpandImmediate = false;
|
||||
mNotificationStackScroller.setShouldShowShelfOnly(false);
|
||||
mTwoFingerQsExpandPossible = false;
|
||||
mIsExpansionFromHeadsUp = false;
|
||||
notifyListenersTrackingHeadsUp(null);
|
||||
@@ -1827,6 +1845,7 @@ public class NotificationPanelView extends PanelView implements
|
||||
super.onTrackingStarted();
|
||||
if (mQsFullyExpanded) {
|
||||
mQsExpandImmediate = true;
|
||||
mNotificationStackScroller.setShouldShowShelfOnly(true);
|
||||
}
|
||||
if (mStatusBar.getBarState() == StatusBarState.KEYGUARD
|
||||
|| mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED) {
|
||||
@@ -1894,6 +1913,8 @@ public class NotificationPanelView extends PanelView implements
|
||||
if (mAccessibilityManager.isEnabled()) {
|
||||
setAccessibilityPaneTitle(determineAccessibilityPaneTitle());
|
||||
}
|
||||
mNotificationStackScroller.setMaxTopPadding(
|
||||
mQsMaxExpansionHeight + mQsNotificationTopPadding);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -169,6 +169,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
private int mCollapsedSize;
|
||||
private int mPaddingBetweenElements;
|
||||
private int mIncreasedPaddingBetweenElements;
|
||||
private int mMaxTopPadding;
|
||||
private int mRegularTopPadding;
|
||||
private int mDarkTopPadding;
|
||||
// Current padding, will be either mRegularTopPadding or mDarkTopPadding
|
||||
@@ -177,6 +178,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
private int mDarkSeparatorPadding;
|
||||
private int mBottomMargin;
|
||||
private int mBottomInset = 0;
|
||||
private float mQsExpansionFraction;
|
||||
|
||||
/**
|
||||
* The algorithm which calculates the properties for our children
|
||||
@@ -230,6 +232,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
private boolean mPanelTracking;
|
||||
private boolean mExpandingNotification;
|
||||
private boolean mExpandedInThisMotion;
|
||||
private boolean mShouldShowShelfOnly;
|
||||
protected boolean mScrollingEnabled;
|
||||
protected FooterView mFooterView;
|
||||
protected EmptyShadeView mEmptyShadeView;
|
||||
@@ -883,7 +886,20 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
float appearFraction = 1.0f;
|
||||
if (height >= appearEndPosition) {
|
||||
translationY = 0;
|
||||
stackHeight = (int) height;
|
||||
if (mShouldShowShelfOnly) {
|
||||
stackHeight = mTopPadding + mShelf.getIntrinsicHeight();
|
||||
} else if (mQsExpanded) {
|
||||
int stackStartPosition = mContentHeight - mTopPadding + mIntrinsicPadding;
|
||||
int stackEndPosition = mMaxTopPadding + mShelf.getIntrinsicHeight();
|
||||
if (stackStartPosition <= stackEndPosition) {
|
||||
stackHeight = stackEndPosition;
|
||||
} else {
|
||||
stackHeight = (int) NotificationUtils.interpolate(stackStartPosition,
|
||||
stackEndPosition, mQsExpansionFraction);
|
||||
}
|
||||
} else {
|
||||
stackHeight = (int) height;
|
||||
}
|
||||
} else {
|
||||
appearFraction = getAppearFraction(height);
|
||||
if (appearFraction >= 0) {
|
||||
@@ -2581,6 +2597,10 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
setExpandedHeight(mExpandedHeight);
|
||||
}
|
||||
|
||||
public void setMaxTopPadding(int maxTopPadding) {
|
||||
mMaxTopPadding = maxTopPadding;
|
||||
}
|
||||
|
||||
public int getLayoutMinHeight() {
|
||||
if (isHeadsUpTransition()) {
|
||||
return getTopHeadsUpPinnedHeight();
|
||||
@@ -4484,6 +4504,10 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
updateAlgorithmLayoutMinHeight();
|
||||
}
|
||||
|
||||
public void setQsExpansionFraction(float qsExpansionFraction) {
|
||||
mQsExpansionFraction = qsExpansionFraction;
|
||||
}
|
||||
|
||||
public void setOwnScrollY(int ownScrollY) {
|
||||
if (ownScrollY != mOwnScrollY) {
|
||||
// We still want to call the normal scrolled changed for accessibility reasons
|
||||
@@ -4519,6 +4543,11 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
}
|
||||
}
|
||||
|
||||
public void setShouldShowShelfOnly(boolean shouldShowShelfOnly) {
|
||||
mShouldShowShelfOnly = shouldShowShelfOnly;
|
||||
updateAlgorithmLayoutMinHeight();
|
||||
}
|
||||
|
||||
public int getMinExpansionHeight() {
|
||||
return mShelf.getIntrinsicHeight() - (mShelf.getIntrinsicHeight() - mStatusBarHeight) / 2;
|
||||
}
|
||||
@@ -4574,7 +4603,8 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
|
||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||
pw.println(String.format("[%s: pulsing=%s qsCustomizerShowing=%s visibility=%s"
|
||||
+ " alpha:%f scrollY:%d]",
|
||||
+ " alpha:%f scrollY:%d maxTopPadding:%d showShelfOnly=%s"
|
||||
+ " qsExpandFraction=%f]",
|
||||
this.getClass().getSimpleName(),
|
||||
mPulsing ? "T":"f",
|
||||
mAmbientState.isQsCustomizerShowing() ? "T":"f",
|
||||
@@ -4582,7 +4612,10 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
: getVisibility() == View.GONE ? "gone"
|
||||
: "invisible",
|
||||
getAlpha(),
|
||||
mAmbientState.getScrollY()));
|
||||
mAmbientState.getScrollY(),
|
||||
mMaxTopPadding,
|
||||
mShouldShowShelfOnly ? "T":"f",
|
||||
mQsExpansionFraction));
|
||||
}
|
||||
|
||||
public boolean isFullyDark() {
|
||||
|
||||
Reference in New Issue
Block a user