Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e15bfa23 authored by Steve Elliott's avatar Steve Elliott
Browse files

Fix initial color of statusbar notif icons

Flag: ACONFIG com.android.systemui.notifications_icon_container_refactor DEVELOPMENT
Fixes: 313603442
Bug: 278765923
Test: atest SystemUITests
Test: Reboot device, receive notifications, unlock, observe icons are
      colored correctly
Change-Id: Ide6b97e1ef459ab44d74293b565ee961921bdb58
parent 7ac65614
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -305,8 +305,6 @@ object NotificationIconContainerViewBinder {
                    }
                }
            }
            // Recalculate all icon positions, to reflect our updates.
            view.calculateIconXTranslations()
        }
    }

+3 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.view.View
import com.android.internal.util.ContrastColorUtil
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.StatusBarIconView.NO_COLOR
import com.android.systemui.statusbar.notification.NotificationUtils
import com.android.systemui.statusbar.notification.icon.ui.viewmodel.NotificationIconColors
import kotlinx.coroutines.flow.Flow
@@ -54,7 +55,8 @@ object StatusBarIconViewBinder {
        iconColors.collect { colors ->
            val isPreL = java.lang.Boolean.TRUE == view.getTag(R.id.icon_is_pre_L)
            val isColorized = !isPreL || NotificationUtils.isGrayscale(view, contrastColorUtil)
            view.staticDrawableColor = colors.staticDrawableColor(view.viewBounds, isColorized)
            view.staticDrawableColor =
                if (isColorized) colors.staticDrawableColor(view.viewBounds) else NO_COLOR
            view.setDecorColor(colors.tint)
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -35,5 +35,5 @@ interface NotificationIconColors {
     * Returns the color to be applied to an icon, based on that icon's view bounds and whether or
     * not the notification icon is colorized.
     */
    fun staticDrawableColor(viewBounds: Rect, isColorized: Boolean): Int
    fun staticDrawableColor(viewBounds: Rect): Int
}
+2 −2
Original line number Diff line number Diff line
@@ -117,8 +117,8 @@ constructor(
        override val tint: Int,
        private val areas: Collection<Rect>,
    ) : NotificationIconColors {
        override fun staticDrawableColor(viewBounds: Rect, isColorized: Boolean): Int {
            return if (isColorized && DarkIconDispatcher.isInAreas(areas, viewBounds)) {
        override fun staticDrawableColor(viewBounds: Rect): Int {
            return if (DarkIconDispatcher.isInAreas(areas, viewBounds)) {
                tint
            } else {
                DarkIconDispatcher.DEFAULT_ICON_TINT
+2 −1
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ public interface SysuiDarkIconDispatcher extends DarkIconDispatcher, Dumpable {
    /** Model for {@link #darkChangeFlow()} */
    class DarkChange {

        public static final DarkChange EMPTY = new DarkChange(new ArrayList<>(), 0, 0);
        public static final DarkChange EMPTY =
                new DarkChange(new ArrayList<>(), /* darkIntensity= */ 0f, DEFAULT_ICON_TINT);

        public DarkChange(Collection<Rect> areas, float darkIntensity, int tint) {
            this.areas = areas;
Loading