Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java +10 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.view.MotionEvent; import android.view.ViewConfiguration; import com.android.systemui.Gefingerpoken; import com.android.systemui.R; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.ExpandableView; import com.android.systemui.statusbar.policy.HeadsUpManager; Loading @@ -42,6 +43,7 @@ public class HeadsUpTouchHelper implements Gefingerpoken { private boolean mCollapseSnoozes; private NotificationPanelView mPanel; private ExpandableNotificationRow mPickedChild; private final int mNotificationsTopPadding; public HeadsUpTouchHelper(HeadsUpManager headsUpManager, NotificationStackScrollLayout stackScroller, Loading @@ -52,6 +54,8 @@ public class HeadsUpTouchHelper implements Gefingerpoken { Context context = stackScroller.getContext(); final ViewConfiguration configuration = ViewConfiguration.get(context); mTouchSlop = configuration.getScaledTouchSlop(); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); } public boolean isTrackingHeadsUp() { Loading @@ -76,6 +80,10 @@ public class HeadsUpTouchHelper implements Gefingerpoken { mInitialTouchX = x; setTrackingHeadsUp(false); ExpandableView child = mStackScroller.getChildAtRawPosition(x, y); if (child == null && y < mNotificationsTopPadding) { // We should also allow drags from the margin above the heads up child = mStackScroller.getChildAtRawPosition(x, y + mNotificationsTopPadding); } mTouchingHeadsUpView = false; if (child instanceof ExpandableNotificationRow) { mPickedChild = (ExpandableNotificationRow) child; Loading @@ -102,7 +110,8 @@ public class HeadsUpTouchHelper implements Gefingerpoken { mInitialTouchX = x; mInitialTouchY = y; int expandedHeight = mPickedChild.getActualHeight(); mPanel.startExpandMotion(x, y, true /* startTracking */, expandedHeight); mPanel.startExpandMotion(x, y, true /* startTracking */, expandedHeight + mNotificationsTopPadding); mHeadsUpManager.unpinAll(); return true; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +8 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ public class NotificationPanelView extends PanelView implements private int mOldLayoutDirection; private HeadsUpTouchHelper mHeadsUpTouchHelper; private boolean mIsExpansionFromHeadsUp; private boolean mListenForHeadsUp; private int mNavigationBarBottomHeight; private boolean mExpandingFromHeadsUp; private boolean mCollapsedOnDown; Loading Loading @@ -649,6 +650,7 @@ public class NotificationPanelView extends PanelView implements mQsTouchAboveFalsingThreshold = mQsFullyExpanded; mDozingOnDown = isDozing(); mCollapsedOnDown = isFullyCollapsed(); mListenForHeadsUp = mCollapsedOnDown && mHeadsUpManager.hasPinnedHeadsUp(); } } Loading Loading @@ -709,6 +711,12 @@ public class NotificationPanelView extends PanelView implements return false; } initDownStates(event); if (mListenForHeadsUp && !mHeadsUpTouchHelper.isTrackingHeadsUp() && mHeadsUpTouchHelper.onInterceptTouchEvent(event)) { mIsExpansionFromHeadsUp = true; MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1); MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1); } if ((!mIsExpanding || mHintAnimationRunning) && !mQsExpanded && mStatusBar.getBarState() != StatusBarState.SHADE) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +6 −2 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ public abstract class PanelView extends FrameLayout { private float mHintDistance; private int mEdgeTapAreaWidth; private float mInitialOffsetOnTouch; private boolean mCollapsedAndHeadsUpOnDown; private float mExpandedFraction = 0; protected float mExpandedHeight = 0; private boolean mPanelClosedOnDown; Loading Loading @@ -258,6 +259,8 @@ public abstract class PanelView extends FrameLayout { mMotionAborted = false; mPeekTouching = mPanelClosedOnDown; mTouchAboveFalsingThreshold = false; mCollapsedAndHeadsUpOnDown = isFullyCollapsed() && mHeadsUpManager.hasPinnedHeadsUp(); if (mVelocityTracker == null) { initVelocityTracker(); } Loading @@ -270,7 +273,7 @@ public abstract class PanelView extends FrameLayout { || mPeekPending || mPeekAnimator != null; onTrackingStarted(); } if (isFullyCollapsed()) { if (isFullyCollapsed() && !mHeadsUpManager.hasPinnedHeadsUp()) { schedulePeek(); } break; Loading Loading @@ -302,7 +305,7 @@ public abstract class PanelView extends FrameLayout { && (Math.abs(h) > Math.abs(x - mInitialTouchX) || mIgnoreXTouchSlop)) { mTouchSlopExceeded = true; if (mGestureWaitForTouchSlop && !mTracking) { if (mGestureWaitForTouchSlop && !mTracking && !mCollapsedAndHeadsUpOnDown) { if (!mJustPeeked && mInitialOffsetOnTouch != 0f) { startExpandMotion(x, y, false /* startTracking */, mExpandedHeight); h = 0; Loading Loading @@ -477,6 +480,7 @@ public abstract class PanelView extends FrameLayout { mJustPeeked = false; mMotionAborted = false; mPanelClosedOnDown = isFullyCollapsed(); mCollapsedAndHeadsUpOnDown = false; mHasLayoutedSinceDown = false; mUpdateFlingOnLayout = false; mTouchAboveFalsingThreshold = false; Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java +4 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL private final View mStatusBarWindowView; private final int mStatusBarHeight; private final int mNotificationsTopPadding; private PhoneStatusBar mBar; private int mSnoozeLengthMs; private ContentObserver mSettingsObserver; Loading Loading @@ -128,6 +129,8 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL mStatusBarWindowView = statusBarWindowView; mStatusBarHeight = resources.getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); } private void updateTouchableRegionListener() { Loading Loading @@ -379,7 +382,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL } info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION); info.touchableRegion.set(minX, minY, maxX, maxY); info.touchableRegion.set(minX, minY, maxX, maxY + mNotificationsTopPadding); } else if (mHeadsUpGoingAway || mWaitingOnCollapseWhenGoingAway) { info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION); info.touchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight); Loading packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +5 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class StackScrollAlgorithm { private int mTopStackTotalSize; private int mPaddingBetweenElementsDimmed; private int mPaddingBetweenElementsNormal; private int mNotificationsTopPadding; private int mBottomStackSlowDownLength; private int mTopStackSlowDownLength; private int mCollapseSecondCardPadding; Loading Loading @@ -104,6 +105,8 @@ public class StackScrollAlgorithm { .getDimensionPixelSize(R.dimen.notification_padding_dimmed); mPaddingBetweenElementsNormal = context.getResources() .getDimensionPixelSize(R.dimen.notification_padding); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); mCollapsedSize = context.getResources() .getDimensionPixelSize(R.dimen.notification_min_height); mMaxNotificationHeight = context.getResources() Loading Loading @@ -518,7 +521,8 @@ public class StackScrollAlgorithm { bottomPosition); } if (row.isPinned()) { childState.yTranslation = Math.max(childState.yTranslation, 0); childState.yTranslation = Math.max(childState.yTranslation, mNotificationsTopPadding); childState.height = row.getHeadsUpHeight(); if (!isTopEntry) { // Ensure that a headsUp doesn't vertically extend further than the heads-up at Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java +10 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.view.MotionEvent; import android.view.ViewConfiguration; import com.android.systemui.Gefingerpoken; import com.android.systemui.R; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.ExpandableView; import com.android.systemui.statusbar.policy.HeadsUpManager; Loading @@ -42,6 +43,7 @@ public class HeadsUpTouchHelper implements Gefingerpoken { private boolean mCollapseSnoozes; private NotificationPanelView mPanel; private ExpandableNotificationRow mPickedChild; private final int mNotificationsTopPadding; public HeadsUpTouchHelper(HeadsUpManager headsUpManager, NotificationStackScrollLayout stackScroller, Loading @@ -52,6 +54,8 @@ public class HeadsUpTouchHelper implements Gefingerpoken { Context context = stackScroller.getContext(); final ViewConfiguration configuration = ViewConfiguration.get(context); mTouchSlop = configuration.getScaledTouchSlop(); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); } public boolean isTrackingHeadsUp() { Loading @@ -76,6 +80,10 @@ public class HeadsUpTouchHelper implements Gefingerpoken { mInitialTouchX = x; setTrackingHeadsUp(false); ExpandableView child = mStackScroller.getChildAtRawPosition(x, y); if (child == null && y < mNotificationsTopPadding) { // We should also allow drags from the margin above the heads up child = mStackScroller.getChildAtRawPosition(x, y + mNotificationsTopPadding); } mTouchingHeadsUpView = false; if (child instanceof ExpandableNotificationRow) { mPickedChild = (ExpandableNotificationRow) child; Loading @@ -102,7 +110,8 @@ public class HeadsUpTouchHelper implements Gefingerpoken { mInitialTouchX = x; mInitialTouchY = y; int expandedHeight = mPickedChild.getActualHeight(); mPanel.startExpandMotion(x, y, true /* startTracking */, expandedHeight); mPanel.startExpandMotion(x, y, true /* startTracking */, expandedHeight + mNotificationsTopPadding); mHeadsUpManager.unpinAll(); return true; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +8 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ public class NotificationPanelView extends PanelView implements private int mOldLayoutDirection; private HeadsUpTouchHelper mHeadsUpTouchHelper; private boolean mIsExpansionFromHeadsUp; private boolean mListenForHeadsUp; private int mNavigationBarBottomHeight; private boolean mExpandingFromHeadsUp; private boolean mCollapsedOnDown; Loading Loading @@ -649,6 +650,7 @@ public class NotificationPanelView extends PanelView implements mQsTouchAboveFalsingThreshold = mQsFullyExpanded; mDozingOnDown = isDozing(); mCollapsedOnDown = isFullyCollapsed(); mListenForHeadsUp = mCollapsedOnDown && mHeadsUpManager.hasPinnedHeadsUp(); } } Loading Loading @@ -709,6 +711,12 @@ public class NotificationPanelView extends PanelView implements return false; } initDownStates(event); if (mListenForHeadsUp && !mHeadsUpTouchHelper.isTrackingHeadsUp() && mHeadsUpTouchHelper.onInterceptTouchEvent(event)) { mIsExpansionFromHeadsUp = true; MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1); MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1); } if ((!mIsExpanding || mHintAnimationRunning) && !mQsExpanded && mStatusBar.getBarState() != StatusBarState.SHADE) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +6 −2 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ public abstract class PanelView extends FrameLayout { private float mHintDistance; private int mEdgeTapAreaWidth; private float mInitialOffsetOnTouch; private boolean mCollapsedAndHeadsUpOnDown; private float mExpandedFraction = 0; protected float mExpandedHeight = 0; private boolean mPanelClosedOnDown; Loading Loading @@ -258,6 +259,8 @@ public abstract class PanelView extends FrameLayout { mMotionAborted = false; mPeekTouching = mPanelClosedOnDown; mTouchAboveFalsingThreshold = false; mCollapsedAndHeadsUpOnDown = isFullyCollapsed() && mHeadsUpManager.hasPinnedHeadsUp(); if (mVelocityTracker == null) { initVelocityTracker(); } Loading @@ -270,7 +273,7 @@ public abstract class PanelView extends FrameLayout { || mPeekPending || mPeekAnimator != null; onTrackingStarted(); } if (isFullyCollapsed()) { if (isFullyCollapsed() && !mHeadsUpManager.hasPinnedHeadsUp()) { schedulePeek(); } break; Loading Loading @@ -302,7 +305,7 @@ public abstract class PanelView extends FrameLayout { && (Math.abs(h) > Math.abs(x - mInitialTouchX) || mIgnoreXTouchSlop)) { mTouchSlopExceeded = true; if (mGestureWaitForTouchSlop && !mTracking) { if (mGestureWaitForTouchSlop && !mTracking && !mCollapsedAndHeadsUpOnDown) { if (!mJustPeeked && mInitialOffsetOnTouch != 0f) { startExpandMotion(x, y, false /* startTracking */, mExpandedHeight); h = 0; Loading Loading @@ -477,6 +480,7 @@ public abstract class PanelView extends FrameLayout { mJustPeeked = false; mMotionAborted = false; mPanelClosedOnDown = isFullyCollapsed(); mCollapsedAndHeadsUpOnDown = false; mHasLayoutedSinceDown = false; mUpdateFlingOnLayout = false; mTouchAboveFalsingThreshold = false; Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java +4 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL private final View mStatusBarWindowView; private final int mStatusBarHeight; private final int mNotificationsTopPadding; private PhoneStatusBar mBar; private int mSnoozeLengthMs; private ContentObserver mSettingsObserver; Loading Loading @@ -128,6 +129,8 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL mStatusBarWindowView = statusBarWindowView; mStatusBarHeight = resources.getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); } private void updateTouchableRegionListener() { Loading Loading @@ -379,7 +382,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL } info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION); info.touchableRegion.set(minX, minY, maxX, maxY); info.touchableRegion.set(minX, minY, maxX, maxY + mNotificationsTopPadding); } else if (mHeadsUpGoingAway || mWaitingOnCollapseWhenGoingAway) { info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION); info.touchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight); Loading
packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +5 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class StackScrollAlgorithm { private int mTopStackTotalSize; private int mPaddingBetweenElementsDimmed; private int mPaddingBetweenElementsNormal; private int mNotificationsTopPadding; private int mBottomStackSlowDownLength; private int mTopStackSlowDownLength; private int mCollapseSecondCardPadding; Loading Loading @@ -104,6 +105,8 @@ public class StackScrollAlgorithm { .getDimensionPixelSize(R.dimen.notification_padding_dimmed); mPaddingBetweenElementsNormal = context.getResources() .getDimensionPixelSize(R.dimen.notification_padding); mNotificationsTopPadding = context.getResources() .getDimensionPixelSize(R.dimen.notifications_top_padding); mCollapsedSize = context.getResources() .getDimensionPixelSize(R.dimen.notification_min_height); mMaxNotificationHeight = context.getResources() Loading Loading @@ -518,7 +521,8 @@ public class StackScrollAlgorithm { bottomPosition); } if (row.isPinned()) { childState.yTranslation = Math.max(childState.yTranslation, 0); childState.yTranslation = Math.max(childState.yTranslation, mNotificationsTopPadding); childState.height = row.getHeadsUpHeight(); if (!isTopEntry) { // Ensure that a headsUp doesn't vertically extend further than the heads-up at Loading