Merge "Delay color picker back navigation until apply is complete" into main
diff --git a/res/layout/themed_icon_section_view.xml b/res/layout/themed_icon_section_view.xml
index 84ef3e8..b6e745b 100644
--- a/res/layout/themed_icon_section_view.xml
+++ b/res/layout/themed_icon_section_view.xml
@@ -50,19 +50,4 @@
             style="@style/Switch.SettingsLib"/>
 
     </LinearLayout>
-
-    <Space
-        android:layout_width="0dp"
-        android:layout_height="8dp" />
-
-    <TextView
-        android:id="@+id/beta_tag"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingHorizontal="8dp"
-        android:paddingVertical="4dp"
-        android:text="@string/beta_title"
-        android:textColor="@color/text_color_on_accent"
-        style="@style/BetaTagTextStyle" />
-
 </com.android.customization.picker.themedicon.ThemedIconSectionView>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index ac4e52d..a42f932 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -43,7 +43,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"גדול"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"קטן"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"שעון קטן מופיע בפינת המסך"</string>
-    <string name="clock_font_editor_apply" msgid="5965611025879105293">"החלה של שינויי הגופן בשעון"</string>
+    <string name="clock_font_editor_apply" msgid="5965611025879105293">"אישור של שינויי הגופן בשעון"</string>
     <string name="clock_font_editor_revert" msgid="5307491447405753061">"ביטול של שינויי הגופן בשעון"</string>
     <string name="grid_title" msgid="1688173478777254123">"תצוגת האפליקציות"</string>
     <string name="shape_and_grid_title" msgid="9092477491363761054">"הצורה והפריסה של האפליקציה"</string>
diff --git a/res/values-w800dp/dimens.xml b/res/values-w800dp/dimens.xml
index d5032b6..5673be4 100644
--- a/res/values-w800dp/dimens.xml
+++ b/res/values-w800dp/dimens.xml
@@ -23,4 +23,5 @@
     <dimen name="clock_carousel_item_card_width">114dp</dimen>
     <dimen name="clock_carousel_item_card_height">124dp</dimen>
     <dimen name="clock_carousel_guideline_margin">320dp</dimen>
+    <item name="clock_carousel_scale" format="float" type="dimen">0.35</item>
 </resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index fab8357..0c36753 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -166,6 +166,7 @@
     <dimen name="clock_carousel_item_card_width">100dp</dimen>
     <dimen name="clock_carousel_item_card_height">108dp</dimen>
     <dimen name="clock_carousel_guideline_margin_for_2_pane_small_width">122dp</dimen>
+    <item name="clock_carousel_scale" format="float" type="dimen">0.5</item>
 
     <!-- Clock color and size button -->
     <dimen name="clock_color_size_button_min_height">32dp</dimen>
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 1fbdede..0ed0362 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -19,6 +19,7 @@
 import android.content.res.ColorStateList
 import android.content.res.Resources
 import android.util.AttributeSet
+import android.util.TypedValue
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -40,6 +41,7 @@
 
     val carousel: Carousel
     private val motionLayout: MotionLayout
+    private val clockViewScale: Float
     private lateinit var adapter: ClockCarouselAdapter
     private lateinit var clockViewFactory: ClockViewFactory
     private var toCenterClockController: ClockController? = null
@@ -56,6 +58,11 @@
         carousel = clockCarousel.requireViewById(R.id.carousel)
         motionLayout = clockCarousel.requireViewById(R.id.motion_container)
         motionLayout.contentDescription = context.getString(R.string.custom_clocks_label)
+        clockViewScale =
+            TypedValue().let {
+                resources.getValue(R.dimen.clock_carousel_scale, it, true)
+                it.float
+            }
     }
 
     /**
@@ -130,7 +137,14 @@
             overrideScreenPreviewWidth()
         }
 
-        adapter = ClockCarouselAdapter(clockSize, clocks, clockViewFactory, onClockSelected)
+        adapter =
+            ClockCarouselAdapter(
+                clockViewScale,
+                clockSize,
+                clocks,
+                clockViewFactory,
+                onClockSelected,
+            )
         carousel.isInfinite = clocks.size >= MIN_CLOCKS_TO_ENABLE_INFINITE_CAROUSEL
         carousel.setAdapter(adapter)
         val indexOfSelectedClock =
@@ -222,8 +236,8 @@
                         ?.largeClock
                         ?.animations
                         ?.onPickerCarouselSwiping(progress)
-                    val scalingDownScale = getScalingDownScale(progress)
-                    val scalingUpScale = getScalingUpScale(progress)
+                    val scalingDownScale = getScalingDownScale(progress, clockViewScale)
+                    val scalingUpScale = getScalingUpScale(progress, clockViewScale)
                     offCenterClockScaleView?.scaleX = scalingDownScale
                     offCenterClockScaleView?.scaleY = scalingDownScale
                     toCenterClockScaleView?.scaleX = scalingUpScale
@@ -369,6 +383,7 @@
     }
 
     private class ClockCarouselAdapter(
+        val clockViewScale: Float,
         val clockSize: ClockSize,
         val clocks: List<ClockCarouselItemViewModel>,
         private val clockViewFactory: ClockViewFactory,
@@ -450,8 +465,8 @@
                 clockScaleView.scaleY = 1f
                 controller.largeClock.animations.onPickerCarouselSwiping(1F)
             } else {
-                clockScaleView.scaleX = CLOCK_CAROUSEL_VIEW_SCALE
-                clockScaleView.scaleY = CLOCK_CAROUSEL_VIEW_SCALE
+                clockScaleView.scaleX = clockViewScale
+                clockScaleView.scaleY = clockViewScale
                 controller.largeClock.animations.onPickerCarouselSwiping(0F)
             }
         }
@@ -501,7 +516,6 @@
     companion object {
         // The carousel needs to have at least 5 different clock faces to be infinite
         const val MIN_CLOCKS_TO_ENABLE_INFINITE_CAROUSEL = 5
-        const val CLOCK_CAROUSEL_VIEW_SCALE = 0.5f
         const val TRANSITION_DURATION = 250
 
         val itemViewIds =
@@ -513,10 +527,11 @@
                 R.id.item_view_4,
             )
 
-        fun getScalingUpScale(progress: Float) =
-            CLOCK_CAROUSEL_VIEW_SCALE + progress * (1f - CLOCK_CAROUSEL_VIEW_SCALE)
+        fun getScalingUpScale(progress: Float, clockViewScale: Float) =
+            clockViewScale + progress * (1f - clockViewScale)
 
-        fun getScalingDownScale(progress: Float) = 1f - progress * (1f - CLOCK_CAROUSEL_VIEW_SCALE)
+        fun getScalingDownScale(progress: Float, clockViewScale: Float) =
+            1f - progress * (1f - clockViewScale)
 
         // This makes the card only starts to reveal in the last quarter of the trip so
         // the card won't overlap the preview.
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index 2936b1c..eaed4e5 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -34,6 +34,7 @@
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.grid.ui.binder.GridIconViewBinder
 import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockPreviewConfig
 import com.android.systemui.shared.Flags
 import com.android.themepicker.R
 import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil.ThemePickerHomeCustomizationOption
@@ -271,12 +272,21 @@
                                     ->
                                     addClockViews(clockController, clockHostView, size)
                                     val cs = ConstraintSet()
+                                    // TODO(b/379348167): get correct isShadeLayoutWide from picker
                                     clockController.largeClock.layout.applyPreviewConstraints(
-                                        context,
+                                        ClockPreviewConfig(
+                                            previewContext = context,
+                                            isShadeLayoutWide = false,
+                                            isSceneContainerFlagEnabled = false,
+                                        ),
                                         cs,
                                     )
                                     clockController.smallClock.layout.applyPreviewConstraints(
-                                        context,
+                                        ClockPreviewConfig(
+                                            previewContext = context,
+                                            isShadeLayoutWide = false,
+                                            isSceneContainerFlagEnabled = false,
+                                        ),
                                         cs,
                                     )
                                     cs.applyTo(clockHostView)