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

Commit bfa454ad authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Automerger Merge Worker
Browse files

Merge "Refactor various rendering parameters into config structure" into udc-dev am: 3b43e666

parents 919cb309 3b43e666
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -25,8 +25,10 @@ import android.widget.FrameLayout
import androidx.annotation.VisibleForTesting
import com.android.systemui.customization.R
import com.android.systemui.plugins.ClockAnimations
import com.android.systemui.plugins.ClockConfig
import com.android.systemui.plugins.ClockController
import com.android.systemui.plugins.ClockEvents
import com.android.systemui.plugins.ClockFaceConfig
import com.android.systemui.plugins.ClockFaceController
import com.android.systemui.plugins.ClockFaceEvents
import com.android.systemui.plugins.ClockSettings
@@ -63,6 +65,8 @@ class DefaultClockController(
    override lateinit var animations: DefaultClockAnimations
        private set

    override val config = ClockConfig(hasCustomPositionUpdatedAnimation = true)

    init {
        val parent = FrameLayout(ctx)
        smallClock =
@@ -103,6 +107,8 @@ class DefaultClockController(
        private var isRegionDark = false
        protected var targetRegion: Rect? = null

        override val config = ClockFaceConfig()

        override var logBuffer: LogBuffer?
            get() = view.logBuffer
            set(value) {
@@ -254,9 +260,6 @@ class DefaultClockController(
        override fun onPositionUpdated(fromRect: Rect, toRect: Rect, fraction: Float) {
            largeClock.moveForSplitShade(fromRect, toRect, fraction)
        }

        override val hasCustomPositionUpdatedAnimation: Boolean
            get() = true
    }

    class AnimationState(
+28 −19
Original line number Diff line number Diff line
@@ -63,6 +63,9 @@ interface ClockController {
    /** A large version of the clock, appropriate when a bigger viewport is available */
    val largeClock: ClockFaceController

    /** Determines the way the hosting app should behave when rendering either clock face */
    val config: ClockConfig

    /** Events that clocks may need to respond to */
    val events: ClockEvents

@@ -91,6 +94,9 @@ interface ClockFaceController {
    /** View that renders the clock face */
    val view: View

    /** Determines the way the hosting app should behave when rendering this clock face */
    val config: ClockFaceConfig

    /** Events specific to this clock face */
    val events: ClockFaceEvents

@@ -109,9 +115,6 @@ interface ClockEvents {
    /** Call whenever the locale changes */
    fun onLocaleChanged(locale: Locale) {}

    val isReactiveToTone
        get() = true

    /** Call whenever the color palette should update */
    fun onColorPaletteChanged(resources: Resources) {}

@@ -144,14 +147,6 @@ interface ClockAnimations {
     * 0.0 -> clock is scaled down in the shade; previewRatio is previewSize / screenSize
     */
    fun onPickerCarouselSwiping(swipingFraction: Float, previewRatio: Float) {}

    /**
     * Whether this clock has a custom position update animation. If true, the keyguard will call
     * `onPositionUpdated` to notify the clock of a position update animation. If false, a default
     * animation will be used (e.g. a simple translation).
     */
    val hasCustomPositionUpdatedAnimation
        get() = false
}

/** Events that have specific data about the related face */
@@ -159,14 +154,6 @@ interface ClockFaceEvents {
    /** Call every time tick */
    fun onTimeTick() {}

    /** Expected interval between calls to onTimeTick. Can always reduce to PER_MINUTE in AOD. */
    val tickRate: ClockTickRate
        get() = ClockTickRate.PER_MINUTE

    /** Call to check whether the clock consumes weather data */
    val hasCustomWeatherDataDisplay: Boolean
        get() = false

    /**
     * Region Darkness specific to the clock face.
     * - isRegionDark = dark theme -> clock should be light
@@ -203,6 +190,28 @@ data class ClockMetadata(
    val name: String,
)

/** Render configuration for the full clock. Modifies the way systemUI behaves with this clock. */
data class ClockConfig(
    /**
     * Whether this clock has a custom position update animation. If true, the keyguard will call
     * `onPositionUpdated` to notify the clock of a position update animation. If false, a default
     * animation will be used (e.g. a simple translation).
     */
    val hasCustomPositionUpdatedAnimation: Boolean = false,

    /** True if the clock will react to tone changes in the seed color. */
    val isReactiveToTone: Boolean = true,
)

/** Render configuration options for a clock face. Modifies the way SystemUI behaves. */
data class ClockFaceConfig(
    /** Expected interval between calls to onTimeTick. Can always reduce to PER_MINUTE in AOD. */
    val tickRate: ClockTickRate = ClockTickRate.PER_MINUTE,

    /** Call to check whether the clock consumes weather data */
    val hasCustomWeatherDataDisplay: Boolean = false,
)

/** Structure for keeping clock-specific settings */
@Keep
data class ClockSettings(
+6 −4
Original line number Diff line number Diff line
@@ -46,10 +46,10 @@ import com.android.systemui.log.dagger.KeyguardSmallClockLog
import com.android.systemui.plugins.ClockController
import com.android.systemui.plugins.ClockFaceController
import com.android.systemui.plugins.ClockTickRate
import com.android.systemui.plugins.WeatherData
import com.android.systemui.plugins.log.LogBuffer
import com.android.systemui.plugins.log.LogLevel.DEBUG
import com.android.systemui.shared.regionsampling.RegionSampler
import com.android.systemui.plugins.WeatherData
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -144,8 +144,10 @@ constructor(
                val currentViewRect = Rect(left, top, right, bottom)
                val oldViewRect = Rect(oldLeft, oldTop, oldRight, oldBottom)

                if (currentViewRect.width() != oldViewRect.width() ||
                    currentViewRect.height() != oldViewRect.height()) {
                if (
                    currentViewRect.width() != oldViewRect.width() ||
                        currentViewRect.height() != oldViewRect.height()
                ) {
                    updateRegionSampler(view)
                }
            }
@@ -425,7 +427,7 @@ constructor(
            }

            isRunning = true
            when (clockFace.events.tickRate) {
            when (clockFace.config.tickRate) {
                ClockTickRate.PER_MINUTE -> {
                    /* Handled by KeyguardClockSwitchController */
                }
+2 −10
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.log.dagger.KeyguardClockLog;
import com.android.systemui.plugins.ClockAnimations;
import com.android.systemui.plugins.ClockController;
import com.android.systemui.plugins.log.LogBuffer;
import com.android.systemui.plugins.log.LogLevel;
@@ -469,7 +468,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
    }

    @Nullable
    private ClockController getClock() {
    public ClockController getClock() {
        return mClockEventController.getClock();
    }

@@ -535,13 +534,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
        }

        return ((mCurrentClockSize == LARGE) ? clock.getLargeClock() : clock.getSmallClock())
                .getEvents().getHasCustomWeatherDataDisplay();
    }

    /** Gets the animations for the current clock. */
    @Nullable
    public ClockAnimations getClockAnimations() {
        ClockController clock = getClock();
        return clock == null ? null : clock.getAnimations();
                .getConfig().getHasCustomWeatherDataDisplay();
    }
}
+6 −4
Original line number Diff line number Diff line
@@ -16,12 +16,13 @@

package com.android.keyguard;

import android.annotation.Nullable;
import android.graphics.Rect;
import android.util.Slog;

import com.android.keyguard.KeyguardClockSwitch.ClockSize;
import com.android.keyguard.logging.KeyguardLogger;
import com.android.systemui.plugins.ClockAnimations;
import com.android.systemui.plugins.ClockController;
import com.android.systemui.statusbar.notification.AnimatableProperty;
import com.android.systemui.statusbar.notification.PropertyAnimator;
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
@@ -241,8 +242,9 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
        }
    }

    /** Gets the animations for the current clock. */
    public ClockAnimations getClockAnimations() {
        return mKeyguardClockSwitchController.getClockAnimations();
    /** Gets the current clock controller. */
    @Nullable
    public ClockController getClockController() {
        return mKeyguardClockSwitchController.getClock();
    }
}
Loading