Loading packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ public abstract class AlertingNotificationManager implements NotificationLifetim mAlertEntries.put(entry.getKey(), alertEntry); onAlertEntryAdded(alertEntry); entry.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); entry.setIsAlerting(true); } /** Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java +9 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ public final class NotificationEntry extends ListEntry { @Nullable private Long mPendingAnimationDuration; private boolean mIsMarkedForUserTriggeredMovement; private boolean mShelfIconVisible; private boolean mIsAlerting; /** * @param sbn the StatusBarNotification from system server Loading Loading @@ -955,6 +956,14 @@ public final class NotificationEntry extends ListEntry { mIsMarkedForUserTriggeredMovement = marked; } public void setIsAlerting(boolean isAlerting) { mIsAlerting = isAlerting; } public boolean isAlerting() { return mIsAlerting; } /** Information about a suggestion that is being edited. */ public static class EditedSuggestionInfo { Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java +10 −9 Original line number Diff line number Diff line Loading @@ -81,17 +81,17 @@ public class AmbientState { private boolean mAppearing; private float mPulseHeight = MAX_PULSE_HEIGHT; private float mDozeAmount = 0.0f; private HeadsUpManager mHeadUpManager; private Runnable mOnPulseHeightChangedListener; private ExpandableNotificationRow mTrackedHeadsUpRow; private float mAppearFraction; /** Tracks the state from AlertingNotificationManager#hasNotifications() */ private boolean mHasAlertEntries; public AmbientState( Context context, @NonNull SectionProvider sectionProvider, HeadsUpManager headsUpManager) { @NonNull SectionProvider sectionProvider) { mSectionProvider = sectionProvider; mHeadUpManager = headsUpManager; reload(context); } Loading Loading @@ -393,7 +393,7 @@ public class AmbientState { } public boolean hasPulsingNotifications() { return mPulsing && mHeadUpManager != null && mHeadUpManager.hasNotifications(); return mPulsing && mHasAlertEntries; } public void setPulsing(boolean hasPulsing) { Loading @@ -408,10 +408,7 @@ public class AmbientState { } public boolean isPulsing(NotificationEntry entry) { if (!mPulsing || mHeadUpManager == null) { return false; } return mHeadUpManager.isAlerting(entry.getKey()); return mPulsing && entry.isAlerting(); } public boolean isPanelTracking() { Loading Loading @@ -568,4 +565,8 @@ public class AmbientState { public float getAppearFraction() { return mAppearFraction; } public void setHasAlertEntries(boolean hasAlertEntries) { mHasAlertEntries = hasAlertEntries; } } packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +20 −58 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ import com.android.systemui.Dumpable; import com.android.systemui.ExpandHelper; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper; import com.android.systemui.statusbar.CommandQueue; Loading @@ -102,7 +101,6 @@ import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.RemoteInputController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; Loading Loading @@ -132,7 +130,6 @@ import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationSnooze; import com.android.systemui.statusbar.notification.row.StackScrollerDecorView; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.HeadsUpTouchHelper; import com.android.systemui.statusbar.phone.LockscreenGestureLogger; import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent; Loading Loading @@ -340,13 +337,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private HashSet<ExpandableView> mClearTransientViewsWhenFinished = new HashSet<>(); private HashSet<Pair<ExpandableNotificationRow, Boolean>> mHeadsUpChangeAnimations = new HashSet<>(); private HeadsUpManagerPhone mHeadsUpManager; private final NotificationRoundnessManager mRoundnessManager; private boolean mTrackingHeadsUp; private ScrimController mScrimController; private boolean mForceNoOverlappingRendering; private final ArrayList<Pair<ExpandableNotificationRow, Boolean>> mTmpList = new ArrayList<>(); private FalsingManager mFalsingManager; private boolean mAnimationRunning; private ViewTreeObserver.OnPreDrawListener mRunningAnimationUpdater = new ViewTreeObserver.OnPreDrawListener() { Loading Loading @@ -513,6 +508,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private NotificationStackScrollLayoutController mController; private boolean mKeyguardMediaControllorVisible; private NotificationEntry mTopHeadsUpEntry; private long mNumHeadsUp; private final ExpandableView.OnHeightChangedListener mOnChildHeightChangedListener = new ExpandableView.OnHeightChangedListener() { Loading Loading @@ -562,8 +559,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable NotificationRoundnessManager notificationRoundnessManager, DynamicPrivacyController dynamicPrivacyController, SysuiStatusBarStateController statusbarStateController, HeadsUpManagerPhone headsUpManager, FalsingManager falsingManager, NotificationGutsManager notificationGutsManager, NotificationSectionsManager notificationSectionsManager, ForegroundServiceSectionController fgsSectionController, Loading @@ -580,9 +575,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mRoundnessManager = notificationRoundnessManager; mNotificationGutsManager = notificationGutsManager; mHeadsUpManager = headsUpManager; mHeadsUpManager.setAnimationStateHandler(this::setHeadsUpGoingAwayAnimationsAllowed); mFalsingManager = falsingManager; mFgsSectionController = fgsSectionController; mSectionsManager = notificationSectionsManager; Loading @@ -594,7 +586,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable }); mSections = mSectionsManager.createSectionsForBuckets(); mAmbientState = new AmbientState(context, mSectionsManager, mHeadsUpManager); mAmbientState = new AmbientState(context, mSectionsManager); mBgColor = context.getColor(R.color.notification_shade_background_color); int minHeight = res.getDimensionPixelSize(R.dimen.notification_min_height); int maxHeight = res.getDimensionPixelSize(R.dimen.notification_max_height); Loading Loading @@ -750,27 +742,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable return false; } @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public RemoteInputController.Delegate createDelegate() { return new RemoteInputController.Delegate() { public void setRemoteInputActive(NotificationEntry entry, boolean remoteInputActive) { mHeadsUpManager.setRemoteInputActive(entry, remoteInputActive); entry.notifyHeightChanged(true /* needsAnimation */); updateFooter(); } public void lockScrollTo(NotificationEntry entry) { NotificationStackScrollLayout.this.lockScrollTo(entry.getRow()); } public void requestDisallowLongPressAndDismiss() { requestDisallowLongPress(); requestDisallowDismiss(); } }; } @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public NotificationSwipeActionHelper getSwipeActionHelper() { return mSwipeHelper; Loading Loading @@ -1472,11 +1443,10 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable */ @ShadeViewRefactor(RefactorComponent.COORDINATOR) private int getTopHeadsUpPinnedHeight() { NotificationEntry topEntry = mHeadsUpManager.getTopEntry(); if (topEntry == null) { if (mTopHeadsUpEntry == null) { return 0; } ExpandableNotificationRow row = topEntry.getRow(); ExpandableNotificationRow row = mTopHeadsUpEntry.getRow(); if (row.isChildInGroup()) { final NotificationEntry groupSummary = mGroupManager.getGroupSummary(row.getEntry().getSbn()); Loading @@ -1497,7 +1467,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable int visibleNotifCount = getVisibleNotificationCount(); if (mEmptyShadeView.getVisibility() == GONE && visibleNotifCount > 0) { if (isHeadsUpTransition() || (mHeadsUpManager.hasPinnedHeadsUp() && !mAmbientState.isDozing())) { || (mInHeadsUpPinnedMode && !mAmbientState.isDozing())) { if (mShelf.getVisibility() != GONE && visibleNotifCount > 1) { appearPosition += mShelf.getIntrinsicHeight() + mPaddingBetweenElements; } Loading Loading @@ -1655,9 +1625,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable ExpandableNotificationRow row = (ExpandableNotificationRow) slidingChild; NotificationEntry entry = row.getEntry(); if (!mIsExpanded && row.isHeadsUp() && row.isPinned() && mHeadsUpManager.getTopEntry().getRow() != row && mTopHeadsUpEntry.getRow() != row && mGroupManager.getGroupSummary( mHeadsUpManager.getTopEntry().getSbn()) mTopHeadsUpEntry.getSbn()) != entry) { continue; } Loading Loading @@ -2285,7 +2255,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable // In current design, it only use the top HUN to treat all of HUNs // although there are more than one HUNs int contentHeight = mContentHeight; if (!isExpanded() && mHeadsUpManager.hasPinnedHeadsUp()) { if (!isExpanded() && mInHeadsUpPinnedMode) { contentHeight = mHeadsUpInset + getTopHeadsUpPinnedHeight(); } int scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight); Loading Loading @@ -2636,7 +2606,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable false /* shiftPulsingWithFirst */); minTopPosition = firstVisibleSection.getBounds().top; } boolean shiftPulsingWithFirst = mHeadsUpManager.getAllEntries().count() <= 1 boolean shiftPulsingWithFirst = mNumHeadsUp <= 1 && (mAmbientState.isDozing() || (mKeyguardBypassEnabledProvider.getBypassEnabled() && onKeyguard)); for (NotificationSection section : mSections) { Loading Loading @@ -3511,7 +3481,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable // Only animate if we still have pinned heads up, otherwise we just have the // regular collapse animation of the lock screen || (mKeyguardBypassEnabledProvider.getBypassEnabled() && onKeyguard() && mHeadsUpManager.hasPinnedHeadsUp()); && mInHeadsUpPinnedMode); if (performDisappearAnimation && !isHeadsUp) { type = row.wasJustClicked() ? AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR_CLICK Loading Loading @@ -5811,23 +5781,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mCurrentUserId = userId; } void onMenuShown(View row) { mSwipeHelper.onMenuShown(row); } void onMenuReset(View row) { View translatingParentView = mSwipeHelper.getTranslatingParentView(); if (translatingParentView != null && row == translatingParentView) { mSwipeHelper.clearExposedMenuView(); mSwipeHelper.clearTranslatingParentView(); if (row instanceof ExpandableNotificationRow) { mHeadsUpManager.setMenuShown( ((ExpandableNotificationRow) row).getEntry(), false); } } } void addSwipedOutView(View v) { mSwipedOutViews.add(v); } Loading @@ -5840,6 +5793,15 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mAmbientState.onDragFinished(view); } void setTopHeadsUpEntry(NotificationEntry topEntry) { mTopHeadsUpEntry = topEntry; } void setNumHeadsUp(long numHeadsUp) { mNumHeadsUp = numHeadsUp; mAmbientState.setHasAlertEntries(numHeadsUp > 0); } /** * A listener that is notified when the empty space below the notifications is clicked on */ Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +57 −8 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.tuner.TunerService; Loading Loading @@ -110,6 +111,7 @@ public class NotificationStackScrollLayoutController { private NotificationStackScrollLayout mView; private boolean mFadeNotificationsOnDismiss; private NotificationSwipeHelper mSwipeHelper; private final NotificationListContainerImpl mNotificationListContainer = new NotificationListContainerImpl(); Loading Loading @@ -217,7 +219,16 @@ public class NotificationStackScrollLayoutController { @Override public void onMenuReset(View row) { mView.onMenuReset(row); View translatingParentView = mSwipeHelper.getTranslatingParentView(); if (translatingParentView != null && row == translatingParentView) { mSwipeHelper.clearExposedMenuView(); mSwipeHelper.clearTranslatingParentView(); if (row instanceof ExpandableNotificationRow) { mHeadsUpManager.setMenuShown( ((ExpandableNotificationRow) row).getEntry(), false); } } } @Override Loading @@ -228,7 +239,7 @@ public class NotificationStackScrollLayoutController { .setCategory(MetricsEvent.ACTION_REVEAL_GEAR) .setType(MetricsEvent.TYPE_ACTION)); mHeadsUpManager.setMenuShown(notificationRow.getEntry(), true); mView.onMenuShown(row); mSwipeHelper.onMenuShown(row); mNotificationGutsManager.closeAndSaveGuts(true /* removeLeavebehind */, false /* force */, false /* removeControls */, -1 /* x */, -1 /* y */, false /* resetMenu */); Loading Loading @@ -438,7 +449,31 @@ public class NotificationStackScrollLayoutController { } }; private NotificationSwipeHelper mSwipeHelper; private final OnHeadsUpChangedListener mOnHeadsUpChangedListener = new OnHeadsUpChangedListener() { @Override public void onHeadsUpPinnedModeChanged(boolean inPinnedMode) { mView.setInHeadsUpPinnedMode(inPinnedMode); } @Override public void onHeadsUpPinned(NotificationEntry entry) { } @Override public void onHeadsUpUnPinned(NotificationEntry entry) { } @Override public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) { long numEntries = mHeadsUpManager.getAllEntries().count(); NotificationEntry topEntry = mHeadsUpManager.getTopEntry(); mView.setNumHeadsUp(numEntries); mView.setTopHeadsUpEntry(topEntry); } }; @Inject public NotificationStackScrollLayoutController( Loading Loading @@ -496,6 +531,8 @@ public class NotificationStackScrollLayoutController { mSwipeHelper); mHeadsUpManager.addListener(mNotificationRoundnessManager); // TODO: why is this here? mHeadsUpManager.addListener(mOnHeadsUpChangedListener); mHeadsUpManager.setAnimationStateHandler(mView::setHeadsUpGoingAwayAnimationsAllowed); mDynamicPrivacyController.addListener(mDynamicPrivacyControllerListener); mLockscreenUserManager.addUserChangedListener(mLockscreenUserChangeListener); Loading Loading @@ -910,7 +947,23 @@ public class NotificationStackScrollLayoutController { } public RemoteInputController.Delegate createDelegate() { return mView.createDelegate(); return new RemoteInputController.Delegate() { public void setRemoteInputActive(NotificationEntry entry, boolean remoteInputActive) { mHeadsUpManager.setRemoteInputActive(entry, remoteInputActive); entry.notifyHeightChanged(true /* needsAnimation */); updateFooter(); } public void lockScrollTo(NotificationEntry entry) { mView.lockScrollTo(entry.getRow()); } public void requestDisallowLongPressAndDismiss() { mView.requestDisallowLongPress(); mView.requestDisallowDismiss(); } }; } public void updateSectionBoundaries(String reason) { Loading Loading @@ -966,10 +1019,6 @@ public class NotificationStackScrollLayoutController { return mView.getFirstChildNotGone(); } public void setInHeadsUpPinnedMode(boolean inPinnedMode) { mView.setInHeadsUpPinnedMode(inPinnedMode); } public void generateHeadsUpAnimation(NotificationEntry entry, boolean isHeadsUp) { mView.generateHeadsUpAnimation(entry, isHeadsUp); } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ public abstract class AlertingNotificationManager implements NotificationLifetim mAlertEntries.put(entry.getKey(), alertEntry); onAlertEntryAdded(alertEntry); entry.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); entry.setIsAlerting(true); } /** Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java +9 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ public final class NotificationEntry extends ListEntry { @Nullable private Long mPendingAnimationDuration; private boolean mIsMarkedForUserTriggeredMovement; private boolean mShelfIconVisible; private boolean mIsAlerting; /** * @param sbn the StatusBarNotification from system server Loading Loading @@ -955,6 +956,14 @@ public final class NotificationEntry extends ListEntry { mIsMarkedForUserTriggeredMovement = marked; } public void setIsAlerting(boolean isAlerting) { mIsAlerting = isAlerting; } public boolean isAlerting() { return mIsAlerting; } /** Information about a suggestion that is being edited. */ public static class EditedSuggestionInfo { Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java +10 −9 Original line number Diff line number Diff line Loading @@ -81,17 +81,17 @@ public class AmbientState { private boolean mAppearing; private float mPulseHeight = MAX_PULSE_HEIGHT; private float mDozeAmount = 0.0f; private HeadsUpManager mHeadUpManager; private Runnable mOnPulseHeightChangedListener; private ExpandableNotificationRow mTrackedHeadsUpRow; private float mAppearFraction; /** Tracks the state from AlertingNotificationManager#hasNotifications() */ private boolean mHasAlertEntries; public AmbientState( Context context, @NonNull SectionProvider sectionProvider, HeadsUpManager headsUpManager) { @NonNull SectionProvider sectionProvider) { mSectionProvider = sectionProvider; mHeadUpManager = headsUpManager; reload(context); } Loading Loading @@ -393,7 +393,7 @@ public class AmbientState { } public boolean hasPulsingNotifications() { return mPulsing && mHeadUpManager != null && mHeadUpManager.hasNotifications(); return mPulsing && mHasAlertEntries; } public void setPulsing(boolean hasPulsing) { Loading @@ -408,10 +408,7 @@ public class AmbientState { } public boolean isPulsing(NotificationEntry entry) { if (!mPulsing || mHeadUpManager == null) { return false; } return mHeadUpManager.isAlerting(entry.getKey()); return mPulsing && entry.isAlerting(); } public boolean isPanelTracking() { Loading Loading @@ -568,4 +565,8 @@ public class AmbientState { public float getAppearFraction() { return mAppearFraction; } public void setHasAlertEntries(boolean hasAlertEntries) { mHasAlertEntries = hasAlertEntries; } }
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +20 −58 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ import com.android.systemui.Dumpable; import com.android.systemui.ExpandHelper; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper; import com.android.systemui.statusbar.CommandQueue; Loading @@ -102,7 +101,6 @@ import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.RemoteInputController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; Loading Loading @@ -132,7 +130,6 @@ import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationSnooze; import com.android.systemui.statusbar.notification.row.StackScrollerDecorView; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.HeadsUpTouchHelper; import com.android.systemui.statusbar.phone.LockscreenGestureLogger; import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent; Loading Loading @@ -340,13 +337,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private HashSet<ExpandableView> mClearTransientViewsWhenFinished = new HashSet<>(); private HashSet<Pair<ExpandableNotificationRow, Boolean>> mHeadsUpChangeAnimations = new HashSet<>(); private HeadsUpManagerPhone mHeadsUpManager; private final NotificationRoundnessManager mRoundnessManager; private boolean mTrackingHeadsUp; private ScrimController mScrimController; private boolean mForceNoOverlappingRendering; private final ArrayList<Pair<ExpandableNotificationRow, Boolean>> mTmpList = new ArrayList<>(); private FalsingManager mFalsingManager; private boolean mAnimationRunning; private ViewTreeObserver.OnPreDrawListener mRunningAnimationUpdater = new ViewTreeObserver.OnPreDrawListener() { Loading Loading @@ -513,6 +508,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private NotificationStackScrollLayoutController mController; private boolean mKeyguardMediaControllorVisible; private NotificationEntry mTopHeadsUpEntry; private long mNumHeadsUp; private final ExpandableView.OnHeightChangedListener mOnChildHeightChangedListener = new ExpandableView.OnHeightChangedListener() { Loading Loading @@ -562,8 +559,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable NotificationRoundnessManager notificationRoundnessManager, DynamicPrivacyController dynamicPrivacyController, SysuiStatusBarStateController statusbarStateController, HeadsUpManagerPhone headsUpManager, FalsingManager falsingManager, NotificationGutsManager notificationGutsManager, NotificationSectionsManager notificationSectionsManager, ForegroundServiceSectionController fgsSectionController, Loading @@ -580,9 +575,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mRoundnessManager = notificationRoundnessManager; mNotificationGutsManager = notificationGutsManager; mHeadsUpManager = headsUpManager; mHeadsUpManager.setAnimationStateHandler(this::setHeadsUpGoingAwayAnimationsAllowed); mFalsingManager = falsingManager; mFgsSectionController = fgsSectionController; mSectionsManager = notificationSectionsManager; Loading @@ -594,7 +586,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable }); mSections = mSectionsManager.createSectionsForBuckets(); mAmbientState = new AmbientState(context, mSectionsManager, mHeadsUpManager); mAmbientState = new AmbientState(context, mSectionsManager); mBgColor = context.getColor(R.color.notification_shade_background_color); int minHeight = res.getDimensionPixelSize(R.dimen.notification_min_height); int maxHeight = res.getDimensionPixelSize(R.dimen.notification_max_height); Loading Loading @@ -750,27 +742,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable return false; } @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public RemoteInputController.Delegate createDelegate() { return new RemoteInputController.Delegate() { public void setRemoteInputActive(NotificationEntry entry, boolean remoteInputActive) { mHeadsUpManager.setRemoteInputActive(entry, remoteInputActive); entry.notifyHeightChanged(true /* needsAnimation */); updateFooter(); } public void lockScrollTo(NotificationEntry entry) { NotificationStackScrollLayout.this.lockScrollTo(entry.getRow()); } public void requestDisallowLongPressAndDismiss() { requestDisallowLongPress(); requestDisallowDismiss(); } }; } @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public NotificationSwipeActionHelper getSwipeActionHelper() { return mSwipeHelper; Loading Loading @@ -1472,11 +1443,10 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable */ @ShadeViewRefactor(RefactorComponent.COORDINATOR) private int getTopHeadsUpPinnedHeight() { NotificationEntry topEntry = mHeadsUpManager.getTopEntry(); if (topEntry == null) { if (mTopHeadsUpEntry == null) { return 0; } ExpandableNotificationRow row = topEntry.getRow(); ExpandableNotificationRow row = mTopHeadsUpEntry.getRow(); if (row.isChildInGroup()) { final NotificationEntry groupSummary = mGroupManager.getGroupSummary(row.getEntry().getSbn()); Loading @@ -1497,7 +1467,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable int visibleNotifCount = getVisibleNotificationCount(); if (mEmptyShadeView.getVisibility() == GONE && visibleNotifCount > 0) { if (isHeadsUpTransition() || (mHeadsUpManager.hasPinnedHeadsUp() && !mAmbientState.isDozing())) { || (mInHeadsUpPinnedMode && !mAmbientState.isDozing())) { if (mShelf.getVisibility() != GONE && visibleNotifCount > 1) { appearPosition += mShelf.getIntrinsicHeight() + mPaddingBetweenElements; } Loading Loading @@ -1655,9 +1625,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable ExpandableNotificationRow row = (ExpandableNotificationRow) slidingChild; NotificationEntry entry = row.getEntry(); if (!mIsExpanded && row.isHeadsUp() && row.isPinned() && mHeadsUpManager.getTopEntry().getRow() != row && mTopHeadsUpEntry.getRow() != row && mGroupManager.getGroupSummary( mHeadsUpManager.getTopEntry().getSbn()) mTopHeadsUpEntry.getSbn()) != entry) { continue; } Loading Loading @@ -2285,7 +2255,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable // In current design, it only use the top HUN to treat all of HUNs // although there are more than one HUNs int contentHeight = mContentHeight; if (!isExpanded() && mHeadsUpManager.hasPinnedHeadsUp()) { if (!isExpanded() && mInHeadsUpPinnedMode) { contentHeight = mHeadsUpInset + getTopHeadsUpPinnedHeight(); } int scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight); Loading Loading @@ -2636,7 +2606,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable false /* shiftPulsingWithFirst */); minTopPosition = firstVisibleSection.getBounds().top; } boolean shiftPulsingWithFirst = mHeadsUpManager.getAllEntries().count() <= 1 boolean shiftPulsingWithFirst = mNumHeadsUp <= 1 && (mAmbientState.isDozing() || (mKeyguardBypassEnabledProvider.getBypassEnabled() && onKeyguard)); for (NotificationSection section : mSections) { Loading Loading @@ -3511,7 +3481,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable // Only animate if we still have pinned heads up, otherwise we just have the // regular collapse animation of the lock screen || (mKeyguardBypassEnabledProvider.getBypassEnabled() && onKeyguard() && mHeadsUpManager.hasPinnedHeadsUp()); && mInHeadsUpPinnedMode); if (performDisappearAnimation && !isHeadsUp) { type = row.wasJustClicked() ? AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR_CLICK Loading Loading @@ -5811,23 +5781,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mCurrentUserId = userId; } void onMenuShown(View row) { mSwipeHelper.onMenuShown(row); } void onMenuReset(View row) { View translatingParentView = mSwipeHelper.getTranslatingParentView(); if (translatingParentView != null && row == translatingParentView) { mSwipeHelper.clearExposedMenuView(); mSwipeHelper.clearTranslatingParentView(); if (row instanceof ExpandableNotificationRow) { mHeadsUpManager.setMenuShown( ((ExpandableNotificationRow) row).getEntry(), false); } } } void addSwipedOutView(View v) { mSwipedOutViews.add(v); } Loading @@ -5840,6 +5793,15 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mAmbientState.onDragFinished(view); } void setTopHeadsUpEntry(NotificationEntry topEntry) { mTopHeadsUpEntry = topEntry; } void setNumHeadsUp(long numHeadsUp) { mNumHeadsUp = numHeadsUp; mAmbientState.setHasAlertEntries(numHeadsUp > 0); } /** * A listener that is notified when the empty space below the notifications is clicked on */ Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +57 −8 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.tuner.TunerService; Loading Loading @@ -110,6 +111,7 @@ public class NotificationStackScrollLayoutController { private NotificationStackScrollLayout mView; private boolean mFadeNotificationsOnDismiss; private NotificationSwipeHelper mSwipeHelper; private final NotificationListContainerImpl mNotificationListContainer = new NotificationListContainerImpl(); Loading Loading @@ -217,7 +219,16 @@ public class NotificationStackScrollLayoutController { @Override public void onMenuReset(View row) { mView.onMenuReset(row); View translatingParentView = mSwipeHelper.getTranslatingParentView(); if (translatingParentView != null && row == translatingParentView) { mSwipeHelper.clearExposedMenuView(); mSwipeHelper.clearTranslatingParentView(); if (row instanceof ExpandableNotificationRow) { mHeadsUpManager.setMenuShown( ((ExpandableNotificationRow) row).getEntry(), false); } } } @Override Loading @@ -228,7 +239,7 @@ public class NotificationStackScrollLayoutController { .setCategory(MetricsEvent.ACTION_REVEAL_GEAR) .setType(MetricsEvent.TYPE_ACTION)); mHeadsUpManager.setMenuShown(notificationRow.getEntry(), true); mView.onMenuShown(row); mSwipeHelper.onMenuShown(row); mNotificationGutsManager.closeAndSaveGuts(true /* removeLeavebehind */, false /* force */, false /* removeControls */, -1 /* x */, -1 /* y */, false /* resetMenu */); Loading Loading @@ -438,7 +449,31 @@ public class NotificationStackScrollLayoutController { } }; private NotificationSwipeHelper mSwipeHelper; private final OnHeadsUpChangedListener mOnHeadsUpChangedListener = new OnHeadsUpChangedListener() { @Override public void onHeadsUpPinnedModeChanged(boolean inPinnedMode) { mView.setInHeadsUpPinnedMode(inPinnedMode); } @Override public void onHeadsUpPinned(NotificationEntry entry) { } @Override public void onHeadsUpUnPinned(NotificationEntry entry) { } @Override public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) { long numEntries = mHeadsUpManager.getAllEntries().count(); NotificationEntry topEntry = mHeadsUpManager.getTopEntry(); mView.setNumHeadsUp(numEntries); mView.setTopHeadsUpEntry(topEntry); } }; @Inject public NotificationStackScrollLayoutController( Loading Loading @@ -496,6 +531,8 @@ public class NotificationStackScrollLayoutController { mSwipeHelper); mHeadsUpManager.addListener(mNotificationRoundnessManager); // TODO: why is this here? mHeadsUpManager.addListener(mOnHeadsUpChangedListener); mHeadsUpManager.setAnimationStateHandler(mView::setHeadsUpGoingAwayAnimationsAllowed); mDynamicPrivacyController.addListener(mDynamicPrivacyControllerListener); mLockscreenUserManager.addUserChangedListener(mLockscreenUserChangeListener); Loading Loading @@ -910,7 +947,23 @@ public class NotificationStackScrollLayoutController { } public RemoteInputController.Delegate createDelegate() { return mView.createDelegate(); return new RemoteInputController.Delegate() { public void setRemoteInputActive(NotificationEntry entry, boolean remoteInputActive) { mHeadsUpManager.setRemoteInputActive(entry, remoteInputActive); entry.notifyHeightChanged(true /* needsAnimation */); updateFooter(); } public void lockScrollTo(NotificationEntry entry) { mView.lockScrollTo(entry.getRow()); } public void requestDisallowLongPressAndDismiss() { mView.requestDisallowLongPress(); mView.requestDisallowDismiss(); } }; } public void updateSectionBoundaries(String reason) { Loading Loading @@ -966,10 +1019,6 @@ public class NotificationStackScrollLayoutController { return mView.getFirstChildNotGone(); } public void setInHeadsUpPinnedMode(boolean inPinnedMode) { mView.setInHeadsUpPinnedMode(inPinnedMode); } public void generateHeadsUpAnimation(NotificationEntry entry, boolean isHeadsUp) { mView.generateHeadsUpAnimation(entry, isHeadsUp); } Loading