From 9ccf492ff70bf2f65484c2c661addddc67b93bbf Mon Sep 17 00:00:00 2001 From: Hawkwood Glazier Date: Fri, 27 May 2022 15:30:55 +0000 Subject: [PATCH] Changes to plugin events to better match AnimatableClockView Bug: 229771520 Test: Interface change, no test Change-Id: Id25a9efc4bb2410f03634b8f8ab3ed301af07bf9 (cherry picked from commit 12e7465fe27a1ecdd0ee6bdf48e220cd14c34f2b) Merged-In: Id25a9efc4bb2410f03634b8f8ab3ed301af07bf9 --- .../shared/clocks/ClockProviderPlugin.kt | 59 ++++++++++++++++--- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockProviderPlugin.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockProviderPlugin.kt index 916a557d7af82..dba0c6dc9cae4 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockProviderPlugin.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockProviderPlugin.kt @@ -13,11 +13,14 @@ */ package com.android.systemui.shared.clocks -import com.android.systemui.plugins.Plugin -import com.android.systemui.plugins.annotations.ProvidesInterface -import android.annotation.FloatRange import android.graphics.drawable.Drawable import android.view.View +import com.android.internal.colorextraction.ColorExtractor +import com.android.systemui.plugins.Plugin +import com.android.systemui.plugins.annotations.ProvidesInterface +import java.io.PrintWriter +import java.util.Locale +import java.util.TimeZone /** Identifies a clock design */ typealias ClockId = String @@ -51,15 +54,57 @@ interface Clock { /** A large version of the clock, appropriate when a bigger viewport is available */ val largeClock: View - /** Callback to update the clock view to the current time */ + /** Events that clocks may need to respond to */ + val events: ClockEvents + + /** Triggers for various animations */ + val animation: ClockAnimation + + /** Optional method for dumping debug information */ + fun dump(pw: PrintWriter) { } +} + +/** Events that should call when various rendering parameters change */ +interface ClockEvents { + /** Call every time tick */ fun onTimeTick() - /** Sets the level of the AOD transition */ - fun setAodFraction(@FloatRange(from = 0.0, to = 1.0) fraction: Float) + /** Call whenever timezone changes */ + fun onTimeZoneChanged(timeZone: TimeZone) { } + + /** Call whenever the text time format changes (12hr vs 24hr) */ + fun onTimeFormatChanged(is24Hr: Boolean) { } + + /** Call whenever the locale changes */ + fun onLocaleChanged(locale: Locale) { } + + /** Call whenever font settings change */ + fun onFontSettingChanged() { } + + /** Call whenever the color pallete should update */ + fun onColorPaletteChanged(palette: ColorExtractor.GradientColors) { } +} + +/** Methods which trigger various clock animations */ +interface ClockAnimation { + /** Initializes the doze & fold animation positions. Defaults to neither folded nor dozing. */ + fun initialize(dozeFraction: Float, foldFraction: Float) { } + + /** Runs an enter animation (if any) */ + fun enter() { } + + /** Sets how far into AOD the device currently is. */ + fun doze(fraction: Float) { } + + /** Sets how far into the folding animation the device is. */ + fun fold(fraction: Float) { } + + /** Runs the battery animation (if any). */ + fun charge() { } } /** Some data about a clock design */ data class ClockMetadata( val clockId: ClockId, val name: String -) \ No newline at end of file +)