diff options
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) } |