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

Commit c0fb39c2 authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Automerger Merge Worker
Browse files

Merge "[flexiglass] Simplified Dagger setup." into udc-dev am: e778cbc5 am: f225e822

parents fd60cd89 f225e822
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -17,10 +17,12 @@
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 fun scenes(): Set<Scene>
    @Multibinds @Named(SceneContainerNames.SYSTEM_UI_DEFAULT) fun scenes(): Set<Scene>
}
+82 −5
Original line number Diff line number Diff line
@@ -17,22 +17,32 @@
package com.android.systemui.scene.ui.composable

import com.android.systemui.bouncer.ui.composable.BouncerScene
import com.android.systemui.bouncer.ui.viewmodel.BouncerViewModel
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 dagger.Module
import dagger.Provides
import javax.inject.Named
import kotlinx.coroutines.CoroutineScope

@Module
object SceneModule {
    @Provides
    @Named(SceneContainerNames.SYSTEM_UI_DEFAULT)
    fun scenes(
        bouncer: BouncerScene,
        gone: GoneScene,
        lockScreen: LockscreenScene,
        qs: QuickSettingsScene,
        shade: ShadeScene,
        @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,
    ): Set<Scene> {
        return setOf(
            bouncer,
@@ -42,4 +52,71 @@ object SceneModule {
            shade,
        )
    }

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

    @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,
                ),
        )
    }

    @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,
                ),
        )
    }
}
+3 −8
Original line number Diff line number Diff line
@@ -40,22 +40,17 @@ 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. */
@SysUISingleton
class BouncerScene
@Inject
constructor(
    private val viewModelFactory: BouncerViewModel.Factory,
class BouncerScene(
    private val viewModel: BouncerViewModel,
) : ComposableScene {
    override val key = SceneKey.Bouncer

@@ -73,7 +68,7 @@ constructor(
    override fun Content(
        containerName: String,
        modifier: Modifier,
    ) = BouncerScene(viewModelFactory.create(containerName), modifier)
    ) = BouncerScene(viewModel, modifier)
}

@Composable
+10 −26
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ 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
@@ -39,7 +38,6 @@ 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
@@ -47,21 +45,15 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn

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

    private var unsafeViewModel: LockscreenSceneViewModel? = null

    override fun destinationScenes(
        containerName: String,
    ): StateFlow<Map<UserAction, SceneModel>> =
        getOrCreateViewModelSingleton(containerName).let { viewModel ->
        viewModel.upDestinationSceneKey
            .map { pageKey -> destinationScenes(up = pageKey) }
            .stateIn(
@@ -69,7 +61,6 @@ constructor(
                started = SharingStarted.Eagerly,
                initialValue = destinationScenes(up = viewModel.upDestinationSceneKey.value)
            )
        }

    @Composable
    override fun Content(
@@ -77,7 +68,7 @@ constructor(
        modifier: Modifier,
    ) {
        LockscreenScene(
            viewModel = getOrCreateViewModelSingleton(containerName),
            viewModel = viewModel,
            modifier = modifier,
        )
    }
@@ -90,13 +81,6 @@ constructor(
            UserAction.Swipe(Direction.DOWN) to SceneModel(SceneKey.Shade)
        )
    }

    private fun getOrCreateViewModelSingleton(
        containerName: String,
    ): LockscreenSceneViewModel {
        return unsafeViewModel
            ?: viewModelFactory.create(containerName).also { unsafeViewModel = it }
    }
}

@Composable
+3 −8
Original line number Diff line number Diff line
@@ -27,24 +27,19 @@ 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. */
@SysUISingleton
class QuickSettingsScene
@Inject
constructor(
    private val viewModelFactory: QuickSettingsSceneViewModel.Factory,
class QuickSettingsScene(
    private val viewModel: QuickSettingsSceneViewModel,
) : ComposableScene {
    override val key = SceneKey.QuickSettings

@@ -64,7 +59,7 @@ constructor(
        modifier: Modifier,
    ) {
        QuickSettingsScene(
            viewModel = viewModelFactory.create(containerName),
            viewModel = viewModel,
            modifier = modifier,
        )
    }
Loading