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

Commit 0598fbb2 authored by Hawkwood Glazier's avatar Hawkwood Glazier
Browse files

Provide color override path through keyguard preview renderer

Bug: 279763790
Test: Manually checked wpp use case
Change-Id: I25e7f7c481bf3327846ebf94cc09a79562dab6fc
parent e8899cf6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ package com.android.systemui.shared.quickaffordance.shared.model
object KeyguardPreviewConstants {
    const val MESSAGE_ID_HIDE_SMART_SPACE = 1111
    const val KEY_HIDE_SMART_SPACE = "hide_smart_space"
    const val MESSAGE_ID_COLOR_OVERRIDE = 1234
    const val KEY_COLOR_OVERRIDE = "color_override" // ColorInt Encoded as string
    const val MESSAGE_ID_SLOT_SELECTED = 1337
    const val KEY_SLOT_ID = "slot_id"
    const val KEY_INITIALLY_SELECTED_SLOT_ID = "initially_selected_slot_id"
+22 −10
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

package com.android.systemui.keyguard.ui.preview

import android.annotation.ColorInt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -85,6 +86,7 @@ constructor(

    private var clockView: View? = null
    private var smartSpaceView: View? = null
    private var colorOverride: Int? = null

    private val disposables = mutableSetOf<DisposableHandle>()
    private var isDestroyed = false
@@ -171,6 +173,14 @@ constructor(
        }
    }

    /** Sets the clock's color to the overridden seed color. */
    fun onColorOverridden(@ColorInt color: Int?) {
        runBlocking(mainDispatcher) {
            colorOverride = color
            clockController.clock?.run { events.onSeedColorChanged(color) }
        }
    }

    /**
     * This sets up and shows a non-interactive smart space
     *
@@ -288,8 +298,10 @@ constructor(
        val receiver =
            object : BroadcastReceiver() {
                override fun onReceive(context: Context?, intent: Intent?) {
                    clockController.clock?.smallClock?.events?.onTimeTick()
                    clockController.clock?.largeClock?.events?.onTimeTick()
                    clockController.clock?.run {
                        smallClock.events.onTimeTick()
                        largeClock.events.onTimeTick()
                    }
                }
            }
        broadcastDispatcher.registerReceiver(
@@ -305,18 +317,18 @@ constructor(
    }

    private fun onClockChanged(parentView: ViewGroup) {
        clockController.clock = clockRegistry.createCurrentClock()
        val clock = clockRegistry.createCurrentClock()
        clockController.clock = clock

        colorOverride?.let { clock.events.onSeedColorChanged(it) }
        if (!shouldHideClock) {
            val largeClock = clockController.clock?.largeClock

            largeClock
                ?.events
                ?.onTargetRegionChanged(KeyguardClockSwitch.getLargeClockRegion(parentView))
            clock.largeClock.events.onTargetRegionChanged(
                KeyguardClockSwitch.getLargeClockRegion(parentView)
            )

            clockView?.let { parentView.removeView(it) }
            clockView =
                largeClock?.view?.apply {
                clock.largeClock.view.apply {
                    if (shouldHighlightSelectedAffordance) {
                        alpha = DIM_ALPHA
                    }
@@ -329,7 +341,7 @@ constructor(

        // Hide smart space if the clock has weather display; otherwise show it
        val hasCustomWeatherDataDisplay =
            clockController.clock?.largeClock?.config?.hasCustomWeatherDataDisplay == true
            clock.largeClock.config.hasCustomWeatherDataDisplay == true
        hideSmartspace(hasCustomWeatherDataDisplay)
    }

+13 −8
Original line number Diff line number Diff line
@@ -115,16 +115,21 @@ constructor(

            when (message.what) {
                KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED -> {
                    message.data
                        .getString(
                            KeyguardPreviewConstants.KEY_SLOT_ID,
                        )
                        ?.let { slotId -> renderer.onSlotSelected(slotId = slotId) }
                    message.data.getString(KeyguardPreviewConstants.KEY_SLOT_ID)?.let { slotId ->
                        renderer.onSlotSelected(slotId = slotId)
                    }
                }
                KeyguardPreviewConstants.MESSAGE_ID_HIDE_SMART_SPACE -> {
                    renderer.hideSmartspace(
                        message.data.getBoolean(KeyguardPreviewConstants.KEY_HIDE_SMART_SPACE)
                    )
                }
                KeyguardPreviewConstants.MESSAGE_ID_COLOR_OVERRIDE -> {
                    renderer.onColorOverridden(
                        message.data
                        .getBoolean(KeyguardPreviewConstants.KEY_HIDE_SMART_SPACE)
                        .let { hide -> renderer.hideSmartspace(hide) }
                            .getString(KeyguardPreviewConstants.KEY_COLOR_OVERRIDE)
                            ?.toIntOrNull()
                    )
                }
                else -> requestDestruction(this)
            }