Loading packages/SystemUI/src/com/android/systemui/ExpandHelper.java +24 −12 Original line number Diff line number Diff line Loading @@ -326,7 +326,8 @@ public class ExpandHelper implements Gefingerpoken { case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (DEBUG) Log.d(TAG, "up/cancel"); finishExpanding(false, getCurrentVelocity()); finishExpanding(ev.getActionMasked() == MotionEvent.ACTION_CANCEL, getCurrentVelocity()); clearView(); break; } Loading Loading @@ -390,7 +391,8 @@ public class ExpandHelper implements Gefingerpoken { @Override public boolean onTouchEvent(MotionEvent ev) { if (!isEnabled()) { if (!isEnabled() && !mExpanding) { // In case we're expanding we still want to finish the current motion. return false; } trackVelocity(ev); Loading Loading @@ -485,7 +487,8 @@ public class ExpandHelper implements Gefingerpoken { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: if (DEBUG) Log.d(TAG, "up/cancel"); finishExpanding(false, getCurrentVelocity()); finishExpanding(!isEnabled() || ev.getActionMasked() == MotionEvent.ACTION_CANCEL, getCurrentVelocity()); clearView(); break; } Loading Loading @@ -526,28 +529,37 @@ public class ExpandHelper implements Gefingerpoken { return true; } private void finishExpanding(boolean force, float velocity) { /** * Finish the current expand motion * @param forceAbort whether the expansion should be forcefully aborted and returned to the old * state * @param velocity the velocity this was expanded/ collapsed with */ private void finishExpanding(boolean forceAbort, float velocity) { if (!mExpanding) return; if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView); float currentHeight = mScaler.getHeight(); float h = mScaler.getHeight(); final boolean wasClosed = (mOldHeight == mSmallSize); boolean nowExpanded; int naturalHeight = mScaler.getNaturalHeight(); if (!forceAbort) { if (wasClosed) { nowExpanded = (force || currentHeight > mOldHeight && velocity >= 0); nowExpanded = currentHeight > mOldHeight && velocity >= 0; } else { nowExpanded = !force && (currentHeight >= mOldHeight || velocity > 0); nowExpanded = currentHeight >= mOldHeight || velocity > 0; } nowExpanded |= mNaturalHeight == mSmallSize; } else { nowExpanded = !wasClosed; } if (mScaleAnimation.isRunning()) { mScaleAnimation.cancel(); } mCallback.expansionStateChanged(false); int naturalHeight = mScaler.getNaturalHeight(); float targetHeight = nowExpanded ? naturalHeight : mSmallSize; if (targetHeight != currentHeight) { if (targetHeight != currentHeight && mEnabled) { mScaleAnimation.setFloatValues(targetHeight); mScaleAnimation.setupStartValues(); final View scaledView = mResizedView; Loading Loading @@ -597,7 +609,7 @@ public class ExpandHelper implements Gefingerpoken { * Use this to abort any pending expansions in progress. */ public void cancel() { finishExpanding(true, 0f /* velocity */); finishExpanding(true /* forceAbort */, 0f /* velocity */); clearView(); // reset the gesture detector Loading packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java +4 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,10 @@ public class DragDownHelper implements Gefingerpoken { return mCallback.getChildAtRawPosition(x, y); } public boolean isDraggingDown() { return mDraggingDown; } public interface DragDownCallback { /** Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −3 Original line number Diff line number Diff line Loading @@ -4692,7 +4692,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, /* Only ever called as a consequence of a lockscreen expansion gesture. */ @Override public boolean onDraggedDown(View startingChild, int dragLengthY) { if (hasActiveNotifications()) { if (hasActiveNotifications() && (!isDozing() || isPulsing())) { EventLogTags.writeSysuiLockscreenGesture( EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_FULL_SHADE, (int) (dragLengthY / mDisplayMetrics.density), Loading @@ -4706,8 +4706,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } return true; } else { // No notifications - abort gesture. // abort gesture. return false; } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +4 −7 Original line number Diff line number Diff line Loading @@ -285,13 +285,10 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { if (mService.isDozing() && !mService.isPulsing()) { // Discard all touch events in always-on. return true; } boolean handled = false; if (mService.getBarState() == StatusBarState.KEYGUARD) { boolean handled = mService.isDozing() && !mService.isPulsing(); if (mService.getBarState() == StatusBarState.KEYGUARD && (!handled || mDragDownHelper.isDraggingDown())) { // we still want to finish our drag down gesture when locking the screen handled = mDragDownHelper.onTouchEvent(ev); } if (!handled) { Loading packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +13 −0 Original line number Diff line number Diff line Loading @@ -1064,6 +1064,19 @@ public class NotificationStackScrollLayout extends ViewGroup public void setUserExpandedChild(View v, boolean userExpanded) { if (v instanceof ExpandableNotificationRow) { ExpandableNotificationRow row = (ExpandableNotificationRow) v; if (userExpanded && onKeyguard()) { // Due to a race when locking the screen while touching, a notification may be // expanded even after we went back to keyguard. An example of this happens if // you click in the empty space while expanding a group. // We also need to un-user lock it here, since otherwise the content height // calculated might be wrong. We also can't invert the two calls since // un-userlocking it will trigger a layout switch in the content view. row.setUserLocked(false); updateContentHeight(); notifyHeightChangeListener(row); return; } row.setUserExpanded(userExpanded, true /* allowChildrenExpansion */); row.onExpandedByGesture(userExpanded); } Loading Loading
packages/SystemUI/src/com/android/systemui/ExpandHelper.java +24 −12 Original line number Diff line number Diff line Loading @@ -326,7 +326,8 @@ public class ExpandHelper implements Gefingerpoken { case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (DEBUG) Log.d(TAG, "up/cancel"); finishExpanding(false, getCurrentVelocity()); finishExpanding(ev.getActionMasked() == MotionEvent.ACTION_CANCEL, getCurrentVelocity()); clearView(); break; } Loading Loading @@ -390,7 +391,8 @@ public class ExpandHelper implements Gefingerpoken { @Override public boolean onTouchEvent(MotionEvent ev) { if (!isEnabled()) { if (!isEnabled() && !mExpanding) { // In case we're expanding we still want to finish the current motion. return false; } trackVelocity(ev); Loading Loading @@ -485,7 +487,8 @@ public class ExpandHelper implements Gefingerpoken { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: if (DEBUG) Log.d(TAG, "up/cancel"); finishExpanding(false, getCurrentVelocity()); finishExpanding(!isEnabled() || ev.getActionMasked() == MotionEvent.ACTION_CANCEL, getCurrentVelocity()); clearView(); break; } Loading Loading @@ -526,28 +529,37 @@ public class ExpandHelper implements Gefingerpoken { return true; } private void finishExpanding(boolean force, float velocity) { /** * Finish the current expand motion * @param forceAbort whether the expansion should be forcefully aborted and returned to the old * state * @param velocity the velocity this was expanded/ collapsed with */ private void finishExpanding(boolean forceAbort, float velocity) { if (!mExpanding) return; if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView); float currentHeight = mScaler.getHeight(); float h = mScaler.getHeight(); final boolean wasClosed = (mOldHeight == mSmallSize); boolean nowExpanded; int naturalHeight = mScaler.getNaturalHeight(); if (!forceAbort) { if (wasClosed) { nowExpanded = (force || currentHeight > mOldHeight && velocity >= 0); nowExpanded = currentHeight > mOldHeight && velocity >= 0; } else { nowExpanded = !force && (currentHeight >= mOldHeight || velocity > 0); nowExpanded = currentHeight >= mOldHeight || velocity > 0; } nowExpanded |= mNaturalHeight == mSmallSize; } else { nowExpanded = !wasClosed; } if (mScaleAnimation.isRunning()) { mScaleAnimation.cancel(); } mCallback.expansionStateChanged(false); int naturalHeight = mScaler.getNaturalHeight(); float targetHeight = nowExpanded ? naturalHeight : mSmallSize; if (targetHeight != currentHeight) { if (targetHeight != currentHeight && mEnabled) { mScaleAnimation.setFloatValues(targetHeight); mScaleAnimation.setupStartValues(); final View scaledView = mResizedView; Loading Loading @@ -597,7 +609,7 @@ public class ExpandHelper implements Gefingerpoken { * Use this to abort any pending expansions in progress. */ public void cancel() { finishExpanding(true, 0f /* velocity */); finishExpanding(true /* forceAbort */, 0f /* velocity */); clearView(); // reset the gesture detector Loading
packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java +4 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,10 @@ public class DragDownHelper implements Gefingerpoken { return mCallback.getChildAtRawPosition(x, y); } public boolean isDraggingDown() { return mDraggingDown; } public interface DragDownCallback { /** Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −3 Original line number Diff line number Diff line Loading @@ -4692,7 +4692,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, /* Only ever called as a consequence of a lockscreen expansion gesture. */ @Override public boolean onDraggedDown(View startingChild, int dragLengthY) { if (hasActiveNotifications()) { if (hasActiveNotifications() && (!isDozing() || isPulsing())) { EventLogTags.writeSysuiLockscreenGesture( EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_FULL_SHADE, (int) (dragLengthY / mDisplayMetrics.density), Loading @@ -4706,8 +4706,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } return true; } else { // No notifications - abort gesture. // abort gesture. return false; } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +4 −7 Original line number Diff line number Diff line Loading @@ -285,13 +285,10 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { if (mService.isDozing() && !mService.isPulsing()) { // Discard all touch events in always-on. return true; } boolean handled = false; if (mService.getBarState() == StatusBarState.KEYGUARD) { boolean handled = mService.isDozing() && !mService.isPulsing(); if (mService.getBarState() == StatusBarState.KEYGUARD && (!handled || mDragDownHelper.isDraggingDown())) { // we still want to finish our drag down gesture when locking the screen handled = mDragDownHelper.onTouchEvent(ev); } if (!handled) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +13 −0 Original line number Diff line number Diff line Loading @@ -1064,6 +1064,19 @@ public class NotificationStackScrollLayout extends ViewGroup public void setUserExpandedChild(View v, boolean userExpanded) { if (v instanceof ExpandableNotificationRow) { ExpandableNotificationRow row = (ExpandableNotificationRow) v; if (userExpanded && onKeyguard()) { // Due to a race when locking the screen while touching, a notification may be // expanded even after we went back to keyguard. An example of this happens if // you click in the empty space while expanding a group. // We also need to un-user lock it here, since otherwise the content height // calculated might be wrong. We also can't invert the two calls since // un-userlocking it will trigger a layout switch in the content view. row.setUserLocked(false); updateContentHeight(); notifyHeightChangeListener(row); return; } row.setUserExpanded(userExpanded, true /* allowChildrenExpansion */); row.onExpandedByGesture(userExpanded); } Loading