Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt +22 −3 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.graphics.Color import android.graphics.Rect import android.view.View import android.view.ViewGroup import android.view.ViewPropertyAnimator import android.widget.FrameLayout import androidx.annotation.ColorInt import androidx.collection.ArrayMap import androidx.lifecycle.lifecycleScope import com.android.app.animation.Interpolators Loading Loading @@ -56,6 +58,7 @@ import com.android.systemui.util.ui.AnimatedValue import com.android.systemui.util.ui.isAnimating import com.android.systemui.util.ui.stopAnimating import com.android.systemui.util.ui.value import javax.inject.Inject import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow Loading @@ -64,7 +67,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import javax.inject.Inject /** Binds a view-model to a [NotificationIconContainer]. */ object NotificationIconContainerViewBinder { Loading Loading @@ -120,7 +122,6 @@ object NotificationIconContainerViewBinder { screenOffAnimationController: ScreenOffAnimationController, viewStore: IconViewStore, ): DisposableHandle { val contrastColorUtil = ContrastColorUtil.getInstance(view.context) return view.repeatWhenAttached { lifecycleScope.launch { launch { Loading @@ -143,7 +144,11 @@ object NotificationIconContainerViewBinder { screenOffAnimationController, ) } launch { viewModel.iconColors.bindIconColors(view, contrastColorUtil) } launch { configuration .getColorAttr(R.attr.wallpaperTextColor, DEFAULT_AOD_ICON_COLOR) .bindIconColors(view) } } } } Loading @@ -165,6 +170,19 @@ object NotificationIconContainerViewBinder { .collect { iconLookup -> view.applyTint(iconLookup, contrastColorUtil) } } /** * Binds to the [StatusBarIconView.setStaticDrawableColor] and [StatusBarIconView.setDecorColor] * of the [children] of an [NotificationIconContainer]. */ private suspend fun Flow<Int>.bindIconColors(view: NotificationIconContainer) { collect { tint -> view.children.filterIsInstance<StatusBarIconView>().forEach { icon -> icon.staticDrawableColor = tint icon.setDecorColor(tint) } } } private suspend fun Flow<AnimatedValue<Boolean>>.bindIsDozing( view: NotificationIconContainer, dozeParameters: DozeParameters, Loading Loading @@ -415,6 +433,7 @@ object NotificationIconContainerViewBinder { } private const val AOD_ICONS_APPEAR_DURATION: Long = 200 @ColorInt private val DEFAULT_AOD_ICON_COLOR = Color.WHITE } /** [IconViewStore] for the [com.android.systemui.statusbar.NotificationShelf] */ Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt +0 −15 Original line number Diff line number Diff line Loading @@ -15,10 +15,7 @@ */ package com.android.systemui.statusbar.notification.icon.ui.viewmodel import android.graphics.Color import android.graphics.Rect import androidx.annotation.ColorInt import com.android.systemui.common.ui.ConfigurationState import com.android.systemui.dagger.SysUISingleton import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.flags.FeatureFlagsClassic Loading @@ -27,7 +24,6 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.domain.interactor.NotificationsKeyguardInteractor import com.android.systemui.statusbar.notification.icon.domain.interactor.AlwaysOnDisplayNotificationIconsInteractor Loading @@ -50,7 +46,6 @@ import kotlinx.coroutines.flow.map class NotificationIconContainerAlwaysOnDisplayViewModel @Inject constructor( configuration: ConfigurationState, private val deviceEntryInteractor: DeviceEntryInteractor, private val dozeParameters: DozeParameters, private val featureFlags: FeatureFlagsClassic, Loading @@ -62,12 +57,6 @@ constructor( shadeInteractor: ShadeInteractor, ) { /** The colors with which to display the notification icons. */ val iconColors: Flow<NotificationIconColorLookup> = configuration.getColorAttr(R.attr.wallpaperTextColor, DEFAULT_AOD_ICON_COLOR).map { tint -> NotificationIconColorLookup { IconColorsImpl(tint) } } /** Are changes to the icon container animated? */ val animationsEnabled: Flow<Boolean> = combine( Loading Loading @@ -180,8 +169,4 @@ constructor( private class IconColorsImpl(override val tint: Int) : NotificationIconColors { override fun staticDrawableColor(viewBounds: Rect, isColorized: Boolean): Int = tint } companion object { @ColorInt private val DEFAULT_AOD_ICON_COLOR = Color.WHITE } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt +22 −3 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.graphics.Color import android.graphics.Rect import android.view.View import android.view.ViewGroup import android.view.ViewPropertyAnimator import android.widget.FrameLayout import androidx.annotation.ColorInt import androidx.collection.ArrayMap import androidx.lifecycle.lifecycleScope import com.android.app.animation.Interpolators Loading Loading @@ -56,6 +58,7 @@ import com.android.systemui.util.ui.AnimatedValue import com.android.systemui.util.ui.isAnimating import com.android.systemui.util.ui.stopAnimating import com.android.systemui.util.ui.value import javax.inject.Inject import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow Loading @@ -64,7 +67,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import javax.inject.Inject /** Binds a view-model to a [NotificationIconContainer]. */ object NotificationIconContainerViewBinder { Loading Loading @@ -120,7 +122,6 @@ object NotificationIconContainerViewBinder { screenOffAnimationController: ScreenOffAnimationController, viewStore: IconViewStore, ): DisposableHandle { val contrastColorUtil = ContrastColorUtil.getInstance(view.context) return view.repeatWhenAttached { lifecycleScope.launch { launch { Loading @@ -143,7 +144,11 @@ object NotificationIconContainerViewBinder { screenOffAnimationController, ) } launch { viewModel.iconColors.bindIconColors(view, contrastColorUtil) } launch { configuration .getColorAttr(R.attr.wallpaperTextColor, DEFAULT_AOD_ICON_COLOR) .bindIconColors(view) } } } } Loading @@ -165,6 +170,19 @@ object NotificationIconContainerViewBinder { .collect { iconLookup -> view.applyTint(iconLookup, contrastColorUtil) } } /** * Binds to the [StatusBarIconView.setStaticDrawableColor] and [StatusBarIconView.setDecorColor] * of the [children] of an [NotificationIconContainer]. */ private suspend fun Flow<Int>.bindIconColors(view: NotificationIconContainer) { collect { tint -> view.children.filterIsInstance<StatusBarIconView>().forEach { icon -> icon.staticDrawableColor = tint icon.setDecorColor(tint) } } } private suspend fun Flow<AnimatedValue<Boolean>>.bindIsDozing( view: NotificationIconContainer, dozeParameters: DozeParameters, Loading Loading @@ -415,6 +433,7 @@ object NotificationIconContainerViewBinder { } private const val AOD_ICONS_APPEAR_DURATION: Long = 200 @ColorInt private val DEFAULT_AOD_ICON_COLOR = Color.WHITE } /** [IconViewStore] for the [com.android.systemui.statusbar.NotificationShelf] */ Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt +0 −15 Original line number Diff line number Diff line Loading @@ -15,10 +15,7 @@ */ package com.android.systemui.statusbar.notification.icon.ui.viewmodel import android.graphics.Color import android.graphics.Rect import androidx.annotation.ColorInt import com.android.systemui.common.ui.ConfigurationState import com.android.systemui.dagger.SysUISingleton import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.flags.FeatureFlagsClassic Loading @@ -27,7 +24,6 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.domain.interactor.NotificationsKeyguardInteractor import com.android.systemui.statusbar.notification.icon.domain.interactor.AlwaysOnDisplayNotificationIconsInteractor Loading @@ -50,7 +46,6 @@ import kotlinx.coroutines.flow.map class NotificationIconContainerAlwaysOnDisplayViewModel @Inject constructor( configuration: ConfigurationState, private val deviceEntryInteractor: DeviceEntryInteractor, private val dozeParameters: DozeParameters, private val featureFlags: FeatureFlagsClassic, Loading @@ -62,12 +57,6 @@ constructor( shadeInteractor: ShadeInteractor, ) { /** The colors with which to display the notification icons. */ val iconColors: Flow<NotificationIconColorLookup> = configuration.getColorAttr(R.attr.wallpaperTextColor, DEFAULT_AOD_ICON_COLOR).map { tint -> NotificationIconColorLookup { IconColorsImpl(tint) } } /** Are changes to the icon container animated? */ val animationsEnabled: Flow<Boolean> = combine( Loading Loading @@ -180,8 +169,4 @@ constructor( private class IconColorsImpl(override val tint: Int) : NotificationIconColors { override fun staticDrawableColor(viewBounds: Rect, isColorized: Boolean): Int = tint } companion object { @ColorInt private val DEFAULT_AOD_ICON_COLOR = Color.WHITE } }