summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/quickaffordance/shared/model/KeyguardPreviewConstants.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardPreviewSmartspaceViewBinder.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardPreviewSmartspaceViewModel.kt21
5 files changed, 45 insertions, 19 deletions
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/quickaffordance/shared/model/KeyguardPreviewConstants.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/quickaffordance/shared/model/KeyguardPreviewConstants.kt
index a3f40d47cc3f..a487b28b2d0a 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/quickaffordance/shared/model/KeyguardPreviewConstants.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/quickaffordance/shared/model/KeyguardPreviewConstants.kt
@@ -23,12 +23,16 @@ object KeyguardPreviewConstants {
const val MESSAGE_ID_PREVIEW_QUICK_AFFORDANCE_SELECTED = 1988
const val MESSAGE_ID_SLOT_SELECTED = 1337
const val MESSAGE_ID_START_CUSTOMIZING_QUICK_AFFORDANCES = 214
+ const val MESSAGE_ID_PREVIEW_CLOCK_SIZE = 1119
const val KEY_HIDE_SMART_SPACE = "hide_smart_space"
const val KEY_HIGHLIGHT_QUICK_AFFORDANCES = "highlight_quick_affordances"
const val KEY_INITIALLY_SELECTED_SLOT_ID = "initially_selected_slot_id"
const val KEY_QUICK_AFFORDANCE_ID = "quick_affordance_id"
const val KEY_SLOT_ID = "slot_id"
+ const val KEY_CLOCK_SIZE = "clock_size"
const val KEYGUARD_QUICK_AFFORDANCE_ID_NONE = "none"
+ const val CLOCK_SIZE_DYNAMIC = "clock_size_dynamic"
+ const val CLOCK_SIZE_SMALL = "clock_size_small"
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardPreviewSmartspaceViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardPreviewSmartspaceViewBinder.kt
index e89be5d6ae4c..741b149f29da 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardPreviewSmartspaceViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardPreviewSmartspaceViewBinder.kt
@@ -39,7 +39,7 @@ object KeyguardPreviewSmartspaceViewBinder {
smartspace.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.STARTED) {
launch("$TAG#viewModel.selectedClockSize") {
- viewModel.selectedClockSize.collect {
+ viewModel.previewingClockSize.collect {
val topPadding =
when (it) {
ClockSizeSetting.DYNAMIC ->
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
index 9924a3bcdd6a..494de9a80560 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
@@ -66,6 +66,7 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyguard.KeyguardBottomAreaRefactor
import com.android.systemui.keyguard.MigrateClocksToBlueprint
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
+import com.android.systemui.keyguard.shared.model.ClockSizeSetting
import com.android.systemui.keyguard.ui.binder.KeyguardPreviewClockViewBinder
import com.android.systemui.keyguard.ui.binder.KeyguardPreviewSmartspaceViewBinder
import com.android.systemui.keyguard.ui.binder.KeyguardQuickAffordanceViewBinder
@@ -312,6 +313,10 @@ constructor(
)
}
+ fun onClockSizeSelected(clockSize: ClockSizeSetting) {
+ smartspaceViewModel.setOverrideClockSize(clockSize)
+ }
+
fun destroy() {
isDestroyed = true
lockscreenSmartspaceController.disconnect()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt
index f228e26f92f7..d51708ffc5c2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt
@@ -25,18 +25,24 @@ import android.os.Messenger
import android.util.ArrayMap
import android.util.Log
import androidx.annotation.VisibleForTesting
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.keyguard.shared.model.ClockSizeSetting
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.CLOCK_SIZE_DYNAMIC
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.CLOCK_SIZE_SMALL
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_CLOCK_SIZE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_HIDE_SMART_SPACE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_QUICK_AFFORDANCE_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_SLOT_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_DEFAULT_PREVIEW
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_HIDE_SMART_SPACE
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_PREVIEW_CLOCK_SIZE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_PREVIEW_QUICK_AFFORDANCE_SELECTED
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_START_CUSTOMIZING_QUICK_AFFORDANCES
@@ -44,7 +50,6 @@ import com.android.systemui.util.kotlin.logD
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import com.android.app.tracing.coroutines.launchTraced as launch
@SysUISingleton
class KeyguardRemotePreviewManager
@@ -86,17 +91,8 @@ constructor(
renderer.render()
renderer.hostToken?.linkToDeath(observer, 0)
val result = Bundle()
- result.putParcelable(
- KEY_PREVIEW_SURFACE_PACKAGE,
- renderer.surfacePackage,
- )
- val messenger =
- Messenger(
- Handler(
- backgroundHandler.looper,
- observer,
- )
- )
+ result.putParcelable(KEY_PREVIEW_SURFACE_PACKAGE, renderer.surfacePackage)
+ val messenger = Messenger(Handler(backgroundHandler.looper, observer))
// NOTE: The process on the other side can retain messenger indefinitely.
// (e.g. GC might not trigger and cleanup the reference)
val msg = Message.obtain()
@@ -191,6 +187,18 @@ class PreviewLifecycleObserver(
MESSAGE_ID_HIDE_SMART_SPACE -> {
checkNotNull(renderer).hideSmartspace(message.data.getBoolean(KEY_HIDE_SMART_SPACE))
}
+ MESSAGE_ID_PREVIEW_CLOCK_SIZE -> {
+ message.data
+ .getString(KEY_CLOCK_SIZE)
+ ?.let {
+ when (it) {
+ CLOCK_SIZE_DYNAMIC -> ClockSizeSetting.DYNAMIC
+ CLOCK_SIZE_SMALL -> ClockSizeSetting.SMALL
+ else -> null
+ }
+ }
+ ?.let { checkNotNull(renderer).onClockSizeSelected(it) }
+ }
else -> checkNotNull(onDestroy).invoke(this)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardPreviewSmartspaceViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardPreviewSmartspaceViewModel.kt
index 1c4498212502..0280d17f4ae2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardPreviewSmartspaceViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardPreviewSmartspaceViewModel.kt
@@ -25,7 +25,7 @@ import com.android.systemui.plugins.clocks.DefaultClockFaceLayout.Companion.getS
import com.android.systemui.statusbar.ui.SystemBarUtilsProxy
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
@@ -38,21 +38,30 @@ constructor(
val clockViewModel: KeyguardClockViewModel,
private val systemBarUtils: SystemBarUtilsProxy,
) {
-
- val selectedClockSize: StateFlow<ClockSizeSetting> = interactor.selectedClockSize
+ // overrideClockSize will override the clock size that is currently set to the system.
+ private val overrideClockSize: MutableStateFlow<ClockSizeSetting?> = MutableStateFlow(null)
+ val previewingClockSize =
+ combine(overrideClockSize, interactor.selectedClockSize) {
+ overrideClockSize,
+ selectedClockSize ->
+ overrideClockSize ?: selectedClockSize
+ }
val shouldHideSmartspace: Flow<Boolean> =
- combine(interactor.selectedClockSize, interactor.currentClockId, ::Pair).map {
- (size, currentClockId) ->
+ combine(previewingClockSize, interactor.currentClockId, ::Pair).map { (size, clockId) ->
when (size) {
// TODO (b/284122375) This is temporary. We should use clockController
// .largeClock.config.hasCustomWeatherDataDisplay instead, but
// ClockRegistry.createCurrentClock is not reliable.
- ClockSizeSetting.DYNAMIC -> currentClockId == "DIGITAL_CLOCK_WEATHER"
+ ClockSizeSetting.DYNAMIC -> clockId == "DIGITAL_CLOCK_WEATHER"
ClockSizeSetting.SMALL -> false
}
}
+ fun setOverrideClockSize(clockSize: ClockSizeSetting) {
+ overrideClockSize.value = clockSize
+ }
+
fun getSmartspaceStartPadding(context: Context): Int {
return KeyguardSmartspaceViewModel.getSmartspaceStartMargin(context)
}