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

Commit b998c752 authored by Beverly's avatar Beverly
Browse files

Setup initial device entry alpha based on curr keyguard state

Also add support for OFF => LOCKSCREEN transition.

Test: atest LockscreenNotificationsOverlapWithLockIcon
Fixes: 338476824
Flag: ACONFIG com.android.systemui.device_entry_udfps_refactor NEXTFOOD
Change-Id: Ic6bcaf2fed210378df6f9a5123583321c52ebb1c
parent 929ab9fd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransition
import com.android.systemui.keyguard.ui.viewmodel.LockscreenToPrimaryBouncerTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.OccludedToAodTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.OccludedToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.OffToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToAodTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToDozingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToLockscreenTransitionViewModel
@@ -194,6 +195,12 @@ abstract class DeviceEntryIconTransitionModule {
        impl: OccludedToLockscreenTransitionViewModel
    ): DeviceEntryIconTransition

    @Binds
    @IntoSet
    abstract fun offToLockscreen(
        impl: OffToLockscreenTransitionViewModel
    ): DeviceEntryIconTransition

    @Binds
    @IntoSet
    abstract fun primaryBouncerToAod(
+34 −12
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ constructor(
            .map { it.deviceEntryParentViewAlpha }
            .merge()
            .shareIn(scope, SharingStarted.WhileSubscribed())
            .onStart { emit(initialAlphaFromKeyguardState(transitionInteractor.getCurrentState())) }
    private val alphaMultiplierFromShadeExpansion: Flow<Float> =
        combine(
                showingAlternateBouncer,
@@ -97,6 +98,7 @@ constructor(
                    (1f - shadeExpansion) * (1f - interpolatedQsProgress)
                }
            }
            .onStart { emit(1f) }
    // Burn-in offsets in AOD
    private val nonAnimatedBurnInOffsets: Flow<BurnInOffsets> =
        combine(
@@ -122,14 +124,34 @@ constructor(
            )
        }

    val deviceEntryViewAlpha: StateFlow<Float> =
    val deviceEntryViewAlpha: Flow<Float> =
        combine(
                transitionAlpha,
                alphaMultiplierFromShadeExpansion,
            ) { alpha, alphaMultiplier ->
                alpha * alphaMultiplier
            }
            .stateIn(scope = scope, started = SharingStarted.WhileSubscribed(), initialValue = 0f)
            .stateIn(
                scope = scope,
                started = SharingStarted.WhileSubscribed(),
                initialValue = 0f,
            )

    private fun initialAlphaFromKeyguardState(keyguardState: KeyguardState): Float {
        return when (keyguardState) {
            KeyguardState.OFF,
            KeyguardState.PRIMARY_BOUNCER,
            KeyguardState.DOZING,
            KeyguardState.DREAMING,
            KeyguardState.GLANCEABLE_HUB,
            KeyguardState.GONE,
            KeyguardState.OCCLUDED,
            KeyguardState.DREAMING_LOCKSCREEN_HOSTED, -> 0f
            KeyguardState.AOD,
            KeyguardState.ALTERNATE_BOUNCER,
            KeyguardState.LOCKSCREEN -> 1f
        }
    }
    val useBackgroundProtection: StateFlow<Boolean> = isUdfpsSupported
    val burnInOffsets: Flow<BurnInOffsets> =
        deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled
+5 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.viewmodel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.Flow
@@ -28,7 +29,7 @@ class OffToLockscreenTransitionViewModel
@Inject
constructor(
    animationFlow: KeyguardTransitionAnimationFlow,
) {
) : DeviceEntryIconTransition {

    private val transitionAnimation =
        animationFlow.setup(
@@ -43,4 +44,7 @@ constructor(
            onStep = { it },
            onCancel = { 0f },
        )

    override val deviceEntryParentViewAlpha: Flow<Float> =
        transitionAnimation.immediatelyTransitionTo(1f)
}