summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steve Elliott <steell@google.com> 2023-10-26 16:57:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-10-26 16:57:47 +0000
commit84256a77cab042a9a7bf5ec2ea5e5723ab14d808 (patch)
tree909be3303f31d729cc6ff7af9627399a337c9939
parentc8e280940ae958d9f3fcd016f008ab7d15f27df9 (diff)
parentdb8f43adc5557d4f1efc3b94e5110867fb70ef85 (diff)
Merge "Move AOD NotifIcon coloring to view-binder" into main
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModel.kt15
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
- }
}