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

Commit 999c2c6b authored by Aaron Liu's avatar Aaron Liu
Browse files

Hook up compose for keyguard.

Adds some fixes for compose in keyguard.

Hooks up keyguard written in compose to replace ConstraintLayout. It is
behind a DEVELOPMENT flag

Fixes:
Added burn in parameters to small clock so that it translates properly
in AOD. Burn in alpha is stuck between 0f and 1f. Ensures that alpha is
1f when it finishes.

Add bottom padding for smartspace so NSSL has some space below
smartspace.

Bug: 301968149
Test: Ensure all views exist in KeyguardRootView. View lockscreen with
flag on.
Flag: ACONFIG com.android.systemui.enable_keyguard_compose DEVELOPMENT

Change-Id: I39991a96998ec8ae0cd534c4fc83d9701cd04241
parent e51a5d31
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import com.android.systemui.bouncer.ui.viewmodel.BouncerViewModel
import com.android.systemui.communal.ui.viewmodel.BaseCommunalViewModel
import com.android.systemui.communal.widgets.WidgetConfigurator
import com.android.systemui.keyboard.stickykeys.ui.viewmodel.StickyKeysIndicatorViewModel
import com.android.systemui.keyguard.shared.model.LockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
import com.android.systemui.people.ui.viewmodel.PeopleViewModel
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.scene.shared.model.Scene
@@ -114,6 +116,12 @@ object ComposeFacade : BaseComposeFacade {
        dialogFactory: BouncerDialogFactory,
    ): View = throwComposeUnavailableError()

    override fun createLockscreen(
        context: Context,
        viewModel: LockscreenContentViewModel,
        blueprints: Set<@JvmSuppressWildcards LockscreenSceneBlueprint>,
    ): View = throwComposeUnavailableError()

    private fun throwComposeUnavailableError(): Nothing {
        error(
            "Compose is not available. Make sure to check isComposeAvailable() before calling any" +
+11 −1
Original line number Diff line number Diff line
@@ -16,6 +16,16 @@

package com.android.systemui.scene

import com.android.systemui.keyguard.shared.model.LockscreenSceneBlueprint
import dagger.Module
import dagger.Provides

@Module interface LockscreenSceneModule
@Module
interface LockscreenSceneModule {
    companion object {
        @Provides
        fun providesLockscreenBlueprints(): Set<LockscreenSceneBlueprint> {
            return emptySet()
        }
    }
}
+21 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.view.View
import android.view.WindowInsets
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@@ -41,6 +43,10 @@ import com.android.systemui.communal.ui.viewmodel.BaseCommunalViewModel
import com.android.systemui.communal.widgets.WidgetConfigurator
import com.android.systemui.keyboard.stickykeys.ui.view.StickyKeysIndicator
import com.android.systemui.keyboard.stickykeys.ui.viewmodel.StickyKeysIndicatorViewModel
import com.android.systemui.keyguard.shared.model.LockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.composable.LockscreenContent
import com.android.systemui.keyguard.ui.composable.blueprint.ComposableLockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
import com.android.systemui.people.ui.compose.PeopleScreen
import com.android.systemui.people.ui.viewmodel.PeopleViewModel
import com.android.systemui.qs.footer.ui.compose.FooterActions
@@ -214,4 +220,19 @@ object ComposeFacade : BaseComposeFacade {
            setContent { PlatformTheme { BouncerContent(viewModel, dialogFactory) } }
        }
    }

    override fun createLockscreen(
        context: Context,
        viewModel: LockscreenContentViewModel,
        blueprints: Set<@JvmSuppressWildcards LockscreenSceneBlueprint>,
    ): View {
        val sceneBlueprints =
            blueprints.mapNotNull { it as? ComposableLockscreenSceneBlueprint }.toSet()
        return ComposeView(context).apply {
            setContent {
                LockscreenContent(viewModel = viewModel, blueprints = sceneBlueprints)
                    .Content(modifier = Modifier.fillMaxSize())
            }
        }
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@ import android.view.View
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.KeyguardViewConfigurator
import com.android.systemui.keyguard.qualifiers.KeyguardRootView
import com.android.systemui.keyguard.shared.model.LockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.composable.LockscreenScene
import com.android.systemui.keyguard.ui.composable.LockscreenSceneBlueprintModule
import com.android.systemui.keyguard.ui.composable.blueprint.ComposableLockscreenSceneBlueprint
import com.android.systemui.scene.shared.model.Scene
import dagger.Binds
import dagger.Module
@@ -51,5 +53,12 @@ interface LockscreenSceneModule {
        ): () -> View {
            return { configurator.get().getKeyguardRootView() }
        }

        @Provides
        fun providesLockscreenBlueprints(
            blueprints: Set<@JvmSuppressWildcards ComposableLockscreenSceneBlueprint>
        ): Set<LockscreenSceneBlueprint> {
            return blueprints
        }
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import androidx.compose.ui.Modifier
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.SceneTransitionLayout
import com.android.compose.animation.scene.transitions
import com.android.systemui.keyguard.ui.composable.blueprint.LockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.composable.blueprint.ComposableLockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
import javax.inject.Inject

@@ -39,10 +39,10 @@ class LockscreenContent
@Inject
constructor(
    private val viewModel: LockscreenContentViewModel,
    private val blueprints: Set<@JvmSuppressWildcards LockscreenSceneBlueprint>,
    private val blueprints: Set<@JvmSuppressWildcards ComposableLockscreenSceneBlueprint>,
) {

    private val sceneKeyByBlueprint: Map<LockscreenSceneBlueprint, SceneKey> by lazy {
    private val sceneKeyByBlueprint: Map<ComposableLockscreenSceneBlueprint, SceneKey> by lazy {
        blueprints.associateWith { blueprint -> SceneKey(blueprint.id) }
    }
    private val sceneKeyByBlueprintId: Map<String, SceneKey> by lazy {
Loading