diff options
| author | 2023-10-26 16:57:47 +0000 | |
|---|---|---|
| committer | 2023-10-26 16:57:47 +0000 | |
| commit | 84256a77cab042a9a7bf5ec2ea5e5723ab14d808 (patch) | |
| tree | 909be3303f31d729cc6ff7af9627399a337c9939 | |
| parent | c8e280940ae958d9f3fcd016f008ab7d15f27df9 (diff) | |
| parent | db8f43adc5557d4f1efc3b94e5110867fb70ef85 (diff) | |
Merge "Move AOD NotifIcon coloring to view-binder" into main
2 files changed, 22 insertions, 18 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt index a977746feab2..c1f728a0b06e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt @@ -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 @@ -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 @@ -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 { @@ -120,7 +122,6 @@ object NotificationIconContainerViewBinder { screenOffAnimationController: ScreenOffAnimationController, viewStore: IconViewStore, ): DisposableHandle { - val contrastColorUtil = ContrastColorUtil.getInstance(view.context) return view.repeatWhenAttached { lifecycleScope.launch { launch { @@ -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) + } } } } @@ -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, @@ -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] */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt index b332942b7adc..611ed89c89af 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt @@ -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 @@ -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 @@ -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, @@ -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( @@ -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 - } } |