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

Commit 8d718328 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes If0921a3d,I7cdd2a02 into main

* changes:
  [flexiglass] Adds burn-in to the Flexi ribbon
  BurnInState: removes domain layer dependency from UI layer code
parents 67e5e61c f83c0bd1
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -26,18 +26,16 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalDensity
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.plugins.clocks.ClockController
import kotlin.math.min
import kotlin.math.roundToInt

/** Produces a [BurnInState] that can be used to query the `LockscreenBurnInViewModel` flows. */
@Composable
fun rememberBurnIn(
    clockInteractor: KeyguardClockInteractor,
): BurnInState {
    val clock by clockInteractor.currentClock.collectAsStateWithLifecycle()
fun rememberBurnIn(clockViewModel: KeyguardClockViewModel): BurnInState {
    val clock by clockViewModel.currentClock.collectAsStateWithLifecycle()

    val (smartspaceTop, onSmartspaceTopChanged) = remember { mutableStateOf<Float?>(null) }
    val (smallClockTop, onSmallClockTopChanged) = remember { mutableStateOf<Float?>(null) }
@@ -62,18 +60,12 @@ fun rememberBurnIn(
}

@Composable
private fun rememberBurnInParameters(
    clock: ClockController?,
    topmostTop: Int,
): BurnInParameters {
private fun rememberBurnInParameters(clock: ClockController?, topmostTop: Int): BurnInParameters {
    val density = LocalDensity.current
    val topInset = WindowInsets.systemBars.union(WindowInsets.displayCutout).getTop(density)

    return remember(clock, topInset, topmostTop) {
        BurnInParameters(
            topInset = topInset,
            minViewY = topmostTop,
        )
        BurnInParameters(topInset = topInset, minViewY = topmostTop)
    }
}

+4 −4
Original line number Diff line number Diff line
@@ -38,11 +38,11 @@ import com.android.compose.animation.scene.ContentScope
import com.android.compose.modifiers.thenIf
import com.android.systemui.common.ui.ConfigurationState
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
import com.android.systemui.keyguard.ui.composable.modifier.burnInAware
import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.notifications.ui.composable.ConstrainedNotificationStack
@@ -89,7 +89,7 @@ constructor(
    private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
    private val aodPromotedNotificationViewModelFactory: AODPromotedNotificationViewModel.Factory,
    private val systemBarUtilsState: SystemBarUtilsState,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) {

    init {
@@ -118,7 +118,7 @@ constructor(

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

        AnimatedVisibility(
            visible = isVisible,
@@ -141,7 +141,7 @@ constructor(
                isVisible.stopAnimating()
            }
        }
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        AnimatedVisibility(
            visibleState = transitionState,
            enter = fadeIn(),
+4 −5
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.rememberMutableSceneTransitionLayoutState
import com.android.compose.modifiers.thenIf
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.largeClockScene
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.smallClockScene
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.splitShadeLargeClockScene
@@ -56,7 +55,7 @@ constructor(
    private val mediaCarouselSection: MediaCarouselSection,
    private val clockSection: DefaultClockSection,
    private val weatherClockSection: WeatherClockSection,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) {
    @Composable
    fun ContentScope.DefaultClockLayout(
@@ -138,7 +137,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        modifier: Modifier = Modifier,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)

        Column(modifier = modifier) {
            with(clockSection) {
@@ -163,7 +162,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        shouldOffSetClockToOneHalf: Boolean = false,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        val isLargeClockVisible by clockViewModel.isLargeClockVisible.collectAsStateWithLifecycle()

        LaunchedEffect(isLargeClockVisible) {
@@ -204,7 +203,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        modifier: Modifier = Modifier,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        val isLargeClockVisible by clockViewModel.isLargeClockVisible.collectAsStateWithLifecycle()
        val currentClockState = clockViewModel.currentClock.collectAsStateWithLifecycle()

+3 −3
Original line number Diff line number Diff line
@@ -30,9 +30,9 @@ import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
import com.android.systemui.keyguard.ui.composable.section.DefaultClockSection
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.notifications.ui.viewmodel.NotificationsShadeOverlayActionsViewModel
import com.android.systemui.notifications.ui.viewmodel.NotificationsShadeOverlayContentViewModel
@@ -57,7 +57,7 @@ constructor(
    private val shadeSession: SaveableSession,
    private val stackScrollView: Lazy<NotificationScrollView>,
    private val clockSection: DefaultClockSection,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) : Overlay {
    override val key = Overlays.NotificationsShade

@@ -105,7 +105,7 @@ constructor(
            Box {
                Column {
                    if (viewModel.showClock) {
                        val burnIn = rememberBurnIn(clockInteractor)
                        val burnIn = rememberBurnIn(keyguardClockViewModel)

                        with(clockSection) {
                            SmallClock(
+8 −1
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.observableTransitionState
import com.android.compose.animation.scene.rememberMutableSceneTransitionLayoutState
import com.android.compose.gesture.effect.rememberOffsetOverscrollEffectFactory
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
import com.android.systemui.keyguard.ui.composable.modifier.burnInAware
import com.android.systemui.lifecycle.rememberActivated
import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.qs.ui.composable.QuickSettingsTheme
@@ -239,7 +241,12 @@ fun SceneContainer(
        BottomRightCornerRibbon(
            content = { Text(text = "flexi\uD83E\uDD43", color = Color.White) },
            colorSaturation = { viewModel.ribbonColorSaturation },
            modifier = Modifier.align(Alignment.BottomEnd),
            modifier =
                Modifier.align(Alignment.BottomEnd)
                    .burnInAware(
                        viewModel = viewModel.burnIn,
                        params = rememberBurnIn(viewModel.clock).parameters,
                    ),
        )
    }
}
Loading