Loading packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt +14 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,8 @@ import com.android.systemui.communal.widgets.SmartspaceAppWidgetHostView import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.media.controls.ui.composable.MediaCarousel import com.android.systemui.media.remedia.ui.compose.Media import com.android.systemui.media.remedia.ui.compose.MediaPresentationStyle import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.statusbar.phone.SystemUIDialogFactory Loading Loading @@ -1826,6 +1828,18 @@ private fun Umo( mediaHost = viewModel.mediaHost, carouselController = viewModel.mediaCarouselController, ) } else if (Flags.mediaControlsInCompose()) { Media( viewModelFactory = viewModel.mediaViewModelFactory, presentationStyle = MediaPresentationStyle.Large, behavior = viewModel.mediaUiBehavior, modifier = modifier.background( MaterialTheme.colorScheme.primary, RoundedCornerShape(dimensionResource(R.dimen.notification_corner_radius)), ), onDismissed = { viewModel.mediaCarouselInteractorLazy.get().onSwipeToDismiss() }, ) } else { UmoLegacy(viewModel, modifier) } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -57,8 +57,10 @@ import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.log.logcatLogBuffer import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.mediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.settings.fakeUserTracker import com.android.systemui.statusbar.policy.keyguardStateController import com.android.systemui.testKosmos Loading Loading @@ -110,6 +112,8 @@ class CommunalEditModeViewModelTest : SysuiTestCase() { packageManager, WIDGET_PICKER_PACKAGE_NAME, kosmos.mediaCarouselController, kosmos.mediaViewModelFactory, { kosmos.mediaCarouselInteractor }, ) } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -84,10 +84,12 @@ import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.log.logcatLogBuffer import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager import com.android.systemui.media.controls.ui.controller.mediaCarouselController import com.android.systemui.media.controls.ui.view.MediaCarouselScrollHandler import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.data.repository.Idle Loading Loading @@ -174,6 +176,8 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() { false, kosmos.communalSceneLogger, kosmos.falsingInteractor, kosmos.mediaViewModelFactory, { kosmos.mediaCarouselInteractor }, ) } Loading packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt +15 −0 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ import com.android.systemui.communal.domain.model.CommunalContentModel import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.compose.MediaUiBehavior import com.android.systemui.media.remedia.ui.viewmodel.MediaCarouselVisibility import com.android.systemui.media.remedia.ui.viewmodel.MediaViewModel import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.BooleanFlowOperators.not import dagger.Lazy import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow Loading @@ -44,6 +49,8 @@ abstract class BaseCommunalViewModel( private val communalInteractor: CommunalInteractor, val mediaHost: MediaHost, val mediaCarouselController: MediaCarouselController, val mediaViewModelFactory: MediaViewModel.Factory, val mediaCarouselInteractorLazy: Lazy<MediaCarouselInteractor>, ) { val currentScene: StateFlow<SceneKey> = communalSceneInteractor.currentScene Loading Loading @@ -79,6 +86,14 @@ abstract class BaseCommunalViewModel( */ val glanceableTouchAvailable: Flow<Boolean> = anyOf(not(isTouchConsumed), isNestedScrolling) val mediaUiBehavior: MediaUiBehavior get() = MediaUiBehavior( isCarouselDismissible = false, isCarouselScrollingEnabled = false, carouselVisibility = MediaCarouselVisibility.WhenAnyCardIsActive, ) /** * The up-to-date value of the grid scroll offset. persisted to interactor on * {@link #persistScrollPosition} Loading packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -47,14 +47,17 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.Logger import com.android.systemui.log.dagger.CommunalLog import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.dagger.MediaModule import com.android.systemui.media.remedia.ui.viewmodel.MediaViewModel import com.android.systemui.res.R import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.kotlin.BooleanFlowOperators.allOf import com.android.systemui.util.kotlin.BooleanFlowOperators.not import dagger.Lazy import javax.inject.Inject import javax.inject.Named import kotlinx.coroutines.CoroutineDispatcher Loading Loading @@ -87,12 +90,16 @@ constructor( private val packageManager: PackageManager, @Named(LAUNCHER_PACKAGE) private val launcherPackage: String, mediaCarouselController: MediaCarouselController, mediaViewModelFactory: MediaViewModel.Factory, mediaCarouselInteractorLazy: Lazy<MediaCarouselInteractor>, ) : BaseCommunalViewModel( communalSceneInteractor, communalInteractor, mediaHost, mediaCarouselController, mediaViewModelFactory, mediaCarouselInteractorLazy, ) { private val logger = Logger(logBuffer, "CommunalEditModeViewModel") Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt +14 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,8 @@ import com.android.systemui.communal.widgets.SmartspaceAppWidgetHostView import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.media.controls.ui.composable.MediaCarousel import com.android.systemui.media.remedia.ui.compose.Media import com.android.systemui.media.remedia.ui.compose.MediaPresentationStyle import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.statusbar.phone.SystemUIDialogFactory Loading Loading @@ -1826,6 +1828,18 @@ private fun Umo( mediaHost = viewModel.mediaHost, carouselController = viewModel.mediaCarouselController, ) } else if (Flags.mediaControlsInCompose()) { Media( viewModelFactory = viewModel.mediaViewModelFactory, presentationStyle = MediaPresentationStyle.Large, behavior = viewModel.mediaUiBehavior, modifier = modifier.background( MaterialTheme.colorScheme.primary, RoundedCornerShape(dimensionResource(R.dimen.notification_corner_radius)), ), onDismissed = { viewModel.mediaCarouselInteractorLazy.get().onSwipeToDismiss() }, ) } else { UmoLegacy(viewModel, modifier) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -57,8 +57,10 @@ import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.log.logcatLogBuffer import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.mediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.settings.fakeUserTracker import com.android.systemui.statusbar.policy.keyguardStateController import com.android.systemui.testKosmos Loading Loading @@ -110,6 +112,8 @@ class CommunalEditModeViewModelTest : SysuiTestCase() { packageManager, WIDGET_PICKER_PACKAGE_NAME, kosmos.mediaCarouselController, kosmos.mediaViewModelFactory, { kosmos.mediaCarouselInteractor }, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -84,10 +84,12 @@ import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.log.logcatLogBuffer import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager import com.android.systemui.media.controls.ui.controller.mediaCarouselController import com.android.systemui.media.controls.ui.view.MediaCarouselScrollHandler import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.data.repository.Idle Loading Loading @@ -174,6 +176,8 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() { false, kosmos.communalSceneLogger, kosmos.falsingInteractor, kosmos.mediaViewModelFactory, { kosmos.mediaCarouselInteractor }, ) } Loading
packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt +15 −0 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ import com.android.systemui.communal.domain.model.CommunalContentModel import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.ui.compose.MediaUiBehavior import com.android.systemui.media.remedia.ui.viewmodel.MediaCarouselVisibility import com.android.systemui.media.remedia.ui.viewmodel.MediaViewModel import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.BooleanFlowOperators.not import dagger.Lazy import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow Loading @@ -44,6 +49,8 @@ abstract class BaseCommunalViewModel( private val communalInteractor: CommunalInteractor, val mediaHost: MediaHost, val mediaCarouselController: MediaCarouselController, val mediaViewModelFactory: MediaViewModel.Factory, val mediaCarouselInteractorLazy: Lazy<MediaCarouselInteractor>, ) { val currentScene: StateFlow<SceneKey> = communalSceneInteractor.currentScene Loading Loading @@ -79,6 +86,14 @@ abstract class BaseCommunalViewModel( */ val glanceableTouchAvailable: Flow<Boolean> = anyOf(not(isTouchConsumed), isNestedScrolling) val mediaUiBehavior: MediaUiBehavior get() = MediaUiBehavior( isCarouselDismissible = false, isCarouselScrollingEnabled = false, carouselVisibility = MediaCarouselVisibility.WhenAnyCardIsActive, ) /** * The up-to-date value of the grid scroll offset. persisted to interactor on * {@link #persistScrollPosition} Loading
packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -47,14 +47,17 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.Logger import com.android.systemui.log.dagger.CommunalLog import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.ui.controller.MediaCarouselController import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.dagger.MediaModule import com.android.systemui.media.remedia.ui.viewmodel.MediaViewModel import com.android.systemui.res.R import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.kotlin.BooleanFlowOperators.allOf import com.android.systemui.util.kotlin.BooleanFlowOperators.not import dagger.Lazy import javax.inject.Inject import javax.inject.Named import kotlinx.coroutines.CoroutineDispatcher Loading Loading @@ -87,12 +90,16 @@ constructor( private val packageManager: PackageManager, @Named(LAUNCHER_PACKAGE) private val launcherPackage: String, mediaCarouselController: MediaCarouselController, mediaViewModelFactory: MediaViewModel.Factory, mediaCarouselInteractorLazy: Lazy<MediaCarouselInteractor>, ) : BaseCommunalViewModel( communalSceneInteractor, communalInteractor, mediaHost, mediaCarouselController, mediaViewModelFactory, mediaCarouselInteractorLazy, ) { private val logger = Logger(logBuffer, "CommunalEditModeViewModel") Loading