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

Commit 26e656a3 authored by Julia Tuttle's avatar Julia Tuttle Committed by Android (Google) Code Review
Browse files

Merge "Fade AOD RON in on AOD and out otherwise" into main

parents 77cf181a ad4536ec
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import com.android.systemui.keyguard.ui.composable.section.StatusBarSection
import com.android.systemui.keyguard.ui.composable.section.TopAreaSection
import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod
import java.util.Optional
import javax.inject.Inject
import kotlin.math.roundToInt
@@ -130,9 +129,7 @@ constructor(
                            if (!isShadeLayoutWide && !isBypassEnabled) {
                                Box(modifier = Modifier.weight(weight = 1f)) {
                                    Column(Modifier.align(alignment = Alignment.TopStart)) {
                                        if (PromotedNotificationUiAod.isEnabled) {
                                            AodPromotedNotification()
                                        }
                                        AodPromotedNotificationArea()
                                        AodNotificationIcons(
                                            modifier = Modifier.padding(start = aodIconPadding)
                                        )
@@ -145,9 +142,7 @@ constructor(
                                }
                            } else {
                                Column {
                                    if (PromotedNotificationUiAod.isEnabled) {
                                        AodPromotedNotification()
                                    }
                                    AodPromotedNotificationArea()
                                    AodNotificationIcons(
                                        modifier = Modifier.padding(start = aodIconPadding)
                                    )
+18 −2
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import com.android.systemui.statusbar.notification.icon.ui.viewbinder.Notificati
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker
import com.android.systemui.statusbar.notification.icon.ui.viewmodel.NotificationIconContainerAlwaysOnDisplayViewModel
import com.android.systemui.statusbar.notification.promoted.AODPromotedNotification
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod
import com.android.systemui.statusbar.notification.promoted.ui.viewmodel.AODPromotedNotificationViewModel
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView
@@ -110,9 +111,24 @@ constructor(
    }

    @Composable
    fun AodPromotedNotification() {
    fun AodPromotedNotificationArea(modifier: Modifier = Modifier) {
        if (!PromotedNotificationUiAod.isEnabled) {
            return
        }

        val isVisible by
            keyguardRootViewModel.isAodPromotedNotifVisible.collectAsStateWithLifecycle()
        val burnIn = rememberBurnIn(clockInteractor)

        AnimatedVisibility(
            visible = isVisible,
            enter = fadeIn(),
            exit = fadeOut(),
            modifier = modifier.burnInAware(aodBurnInViewModel, burnIn.parameters),
        ) {
            AODPromotedNotification(aodPromotedNotificationViewModelFactory)
        }
    }

    @Composable
    fun AodNotificationIcons(modifier: Modifier = Modifier) {
+16 −10
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
@@ -184,6 +185,7 @@ object KeyguardRootViewBinder {
                        viewModel.translationY.collect { y ->
                            childViews[burnInLayerId]?.translationY = y
                            childViews[largeClockId]?.translationY = y
                            childViews[aodPromotedNotificationId]?.translationY = y
                            childViews[aodNotificationIconContainerId]?.translationY = y
                        }
                    }
@@ -195,6 +197,7 @@ object KeyguardRootViewBinder {
                                state.isToOrFrom(KeyguardState.AOD) -> {
                                    // Large Clock is not translated in the x direction
                                    childViews[burnInLayerId]?.translationX = px
                                    childViews[aodPromotedNotificationId]?.translationX = px
                                    childViews[aodNotificationIconContainerId]?.translationX = px
                                }
                                state.isToOrFrom(KeyguardState.GLANCEABLE_HUB) -> {
@@ -291,11 +294,17 @@ object KeyguardRootViewBinder {
                                blueprintViewModel.refreshBlueprint()
                            }
                            childViews[aodNotificationIconContainerId]
                                ?.setAodNotifIconContainerIsVisible(
                                    isVisible,
                                    iconsAppearTranslationPx.value,
                                    screenOffAnimationController,
                                )
                                ?.setAodNotifIconContainerIsVisible(isVisible)
                        }
                    }

                    launch {
                        viewModel.isNotifIconContainerVisible.collect { isVisible ->
                            if (isVisible.value) {
                                blueprintViewModel.refreshBlueprint()
                            }
                            childViews[aodPromotedNotificationId]
                                ?.setAodNotifIconContainerIsVisible(isVisible)
                        }
                    }

@@ -524,11 +533,7 @@ object KeyguardRootViewBinder {
        }
    }

    private fun View.setAodNotifIconContainerIsVisible(
        isVisible: AnimatedValue<Boolean>,
        iconsAppearTranslationPx: Int,
        screenOffAnimationController: ScreenOffAnimationController,
    ) {
    private fun View.setAodNotifIconContainerIsVisible(isVisible: AnimatedValue<Boolean>) {
        animate().cancel()
        val animatorListener =
            object : AnimatorListenerAdapter() {
@@ -563,6 +568,7 @@ object KeyguardRootViewBinder {
    }

    private val burnInLayerId = R.id.burn_in_layer
    private val aodPromotedNotificationId = AodPromotedNotificationSection.viewId
    private val aodNotificationIconContainerId = R.id.aod_notification_icon_container
    private val largeClockId = customR.id.lockscreen_clock_view_large
    private val smallClockId = customR.id.lockscreen_clock_view
+10 −0
Original line number Diff line number Diff line
@@ -307,6 +307,16 @@ constructor(
            BurnInScaleViewModel(scale = it.scale, scaleClockOnly = it.scaleClockOnly)
        }

    val isAodPromotedNotifVisible: StateFlow<Boolean> =
        keyguardTransitionInteractor
            .transitionValue(AOD)
            .map { it == 1f }
            .stateIn(
                scope = applicationScope,
                started = SharingStarted.WhileSubscribed(),
                initialValue = false,
            )

    /** Is the notification icon container visible? */
    val isNotifIconContainerVisible: StateFlow<AnimatedValue<Boolean>> =
        combine(