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

Commit 54a63492 authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Android (Google) Code Review
Browse files

Merge "[flexiglass] Removes support for multiple containers." into udc-qpr-dev

parents 5a6ee010 564f233d
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -17,12 +17,10 @@
package com.android.systemui.scene.ui.composable

import com.android.systemui.scene.shared.model.Scene
import com.android.systemui.scene.shared.model.SceneContainerNames
import dagger.Module
import dagger.multibindings.Multibinds
import javax.inject.Named

@Module
interface SceneModule {
    @Multibinds @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) fun scenes(): Set<Scene>
    @Multibinds fun scenes(): Set<Scene>
}
+13 −78
Original line number Diff line number Diff line
@@ -16,35 +16,29 @@

package com.android.systemui.scene.ui.composable

import android.app.AlertDialog
import android.content.Context
import com.android.systemui.bouncer.ui.composable.BouncerScene
import com.android.systemui.bouncer.ui.viewmodel.BouncerViewModel
import com.android.systemui.bouncer.ui.composable.BouncerSceneDialogFactory
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.ui.composable.LockscreenScene
import com.android.systemui.keyguard.ui.viewmodel.LockscreenSceneViewModel
import com.android.systemui.qs.ui.composable.QuickSettingsScene
import com.android.systemui.qs.ui.viewmodel.QuickSettingsSceneViewModel
import com.android.systemui.scene.shared.model.Scene
import com.android.systemui.scene.shared.model.SceneContainerNames
import com.android.systemui.shade.ui.composable.ShadeScene
import com.android.systemui.shade.ui.viewmodel.ShadeSceneViewModel
import com.android.systemui.statusbar.phone.SystemUIDialog
import dagger.Module
import dagger.Provides
import javax.inject.Named
import kotlinx.coroutines.CoroutineScope

@Module
object SceneModule {
    @Provides
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun scenes(
        @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) bouncer: BouncerScene,
        @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) gone: GoneScene,
        @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) lockScreen: LockscreenScene,
        @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) qs: QuickSettingsScene,
        @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) shade: ShadeScene,
        bouncer: BouncerScene,
        gone: GoneScene,
        lockScreen: LockscreenScene,
        qs: QuickSettingsScene,
        shade: ShadeScene,
    ): Set<Scene> {
        return setOf(
            bouncer,
@@ -57,70 +51,11 @@ object SceneModule {

    @Provides
    @SysUISingleton
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun bouncerScene(
        @Application context: Context,
        viewModelFactory: BouncerViewModel.Factory,
    ): BouncerScene {
        return BouncerScene(
            viewModel =
                viewModelFactory.create(
                    containerName = SceneContainerNames.SYSTEM_UI_DEFAULT,
                ),
            dialogFactory = { SystemUIDialog(context) },
        )
    }

    @Provides
    @SysUISingleton
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun goneScene(): GoneScene {
        return GoneScene()
    }

    @Provides
    @SysUISingleton
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun lockscreenScene(
        @Application applicationScope: CoroutineScope,
        viewModelFactory: LockscreenSceneViewModel.Factory,
    ): LockscreenScene {
        return LockscreenScene(
            applicationScope = applicationScope,
            viewModel =
                viewModelFactory.create(
                    containerName = SceneContainerNames.SYSTEM_UI_DEFAULT,
                ),
        )
    fun bouncerSceneDialogFactory(@Application context: Context): BouncerSceneDialogFactory {
        return object : BouncerSceneDialogFactory {
            override fun invoke(): AlertDialog {
                return SystemUIDialog(context)
            }

    @Provides
    @SysUISingleton
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun quickSettingsScene(
        viewModelFactory: QuickSettingsSceneViewModel.Factory,
    ): QuickSettingsScene {
        return QuickSettingsScene(
            viewModel =
                viewModelFactory.create(
                    containerName = SceneContainerNames.SYSTEM_UI_DEFAULT,
                ),
        )
        }

    @Provides
    @SysUISingleton
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun shadeScene(
        @Application applicationScope: CoroutineScope,
        viewModelFactory: ShadeSceneViewModel.Factory,
    ): ShadeScene {
        return ShadeScene(
            applicationScope = applicationScope,
            viewModel =
                viewModelFactory.create(
                    containerName = SceneContainerNames.SYSTEM_UI_DEFAULT,
                ),
        )
    }
}
+13 −7
Original line number Diff line number Diff line
@@ -52,24 +52,27 @@ import com.android.systemui.bouncer.ui.viewmodel.BouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.PasswordBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.PatternBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.PinBouncerViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.ui.composable.ComposableScene
import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow

/** The bouncer scene displays authentication challenges like PIN, password, or pattern. */
class BouncerScene(
@SysUISingleton
class BouncerScene
@Inject
constructor(
    private val viewModel: BouncerViewModel,
    private val dialogFactory: () -> AlertDialog,
    private val dialogFactory: BouncerSceneDialogFactory,
) : ComposableScene {
    override val key = SceneKey.Bouncer

    override fun destinationScenes(
        containerName: String,
    ): StateFlow<Map<UserAction, SceneModel>> =
    override fun destinationScenes(): StateFlow<Map<UserAction, SceneModel>> =
        MutableStateFlow<Map<UserAction, SceneModel>>(
                mapOf(
                    UserAction.Back to SceneModel(SceneKey.Lockscreen),
@@ -79,7 +82,6 @@ class BouncerScene(

    @Composable
    override fun Content(
        containerName: String,
        modifier: Modifier,
    ) = BouncerScene(viewModel, dialogFactory, modifier)
}
@@ -87,7 +89,7 @@ class BouncerScene(
@Composable
private fun BouncerScene(
    viewModel: BouncerViewModel,
    dialogFactory: () -> AlertDialog,
    dialogFactory: BouncerSceneDialogFactory,
    modifier: Modifier = Modifier,
) {
    val message: BouncerViewModel.MessageViewModel by viewModel.message.collectAsState()
@@ -175,3 +177,7 @@ private fun BouncerScene(
        }
    }
}

interface BouncerSceneDialogFactory {
    operator fun invoke(): AlertDialog
}
+7 −5
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.ui.viewmodel.LockscreenSceneViewModel
import com.android.systemui.scene.shared.model.Direction
@@ -38,6 +39,7 @@ import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.ui.composable.ComposableScene
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -45,15 +47,16 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn

/** The lock screen scene shows when the device is locked. */
class LockscreenScene(
@SysUISingleton
class LockscreenScene
@Inject
constructor(
    @Application private val applicationScope: CoroutineScope,
    private val viewModel: LockscreenSceneViewModel,
) : ComposableScene {
    override val key = SceneKey.Lockscreen

    override fun destinationScenes(
        containerName: String,
    ): StateFlow<Map<UserAction, SceneModel>> =
    override fun destinationScenes(): StateFlow<Map<UserAction, SceneModel>> =
        viewModel.upDestinationSceneKey
            .map { pageKey -> destinationScenes(up = pageKey) }
            .stateIn(
@@ -64,7 +67,6 @@ class LockscreenScene(

    @Composable
    override fun Content(
        containerName: String,
        modifier: Modifier,
    ) {
        LockscreenScene(
+7 −5
Original line number Diff line number Diff line
@@ -27,25 +27,28 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.qs.ui.viewmodel.QuickSettingsSceneViewModel
import com.android.systemui.scene.shared.model.Direction
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.ui.composable.ComposableScene
import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow

/** The Quick Settings (AKA "QS") scene shows the quick setting tiles. */
class QuickSettingsScene(
@SysUISingleton
class QuickSettingsScene
@Inject
constructor(
    private val viewModel: QuickSettingsSceneViewModel,
) : ComposableScene {
    override val key = SceneKey.QuickSettings

    override fun destinationScenes(
        containerName: String,
    ): StateFlow<Map<UserAction, SceneModel>> =
    override fun destinationScenes(): StateFlow<Map<UserAction, SceneModel>> =
        MutableStateFlow<Map<UserAction, SceneModel>>(
                mapOf(
                    UserAction.Swipe(Direction.UP) to SceneModel(SceneKey.Shade),
@@ -55,7 +58,6 @@ class QuickSettingsScene(

    @Composable
    override fun Content(
        containerName: String,
        modifier: Modifier,
    ) {
        QuickSettingsScene(
Loading