Display smartspace in lockscreen preview
Bug: b/271338533
Test: manual - validate that smartspace shows when swiping to a clock that doesn't have a custom date or weather
Test: manual - validate that smartspace does not show when swiping to a clock that has a custom date or weather
Change-Id: Ia2c055a91ea603cc5a7a0e3dfbc706dc914ca7ea
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
index 8d5924e..7d19dc1 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
@@ -38,6 +38,7 @@
viewModel: ClockCarouselViewModel,
clockViewFactory: ClockViewFactory,
lifecycleOwner: LifecycleOwner,
+ hideSmartspace: (Boolean) -> Unit,
) {
val singleClockHostView =
singleClockView.requireViewById<FrameLayout>(R.id.single_clock_host_view)
@@ -53,7 +54,19 @@
clockViewFactory.getController(clockId)
},
onClockSelected = { clockId -> viewModel.setSelectedClock(clockId) },
- getPreviewRatio = { clockViewFactory.getRatio() }
+ getPreviewRatio = { clockViewFactory.getRatio() },
+ onClockTransitionCompleted = { startId, endId ->
+ if (startId != endId ) {
+ val hasCustomWeatherDataDisplay =
+ clockViewFactory
+ .getController(endId)
+ .largeClock
+ .config
+ .hasCustomWeatherDataDisplay
+
+ hideSmartspace(hasCustomWeatherDataDisplay)
+ }
+ },
)
}
}
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index d71e202..a084a54 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -59,6 +59,7 @@
onGetClockController: (clockId: String) -> ClockController,
onClockSelected: (clockId: String) -> Unit,
getPreviewRatio: () -> Float,
+ onClockTransitionCompleted: (startId: String, endId: String) -> Unit,
) {
adapter =
ClockCarouselAdapter(clockIds, onGetClockController, onClockSelected, getPreviewRatio)
@@ -66,17 +67,20 @@
carousel.refresh()
motionLayout.setTransitionListener(
object : MotionLayout.TransitionListener {
+ var scalingDownClockId = ""
+ var scalingUpClockId = ""
+
override fun onTransitionStarted(
motionLayout: MotionLayout?,
startId: Int,
endId: Int
) {
isCarouselInTransition = true
- val scalingDownClockId = adapter.clockIds[carousel.currentIndex]
+ scalingDownClockId = adapter.clockIds[carousel.currentIndex]
val scalingUpIdx =
if (endId == R.id.next) (carousel.currentIndex + 1) % adapter.count()
else (carousel.currentIndex - 1 + adapter.count()) % adapter.count()
- val scalingUpClockId = adapter.clockIds[scalingUpIdx]
+ scalingUpClockId = adapter.clockIds[scalingUpIdx]
scalingDownClockController = adapter.onGetClockController(scalingDownClockId)
scalingUpClockController = adapter.onGetClockController(scalingUpClockId)
scalingDownClockView = motionLayout?.findViewById(R.id.clock_scale_view_2)
@@ -118,6 +122,7 @@
override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
isCarouselInTransition = false
+ onClockTransitionCompleted(scalingDownClockId, scalingUpClockId)
}
override fun onTransitionTrigger(
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
index 2f83fa7..d2e0476 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
@@ -19,6 +19,7 @@
import android.app.Activity
import android.content.Context
+import android.os.Bundle
import android.view.View
import android.view.View.OnAttachStateChangeListener
import android.view.ViewGroup
@@ -31,6 +32,7 @@
import com.android.customization.picker.clock.ui.view.ClockCarouselView
import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
import com.android.wallpaper.R
import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
import com.android.wallpaper.model.WallpaperColorsViewModel
@@ -112,6 +114,7 @@
viewModel = clockCarouselViewModel,
clockViewFactory = clockViewFactory,
lifecycleOwner = lifecycleOwner,
+ hideSmartspace = ::hideSmartspace,
)
if (onAttachStateChangeListener != null) {
carouselView.carousel.removeOnAttachStateChangeListener(
@@ -130,4 +133,16 @@
return view
}
+
+ private fun hideSmartspace(hide: Boolean) {
+ previewViewBinding.sendMessage(
+ KeyguardPreviewConstants.MESSAGE_ID_HIDE_SMART_SPACE,
+ Bundle().apply {
+ putBoolean(
+ KeyguardPreviewConstants.KEY_HIDE_SMART_SPACE,
+ hide,
+ )
+ }
+ )
+ }
}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
index 58a082d..67c63b7 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
@@ -25,7 +25,7 @@
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
import com.android.wallpaper.R
import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
import kotlinx.coroutines.launch
@@ -61,9 +61,9 @@
.flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED)
.collect { slotId ->
binding.sendMessage(
- KeyguardQuickAffordancePreviewConstants.MESSAGE_ID_SLOT_SELECTED,
+ KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED,
Bundle().apply {
- putString(KeyguardQuickAffordancePreviewConstants.KEY_SLOT_ID, slotId)
+ putString(KeyguardPreviewConstants.KEY_SLOT_ID, slotId)
},
)
}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index 14b6acc..397d3a9 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -29,7 +29,7 @@
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
import com.android.systemui.shared.customization.data.content.CustomizationProviderContract
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
import com.android.wallpaper.R
import com.android.wallpaper.module.CurrentWallpaperInfoFactory
import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonStyle
@@ -79,11 +79,11 @@
initialExtrasProvider = {
Bundle().apply {
putString(
- KeyguardQuickAffordancePreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
+ KeyguardPreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
selectedSlotId.value,
)
putBoolean(
- KeyguardQuickAffordancePreviewConstants.KEY_HIGHLIGHT_QUICK_AFFORDANCES,
+ KeyguardPreviewConstants.KEY_HIGHLIGHT_QUICK_AFFORDANCES,
true,
)
}