[automerger skipped] Import translations. DO NOT MERGE
am: 9c441a4054 -s ours
am skip reason: subject contains skip directive

Change-Id: I56f66c084eb1edf8f223fd36dcacff1ddaf12633
diff --git a/res/layout/fragment_clock_picker.xml b/res/layout/fragment_clock_picker.xml
index da4f891..1528666 100644
--- a/res/layout/fragment_clock_picker.xml
+++ b/res/layout/fragment_clock_picker.xml
@@ -23,40 +23,89 @@
     android:background="?android:colorPrimary">
     <include layout="@layout/section_header"/>
 
-    <com.android.customization.widget.PreviewPager
-        android:id="@+id/clock_preview_pager"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:background="@color/secondary_color"
-        app:card_style="screen_aspect_ratio"/>
+        android:layout_height="match_parent">
 
-    <LinearLayout
-        android:id="@+id/options_section"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingVertical="10dp"
-        android:orientation="vertical">
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/options_container"
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/content_section"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/options_container_height"
-            android:layout_gravity="center_horizontal"/>
+            android:layout_height="match_parent">
 
-        <RelativeLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingHorizontal="10dp">
+            <com.android.customization.widget.PreviewPager
+                android:id="@+id/clock_preview_pager"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/secondary_color"
+                app:layout_constrainedHeight="true"
+                app:layout_constraintBottom_toTopOf="@id/options_container"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
+                app:layout_constraintHeight_min="@dimen/preview_pager_min_height"
+                app:layout_constraintVertical_bias="0.0"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintVertical_chainStyle="spread_inside"/>
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/options_container"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/options_container_height"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="10dp"
+                app:layout_constraintBottom_toTopOf="@id/placeholder"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/clock_preview_pager"
+                app:layout_constraintVertical_bias="1.0"/>
+
+            <Space
+                android:id="@+id/placeholder"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/min_taptarget_height"
+                app:layout_constraintBottom_toTopOf="@id/apply_button"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHeight_min="@dimen/min_taptarget_height"
+                app:layout_constraintHorizontal_bias="0.0"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/options_container"
+                app:layout_constraintVertical_bias="1.0"/>
+
             <Button
                 android:id="@+id/apply_button"
                 style="@style/ActionPrimaryButton"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentEnd="true"
-                android:text="@string/apply_btn"/>
-        </RelativeLayout>
+                android:layout_gravity="end"
+                android:layout_marginEnd="10dp"
+                android:layout_marginVertical="10dp"
+                android:layout_weight="1"
+                android:text="@string/apply_theme_btn"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
-    </LinearLayout>
-
+        <androidx.core.widget.ContentLoadingProgressBar
+            android:id="@+id/loading_indicator"
+            style="@android:style/Widget.DeviceDefault.ProgressBar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="200dp"
+            android:layout_gravity="center_horizontal|top"
+            android:indeterminate="true"/>
+        <FrameLayout
+            android:id="@+id/error_section"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone">
+            <TextView
+                android:id="@+id/error_message"
+                style="@style/HeaderTextAppearance"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:text="@string/something_went_wrong"/>
+        </FrameLayout>
+    </FrameLayout>
 </LinearLayout>
diff --git a/res/layout/fragment_custom_theme_component.xml b/res/layout/fragment_custom_theme_component.xml
index e9dd927..13b0b33 100644
--- a/res/layout/fragment_custom_theme_component.xml
+++ b/res/layout/fragment_custom_theme_component.xml
@@ -16,54 +16,83 @@
 -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:background="?android:colorPrimary">
     <include layout="@layout/section_header"/>
 
-    <FrameLayout
-        android:id="@+id/component_preview_container"
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:background="?android:colorPrimary">
-        <include
-            android:id="@+id/component_preview_content"
+        android:layout_height="match_parent">
+
+        <FrameLayout
+            android:id="@+id/component_preview_container"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginHorizontal="@dimen/preview_page_horizontal_margin"
-            android:layout_marginTop="@dimen/preview_page_top_margin"
-            android:layout_marginBottom="@dimen/component_preview_page_bottom_margin"
-            layout="@layout/theme_component_preview"/>
-    </FrameLayout>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:background="@color/divider_color"/>
-    <LinearLayout
-        android:id="@+id/options_section"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingVertical="10dp"
-        android:clipToPadding="false"
-        android:orientation="vertical">
+            android:layout_height="0dp"
+            android:background="?android:colorPrimary"
+            app:layout_constrainedHeight="true"
+            app:layout_constraintBottom_toTopOf="@+id/guideline"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
+            app:layout_constraintHeight_min="@dimen/preview_pager_min_height"
+            app:layout_constraintHorizontal_bias="0.5"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintVertical_bias="0.0">
+
+            <include
+                android:id="@+id/component_preview_content"
+                layout="@layout/theme_component_preview"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginHorizontal="@dimen/preview_page_horizontal_margin"
+                android:layout_marginTop="@dimen/preview_page_top_margin"
+                android:layout_marginBottom="@dimen/indicator_container_height"/>
+        </FrameLayout>
+        <View
+            android:id="@+id/divider"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/divider_color"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/component_preview_container"/>
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_percent=".7"/>
+
 
         <TextView
             android:id="@+id/component_options_title"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:layout_margin="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginBottom="10dp"
             android:textAlignment="center"
-            android:textAppearance="@style/HeaderTextAppearance"/>
+            android:textAppearance="@style/HeaderTextAppearance"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/guideline"/>
 
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/options_container"
             android:layout_width="match_parent"
             android:layout_height="@dimen/options_container_height"
-            android:layout_gravity="center_horizontal"/>
+            android:layout_gravity="center_horizontal"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="0.5"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/component_options_title"
+            app:layout_constraintVertical_bias=".2"/>
 
-    </LinearLayout>
-
+    </androidx.constraintlayout.widget.ConstraintLayout>
 </LinearLayout>
diff --git a/res/layout/fragment_custom_theme_name.xml b/res/layout/fragment_custom_theme_name.xml
index 98feb60..9ac0b21 100644
--- a/res/layout/fragment_custom_theme_name.xml
+++ b/res/layout/fragment_custom_theme_name.xml
@@ -16,59 +16,78 @@
 -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="vertical"
     android:background="?android:colorPrimary">
     <include layout="@layout/section_header"/>
 
-    <FrameLayout
-        android:id="@+id/component_preview_container"
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:background="@color/secondary_color">
-        <include
-            android:id="@+id/component_preview_content"
+        android:layout_height="match_parent">
+
+        <FrameLayout
+            android:id="@+id/component_preview_container"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginHorizontal="@dimen/preview_page_horizontal_margin"
-            android:layout_marginTop="@dimen/preview_page_top_margin"
-            android:layout_marginBottom="@dimen/component_preview_page_bottom_margin"
-            layout="@layout/theme_preview_card"/>
-    </FrameLayout>
-    <LinearLayout
-        android:id="@+id/options_section"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingVertical="10dp"
-        android:clipToPadding="false"
-        android:orientation="vertical">
+            android:layout_height="0dp"
+            android:background="@color/secondary_color"
+            app:layout_constrainedHeight="true"
+            app:layout_constraintBottom_toTopOf="@+id/guideline"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
+            app:layout_constraintHeight_min="@dimen/preview_pager_min_height"
+            app:layout_constraintHorizontal_bias="0.5"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintVertical_bias="0.0">
+
+            <include
+                android:id="@+id/component_preview_content"
+                layout="@layout/theme_preview_card"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginHorizontal="@dimen/preview_page_horizontal_margin"
+                android:layout_marginTop="@dimen/preview_page_top_margin"
+                android:layout_marginBottom="@dimen/indicator_container_height"/>
+        </FrameLayout>
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_percent=".7"/>
 
         <TextView
             android:id="@+id/component_options_title"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:layout_margin="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginBottom="10dp"
             android:textAlignment="center"
-            android:textAppearance="@style/HeaderTextAppearance"/>
+            android:textAppearance="@style/HeaderTextAppearance"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/guideline"/>
 
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/options_container_height"
-            android:layout_gravity="center">
+        <EditText
+            android:id="@+id/custom_theme_name"
+            style="@style/CustomThemeNameEditText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:importantForAutofill="no"
+            android:minWidth="300dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="0.5"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/component_options_title"
+            app:layout_constraintVertical_bias=".2"/>
 
-            <EditText
-                style="@style/CustomThemeNameEditText"
-                android:id="@+id/custom_theme_name"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:minWidth="300dp"/>
-        </FrameLayout>
 
-    </LinearLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 </LinearLayout>
diff --git a/res/layout/fragment_grid_picker.xml b/res/layout/fragment_grid_picker.xml
index d7618f3..467a620 100644
--- a/res/layout/fragment_grid_picker.xml
+++ b/res/layout/fragment_grid_picker.xml
@@ -16,46 +16,95 @@
 -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_height="match_parent"
     android:orientation="vertical"
     android:background="?android:colorPrimary">
     <include layout="@layout/section_header"/>
 
-    <com.android.customization.widget.PreviewPager
-        android:id="@+id/grid_preview_pager"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:background="@color/secondary_color"
-        app:card_style="screen_aspect_ratio"/>
+        android:layout_height="match_parent">
 
-    <LinearLayout
-        android:id="@+id/options_section"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingVertical="10dp"
-        android:orientation="vertical">
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/options_container"
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/content_section"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/options_container_height"
-            android:layout_gravity="center_horizontal"/>
+            android:layout_height="match_parent">
 
-        <RelativeLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingHorizontal="10dp">
+            <com.android.customization.widget.PreviewPager
+                android:id="@+id/grid_preview_pager"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/secondary_color"
+                app:card_style="screen_aspect_ratio"
+                app:layout_constrainedHeight="true"
+                app:layout_constraintBottom_toTopOf="@id/options_container"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
+                app:layout_constraintHeight_min="@dimen/preview_pager_min_height"
+                app:layout_constraintVertical_bias="0.0"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintVertical_chainStyle="spread_inside"/>
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/options_container"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/options_container_height"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="10dp"
+                app:layout_constraintBottom_toTopOf="@id/placeholder"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/grid_preview_pager"
+                app:layout_constraintVertical_bias="1.0"/>
+
+            <Space
+                android:id="@+id/placeholder"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/min_taptarget_height"
+                app:layout_constraintBottom_toTopOf="@id/apply_button"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/options_container"
+                app:layout_constraintVertical_bias="1.0"/>
+
             <Button
                 android:id="@+id/apply_button"
                 style="@style/ActionPrimaryButton"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentEnd="true"
-                android:text="@string/apply_btn"/>
-        </RelativeLayout>
+                android:layout_gravity="end"
+                android:layout_marginEnd="10dp"
+                android:layout_marginVertical="10dp"
+                android:layout_weight="1"
+                android:text="@string/apply_theme_btn"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
 
-    </LinearLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
+        <androidx.core.widget.ContentLoadingProgressBar
+            android:id="@+id/loading_indicator"
+            style="@android:style/Widget.DeviceDefault.ProgressBar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="200dp"
+            android:layout_gravity="center_horizontal|top"
+            android:indeterminate="true"/>
+        <FrameLayout
+            android:id="@+id/error_section"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone">
+            <TextView
+                android:id="@+id/error_message"
+                style="@style/HeaderTextAppearance"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:text="@string/something_went_wrong"/>
+        </FrameLayout>
+    </FrameLayout>
 </LinearLayout>
diff --git a/res/layout/fragment_theme_picker.xml b/res/layout/fragment_theme_picker.xml
index 2cfac1d..dbb633e 100644
--- a/res/layout/fragment_theme_picker.xml
+++ b/res/layout/fragment_theme_picker.xml
@@ -16,56 +16,102 @@
 -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:background="?android:colorPrimary">
     <include layout="@layout/section_header"/>
 
-    <com.android.customization.widget.PreviewPager
-        android:id="@+id/theme_preview_pager"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:background="@color/secondary_color"/>
+        android:layout_height="match_parent">
 
-    <LinearLayout
-        android:id="@+id/options_section"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingVertical="10dp"
-        android:orientation="vertical">
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/options_container"
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/content_section"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/options_container_height"
-            android:layout_gravity="center_horizontal"/>
+            android:layout_height="match_parent">
 
-        <RelativeLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingHorizontal="10dp">
+            <com.android.customization.widget.PreviewPager
+                android:id="@+id/theme_preview_pager"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/secondary_color"
+                app:layout_constrainedHeight="true"
+                app:layout_constraintBottom_toTopOf="@id/options_container"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
+                app:layout_constraintHeight_min="@dimen/preview_pager_min_height"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintVertical_bias="0.0"
+                app:layout_constraintVertical_chainStyle="spread_inside"/>
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/options_container"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/options_container_height"
+                android:layout_gravity="bottom|center_horizontal"
+                android:layout_marginTop="10dp"
+                android:layout_weight="1"
+                app:layout_constraintBottom_toTopOf="@id/use_my_wallpaper"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/theme_preview_pager"
+                app:layout_constraintVertical_bias="1.0"/>
+
             <CheckBox
                 android:id="@+id/use_my_wallpaper"
                 android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignParentStart="true"
-                android:layout_centerVertical="true"
-                android:layout_toStartOf="@+id/apply_button"
+                android:layout_height="@dimen/min_taptarget_height"
+                android:layout_marginStart="10dp"
                 android:ellipsize="end"
+                android:gravity="start|center_vertical"
                 android:paddingLeft="4dp"
-                android:minHeight="@dimen/min_taptarget_height"
-                android:text="@string/keep_my_wallpaper"/>
+                android:text="@string/keep_my_wallpaper"
+                app:layout_constraintBottom_toTopOf="@id/apply_button"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHeight_min="@dimen/min_taptarget_height"
+                app:layout_constraintHorizontal_bias="0.0"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/options_container"
+                app:layout_constraintVertical_bias="1.0"/>
+
             <Button
                 android:id="@+id/apply_button"
                 style="@style/ActionPrimaryButton"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentEnd="true"
-                android:text="@string/apply_theme_btn"/>
-        </RelativeLayout>
+                android:layout_gravity="end"
+                android:layout_marginEnd="10dp"
+                android:layout_marginBottom="10dp"
+                android:text="@string/apply_theme_btn"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
-    </LinearLayout>
+        <androidx.core.widget.ContentLoadingProgressBar
+            android:id="@+id/loading_indicator"
+            style="@android:style/Widget.DeviceDefault.ProgressBar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="200dp"
+            android:layout_gravity="center_horizontal|top"
+            android:indeterminate="true"/>
 
+        <FrameLayout
+            android:id="@+id/error_section"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone">
+            <TextView
+                android:id="@+id/error_message"
+                style="@style/HeaderTextAppearance"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:text="@string/something_went_wrong"/>
+        </FrameLayout>
+    </FrameLayout>
 </LinearLayout>
diff --git a/res/layout/preview_card_color_content.xml b/res/layout/preview_card_color_content.xml
index 8587652..1de2cd4 100644
--- a/res/layout/preview_card_color_content.xml
+++ b/res/layout/preview_card_color_content.xml
@@ -75,14 +75,13 @@
                 android:layout_width="@dimen/preview_theme_icon_size"
                 android:layout_height="@dimen/preview_theme_icon_size"
                 android:layout_gravity="center"
-                android:id="@+id/preview_color_qs_2_bg"
-                android:tint="@color/tile_disabled_background_color"/>
+                android:id="@+id/preview_color_qs_2_bg"/>
             <ImageView
                 android:layout_width="@dimen/preview_theme_tile_size"
                 android:layout_height="@dimen/preview_theme_tile_size"
                 android:layout_gravity="center"
                 android:id="@+id/preview_color_qs_2_icon"
-                android:color="@color/tile_disabled_icon_color"/>
+                android:color="@color/tile_enabled_icon_color"/>
         </FrameLayout>
     </LinearLayout>
     <Space
diff --git a/res/layout/preview_card_cover_content.xml b/res/layout/preview_card_cover_content.xml
index d052642..055a126 100644
--- a/res/layout/preview_card_cover_content.xml
+++ b/res/layout/preview_card_cover_content.xml
@@ -67,13 +67,12 @@
         <ImageView
             android:layout_width="@dimen/preview_theme_icon_size"
             android:layout_height="@dimen/preview_theme_icon_size"
-            android:id="@+id/preview_color_qs_2_bg"
-            android:tint="@color/tile_disabled_background_color"/>
+            android:id="@+id/preview_color_qs_2_bg"/>
         <ImageView
             android:layout_width="@dimen/preview_theme_tile_size"
             android:layout_height="@dimen/preview_theme_tile_size"
             android:id="@+id/preview_color_qs_2_icon"
-            android:color="@color/tile_disabled_icon_color"
+            android:tint="@color/tile_enabled_icon_color"
             android:layout_gravity="center"/>
     </FrameLayout>
 
diff --git a/res/layout/theme_component_preview.xml b/res/layout/theme_component_preview.xml
index a087c0d..32d3f20 100644
--- a/res/layout/theme_component_preview.xml
+++ b/res/layout/theme_component_preview.xml
@@ -14,55 +14,47 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+
+
+<androidx.constraintlayout.widget.ConstraintLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/theme_preview_card_background"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/theme_preview_card_background"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:focusable="true" tools:showIn="@layout/theme_preview_card">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:paddingHorizontal="@dimen/preview_card_padding"
-        android:paddingTop="@dimen/preview_card_padding"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent">
+    android:maxHeight="@dimen/preview_theme_max_height"
+    android:minHeight="@dimen/preview_theme_min_height"
+    android:paddingHorizontal="@dimen/preview_card_padding"
+    android:paddingTop="@dimen/preview_card_padding">
 
         <ViewStub
             android:id="@+id/theme_preview_top_bar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout="@layout/theme_preview_topbar"
+            app:layout_constraintBottom_toTopOf="@+id/theme_preview_card_header"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0.5"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"/>
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintVertical_chainStyle="spread_inside"/>
 
         <TextView
             android:id="@+id/theme_preview_card_header"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
-            android:layout_marginVertical="@dimen/card_header_top_margin"
-            android:drawablePadding="12dp"
+            android:drawablePadding="@dimen/theme_preview_header_drawable_padding"
             android:textAppearance="@style/CardTitleTextAppearance"
+            app:layout_constraintBottom_toTopOf="@id/theme_preview_card_body_container"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0.5"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/theme_preview_top_bar"
-            app:layout_goneMarginTop="@dimen/card_header_top_margin"/>
-
-        <Space
-            android:id="@+id/theme_preview_content_spacer"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintHeight_max="48dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/theme_preview_card_header"/>
+            app:layout_goneMarginTop="@dimen/card_header_top_margin"
+            app:layout_constraintVertical_chainStyle="spread_inside"
+            tools:text="Default"/>
 
         <FrameLayout
             android:id="@+id/theme_preview_card_body_container"
@@ -76,23 +68,23 @@
             app:layout_constraintHeight_min="@dimen/preview_theme_content_min_height"
             app:layout_constraintHorizontal_bias="0.5"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/theme_preview_content_spacer">
-
-        </FrameLayout>
+            app:layout_constraintTop_toBottomOf="@+id/theme_preview_card_header"/>
 
         <androidx.constraintlayout.widget.Guideline
             android:id="@+id/guideline"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
-            app:layout_constraintGuide_end="40dp"
-        />
+            app:layout_constraintBottom_toTopOf="@+id/edit_label"
+            app:layout_constraintGuide_end="@dimen/min_taptarget_height"
+            app:layout_constraintTop_toBottomOf="@+id/theme_preview_card_body_container"/>
 
         <TextView
             android:id="@+id/edit_label"
             style="@style/EditLabelStyle"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:minHeight="@dimen/min_taptarget_height"
             android:drawableStart="@drawable/ic_tune"
             android:drawablePadding="8dp"
             android:gravity="center"
@@ -102,8 +94,7 @@
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0.5"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/theme_preview_card_body_container"
+            app:layout_constraintTop_toBottomOf="@+id/guideline"
             app:layout_constraintVertical_bias="0.5"/>
 
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</FrameLayout>
\ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/theme_icon_option.xml b/res/layout/theme_icon_option.xml
index 4872ffc..62925ad 100644
--- a/res/layout/theme_icon_option.xml
+++ b/res/layout/theme_icon_option.xml
@@ -38,6 +38,7 @@
             android:id="@+id/option_icon"
             android:layout_width="@dimen/component_icon_thumb_size"
             android:layout_height="@dimen/component_icon_thumb_size"
-            android:layout_gravity="center"/>
+            android:layout_gravity="center"
+            android:tint="?android:colorForeground"/>
     </FrameLayout>
 </LinearLayout>
diff --git a/res/layout/theme_option.xml b/res/layout/theme_option.xml
index de81231..1cb9ffa 100644
--- a/res/layout/theme_option.xml
+++ b/res/layout/theme_option.xml
@@ -45,7 +45,8 @@
             android:layout_height="@dimen/theme_option_icon_sample_height"
             android:layout_alignParentTop="true"
             android:layout_alignParentLeft="true"
-            android:layout_margin="@dimen/theme_option_sample_padding"/>
+            android:layout_margin="@dimen/theme_option_sample_padding"
+            android:tint="?android:colorForeground"/>
         <ImageView
             android:id="@+id/theme_option_shape"
             android:layout_width="@dimen/theme_option_shape_sample_width"
diff --git a/res/layout/theme_preview_topbar.xml b/res/layout/theme_preview_topbar.xml
index 2422064..5642668 100644
--- a/res/layout/theme_preview_topbar.xml
+++ b/res/layout/theme_preview_topbar.xml
@@ -20,7 +20,8 @@
     android:id="@+id/theme_preview_top_bar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    tools:visibility="visible" tools:showIn="@layout/theme_preview_card">
+    tools:visibility="visible"
+    tools:showIn="@layout/theme_preview_card">
     <TextView
         android:id="@+id/theme_preview_clock"
         android:layout_width="wrap_content"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 9ec9fbb..461a19e 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Gebruik <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nee, dankie"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g>-horlosievoorskou"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index b28e5c4..edc5264 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>ን ይጠቀሙ"</string>
     <string name="no_thanks" msgid="7286616980115687627">"አይ፣ አመሰግናለሁ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"የ<xliff:g id="ID_1">%1$s</xliff:g> ሰዓት ቅድመ-እይታ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 4ba6689..d119172 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"استخدام <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"لا، شكرًا"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"معاينة الساعة <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index e8de0e2..2c6bced 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> istifadə edin"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Xeyr, təşəkkürlər"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g>, saatın önizlənməsi"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 48bd436..dc3a8d8 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Koristi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, hvala"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pregled sata <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index e48b7bc..a44c7bf 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Выкарыстоўваць <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Не, дзякуй"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Папярэдні прагляд гадзінніка <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index d6599d0..e48f9d3 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Използване на „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Не, благодаря"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Визуализация на циферблата <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index fc5f9f7..c3ae1e8 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> ব্যবহার করুন"</string>
     <string name="no_thanks" msgid="7286616980115687627">"না, থাক"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ঘড়ির প্রিভিউ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 68f3928..416f1fa 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Koristi stil <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, hvala"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pregled sata <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index f9cc32c..3de292b 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utilitza l\'estil <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No, gràcies"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Previsualització de rellotge <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 5c5f492..2ffb142 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Použít styl <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, děkuji"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Náhled ciferníku <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 552ea19..241b298 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Brug <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nej tak"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Forhåndsvisning af urskiven <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index c4b44ad..f4c5bdc 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> verwenden"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nein danke"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Vorschau für Zifferblatt <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index fbab553..55dc19e 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Χρήση <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Όχι, ευχαριστώ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Προεπισκόπηση ρολογιού <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 2208e8a..2e092ef 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Use <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No thanks"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> clock preview"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 2208e8a..2e092ef 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Use <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No thanks"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> clock preview"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 2208e8a..2e092ef 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Use <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No thanks"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> clock preview"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index c854d47..23e5d9c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Usar <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No, gracias"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Vista previa del reloj <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e572b9c..01cb456 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utilizar <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No, gracias"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Vista previa del reloj <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 59308e2..a53833d 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Kasuta teemat <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Tänan, ei"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Kella <xliff:g id="ID_1">%1$s</xliff:g> eelvaade"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index df84512..4c5ed2c 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Erabili <xliff:g id="ID_1">%1$s</xliff:g> estiloa"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ez"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> erlojuaren aurrebista"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9af1cdb..717b382 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"استفاده از <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"نه، متشکرم"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> پیش‌نمایش ساعت"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index d2fd65b..0b33a4d 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Valitse <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ei kiitos"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Kellon esikatselu: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 9ab562b..4d2e045 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utiliser <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Non, merci"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Aperçu de l\'horloge <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 417eebd..51fa243 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utiliser <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Non, merci"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> aperçu d\'horloge"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 73b4ce1..c2ae8ba 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utilizar <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Non, grazas"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Vista previa do reloxo <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index d344bdd..a2f46c9 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>નો ઉપયોગ કરો"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ના, આભાર"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ઘડિયાળનું પ્રીવ્યૂ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-h740dp/dimens.xml b/res/values-h740dp/dimens.xml
new file mode 100644
index 0000000..a752b6b
--- /dev/null
+++ b/res/values-h740dp/dimens.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+     Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <dimen name="preview_theme_content_margin">12dp</dimen>
+
+    <dimen name="preview_theme_icon_size">40dp</dimen>
+    <dimen name="preview_theme_tile_size">20dp</dimen>
+    <dimen name="preview_theme_shape_size">52dp</dimen>
+    <dimen name="preview_theme_cover_content_extra_margin">8dp</dimen>
+
+    <dimen name="preview_theme_content_min_height">152dp</dimen>
+
+    <dimen name="theme_preview_header_drawable_padding">12dp</dimen>
+
+    <dimen name="card_header_top_margin">16dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 7e349c9..81f5402 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> इस्तेमाल करें"</string>
     <string name="no_thanks" msgid="7286616980115687627">"रहने दें"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> घड़ी की झलक"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index fd3990f..d7747bd 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Koristi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, hvala"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pregled sata <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 3425778..07fa1cf 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> használata"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nem, köszönöm"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> – óra előnézete"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 4d0e281..31279ea 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Օգտագործել <xliff:g id="ID_1">%1$s</xliff:g> ոճը"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ոչ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ժամացույցի նախադիտում"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 32fa0ec..e97b054 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Gunakan <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Lain kali"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pratinjau jam <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 02d46c7..9b0b014 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Nota „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nei, takk"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> forskoðun klukku"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 3fd0c72..e24b840 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Usa <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"No, grazie"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Anteprima dell\'orologio <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 5137153..1ea3b94 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"שימוש בעיצוב <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"לא תודה"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"תצוגה מקדימה של שעון <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b792418..dacda95 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> を使用"</string>
     <string name="no_thanks" msgid="7286616980115687627">"いいえ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> クロックのプレビュー"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 4bc9afb..08e0db8 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>-ის გამოყენება"</string>
     <string name="no_thanks" msgid="7286616980115687627">"არა, გმადლობთ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> საათის გადახედვა"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index a7e5291..c9573b8 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> пайдалану"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Жоқ, рақмет"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> сағатын алдын ала қарау"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 2a7e623..1bbf4aa 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"ប្រើ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ទេ អរគុណ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"ការមើល​នាឡិកា <xliff:g id="ID_1">%1$s</xliff:g> សាកល្បង"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 272d91e..dde11e6 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> ಅನ್ನು ಬಳಸಿ"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ಬೇಡ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ಗಡಿಯಾರ ಪೂರ್ವವೀಕ್ಷಣೆ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 80a24c0..cddfc2e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> 사용"</string>
     <string name="no_thanks" msgid="7286616980115687627">"아니요"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> 시계 미리보기"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index f13c07d..9399872 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> колдонулсун"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Жок, рахмат"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> саатын алдын ала көрүү"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 1ad275c..0373e16 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"ໃຊ້ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ບໍ່, ຂອບໃຈ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"ຕົວຢ່າງໂມງ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 997608e..4fcb5d6 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Naudoti „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, ačiū"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Ciferblato „<xliff:g id="ID_1">%1$s</xliff:g>“ peržiūra"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index a325e15..277a2d4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Izmantojiet <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nē, paldies"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g>: pulksteņa priekšskatījums"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 19b3c23..8e940d8 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Користи <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Не, фала"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Преглед на часовник <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f1b8451..79ef993 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> ഉപയോഗിക്കുക"</string>
     <string name="no_thanks" msgid="7286616980115687627">"വേണ്ട"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ക്ലോക്ക് പ്രിവ്യൂ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 5084797..c67faaf 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>-г ашиглах"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Үгүй, баярлалаа"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> цагийг урьдчилан үзэх"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index b8bf7ce..3ea4c6c 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> वापरा"</string>
     <string name="no_thanks" msgid="7286616980115687627">"नाही, नको"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> घड्याळाचे पूर्वावलोकन"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 8afa281..33a8030 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Gunakan <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Tidak perlu"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> pratonton jam"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 4c280e7..14e12d4 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> သုံးရန်"</string>
     <string name="no_thanks" msgid="7286616980115687627">"မလိုပါ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> နာရီ အစမ်းကြည့်ခြင်း"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 534c219..1d91f1f 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Bruk <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nei takk"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Forhåndsvisning av <xliff:g id="ID_1">%1$s</xliff:g>-klokke"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 6d55db8..a480c5f 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> प्रयोग गर्नु…"</string>
     <string name="no_thanks" msgid="7286616980115687627">"पर्दैन, धन्यवाद"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> घडीको पूर्वावलोकन"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 256faab..a67e00f 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> gebruiken"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nee, bedankt"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Voorbeeld van <xliff:g id="ID_1">%1$s</xliff:g>-klok bekijken"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 07c67ef..488ab13 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> ਵਰਤੋ"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ਨਹੀਂ, ਧੰਨਵਾਦ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ਘੜੀ ਦੀ ਪੂਰਵ-ਝਲਕ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 7903977..df71281 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Użyj motywu <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nie, dziękuję"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Podgląd zegara <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 132119c..37d6a65 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Utilizar <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Não, obrigado"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pré-visualização do relógio <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 1bf6795..9b493e3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Usar <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Não"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Visualização do relógio <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 2a18739..6875a24 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Folosiți <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nu, mulțumesc"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Previzualizarea ceasului <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index fac53b9..a724329 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>: использовать"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Нет"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g>: предварительный просмотр циферблата"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 7b4a6db..ada8809 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> භාවිතා කරන්න"</string>
     <string name="no_thanks" msgid="7286616980115687627">"එපා, ස්තූතියි"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ඔරලෝසු පෙරදසුන"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c836aca..6359531 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Použiť <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nie, ďakujem"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Ukážka ciferníka <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 38be787..9cc2ee7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Uporabi slog <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ne, hvala"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Predogled ure <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 8b199d9..daf97e3 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Përdor <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Jo, faleminderit"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Pamja paraprake e orës <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 3b6bf6d..1a49013 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Користи <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Не, хвала"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Преглед сата <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index ea1e7f0..db41e6e 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Använd <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Nej tack"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Förhandsvisning av urtavlan <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 049a4e1..fa5141e 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Tumia <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Hapana, asante"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Onyesho la kukagua saa ya <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index e9609b0..c0e2db8 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>ஐப் பயன்படுத்து"</string>
     <string name="no_thanks" msgid="7286616980115687627">"வேண்டாம்"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> கடிகார மாதிரிக்காட்சி"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index bbf4026..e453dfe 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g>ని ఉపయోగించు"</string>
     <string name="no_thanks" msgid="7286616980115687627">"వద్దు, ధన్యవాదం"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> గడియార ప్రివ్యూ"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index cae0802..396e859 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"ใช้ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"ไม่เป็นไร"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"ตัวอย่างนาฬิกา <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b6d174f..bb8cf62 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Gamitin ang <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Hindi, salamat"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> preview ng orasan"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index ca6089f..0bb97d2 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> stilini kullan"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Hayır"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> saat önizleme"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 812a78b..ef7cfd1 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Вибрати стиль \"<xliff:g id="ID_1">%1$s</xliff:g>\""</string>
     <string name="no_thanks" msgid="7286616980115687627">"Ні, дякую"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Попередній перегляд годинника \"<xliff:g id="ID_1">%1$s</xliff:g>\""</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index cce806c..6d10452 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> استعمال کریں"</string>
     <string name="no_thanks" msgid="7286616980115687627">"نہیں، شکریہ"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> گھڑی کا پیش منظر"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 88cd360..e3d5459 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> ishlatish"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Kerak emas"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> soatiga razm solish"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 2fc7c83..9c54e71 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Sử dụng <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Không, cảm ơn"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"Bản xem trước đồng hồ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index f907108..7565044 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"使用<xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"不用了"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g>时钟预览"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 34ddf83..27ee1ad 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"使用「<xliff:g id="ID_1">%1$s</xliff:g>」"</string>
     <string name="no_thanks" msgid="7286616980115687627">"不用了,謝謝"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"「<xliff:g id="ID_1">%1$s</xliff:g>」時鐘預覽"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b0d12a0..2bf640c 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"使用「<xliff:g id="ID_1">%1$s</xliff:g>」"</string>
     <string name="no_thanks" msgid="7286616980115687627">"不用了,謝謝"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"「<xliff:g id="ID_1">%1$s</xliff:g>」時鐘預覽畫面"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8bf2d53..9edfd64 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -65,4 +65,6 @@
     <string name="use_style_button" msgid="1754493078383627019">"Sebenzisa i-<xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="no_thanks" msgid="7286616980115687627">"Cha, ngiyabonga"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> ukubuka kuqala iwashi"</string>
+    <!-- no translation found for something_went_wrong (529840112449799117) -->
+    <skip />
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ed05ee5..0c7f502 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -65,15 +65,20 @@
 
     <dimen name="card_title_text_size">16sp</dimen>
     <dimen name="card_cover_title_text_size">24sp</dimen>
-    <dimen name="card_header_top_margin">16dp</dimen>
-    <dimen name="preview_theme_content_margin">40dp</dimen>
+    <dimen name="card_header_top_margin">0dp</dimen>
+    <dimen name="preview_pager_max_height">450dp</dimen>
+    <dimen name="preview_pager_min_height">350dp</dimen>
+    <dimen name="preview_theme_max_height">400dp</dimen>
+    <dimen name="preview_theme_min_height">180dp</dimen>
+    <dimen name="theme_preview_header_drawable_padding">8dp</dimen>
+    <dimen name="preview_theme_content_margin">18dp</dimen>
     <dimen name="preview_theme_content_max_height">192dp</dimen>
-    <dimen name="preview_theme_content_min_height">152dp</dimen>
-    <dimen name="preview_theme_icon_size">40dp</dimen>
-    <dimen name="preview_theme_tile_size">20dp</dimen>
-    <dimen name="preview_theme_shape_size">52dp</dimen>
-    <dimen name="preview_theme_cover_topbar_icon_size">20dp</dimen>
-    <dimen name="preview_theme_cover_content_extra_margin">8dp</dimen>
+    <dimen name="preview_theme_content_min_height">120dp</dimen>
+    <dimen name="preview_theme_icon_size">30dp</dimen>
+    <dimen name="preview_theme_tile_size">16dp</dimen>
+    <dimen name="preview_theme_shape_size">36dp</dimen>
+    <dimen name="preview_theme_cover_topbar_icon_size">16dp</dimen>
+    <dimen name="preview_theme_cover_content_extra_margin">16dp</dimen>
 
     <dimen name="font_preview_body_width">200dp</dimen>
     <dimen name="font_preview_divider_gap">30dp</dimen>
diff --git a/res/values/override.xml b/res/values/override.xml
index 818f357..a01507e 100644
--- a/res/values/override.xml
+++ b/res/values/override.xml
@@ -31,10 +31,10 @@
         typically GMS apps so they should be available in GMS devices. -->
     <array name="icon_shape_preview_packages">
         <item>com.google.android.gm</item>
-        <item>com.google.android.apps.maps</item>
+        <item>com.google.android.googlequicksearchbox</item>
         <item>com.google.android.apps.photos</item>
         <item>com.google.android.apps.docs</item>
         <item>com.google.android.youtube</item>
         <item>com.android.vending</item>
     </array>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 46de146..f571b6b 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -187,4 +187,7 @@
 
     <!-- Content description for a screen showing the preview of a clock face. [CHAR_LIMIT=NONE] -->
     <string name="clock_preview_content_description"><xliff:g name="clock_name">%1$s</xliff:g> clock preview</string>
+
+    <!-- Generic error message [CHAR_LIMIT=NONE] -->
+    <string name="something_went_wrong">Oops! Something went wrong.</string>
 </resources>
diff --git a/src/com/android/customization/model/CustomizationManager.java b/src/com/android/customization/model/CustomizationManager.java
index 3296ca1..7b9f463 100644
--- a/src/com/android/customization/model/CustomizationManager.java
+++ b/src/com/android/customization/model/CustomizationManager.java
@@ -15,6 +15,9 @@
  */
 package com.android.customization.model;
 
+import android.util.Log;
+import android.widget.Toast;
+
 import androidx.annotation.Nullable;
 
 import java.util.List;
@@ -49,6 +52,15 @@
          * Called when the options have been retrieved.
          */
         void onOptionsLoaded(List<T> options);
+
+        /**
+         * Called if there was an error loading grid options
+         */
+        default void onError(@Nullable Throwable throwable) {
+            if (throwable != null) {
+                Log.e("OptionsFecthedListener", "Error loading options", throwable);
+            }
+        }
     }
 
     /**
diff --git a/src/com/android/customization/model/ResourceConstants.java b/src/com/android/customization/model/ResourceConstants.java
index be3b548..d8c32ff 100644
--- a/src/com/android/customization/model/ResourceConstants.java
+++ b/src/com/android/customization/model/ResourceConstants.java
@@ -83,7 +83,8 @@
             "ic_qs_dnd",
             "ic_qs_flashlight",
             "ic_qs_auto_rotate",
-            "ic_qs_airplane"
+            "ic_qs_airplane",
+            "ic_signal_cellular_3_4_bar"
     };
 
     ArrayList<String> sTargetPackages = new ArrayList<>();
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index ba5968e..1599dde 100644
--- a/src/com/android/customization/model/grid/GridOptionsManager.java
+++ b/src/com/android/customization/model/grid/GridOptionsManager.java
@@ -78,8 +78,19 @@
         @Override
         protected void onPostExecute(List<GridOption> gridOptions) {
             if (mCallback != null) {
-                mCallback.onOptionsLoaded(gridOptions != null ? gridOptions
-                        : Collections.emptyList());
+                if (gridOptions != null && !gridOptions.isEmpty()) {
+                    mCallback.onOptionsLoaded(gridOptions);
+                } else {
+                    mCallback.onError(null);
+                }
+            }
+        }
+
+        @Override
+        protected void onCancelled() {
+            super.onCancelled();
+            if (mCallback != null) {
+                mCallback.onError(null);
             }
         }
     }
diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
index 58b6daf..11e7f5c 100644
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ b/src/com/android/customization/model/theme/DefaultThemeProvider.java
@@ -33,6 +33,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
 import android.content.res.Resources.NotFoundException;
 import android.service.wallpaper.WallpaperService;
 import android.text.TextUtils;
@@ -83,6 +84,7 @@
     private static final String WALLPAPER_PREFIX = "theme_wallpaper_";
     private static final String WALLPAPER_TITLE_PREFIX = "theme_wallpaper_title_";
     private static final String WALLPAPER_ATTRIBUTION_PREFIX = "theme_wallpaper_attribution_";
+    private static final String WALLPAPER_THUMB_PREFIX = "theme_wallpaper_thumbnail_";
     private static final String WALLPAPER_ACTION_PREFIX = "theme_wallpaper_action_";
 
     private static final String DEFAULT_THEME_NAME= "default";
@@ -181,7 +183,11 @@
             String wallpaperResName = WALLPAPER_PREFIX + themeName;
             int wallpaperResId = mStubApkResources.getIdentifier(wallpaperResName,
                     "drawable", mStubPackageName);
-            if (wallpaperResId > 0) {
+            // Check in case the theme has a separate thumbnail for the wallpaper
+            String wallpaperThumbnailResName = WALLPAPER_THUMB_PREFIX + themeName;
+            int wallpaperThumbnailResId = mStubApkResources.getIdentifier(wallpaperThumbnailResName,
+                    "drawable", mStubPackageName);
+            if (wallpaperResId != Resources.ID_NULL) {
                 builder.setWallpaperInfo(mStubPackageName, wallpaperResName,
                         themeName, wallpaperResId,
                         mStubApkResources.getIdentifier(WALLPAPER_TITLE_PREFIX + themeName,
@@ -191,13 +197,14 @@
                                 mStubPackageName),
                         mStubApkResources.getIdentifier(WALLPAPER_ACTION_PREFIX + themeName,
                                 "string", mStubPackageName))
-                        .setWallpaperAsset(
-                                getDrawableResourceAsset(WALLPAPER_PREFIX, themeName));
+                        .setWallpaperAsset(wallpaperThumbnailResId != Resources.ID_NULL ?
+                                getDrawableResourceAsset(WALLPAPER_THUMB_PREFIX, themeName)
+                                : getDrawableResourceAsset(WALLPAPER_PREFIX, themeName));
             } else {
                 // Try to see if it's a live wallpaper reference
                 wallpaperResId = mStubApkResources.getIdentifier(wallpaperResName,
                         "string", mStubPackageName);
-                if (wallpaperResId > 0) {
+                if (wallpaperResId != Resources.ID_NULL) {
                     String wpComponent = mStubApkResources.getString(wallpaperResId);
                     String[] componentParts = wpComponent.split("/");
                     Intent liveWpIntent =  new Intent(WallpaperService.SERVICE_INTERFACE);
@@ -213,8 +220,10 @@
                         try {
                             wallpaperInfo = new android.app.WallpaperInfo(appContext, resolveInfo);
                             LiveWallpaperInfo liveInfo = new LiveWallpaperInfo(wallpaperInfo);
-                            builder.setLiveWallpaperInfo(liveInfo)
-                                    .setWallpaperAsset(liveInfo.getThumbAsset(mContext));
+                            builder.setLiveWallpaperInfo(liveInfo).setWallpaperAsset(
+                                    wallpaperThumbnailResId != Resources.ID_NULL ?
+                                        getDrawableResourceAsset(WALLPAPER_THUMB_PREFIX, themeName)
+                                        : liveInfo.getThumbAsset(mContext));
                         } catch (XmlPullParserException | IOException e) {
                             Log.w(TAG, "Skipping wallpaper " + resolveInfo.serviceInfo, e);
                         }
diff --git a/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java b/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java
index 020e3ef..a37f250 100644
--- a/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java
+++ b/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java
@@ -81,9 +81,6 @@
         }
         for (String iconName : ICONS_FOR_PREVIEW) {
             try {
-                if (previewIcons.size() == COLOR_TILES_ICON_IDS.length) {
-                    break;
-                }
                 previewIcons.add(loadIconPreviewDrawable(iconName, iconPackage));
             } catch (NameNotFoundException | NotFoundException e) {
                 Log.w(TAG, String.format("Couldn't load icon in %s for color preview, will skip it",
diff --git a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java b/src/com/android/customization/model/theme/custom/ThemeComponentOption.java
index 994b5f3..8966dc5 100644
--- a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java
+++ b/src/com/android/customization/model/theme/custom/ThemeComponentOption.java
@@ -47,7 +47,9 @@
 
 import androidx.annotation.ColorInt;
 import androidx.annotation.Dimension;
+import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
 
 import com.android.customization.model.CustomizationManager;
 import com.android.customization.model.CustomizationOption;
@@ -138,9 +140,7 @@
 
         @Override
         public void bindPreview(ViewGroup container) {
-            TextView header = container.findViewById(R.id.theme_preview_card_header);
-            header.setText(R.string.preview_name_font);
-            header.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_font, 0, 0);
+            bindPreviewHeader(container, R.string.preview_name_font, R.drawable.ic_font);
 
             ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
             if (cardBody.getChildCount() == 0) {
@@ -161,6 +161,15 @@
         }
     }
 
+    void bindPreviewHeader(ViewGroup container, @StringRes int headerTextResId,
+            @DrawableRes int headerIcon) {
+        TextView header = container.findViewById(R.id.theme_preview_card_header);
+        header.setText(headerTextResId);
+        header.setCompoundDrawablesWithIntrinsicBounds(0, headerIcon, 0, 0);
+        header.setCompoundDrawableTintList(ColorStateList.valueOf(
+                header.getCurrentTextColor()));
+    }
+
     public static class IconOption extends ThemeComponentOption {
 
         public static final int THUMBNAIL_ICON_POSITION = 0;
@@ -210,9 +219,7 @@
 
         @Override
         public void bindPreview(ViewGroup container) {
-            TextView header = container.findViewById(R.id.theme_preview_card_header);
-            header.setText(R.string.preview_name_icon);
-            header.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_wifi_24px, 0, 0);
+            bindPreviewHeader(container, R.string.preview_name_icon, R.drawable.ic_wifi_24px);
 
             ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
             if (cardBody.getChildCount() == 0) {
@@ -258,9 +265,15 @@
         private static int[] COLOR_TILE_IDS = {
                 R.id.preview_color_qs_0_bg, R.id.preview_color_qs_1_bg, R.id.preview_color_qs_2_bg
         };
-        static int[] COLOR_TILES_ICON_IDS = {
-                R.id.preview_color_qs_0_icon, R.id.preview_color_qs_1_icon,
-                R.id.preview_color_qs_2_icon
+
+        /**
+         * Ids of the views for the foreground of the icon, mapping to the corresponding index of
+         * the actual icon drawable.
+         */
+        static int[][] COLOR_TILES_ICON_IDS = {
+                new int[]{ R.id.preview_color_qs_0_icon, 0},
+                new int[]{ R.id.preview_color_qs_1_icon, 1},
+                new int[] { R.id.preview_color_qs_2_icon, 3}
         };
 
         /**
@@ -296,11 +309,13 @@
 
         @Override
         public void bindThumbnailTile(View view) {
-            int color = resolveColor(view.getResources());
-            ((ImageView) view.findViewById(R.id.option_tile)).getDrawable().setTint(color);
+            @ColorInt int color = resolveColor(view.getResources());
+            ((ImageView) view.findViewById(R.id.option_tile)).setImageTintList(
+                    ColorStateList.valueOf(color));
             view.setContentDescription(mLabel);
         }
 
+        @ColorInt
         private int resolveColor(Resources res) {
             Configuration configuration = res.getConfiguration();
             return (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK)
@@ -321,9 +336,7 @@
 
         @Override
         public void bindPreview(ViewGroup container) {
-            TextView header = container.findViewById(R.id.theme_preview_card_header);
-            header.setText(R.string.preview_name_color);
-            header.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_colorize_24px, 0, 0);
+            bindPreviewHeader(container, R.string.preview_name_color, R.drawable.ic_colorize_24px);
 
             ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
             if (cardBody.getChildCount() == 0) {
@@ -364,14 +377,15 @@
             seekbar.setOnTouchListener((view, motionEvent) -> true);
             if (!mIcons.isEmpty() && mShapeDrawable != null) {
                 for (int i = 0; i < COLOR_TILE_IDS.length; i++) {
-                    Drawable icon = mIcons.get(i).getConstantState().newDrawable();
+                    Drawable icon = mIcons.get(COLOR_TILES_ICON_IDS[i][1]).getConstantState()
+                            .newDrawable();
                     //TODO: load and set the shape.
                     Drawable bgShape = mShapeDrawable.getConstantState().newDrawable();
                     bgShape.setTint(accentColor);
 
                     ImageView bg = container.findViewById(COLOR_TILE_IDS[i]);
                     bg.setImageDrawable(bgShape);
-                    ImageView fg = container.findViewById(COLOR_TILES_ICON_IDS[i]);
+                    ImageView fg = container.findViewById(COLOR_TILES_ICON_IDS[i][0]);
                     fg.setImageDrawable(icon);
                 }
             }
@@ -453,9 +467,7 @@
 
         @Override
         public void bindPreview(ViewGroup container) {
-            TextView header = container.findViewById(R.id.theme_preview_card_header);
-            header.setText(R.string.preview_name_shape);
-            header.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_shapes_24px, 0, 0);
+            bindPreviewHeader(container, R.string.preview_name_shape, R.drawable.ic_shapes_24px);
 
             ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
             if (cardBody.getChildCount() == 0) {
diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java
index b85948d..4b3c2c2 100644
--- a/src/com/android/customization/picker/CustomizationPickerActivity.java
+++ b/src/com/android/customization/picker/CustomizationPickerActivity.java
@@ -159,6 +159,7 @@
     protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
         if (WALLPAPER_ONLY.equals(intent.getStringExtra(WALLPAPER_FLAVOR_EXTRA))) {
+            Log.d(TAG, "WALLPAPER_ONLY intent, reverting to Wallpaper Picker");
             skipToWallpaperPicker();
         }
     }
@@ -177,15 +178,11 @@
     private void initSections() {
         mSections.clear();
         if (!BuildCompat.isAtLeastQ()) {
-            return;
-        }
-        //if (!BuildCompat.isAtLeastQ()) {
-        //    return;
-        //}
-        if (Build.TYPE.equals("user")) {
+            Log.d(TAG, "Build version < Q detected");
             return;
         }
         if (WALLPAPER_ONLY.equals(getIntent().getStringExtra(WALLPAPER_FLAVOR_EXTRA))) {
+            Log.d(TAG, "WALLPAPER_ONLY intent");
             return;
         }
         //Theme
@@ -200,12 +197,16 @@
                 mWallpaperSetter, new OverlayManagerCompat(this), eventLogger);
         if (themeManager.isAvailable()) {
             mSections.put(R.id.nav_theme, new ThemeSection(R.id.nav_theme, themeManager));
+        } else {
+            Log.d(TAG, "ThemeManager not available, removing Style section");
         }
         //Clock
         ClockManager clockManager = new ClockManager(getContentResolver(),
                 new ContentProviderClockProvider(this), eventLogger);
         if (clockManager.isAvailable()) {
             mSections.put(R.id.nav_clock, new ClockSection(R.id.nav_clock, clockManager));
+        } else {
+            Log.d(TAG, "ClockManager not available, removing Clock section");
         }
         //Grid
         GridOptionsManager gridManager = new GridOptionsManager(
@@ -214,9 +215,10 @@
                 eventLogger);
         if (gridManager.isAvailable()) {
             mSections.put(R.id.nav_grid, new GridSection(R.id.nav_grid, gridManager));
+        } else {
+            Log.d(TAG, "GridOptionsManager not available, removing Grid section");
         }
         mSections.put(R.id.nav_wallpaper, new WallpaperSection(R.id.nav_wallpaper));
-        //TODO (santie): add other sections if supported by the device
     }
 
     private void setUpBottomNavView() {
diff --git a/src/com/android/customization/picker/TimeTicker.java b/src/com/android/customization/picker/TimeTicker.java
new file mode 100644
index 0000000..2cf5dbf
--- /dev/null
+++ b/src/com/android/customization/picker/TimeTicker.java
@@ -0,0 +1,41 @@
+package com.android.customization.picker;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.annotation.Nullable;
+
+/**
+ * BroadcastReceiver that can notify a listener when the system time (minutes) changes.
+ * Use {@link #registerNewReceiver(Context, TimeListener)} to create a new instance that will be
+ * automatically registered using the given Context.
+ */
+public class TimeTicker extends BroadcastReceiver {
+
+    public interface TimeListener {
+        void onCurrentTimeChanged();
+    }
+
+    public static TimeTicker registerNewReceiver(Context context, TimeListener listener) {
+        TimeTicker receiver = new TimeTicker(listener);
+        // Register broadcast receiver for time tick
+        final IntentFilter filter = new IntentFilter(Intent.ACTION_TIME_TICK);
+        context.registerReceiver(receiver, filter);
+        return receiver;
+    }
+
+    @Nullable private TimeListener mListener;
+
+    private TimeTicker(TimeListener listener) {
+        mListener = listener;
+    }
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (mListener != null) {
+            mListener.onCurrentTimeChanged();
+        }
+    }
+}
diff --git a/src/com/android/customization/picker/clock/ClockFragment.java b/src/com/android/customization/picker/clock/ClockFragment.java
index c3e1c97..14dbc16 100644
--- a/src/com/android/customization/picker/clock/ClockFragment.java
+++ b/src/com/android/customization/picker/clock/ClockFragment.java
@@ -18,6 +18,7 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -26,9 +27,11 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.core.widget.ContentLoadingProgressBar;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.customization.model.CustomizationManager.Callback;
+import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
 import com.android.customization.model.clock.BaseClockManager;
 import com.android.customization.model.clock.Clockface;
 import com.android.customization.module.ThemesUserEventLogger;
@@ -41,11 +44,15 @@
 import com.android.wallpaper.module.InjectorProvider;
 import com.android.wallpaper.picker.ToolbarFragment;
 
+import java.util.List;
+
 /**
  * Fragment that contains the main UI for selecting and applying a Clockface.
  */
 public class ClockFragment extends ToolbarFragment {
 
+    private static final String TAG = "ClockFragment";
+
     /**
      * Interface to be implemented by an Activity hosting a {@link ClockFragment}
      */
@@ -64,6 +71,9 @@
     private Clockface mSelectedOption;
     private BaseClockManager mClockManager;
     private PreviewPager mPreviewPager;
+    private ContentLoadingProgressBar mLoading;
+    private View mContent;
+    private View mError;
     private ThemesUserEventLogger mEventLogger;
 
     @Override
@@ -81,8 +91,11 @@
         View view = inflater.inflate(
                 R.layout.fragment_clock_picker, container, /* attachToRoot */ false);
         setUpToolbar(view);
+        mContent = view.findViewById(R.id.content_section);
         mPreviewPager = view.findViewById(R.id.clock_preview_pager);
         mOptionsContainer = view.findViewById(R.id.options_container);
+        mLoading = view.findViewById(R.id.loading_indicator);
+        mError = view.findViewById(R.id.error_section);
         setUpOptions();
         view.findViewById(R.id.apply_button).setOnClickListener(v -> {
             mClockManager.apply(mSelectedOption, new Callback() {
@@ -95,6 +108,9 @@
 
                 @Override
                 public void onError(@Nullable Throwable throwable) {
+                    if (throwable != null) {
+                        Log.e(TAG, "Error loading clockfaces", throwable);
+                    }
                     //TODO(santie): handle
                 }
             });
@@ -108,26 +124,50 @@
     }
 
     private void setUpOptions() {
-        mClockManager.fetchOptions(options -> {
-            mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
+        hideError();
+        mLoading.show();
+        mClockManager.fetchOptions(new OptionsFetchedListener<Clockface>() {
+           @Override
+           public void onOptionsLoaded(List<Clockface> options) {
+               mLoading.hide();
+               mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
 
-            mOptionsController.addListener(selected -> {
-                mSelectedOption = (Clockface) selected;
-                mEventLogger.logClockSelected(mSelectedOption);
-                createAdapter();
-            });
-            mOptionsController.initOptions(mClockManager);
-            for (Clockface option : options) {
-                if (option.isActive(mClockManager)) {
-                    mSelectedOption = option;
+               mOptionsController.addListener(selected -> {
+                   mSelectedOption = (Clockface) selected;
+                   mEventLogger.logClockSelected(mSelectedOption);
+                   createAdapter();
+               });
+               mOptionsController.initOptions(mClockManager);
+               for (Clockface option : options) {
+                   if (option.isActive(mClockManager)) {
+                       mSelectedOption = option;
+                   }
+               }
+               // For development only, as there should always be a grid set.
+               if (mSelectedOption == null) {
+                   mSelectedOption = options.get(0);
+               }
+               createAdapter();
+           }
+           @Override
+            public void onError(@Nullable Throwable throwable) {
+                if (throwable != null) {
+                   Log.e(TAG, "Error loading clockfaces", throwable);
                 }
+                showError();
             }
-            // For development only, as there should always be a grid set.
-            if (mSelectedOption == null) {
-                mSelectedOption = options.get(0);
-            }
-            createAdapter();
-        }, false);
+       }, false);
+    }
+
+    private void hideError() {
+        mContent.setVisibility(View.VISIBLE);
+        mError.setVisibility(View.GONE);
+    }
+
+    private void showError() {
+        mLoading.hide();
+        mContent.setVisibility(View.GONE);
+        mError.setVisibility(View.VISIBLE);
     }
 
     private static class ClockfacePreviewPage extends PreviewPage {
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index d50c7a8..3c395a1 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -22,6 +22,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnLayoutChangeListener;
@@ -31,9 +32,11 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.cardview.widget.CardView;
+import androidx.core.widget.ContentLoadingProgressBar;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.customization.model.CustomizationManager.Callback;
+import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
 import com.android.customization.model.grid.GridOption;
 import com.android.customization.model.grid.GridOptionsManager;
 import com.android.customization.module.ThemesUserEventLogger;
@@ -51,6 +54,8 @@
 
 import com.bumptech.glide.request.RequestOptions;
 
+import java.util.List;
+
 /**
  * Fragment that contains the UI for selecting and applying a GridOption.
  */
@@ -58,6 +63,8 @@
 
     private static final int PREVIEW_FADE_DURATION_MS = 100;
 
+    private static final String TAG = "GridFragment";
+
     /**
      * Interface to be implemented by an Activity hosting a {@link GridFragment}
      */
@@ -82,6 +89,9 @@
     private GridOptionsManager mGridManager;
     private GridOption mSelectedOption;
     private PreviewPager mPreviewPager;
+    private ContentLoadingProgressBar mLoading;
+    private View mContent;
+    private View mError;
     private ThemesUserEventLogger mEventLogger;
 
     @Override
@@ -99,8 +109,11 @@
         View view = inflater.inflate(
                 R.layout.fragment_grid_picker, container, /* attachToRoot */ false);
         setUpToolbar(view);
+        mContent = view.findViewById(R.id.content_section);
         mPreviewPager = view.findViewById(R.id.grid_preview_pager);
         mOptionsContainer = view.findViewById(R.id.options_container);
+        mLoading = view.findViewById(R.id.loading_indicator);
+        mError = view.findViewById(R.id.error_section);
         final Resources res = getResources();
         DisplayMetrics dm = res.getDisplayMetrics();
         mScreenAspectRatio = (float) dm.heightPixels / dm.widthPixels;
@@ -161,28 +174,53 @@
     }
 
     private void setUpOptions() {
-        mGridManager.fetchOptions(options -> {
-            mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
+        hideError();
+        mLoading.show();
+        mGridManager.fetchOptions(new OptionsFetchedListener<GridOption>() {
+            @Override
+            public void onOptionsLoaded(List<GridOption> options) {
+                mLoading.hide();
+                mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
 
-            mOptionsController.addListener(selected -> {
-                mSelectedOption = (GridOption) selected;
-                mEventLogger.logGridSelected(mSelectedOption);
-                createAdapter();
-            });
-            mOptionsController.initOptions(mGridManager);
-            for (GridOption option : options) {
-                if (option.isActive(mGridManager)) {
-                    mSelectedOption = option;
+                mOptionsController.addListener(selected -> {
+                    mSelectedOption = (GridOption) selected;
+                    mEventLogger.logGridSelected(mSelectedOption);
+                    createAdapter();
+                });
+                mOptionsController.initOptions(mGridManager);
+                for (GridOption option : options) {
+                    if (option.isActive(mGridManager)) {
+                        mSelectedOption = option;
+                    }
                 }
+                // For development only, as there should always be a grid set.
+                if (mSelectedOption == null) {
+                    mSelectedOption = options.get(0);
+                }
+                createAdapter();
             }
-            // For development only, as there should always be a grid set.
-            if (mSelectedOption == null) {
-                mSelectedOption = options.get(0);
+
+            @Override
+            public void onError(@Nullable Throwable throwable) {
+                if (throwable != null) {
+                    Log.e(TAG, "Error loading grid options", throwable);
+                }
+                showError();
             }
-            createAdapter();
         }, false);
     }
 
+    private void hideError() {
+        mContent.setVisibility(View.VISIBLE);
+        mError.setVisibility(View.GONE);
+    }
+
+    private void showError() {
+        mLoading.hide();
+        mContent.setVisibility(View.GONE);
+        mError.setVisibility(View.VISIBLE);
+    }
+
     private class GridPreviewPage extends PreviewPage {
         private final int mPageId;
         private final Asset mPreviewAsset;
diff --git a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java b/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
index 04aac7d..5f7381a 100644
--- a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
+++ b/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
@@ -36,6 +36,7 @@
 import androidx.cardview.widget.CardView;
 
 import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
+import com.android.customization.picker.TimeTicker;
 import com.android.customization.picker.theme.ThemePreviewPage.ThemeCoverPage;
 import com.android.wallpaper.R;
 import com.android.wallpaper.asset.Asset;
@@ -63,8 +64,10 @@
     private int[] mColorTileIds = {
             R.id.preview_color_qs_0_bg, R.id.preview_color_qs_1_bg, R.id.preview_color_qs_2_bg
     };
-    private int[] mColorTileIconIds = {
-            R.id.preview_color_qs_0_icon, R.id.preview_color_qs_1_icon, R.id.preview_color_qs_2_icon
+    private int[][] mColorTileIconIds = {
+            new int[]{ R.id.preview_color_qs_0_icon, 0},
+            new int[]{ R.id.preview_color_qs_1_icon, 1},
+            new int[] { R.id.preview_color_qs_2_icon, 3}
     };
 
     private int[] mShapeIconIds = {
@@ -74,7 +77,7 @@
 
     private Asset mWallpaperAsset;
     private ThemeCoverPage mCoverPage;
-
+    private TimeTicker mTicker;
     private EditText mNameEditor;
 
     @Override
@@ -106,6 +109,27 @@
         return view;
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        mTicker = TimeTicker.registerNewReceiver(getContext(), this::updateTime);
+        updateTime();
+    }
+
+    private void updateTime() {
+        if (mCoverPage != null) {
+            mCoverPage.updateTime();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (getContext() != null) {
+            getContext().unregisterReceiver(mTicker);
+        }
+    }
+
     private void bindCover(CardView card) {
         Context context = getContext();
         PreviewInfo previewInfo = mCustomThemeManager.buildCustomThemePreviewInfo(context);
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 22fa1d4..bec3cf8 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.app.WallpaperColors;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.ColorStateList;
@@ -42,16 +43,21 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.core.widget.ContentLoadingProgressBar;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.customization.model.CustomizationManager.Callback;
+import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
+import com.android.customization.model.grid.GridOption;
 import com.android.customization.model.theme.ThemeBundle;
 import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
 import com.android.customization.model.theme.ThemeManager;
 import com.android.customization.model.theme.custom.CustomTheme;
 import com.android.customization.module.ThemesUserEventLogger;
 import com.android.customization.picker.BasePreviewAdapter;
+import com.android.customization.picker.TimeTicker;
 import com.android.customization.picker.theme.ThemePreviewPage.ThemeCoverPage;
+import com.android.customization.picker.theme.ThemePreviewPage.TimeContainer;
 import com.android.customization.widget.OptionSelectorController;
 import com.android.customization.widget.PreviewPager;
 import com.android.wallpaper.R;
@@ -91,9 +97,13 @@
     private ThemeBundle mSelectedTheme;
     private ThemePreviewAdapter mAdapter;
     private PreviewPager mPreviewPager;
+    private ContentLoadingProgressBar mLoading;
+    private View mContent;
+    private View mError;
     private boolean mUseMyWallpaper;
     private WallpaperInfo mCurrentHomeWallpaper;
     private CurrentWallpaperInfoFactory mCurrentWallpaperFactory;
+    private TimeTicker mTicker;
 
     @Override
     public void onAttach(Context context) {
@@ -111,6 +121,9 @@
                 R.layout.fragment_theme_picker, container, /* attachToRoot */ false);
         setUpToolbar(view);
 
+        mContent = view.findViewById(R.id.content_section);
+        mLoading = view.findViewById(R.id.loading_indicator);
+        mError = view.findViewById(R.id.error_section);
         mCurrentWallpaperFactory = InjectorProvider.getInjector()
                 .getCurrentWallpaperFactory(getActivity().getApplicationContext());
         mPreviewPager = view.findViewById(R.id.theme_preview_pager);
@@ -120,7 +133,6 @@
         });
         mUseMyWallpaperButton = view.findViewById(R.id.use_my_wallpaper);
         mUseMyWallpaperButton.setOnCheckedChangeListener(this::onUseMyWallpaperCheckChanged);
-
         setUpOptions(savedInstanceState);
 
         return view;
@@ -148,7 +160,23 @@
     @Override
     public void onResume() {
         super.onResume();
+        mTicker = TimeTicker.registerNewReceiver(getContext(), this::updateTime);
         reloadWallpaper();
+        updateTime();
+    }
+
+    private void updateTime() {
+        if (mAdapter != null) {
+            mAdapter.updateTime();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (getContext() != null) {
+            getContext().unregisterReceiver(mTicker);
+        }
     }
 
     @Override
@@ -215,48 +243,73 @@
 
     private void updateButtonsVisibility() {
         mUseMyWallpaperButton.setVisibility(mSelectedTheme instanceof CustomTheme
-                ? View.GONE : View.VISIBLE);
+                ? View.INVISIBLE : View.VISIBLE);
+    }
+
+    private void hideError() {
+        mContent.setVisibility(View.VISIBLE);
+        mError.setVisibility(View.GONE);
+    }
+
+    private void showError() {
+        mLoading.hide();
+        mContent.setVisibility(View.GONE);
+        mError.setVisibility(View.VISIBLE);
     }
 
     private void setUpOptions(@Nullable Bundle savedInstanceState) {
-        mThemeManager.fetchOptions(options -> {
-            mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
-            mOptionsController.addListener(selected -> {
-                if (selected instanceof CustomTheme && !((CustomTheme) selected).isDefined()) {
-                    navigateToCustomTheme((CustomTheme) selected);
-                } else {
-                    mSelectedTheme = (ThemeBundle) selected;
-                    if (mUseMyWallpaper || mSelectedTheme instanceof CustomTheme) {
-                        mSelectedTheme.setOverrideThemeWallpaper(mCurrentHomeWallpaper);
+        hideError();
+        mLoading.show();
+        mThemeManager.fetchOptions(new OptionsFetchedListener<ThemeBundle>() {
+            @Override
+            public void onOptionsLoaded(List<ThemeBundle> options) {
+                mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
+                mOptionsController.addListener(selected -> {
+                    mLoading.hide();
+                    if (selected instanceof CustomTheme && !((CustomTheme) selected).isDefined()) {
+                        navigateToCustomTheme((CustomTheme) selected);
                     } else {
-                        mSelectedTheme.setOverrideThemeWallpaper(null);
+                        mSelectedTheme = (ThemeBundle) selected;
+                        if (mUseMyWallpaper || mSelectedTheme instanceof CustomTheme) {
+                            mSelectedTheme.setOverrideThemeWallpaper(mCurrentHomeWallpaper);
+                        } else {
+                            mSelectedTheme.setOverrideThemeWallpaper(null);
+                        }
+                        mEventLogger.logThemeSelected(mSelectedTheme,
+                                selected instanceof CustomTheme);
+                        createAdapter(options);
+                        updateButtonsVisibility();
                     }
-                    mEventLogger.logThemeSelected(mSelectedTheme, selected instanceof CustomTheme);
-                    createAdapter(options);
-                    updateButtonsVisibility();
+                });
+                mOptionsController.initOptions(mThemeManager);
+                String previouslySelected = savedInstanceState != null
+                        ? savedInstanceState.getString(KEY_SELECTED_THEME) : null;
+                for (ThemeBundle theme : options) {
+                    if (previouslySelected != null
+                            && previouslySelected.equals(theme.getSerializedPackages())) {
+                        mSelectedTheme = theme;
+                    } else if (theme.isActive(mThemeManager)) {
+                        mSelectedTheme = theme;
+                        break;
+                    }
                 }
-            });
-            mOptionsController.initOptions(mThemeManager);
-            String previouslySelected = savedInstanceState != null
-                    ? savedInstanceState.getString(KEY_SELECTED_THEME) : null;
-            for (ThemeBundle theme : options) {
-                if (previouslySelected != null
-                        && previouslySelected.equals(theme.getSerializedPackages())) {
-                    mSelectedTheme = theme;
-                } else if (theme.isActive(mThemeManager)) {
-                    mSelectedTheme = theme;
-                    break;
+                if (mSelectedTheme == null) {
+                    // Select the default theme if there is no matching custom enabled theme
+                    // TODO(b/124796742): default to custom if there is no matching theme bundle
+                    mSelectedTheme = options.get(0);
+                } else {
+                    // Only show show checkmark if we found a matching theme
+                    mOptionsController.setAppliedOption(mSelectedTheme);
                 }
+                mOptionsController.setSelectedOption(mSelectedTheme);
             }
-            if (mSelectedTheme == null) {
-                // Select the default theme if there is no matching custom enabled theme
-                // TODO(b/124796742): default to custom if there is no matching theme bundle
-                mSelectedTheme = options.get(0);
-            } else {
-                // Only show show checkmark if we found a matching theme
-                mOptionsController.setAppliedOption(mSelectedTheme);
+            @Override
+            public void onError(@Nullable Throwable throwable) {
+                if (throwable != null) {
+                    Log.e(TAG, "Error loading theme bundles", throwable);
+                }
+                showError();
             }
-            mOptionsController.setSelectedOption(mSelectedTheme);
         }, false);
     }
 
@@ -307,8 +360,10 @@
         private int[] mColorTileIds = {
             R.id.preview_color_qs_0_bg, R.id.preview_color_qs_1_bg, R.id.preview_color_qs_2_bg
         };
-        private int[] mColorTileIconIds = {
-            R.id.preview_color_qs_0_icon, R.id.preview_color_qs_1_icon, R.id.preview_color_qs_2_icon
+        private int[][] mColorTileIconIds = {
+                new int[]{ R.id.preview_color_qs_0_icon, 0},
+                new int[]{ R.id.preview_color_qs_1_icon, 1},
+                new int[] { R.id.preview_color_qs_2_icon, 3}
         };
 
         private int[] mShapeIconIds = {
@@ -326,12 +381,15 @@
                     ? res.getDrawable(R.drawable.theme_cover_scrim_custom, activity.getTheme())
                     : res.getDrawable(R.drawable.theme_cover_scrim, activity.getTheme());
 
+            WallpaperPreviewLayoutListener wallpaperListener = new WallpaperPreviewLayoutListener(
+                    theme, previewInfo, coverScrim);
+
             addPage(new ThemeCoverPage(activity, theme.getTitle(),
                     previewInfo.resolveAccentColor(res), previewInfo.icons,
                     previewInfo.headlineFontFamily, previewInfo.bottomSheeetCornerRadius,
                     previewInfo.shapeDrawable, previewInfo.shapeAppIcons, editClickListener,
                     mColorButtonIds, mColorTileIds, mColorTileIconIds, mShapeIconIds,
-                    new WallpaperPreviewLayoutListener(theme, previewInfo, coverScrim)));
+                    wallpaperListener, coverCardLayoutListener));
             addPage(new ThemePreviewPage(activity, R.string.preview_name_font, R.drawable.ic_font,
                     R.layout.preview_card_font_content,
                     previewInfo.resolveAccentColor(res)) {
@@ -397,7 +455,7 @@
 
                         for (int i = 0; i < mColorTileIds.length && i < previewInfo.icons.size();
                                 i++) {
-                            Drawable icon = previewInfo.icons.get(i)
+                            Drawable icon = previewInfo.icons.get(mColorTileIconIds[i][1])
                                     .getConstantState().newDrawable().mutate();
                             Drawable bgShape =
                                     previewInfo.shapeDrawable.getConstantState().newDrawable();
@@ -405,7 +463,7 @@
 
                             ImageView bg = card.findViewById(mColorTileIds[i]);
                             bg.setImageDrawable(bgShape);
-                            ImageView fg = card.findViewById(mColorTileIconIds[i]);
+                            ImageView fg = card.findViewById(mColorTileIconIds[i][0]);
                             fg.setImageDrawable(icon);
                         }
                     }
@@ -461,6 +519,14 @@
             }
         }
 
+        public void updateTime() {
+            for (ThemePreviewPage page : mPages) {
+                if (page instanceof TimeContainer) {
+                    ((TimeContainer)page).updateTime();
+                }
+            }
+        }
+
         private static class WallpaperPreviewLayoutListener implements OnLayoutChangeListener {
             private final ThemeBundle mTheme;
             private final PreviewInfo mPreviewInfo;
diff --git a/src/com/android/customization/picker/theme/ThemePreviewPage.java b/src/com/android/customization/picker/theme/ThemePreviewPage.java
index 3c58079..224a8f8 100644
--- a/src/com/android/customization/picker/theme/ThemePreviewPage.java
+++ b/src/com/android/customization/picker/theme/ThemePreviewPage.java
@@ -30,6 +30,11 @@
 import java.util.TimeZone;
 
 abstract class ThemePreviewPage extends PreviewPage {
+
+    public interface TimeContainer {
+        void updateTime();
+    }
+
     @StringRes
     final int nameResId;
     @DrawableRes
@@ -71,7 +76,13 @@
 
     protected abstract void bindBody(boolean forceRebind);
 
-    static class ThemeCoverPage extends ThemePreviewPage {
+    static class ThemeCoverPage extends ThemePreviewPage implements TimeContainer {
+
+        /**
+         * Maps which icon from ResourceConstants#ICONS_FOR_PREVIEW to use for each icon in the
+         * top bar (fake "status bar") of the cover page.
+         */
+        private static final int [] sTopBarIconToPreviewIcon = new int [] { 0, 6, 2 };
 
         private final Typeface mHeadlineFont;
         private final List<Drawable> mIcons;
@@ -79,12 +90,12 @@
         private Drawable mShapeDrawable;
         private final int[] mColorButtonIds;
         private final int[] mColorTileIds;
-        private final int[] mColorTileIconIds;
+        private final int[][] mColorTileIconIds;
         private final int[] mShapeIconIds;
         private final Resources mRes;
         private String mTitle;
         private OnClickListener mEditClickListener;
-        private final OnLayoutChangeListener mListener;
+        private final OnLayoutChangeListener[] mListeners;
         private final int mCornerRadius;
         private final ColorStateList mTintList;
 
@@ -93,8 +104,8 @@
                 Drawable shapeDrawable,
                 List<Drawable> shapeAppIcons,
                 OnClickListener editClickListener,
-                int[] colorButtonIds, int[] colorTileIds, int[] colorTileIconIds,
-                int[] shapeIconIds, OnLayoutChangeListener wallpaperListener) {
+                int[] colorButtonIds, int[] colorTileIds, int[][] colorTileIconIds,
+                int[] shapeIconIds, OnLayoutChangeListener... wallpaperListeners) {
             super(context, 0, 0, R.layout.preview_card_cover_content, accentColor);
             mRes = context.getResources();
             mTitle = title;
@@ -108,7 +119,7 @@
             mColorTileIds = colorTileIds;
             mColorTileIconIds = colorTileIconIds;
             mShapeIconIds = shapeIconIds;
-            mListener = wallpaperListener;
+            mListeners = wallpaperListeners;
             // Color QS icons:
             int controlGreyColor = mRes.getColor(R.color.control_grey, null);
             mTintList = new ColorStateList(
@@ -130,8 +141,14 @@
             if (card == null) {
                 return;
             }
+            if (mListeners != null) {
+                for (OnLayoutChangeListener listener : mListeners) {
+                    if (listener != null) {
+                        card.addOnLayoutChangeListener(listener);
+                    }
+                }
+            }
 
-            card.addOnLayoutChangeListener(mListener);
             if (forceRebind) {
                 card.requestLayout();
             }
@@ -143,14 +160,14 @@
                 }
             }
             for (int i = 0; i < 3 && i < mIcons.size(); i++) {
-                Drawable icon =
-                        mIcons.get(i).getConstantState().newDrawable().mutate();
+                Drawable icon = mIcons.get(mColorTileIconIds[i][1]).getConstantState()
+                        .newDrawable().mutate();
                 Drawable bgShape = mShapeDrawable.getConstantState().newDrawable();
                 bgShape.setTint(accentColor);
 
                 ImageView bg = card.findViewById(mColorTileIds[i]);
                 bg.setImageDrawable(bgShape);
-                ImageView fg = card.findViewById(mColorTileIconIds[i]);
+                ImageView fg = card.findViewById(mColorTileIconIds[i][0]);
                 fg.setImageDrawable(icon);
             }
 
@@ -176,9 +193,10 @@
 
             ViewGroup iconsContainer = card.findViewById(R.id.theme_preview_top_bar_icons);
 
-            for (int i = 0; i < iconsContainer.getChildCount() && i < mIcons.size(); i++) {
+            for (int i = 0; i < iconsContainer.getChildCount(); i++) {
                 ((ImageView) iconsContainer.getChildAt(i))
-                        .setImageDrawable(mIcons.get(i).getConstantState().newDrawable().mutate());
+                        .setImageDrawable(mIcons.get(sTopBarIconToPreviewIcon[i]).getConstantState()
+                                .newDrawable().mutate());
             }
 
             ViewGroup body = card.findViewById(R.id.theme_preview_card_body_container);
@@ -206,6 +224,14 @@
             }
         }
 
+        @Override
+        public void updateTime() {
+            if (card != null) {
+                ((TextView) card.findViewById(R.id.theme_preview_clock)).setText(
+                        getFormattedTime());
+            }
+        }
+
         private boolean useRoundedQSB(int cornerRadius) {
             return cornerRadius >=
                     card.getResources().getDimensionPixelSize(R.dimen.roundCornerThreshold);
diff --git a/src/com/android/customization/widget/PreviewPager.java b/src/com/android/customization/widget/PreviewPager.java
index 9bf7651..73a5554 100644
--- a/src/com/android/customization/widget/PreviewPager.java
+++ b/src/com/android/customization/widget/PreviewPager.java
@@ -117,7 +117,7 @@
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        if (mPageStyle == STYLE_ASPECT_RATIO && mViewPager.getMeasuredWidth() == 0) {
+        if (mPageStyle == STYLE_ASPECT_RATIO) {
             int availableWidth = MeasureSpec.getSize(widthMeasureSpec);
             int availableHeight = MeasureSpec.getSize(heightMeasureSpec);
             int indicatorHeight = mPageIndicator.getVisibility() == VISIBLE