diff options
| author | 2023-02-02 18:42:00 +0000 | |
|---|---|---|
| committer | 2023-02-02 18:42:00 +0000 | |
| commit | 1d6561cb7bc79e9bf1b77246d2e7c11fa5529825 (patch) | |
| tree | 58e1094133f7b4732e1b9afe1f8e208e33de460e | |
| parent | 4d09061b914b814c11d1a001f602d9e424169e9d (diff) | |
| parent | 4c0f7a37669d1dc982045a6b07ac92127cfb5761 (diff) | |
Merge "Send weather data from LS Smartspace to clock" into tm-qpr-dev
6 files changed, 44 insertions, 2 deletions
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockProviderPlugin.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockProviderPlugin.kt index bbfb6fbdbbd2..4ef525a40201 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockProviderPlugin.kt +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockProviderPlugin.kt @@ -20,6 +20,7 @@ import android.view.View import com.android.internal.annotations.Keep import com.android.systemui.plugins.annotations.ProvidesInterface import com.android.systemui.plugins.log.LogBuffer +import com.android.systemui.statusbar.Weather import java.io.PrintWriter import java.util.Locale import java.util.TimeZone @@ -111,6 +112,9 @@ interface ClockEvents { /** Call whenever the color palette should update */ fun onColorPaletteChanged(resources: Resources) {} + + /** Call whenever the weather data should update */ + fun onWeatherDataChanged(data: Weather) {} } /** Methods which trigger various clock animations */ diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt index 7f95ca6972be..ea079a9027b8 100644 --- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt @@ -48,6 +48,7 @@ import com.android.systemui.plugins.ClockTickRate 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.statusbar.Weather import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback import com.android.systemui.statusbar.policy.ConfigurationController @@ -273,6 +274,12 @@ open class ClockEventController @Inject constructor( override fun onUserSwitchComplete(userId: Int) { clock?.events?.onTimeFormatChanged(DateFormat.is24HourFormat(context)) } + + override fun onWeatherDataChanged(data: Weather?) { + if (data != null) { + clock?.events?.onWeatherDataChanged(data) + } + } } fun registerListeners(parent: View) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 54886c3e2080..c68f295f06ba 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -108,7 +108,6 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.RemoteException; -import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; @@ -153,6 +152,7 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.statusbar.Weather; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.telephony.TelephonyListenerManager; @@ -3217,6 +3217,24 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } /** + * @param data the weather data (temp, conditions, unit) for weather clock to use + */ + public void sendWeatherData(Weather data) { + mHandler.post(()-> { + handleWeatherDataUpdate(data); }); + } + + private void handleWeatherDataUpdate(Weather data) { + Assert.isMainThread(); + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onWeatherDataChanged(data); + } + } + } + + /** * Handle {@link #MSG_BATTERY_UPDATE} */ private void handleBatteryUpdate(BatteryStatus status) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index e6b9ac8b38a8..4a7dd2421261 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.statusbar.KeyguardIndicationController; +import com.android.systemui.statusbar.Weather; import java.util.TimeZone; @@ -58,6 +59,11 @@ public class KeyguardUpdateMonitorCallback { public void onTimeFormatChanged(String timeFormat) { } /** + * Called when receive new weather data. + */ + public void onWeatherDataChanged(Weather data) { } + + /** * Called when the carrier PLMN or SPN changes. */ public void onRefreshCarrierInfo() { } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt index b97d4e4ed3ef..5440fcc913d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt @@ -35,6 +35,7 @@ import android.util.Log import android.view.ContextThemeWrapper import android.view.View import android.view.ViewGroup +import com.android.keyguard.KeyguardUpdateMonitor import com.android.settingslib.Utils import com.android.systemui.R import com.android.systemui.dagger.SysUISingleton @@ -83,6 +84,7 @@ constructor( private val statusBarStateController: StatusBarStateController, private val deviceProvisionedController: DeviceProvisionedController, private val bypassController: KeyguardBypassController, + private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val execution: Execution, @Main private val uiExecutor: Executor, @Background private val bgExecutor: Executor, @@ -175,10 +177,10 @@ constructor( } if (weatherTarget != null) { val weatherData = Weather.fromBundle(weatherTarget.baseAction.extras) + keyguardUpdateMonitor.sendWeatherData(weatherData) } } - private val userTrackerCallback = object : UserTracker.Callback { override fun onUserChanged(newUser: Int, userContext: Context) { execution.assertIsMainThread() diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt index 0a576de4c3a9..9c69a6a652e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt @@ -32,6 +32,7 @@ import android.provider.Settings import android.view.View import android.widget.FrameLayout import androidx.test.filters.SmallTest +import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags @@ -104,6 +105,9 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { private lateinit var keyguardBypassController: KeyguardBypassController @Mock + private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor + + @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Mock @@ -223,6 +227,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { statusBarStateController, deviceProvisionedController, keyguardBypassController, + keyguardUpdateMonitor, execution, executor, bgExecutor, |