Snap for 12730349 from 24920479cbf5c37db14fcb25049073c22e193320 to 25Q1-release
Change-Id: I0130d95f4e961d65094d09d67a339bfda00fecd7
diff --git a/res/layout/fragment_grid.xml b/res/layout/fragment_grid.xml
index e77da57..20c9069 100644
--- a/res/layout/fragment_grid.xml
+++ b/res/layout/fragment_grid.xml
@@ -55,13 +55,12 @@
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="28dp"
android:background="@drawable/picker_fragment_background"
- android:paddingBottom="62dp"
android:clipChildren="false">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="22dp"
+ android:layout_marginVertical="20dp"
android:clipChildren="false">
<androidx.recyclerview.widget.RecyclerView
diff --git a/res/layout/grid_option.xml b/res/layout/grid_option.xml
index efed018..459584c 100644
--- a/res/layout/grid_option.xml
+++ b/res/layout/grid_option.xml
@@ -47,8 +47,8 @@
<ImageView
android:id="@id/foreground"
- android:layout_width="58dp"
- android:layout_height="58dp"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
android:layout_gravity="center" />
</FrameLayout>
@@ -64,6 +64,7 @@
android:textColor="@color/system_on_surface"
android:singleLine="true"
android:ellipsize="end"
+ android:textSize="12sp"
android:text="Placeholder for stable size calculation, please do not remove."
tools:ignore="HardcodedText" />
diff --git a/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
index 36d16cd..ae06fff 100644
--- a/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
+++ b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
@@ -36,6 +36,9 @@
import kotlinx.coroutines.launch
object GridScreenBinder {
+
+ const val GRID_ITEM_SPACING_DP = 20
+
fun bind(
view: View,
viewModel: GridScreenViewModel,
@@ -47,12 +50,8 @@
) {
val optionView: RecyclerView = view.requireViewById(com.android.wallpaper.R.id.options)
optionView.layoutManager =
- LinearLayoutManager(
- view.context,
- RecyclerView.HORIZONTAL,
- /* reverseLayout= */ false,
- )
- optionView.addItemDecoration(ItemSpacing(ItemSpacing.ITEM_SPACING_DP))
+ LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, /* reverseLayout= */ false)
+ optionView.addItemDecoration(ItemSpacing(GRID_ITEM_SPACING_DP))
val adapter =
OptionItemAdapter(
layoutResourceId = R.layout.grid_option,
@@ -68,7 +67,7 @@
bindIcon = { foregroundView: View, gridIcon: GridIconViewModel ->
val imageView = foregroundView as? ImageView
imageView?.let { GridIconViewBinder.bind(imageView, gridIcon) }
- }
+ },
)
optionView.adapter = adapter
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index eaed4e5..46d0346 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -52,7 +52,6 @@
import javax.inject.Singleton
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.combine
-import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.launch
@Singleton
@@ -259,7 +258,7 @@
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
launch {
combine(
- clockPickerViewModel.previewingClock.filterNotNull(),
+ clockPickerViewModel.previewingClock,
clockPickerViewModel.previewingClockSize,
) { clock, size ->
clock to size
diff --git a/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt b/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
index 6ca773b..2a1a8c9 100644
--- a/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
+++ b/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
@@ -57,6 +57,7 @@
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
+import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
/** View model for the clock customization screen. */
@@ -120,8 +121,9 @@
val selectedClock = clockPickerInteractor.selectedClock
val previewingClock =
combine(overridingClock, selectedClock) { overridingClock, selectedClock ->
- overridingClock ?: selectedClock
- }
+ (overridingClock ?: selectedClock)
+ }
+ .shareIn(viewModelScope, SharingStarted.WhileSubscribed(), 1)
data class ClockStyleModel(val thumbnail: Drawable, val showEditButton: StateFlow<Boolean>)
diff --git a/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt b/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
index 4b79739..e8c5b15 100644
--- a/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
+++ b/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
@@ -25,13 +25,21 @@
import androidx.lifecycle.repeatOnLifecycle
import com.android.customization.model.grid.DefaultShapeGridManager.Companion.COL_GRID_NAME
import com.android.customization.model.grid.DefaultShapeGridManager.Companion.COL_SHAPE_KEY
+import com.android.customization.picker.clock.shared.ClockSize
+import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.customization.picker.color.data.util.MaterialColorsGenerator
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END
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
@@ -60,6 +68,7 @@
colorUpdateViewModel: ColorUpdateViewModel,
screen: Screen,
lifecycleOwner: LifecycleOwner,
+ clockViewFactory: ClockViewFactory,
) {
defaultWorkspaceCallbackBinder.bind(
workspaceCallback = workspaceCallback,
@@ -67,6 +76,7 @@
colorUpdateViewModel = colorUpdateViewModel,
screen = screen,
lifecycleOwner = lifecycleOwner,
+ clockViewFactory = clockViewFactory,
)
if (viewModel !is ThemePickerCustomizationOptionsViewModel) {
@@ -135,6 +145,48 @@
}
}
}
+
+ launch {
+ combine(
+ viewModel.clockPickerViewModel.previewingClock,
+ viewModel.clockPickerViewModel.previewingClockSize,
+ ::Pair,
+ )
+ .collect { (previewingClock, previewingClockSize) ->
+ val hideSmartspace =
+ clockViewFactory
+ .getController(previewingClock.clockId)
+ .let {
+ when (previewingClockSize) {
+ ClockSize.DYNAMIC ->
+ it.largeClock.config
+ .hasCustomWeatherDataDisplay
+ ClockSize.SMALL ->
+ it.smallClock.config
+ .hasCustomWeatherDataDisplay
+ }
+ }
+ workspaceCallback.sendMessage(
+ MESSAGE_ID_HIDE_SMART_SPACE,
+ Bundle().apply {
+ putBoolean(KEY_HIDE_SMART_SPACE, hideSmartspace)
+ },
+ )
+
+ workspaceCallback.sendMessage(
+ MESSAGE_ID_PREVIEW_CLOCK_SIZE,
+ Bundle().apply {
+ putString(
+ KEY_CLOCK_SIZE,
+ when (previewingClockSize) {
+ ClockSize.DYNAMIC -> CLOCK_SIZE_DYNAMIC
+ ClockSize.SMALL -> CLOCK_SIZE_SMALL
+ },
+ )
+ },
+ )
+ }
+ }
}
}
Screen.HOME_SCREEN ->