Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +37 −16 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.shade.shared.flag.DualShade import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor Loading @@ -75,6 +77,7 @@ import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.FlowDumperImpl import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine import com.android.systemui.util.kotlin.sample import dagger.Lazy import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -137,8 +140,10 @@ constructor( private val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, private val primaryBouncerToLockscreenTransitionViewModel: PrimaryBouncerToLockscreenTransitionViewModel, private val aodBurnInViewModel: AodBurnInViewModel, aodBurnInViewModel: AodBurnInViewModel, private val communalSceneInteractor: CommunalSceneInteractor, // Lazy because it's only used in the SceneContainer + Dual Shade configuration. headsUpNotificationInteractor: Lazy<HeadsUpNotificationInteractor>, unfoldTransitionInteractor: UnfoldTransitionInteractor, ) : FlowDumperImpl(dumpManager) { Loading Loading @@ -390,8 +395,23 @@ constructor( * notifications unless in splitshade. */ private val alphaForShadeAndQsExpansion: Flow<Float> = interactor.configurationBasedDimensions .flatMapLatest { configurationBasedDimensions -> if (DualShade.isEnabled) { combineTransform( headsUpNotificationInteractor.get().isHeadsUpOrAnimatingAway, shadeInteractor.shadeExpansion, shadeInteractor.qsExpansion, ) { isHeadsUpOrAnimatingAway, shadeExpansion, qsExpansion -> if (isHeadsUpOrAnimatingAway) { // Ensure HUNs will be visible in QS shade (at least while unlocked) emit(1f) } else if (shadeExpansion > 0f || qsExpansion > 0f) { // Fade out as QS shade expands emit(1f - qsExpansion) } } } else { interactor.configurationBasedDimensions.flatMapLatest { configurationBasedDimensions -> combineTransform(shadeInteractor.shadeExpansion, shadeInteractor.qsExpansion) { shadeExpansion, qsExpansion -> Loading @@ -408,6 +428,7 @@ constructor( } } } } .onStart { emit(1f) } .dumpWhileCollecting("alphaForShadeAndQsExpansion") Loading @@ -427,7 +448,7 @@ constructor( private fun alphaForTransitions(viewState: ViewStateAccessor): Flow<Float> { return merge( keyguardInteractor.dismissAlpha.dumpWhileCollecting("keyguardInteractor.dismissAlpha"), // All transition view models are mututally exclusive, and safe to merge // All transition view models are mutually exclusive, and safe to merge bouncerToGoneNotificationAlpha(viewState), aodToGoneTransitionViewModel.notificationAlpha(viewState), aodToLockscreenTransitionViewModel.notificationAlpha, Loading packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor Loading Loading @@ -92,6 +93,7 @@ val Kosmos.sharedNotificationContainerViewModel by Fixture { primaryBouncerToLockscreenTransitionViewModel, aodBurnInViewModel = aodBurnInViewModel, communalSceneInteractor = communalSceneInteractor, headsUpNotificationInteractor = { headsUpNotificationInteractor }, unfoldTransitionInteractor = unfoldTransitionInteractor, ) } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +37 −16 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.shade.shared.flag.DualShade import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor Loading @@ -75,6 +77,7 @@ import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.FlowDumperImpl import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine import com.android.systemui.util.kotlin.sample import dagger.Lazy import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -137,8 +140,10 @@ constructor( private val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, private val primaryBouncerToLockscreenTransitionViewModel: PrimaryBouncerToLockscreenTransitionViewModel, private val aodBurnInViewModel: AodBurnInViewModel, aodBurnInViewModel: AodBurnInViewModel, private val communalSceneInteractor: CommunalSceneInteractor, // Lazy because it's only used in the SceneContainer + Dual Shade configuration. headsUpNotificationInteractor: Lazy<HeadsUpNotificationInteractor>, unfoldTransitionInteractor: UnfoldTransitionInteractor, ) : FlowDumperImpl(dumpManager) { Loading Loading @@ -390,8 +395,23 @@ constructor( * notifications unless in splitshade. */ private val alphaForShadeAndQsExpansion: Flow<Float> = interactor.configurationBasedDimensions .flatMapLatest { configurationBasedDimensions -> if (DualShade.isEnabled) { combineTransform( headsUpNotificationInteractor.get().isHeadsUpOrAnimatingAway, shadeInteractor.shadeExpansion, shadeInteractor.qsExpansion, ) { isHeadsUpOrAnimatingAway, shadeExpansion, qsExpansion -> if (isHeadsUpOrAnimatingAway) { // Ensure HUNs will be visible in QS shade (at least while unlocked) emit(1f) } else if (shadeExpansion > 0f || qsExpansion > 0f) { // Fade out as QS shade expands emit(1f - qsExpansion) } } } else { interactor.configurationBasedDimensions.flatMapLatest { configurationBasedDimensions -> combineTransform(shadeInteractor.shadeExpansion, shadeInteractor.qsExpansion) { shadeExpansion, qsExpansion -> Loading @@ -408,6 +428,7 @@ constructor( } } } } .onStart { emit(1f) } .dumpWhileCollecting("alphaForShadeAndQsExpansion") Loading @@ -427,7 +448,7 @@ constructor( private fun alphaForTransitions(viewState: ViewStateAccessor): Flow<Float> { return merge( keyguardInteractor.dismissAlpha.dumpWhileCollecting("keyguardInteractor.dismissAlpha"), // All transition view models are mututally exclusive, and safe to merge // All transition view models are mutually exclusive, and safe to merge bouncerToGoneNotificationAlpha(viewState), aodToGoneTransitionViewModel.notificationAlpha(viewState), aodToLockscreenTransitionViewModel.notificationAlpha, Loading
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor Loading Loading @@ -92,6 +93,7 @@ val Kosmos.sharedNotificationContainerViewModel by Fixture { primaryBouncerToLockscreenTransitionViewModel, aodBurnInViewModel = aodBurnInViewModel, communalSceneInteractor = communalSceneInteractor, headsUpNotificationInteractor = { headsUpNotificationInteractor }, unfoldTransitionInteractor = unfoldTransitionInteractor, ) }