Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17dc0659 authored by Matt Pietal's avatar Matt Pietal
Browse files

NSSL: Smooth transition from shade->lockscreen

The current animation is rather abrupt. Have it fade in with the rest
of lockscreen.

Also, remove flatmaps from bounds and max notification
calculations. This was causing a slight delay in updating those
values. Use a straightforward combine instead.

To ensure a smooth transition, make sure the legacy finger tracking
stops properly.

Fixes: 310993802
Test: atest SharedNotificationContainerViewModelTest
Flag: ACONFIG com.android.systemui.keyguard_shade_migration_nssl
DEVELOPMENT

Change-Id: Icff993a5622290f98ee699220a4010eb1fbba015
parent b499a105
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
@@ -39,6 +40,7 @@ import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificat
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationStackAppearanceViewModel
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher

/** Single column format for notifications (default for phones) */
class DefaultNotificationStackScrollLayoutSection
@@ -55,6 +57,7 @@ constructor(
    controller: NotificationStackScrollLayoutController,
    notificationStackSizeCalculator: NotificationStackSizeCalculator,
    private val smartspaceViewModel: KeyguardSmartspaceViewModel,
    @Main mainDispatcher: CoroutineDispatcher,
) :
    NotificationStackScrollLayoutSection(
        context,
@@ -66,6 +69,7 @@ constructor(
        ambientState,
        controller,
        notificationStackSizeCalculator,
        mainDispatcher,
    ) {
    override fun applyConstraints(constraintSet: ConstraintSet) {
        if (!KeyguardShadeMigrationNssl.isEnabled) {
+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.statusbar.notification.stack.ui.viewbinder.Notificat
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationStackAppearanceViewModel
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.DisposableHandle

abstract class NotificationStackScrollLayoutSection
@@ -48,6 +49,7 @@ constructor(
    private val ambientState: AmbientState,
    private val controller: NotificationStackScrollLayoutController,
    private val notificationStackSizeCalculator: NotificationStackSizeCalculator,
    private val mainDispatcher: CoroutineDispatcher,
) : KeyguardSection() {
    private val placeHolderId = R.id.nssl_placeholder
    private var disposableHandle: DisposableHandle? = null
@@ -79,6 +81,7 @@ constructor(
                sceneContainerFlags,
                controller,
                notificationStackSizeCalculator,
                mainDispatcher,
            )
        if (sceneContainerFlags.flexiNotifsEnabled()) {
            NotificationStackAppearanceViewBinder.bind(
+4 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
@@ -39,6 +40,7 @@ import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificat
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationStackAppearanceViewModel
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher

/** Large-screen format for notifications, shown as two columns on the device */
class SplitShadeNotificationStackScrollLayoutSection
@@ -55,6 +57,7 @@ constructor(
    controller: NotificationStackScrollLayoutController,
    notificationStackSizeCalculator: NotificationStackSizeCalculator,
    private val smartspaceViewModel: KeyguardSmartspaceViewModel,
    @Main mainDispatcher: CoroutineDispatcher,
) :
    NotificationStackScrollLayoutSection(
        context,
@@ -66,6 +69,7 @@ constructor(
        ambientState,
        controller,
        notificationStackSizeCalculator,
        mainDispatcher,
    ) {
    override fun applyConstraints(constraintSet: ConstraintSet) {
        if (!KeyguardShadeMigrationNssl.isEnabled) {
+10 −7
Original line number Diff line number Diff line
@@ -2677,6 +2677,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        if (mIsOcclusionTransitionRunning) {
            return;
        }

        if (!KeyguardShadeMigrationNssl.isEnabled()) {
            float alpha = 1f;
            if (mClosingWithAlphaFadeOut && !mExpandingFromHeadsUp
                && !mHeadsUpManager.hasPinnedHeadsUp()) {
@@ -2689,6 +2691,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
            }
            mNotificationStackScrollLayoutController.setMaxAlphaForExpansion(alpha);
        }
    }

    private float getFadeoutAlpha() {
        float alpha;
+7 −3
Original line number Diff line number Diff line
@@ -351,7 +351,6 @@ constructor(
        )
        nsslController.resetScrollPosition()
        nsslController.resetCheckSnoozeLeavebehind()
        shadeRepository.setLegacyLockscreenShadeTracking(false)
        setDragDownAmountAnimated(0f)
    }

@@ -378,7 +377,6 @@ constructor(
                cancel()
            }
        }
        shadeRepository.setLegacyLockscreenShadeTracking(true)
    }

    /** Do we need a falsing check currently? */
@@ -836,7 +834,12 @@ class DragDownHelper(
                    initialTouchX = x
                    dragDownCallback.onDragDownStarted(startingChild)
                    dragDownAmountOnStart = dragDownCallback.dragDownAmount
                    return startingChild != null || dragDownCallback.isDragDownAnywhereEnabled
                    val intercepted =
                        startingChild != null || dragDownCallback.isDragDownAnywhereEnabled
                    if (intercepted) {
                        shadeRepository.setLegacyLockscreenShadeTracking(true)
                    }
                    return intercepted
                }
            }
        }
@@ -964,6 +967,7 @@ class DragDownHelper(
        }
        isDraggingDown = false
        isTrackpadReverseScroll = false
        shadeRepository.setLegacyLockscreenShadeTracking(false)
        dragDownCallback.onDragDownReset()
    }

Loading