1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14 package com.android.systemui.plugins.clocks 15 16 import com.android.systemui.plugins.annotations.ProtectedInterface 17 import com.android.systemui.plugins.annotations.SimpleProperty 18 import java.io.PrintWriter 19 20 /** Interface for controlling an active clock */ 21 @ProtectedInterface 22 interface ClockController { 23 @get:SimpleProperty 24 /** A small version of the clock, appropriate for smaller viewports */ 25 val smallClock: ClockFaceController 26 27 @get:SimpleProperty 28 /** A large version of the clock, appropriate when a bigger viewport is available */ 29 val largeClock: ClockFaceController 30 31 @get:SimpleProperty 32 /** Determines the way the hosting app should behave when rendering either clock face */ 33 val config: ClockConfig 34 35 @get:SimpleProperty 36 /** Events that clocks may need to respond to */ 37 val events: ClockEvents 38 39 /** Initializes various rendering parameters. If never called, provides reasonable defaults. */ initializenull40 fun initialize(isDarkTheme: Boolean, dozeFraction: Float, foldFraction: Float) 41 42 /** Optional method for dumping debug information */ 43 fun dump(pw: PrintWriter) 44 } 45