Clean up obsolete aliases for Truth. am: 2585ebb7fa am: d60849f035 am: 76a932bbf4 am: 7b755e3973 am: 5f65e508bf
Original change: https://android-review.googlesource.com/c/platform/packages/apps/ThemePicker/+/2778096
Change-Id: Iae1ff8425ad0bc71c8597d18cb178febe12ecadb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index 4dbe399..d3a7c51 100644
--- a/Android.bp
+++ b/Android.bp
@@ -35,6 +35,13 @@
],
}
+// Production-only files that should be excluded in tests.
+filegroup {
+ name: "ThemePicker_src_prod",
+ visibility: [":__subpackages__"],
+ srcs: ["src_override/com/android/customization/picker/CustomizationPickerApplication.java"],
+}
+
filegroup {
name: "ThemePicker_Manifest",
srcs: [
@@ -66,8 +73,9 @@
+ "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
}
+// Common defaults that doesn't have ThemePicker specifics.
java_defaults {
- name: "ThemePicker_defaults",
+ name: "ThemePicker_common_defaults",
static_libs: [
"guava",
@@ -92,7 +100,6 @@
srcs: [
":WallpaperPicker2_srcs",
":ThemePicker_srcs",
- ":ThemePicker_src_overrides",
],
required: ["android.software.theme_picker.xml"],
@@ -111,6 +118,12 @@
system_ext_specific: true,
}
+java_defaults {
+ name: "ThemePicker_defaults",
+ defaults: ["ThemePicker_common_defaults"],
+ srcs: [":ThemePicker_src_overrides"],
+}
+
prebuilt_etc {
name: "android.software.theme_picker.xml",
system_ext_specific: true,
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 6345ffb..560897b 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -2,6 +2,7 @@
"presubmit": [
{
"name": "WallpaperPickerGoogleTests",
+ "keywords": ["internal"],
"options": [
{
"exclude-annotation": "org.junit.Ignore"
diff --git a/res/layout-land/activity_custom_theme.xml b/res/layout-land/activity_custom_theme.xml
deleted file mode 100644
index 59296df..0000000
--- a/res/layout-land/activity_custom_theme.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="com.android.customization.picker.theme.CustomThemeActivity">
-
- <FrameLayout
- android:id="@+id/fragment_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:orientation="horizontal">
- <Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_gravity="bottom"/>
-
- <FrameLayout
- android:id="@+id/custom_theme_nav"
- android:layout_width="0dp"
- android:layout_height="@dimen/custom_theme_nav_height"
- android:layout_weight="1"
- android:paddingHorizontal="12dp">
- <Button
- android:id="@+id/previous_button"
- style="@style/ActionSecondaryButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="start|center_vertical"
- android:text="@string/custom_theme_previous"/>
- <Button
- android:id="@+id/next_button"
- style="@style/ActionPrimaryButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="end|center_vertical"
- android:text="@string/custom_theme_next"/>
- </FrameLayout>
- </LinearLayout>
-
-</FrameLayout>
diff --git a/res/layout-land/fragment_custom_theme_component.xml b/res/layout-land/fragment_custom_theme_component.xml
deleted file mode 100644
index 2679bdf..0000000
--- a/res/layout-land/fragment_custom_theme_component.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="?android:colorPrimary">
- <include layout="@layout/section_header"/>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
-
- <FrameLayout
- android:id="@+id/component_preview_container"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="?android:colorPrimary">
- <include
- android:id="@+id/component_preview_content"
- 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="1dp"
- android:layout_height="match_parent"
- android:background="?android:colorForeground"/>
- <LinearLayout
- android:id="@+id/options_section"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingTop="10dp"
- android:paddingBottom="@dimen/custom_theme_nav_height"
- android:orientation="vertical">
-
- <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:textAlignment="center"
- android:textAppearance="@style/TitleTextAppearance"/>
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/options_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
-
- </LinearLayout>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout-land/fragment_custom_theme_name.xml b/res/layout-land/fragment_custom_theme_name.xml
deleted file mode 100644
index a60b9c2..0000000
--- a/res/layout-land/fragment_custom_theme_name.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="?android:colorPrimary">
- <include layout="@layout/section_header"/>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
- <FrameLayout
- android:id="@+id/component_preview_container"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingTop="@dimen/preview_content_padding_top"
- android:paddingBottom="@dimen/preview_content_padding_bottom"
- android:clipToPadding="false"
- android:background="?android:colorSecondary">
- <include layout="@layout/theme_preview_card"/>
- </FrameLayout>
- <LinearLayout
- android:id="@+id/options_section"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingTop="10dp"
- android:paddingBottom="@dimen/custom_theme_nav_height"
- android:paddingVertical="10dp"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <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:textAlignment="center"
- android:textAppearance="@style/TitleTextAppearance"/>
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="@dimen/options_container_height"
- android:layout_gravity="center">
-
- <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>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout-land/fragment_theme_picker.xml b/res/layout-land/fragment_theme_picker.xml
deleted file mode 100644
index d358037..0000000
--- a/res/layout-land/fragment_theme_picker.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="?android:colorPrimary">
- <include layout="@layout/section_header"/>
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <LinearLayout
- android:id="@+id/content_section"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
-
- <FrameLayout
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1">
- <FrameLayout
- android:id="@+id/preview_card_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="@dimen/preview_content_padding_top"
- android:paddingBottom="@dimen/preview_content_padding_bottom"
- android:clipToPadding="false"
- android:background="?android:colorSecondary">
- <include layout="@layout/theme_preview_card"/>
- </FrameLayout>
- </FrameLayout>
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/options_container"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingVertical="10dp" />
- </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/TitleTextAppearance"
- 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/activity_custom_theme.xml b/res/layout/activity_custom_theme.xml
deleted file mode 100644
index 24d58b7..0000000
--- a/res/layout/activity_custom_theme.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context="com.android.customization.picker.theme.CustomThemeActivity">
-
- <FrameLayout
- android:id="@+id/fragment_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
-
- <FrameLayout
- android:id="@+id/custom_theme_nav"
- android:layout_width="match_parent"
- android:layout_height="@dimen/custom_theme_nav_height"
- android:paddingHorizontal="12dp"
- android:background="?android:colorPrimary">
- <Button
- android:id="@+id/previous_button"
- style="@style/ActionSecondaryButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="start|center_vertical"
- android:text="@string/custom_theme_previous"/>
- <Button
- android:id="@+id/next_button"
- style="@style/ActionPrimaryButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="end|center_vertical"
- android:text="@string/custom_theme_next"/>
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/clock_color_option.xml b/res/layout/clock_color_option.xml
index e5aa3d6..6d82062 100644
--- a/res/layout/clock_color_option.xml
+++ b/res/layout/clock_color_option.xml
@@ -22,7 +22,7 @@
android:orientation="vertical"
android:clipChildren="false">
- <include layout="@layout/color_option_2"/>
+ <include layout="@layout/color_option"/>
<TextView
android:id="@+id/text"
diff --git a/res/layout/clock_size_radio_button_group.xml b/res/layout/clock_size_radio_button_group.xml
index 56d0ab7..5e8fcf5 100644
--- a/res/layout/clock_size_radio_button_group.xml
+++ b/res/layout/clock_size_radio_button_group.xml
@@ -43,12 +43,17 @@
style="@style/SectionTitleTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:singleLine="true"
android:text="@string/clock_size_dynamic" />
<TextView
style="@style/SectionSubtitleTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:maxLines="2"
+ android:ellipsize="end"
+ android:singleLine="false"
android:text="@string/clock_size_dynamic_description" />
</LinearLayout>
</LinearLayout>
@@ -76,12 +81,17 @@
style="@style/SectionTitleTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:singleLine="true"
android:text="@string/clock_size_small" />
<TextView
style="@style/SectionSubtitleTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:maxLines="2"
+ android:ellipsize="end"
+ android:singleLine="false"
android:text="@string/clock_size_small_description" />
</LinearLayout>
</LinearLayout>
diff --git a/res/layout/color_option.xml b/res/layout/color_option.xml
index d9a7136..dff03d0 100644
--- a/res/layout/color_option.xml
+++ b/res/layout/color_option.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!--
- Copyright (C) 2022 The Android Open Source Project
+ Copyright (C) 2023 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.
@@ -13,91 +13,39 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- Enclosing layout must be match_parent so that we can center content within -->
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
+<!-- Content description is set programmatically on the parent FrameLayout -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/option_item_size"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:clipChildren="false"
- android:gravity="center"
- android:padding="@dimen/option_tile_grid_tile_padding_min">
+ android:orientation="vertical"
+ android:clipChildren="false">
+ <FrameLayout
+ android:id="@+id/icon_container"
+ android:layout_width="@dimen/option_item_size"
+ android:layout_height="@dimen/option_item_size"
+ android:clipChildren="false">
- <!--
- This displays the background. It is dynamically sized, constrained remain square and
- have a maximum size, and be centered within its parent.
- -->
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_gravity="center"
- android:background="@drawable/option_border_color"
- android:gravity="center"
- android:padding="@dimen/option_tile_grid_icon_padding_min"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintDimensionRatio="1:1"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintWidth_max="@dimen/option_tile_width">
+ <ImageView
+ android:id="@id/selection_border"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/option_item_border"
+ android:alpha="0"
+ android:importantForAccessibility="no" />
- <!-- This is the color wheel itself, constrained to a maximum size and centered -->
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/option_tile"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_gravity="center"
- android:gravity="center"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHeight_max="@dimen/component_color_chip_small_diameter_default"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintWidth_max="@dimen/component_color_chip_small_diameter_default">
+ <ImageView
+ android:id="@id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/option_item_background"
+ android:importantForAccessibility="no" />
- <ImageView
- android:id="@+id/color_preview_0"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:adjustViewBounds="true"
- android:src="@drawable/color_chip_seed_filled0"
- app:layout_constraintHeight_percent=".50"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintWidth_percent=".50" />
+ <com.android.customization.picker.color.ui.view.ColorOptionIconView
+ android:id="@+id/foreground"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="@dimen/color_seed_chip_margin2"/>
+ </FrameLayout>
+</LinearLayout>
- <ImageView
- android:id="@+id/color_preview_1"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:adjustViewBounds="true"
- android:src="@drawable/color_chip_seed_filled2"
- app:layout_constraintHeight_percent=".50"
- app:layout_constraintLeft_toRightOf="@id/color_preview_0"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintWidth_percent=".50" />
-
- <ImageView
- android:id="@+id/color_preview_2"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:adjustViewBounds="true"
- android:src="@drawable/color_chip_seed_filled1"
- app:layout_constraintHeight_percent=".50"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintTop_toBottomOf="@id/color_preview_0"
- app:layout_constraintWidth_percent=".50" />
-
- <ImageView
- android:id="@+id/color_preview_3"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:adjustViewBounds="true"
- android:src="@drawable/color_chip_seed_filled3"
- app:layout_constraintHeight_percent=".50"
- app:layout_constraintLeft_toRightOf="@id/color_preview_2"
- app:layout_constraintTop_toBottomOf="@id/color_preview_1"
- app:layout_constraintWidth_percent=".50" />
- </androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/color_option_2.xml b/res/layout/color_option_2.xml
deleted file mode 100644
index dff03d0..0000000
--- a/res/layout/color_option_2.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- Copyright (C) 2023 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.
--->
-<!-- Content description is set programmatically on the parent FrameLayout -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="@dimen/option_item_size"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:clipChildren="false">
- <FrameLayout
- android:id="@+id/icon_container"
- android:layout_width="@dimen/option_item_size"
- android:layout_height="@dimen/option_item_size"
- android:clipChildren="false">
-
- <ImageView
- android:id="@id/selection_border"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/option_item_border"
- android:alpha="0"
- android:importantForAccessibility="no" />
-
- <ImageView
- android:id="@id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/option_item_background"
- android:importantForAccessibility="no" />
-
- <com.android.customization.picker.color.ui.view.ColorOptionIconView
- android:id="@+id/foreground"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_margin="@dimen/color_seed_chip_margin2"/>
- </FrameLayout>
-</LinearLayout>
-
diff --git a/res/layout/color_options_view.xml b/res/layout/color_options_view.xml
deleted file mode 100644
index 65028a6..0000000
--- a/res/layout/color_options_view.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2022 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.
--->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/color_option_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:orientation="horizontal" />
-</FrameLayout>
diff --git a/res/layout/color_pages_view.xml b/res/layout/color_pages_view.xml
deleted file mode 100644
index 3ccbd41..0000000
--- a/res/layout/color_pages_view.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2022 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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <androidx.viewpager2.widget.ViewPager2
- android:id="@+id/color_page_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- <com.android.wallpaper.widget.PageIndicator
- android:id="@+id/color_page_indicator"
- android:layout_marginTop="@dimen/color_page_indicator_margin_top"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- android:layout_gravity="center"/>
-</LinearLayout>
diff --git a/res/layout/color_section_view2.xml b/res/layout/color_section_view.xml
similarity index 97%
rename from res/layout/color_section_view2.xml
rename to res/layout/color_section_view.xml
index 9dbdf15..cfa9be3 100644
--- a/res/layout/color_section_view2.xml
+++ b/res/layout/color_section_view.xml
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<com.android.customization.picker.color.ui.view.ColorSectionView2 xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.customization.picker.color.ui.view.ColorSectionView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -64,4 +64,4 @@
android:textColor="@color/system_primary"
android:visibility="gone"
tools:ignore="UseCompatTextViewDrawableXml" />
-</com.android.customization.picker.color.ui.view.ColorSectionView2>
+</com.android.customization.picker.color.ui.view.ColorSectionView>
diff --git a/res/layout/custom_theme_option.xml b/res/layout/custom_theme_option.xml
deleted file mode 100644
index aff43a9..0000000
--- a/res/layout/custom_theme_option.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/option_padding_horizontal"
- android:paddingBottom="@dimen/option_bottom_margin"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <TextView
- android:id="@+id/option_label"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="@dimen/theme_option_label_margin"
- android:ellipsize="end"
- android:gravity="center_horizontal"
- android:maxLines="1"
- android:textAppearance="@style/OptionTitleTextAppearance"/>
- <FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:paddingHorizontal="@dimen/option_tile_padding_horizontal"
- android:paddingVertical="@dimen/option_tile_padding_vertical"
- android:background="@drawable/option_border_custom">
- <ImageView
- android:layout_width="@dimen/option_icon_size"
- android:layout_height="@dimen/option_icon_size"
- android:layout_gravity="center"
- android:src="@drawable/ic_add_24px"
- android:tint="?android:attr/colorAccent" />
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/fragment_color_picker.xml b/res/layout/fragment_color_picker.xml
index ebff6a4..d33fb1f 100644
--- a/res/layout/fragment_color_picker.xml
+++ b/res/layout/fragment_color_picker.xml
@@ -133,7 +133,7 @@
It's critical for any TextViews inside the included layout to have text.
-->
<include
- layout="@layout/color_option_2"
+ layout="@layout/color_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible" />
diff --git a/res/layout/fragment_custom_theme_component.xml b/res/layout/fragment_custom_theme_component.xml
deleted file mode 100644
index 7bae84b..0000000
--- a/res/layout/fragment_custom_theme_component.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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.
--->
-<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"/>
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <FrameLayout
- android:id="@+id/component_preview_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:background="?android:colorPrimary"
- app:layout_constrainedHeight="true"
- app:layout_constraintBottom_toTopOf="@+id/divider"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- app:layout_constraintHeight_percent="@dimen/preview_pager_maximum_height_ratio">
-
- <include
- android:id="@+id/component_preview_content"
- layout="@layout/theme_component_preview"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </FrameLayout>
-
- <View
- android:id="@+id/divider"
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="?android:colorForeground"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/component_preview_container"
- app:layout_constraintBottom_toTopOf="@+id/component_scroll_view"/>
-
- <ScrollView
- android:id="@+id/component_scroll_view"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/divider"
- app:layout_constraintBottom_toBottomOf="parent">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView
- android:id="@+id/component_options_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginVertical="18dp"
- android:layout_marginHorizontal="16dp"
- android:textAlignment="center"
- android:textAppearance="@style/TitleTextAppearance"
- android:textSize="@dimen/component_options_title_size" />
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/options_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"/>
- </LinearLayout>
- </ScrollView>
- </androidx.constraintlayout.widget.ConstraintLayout>
-</LinearLayout>
diff --git a/res/layout/fragment_custom_theme_name.xml b/res/layout/fragment_custom_theme_name.xml
deleted file mode 100644
index 98edd29..0000000
--- a/res/layout/fragment_custom_theme_name.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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.
--->
-<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">
- <include layout="@layout/section_header"/>
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <FrameLayout
- android:id="@+id/component_preview_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:paddingTop="@dimen/preview_content_padding_top"
- android:paddingBottom="@dimen/preview_content_padding_bottom"
- android:clipToPadding="false"
- app:layout_constrainedHeight="true"
- app:layout_constraintBottom_toTopOf="@+id/component_scroll_view"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- app:layout_constraintHeight_percent="@dimen/preview_pager_maximum_height_ratio">
-
- <include layout="@layout/theme_preview_card"/>
- </FrameLayout>
-
- <ScrollView
- android:id="@+id/component_scroll_view"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:background="?android:colorPrimary"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/component_preview_container"
- app:layout_constraintBottom_toBottomOf="parent">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView
- android:id="@+id/component_options_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginVertical="18dp"
- android:layout_marginHorizontal="16dp"
- android:textAlignment="center"
- android:textAppearance="@style/TitleTextAppearance"
- android:textSize="@dimen/component_options_title_size"/>
-
- <EditText
- android:id="@+id/custom_theme_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginVertical="16dp"
- android:layout_marginHorizontal="16dp"
- android:layout_gravity="center|top"
- android:importantForAutofill="no"
- android:minWidth="300dp"
- style="@style/CustomThemeNameEditText"/>
- </LinearLayout>
- </ScrollView>
- </androidx.constraintlayout.widget.ConstraintLayout>
-</LinearLayout>
diff --git a/res/layout/fragment_grid.xml b/res/layout/fragment_grid.xml
index 8c97d45..f022268 100644
--- a/res/layout/fragment_grid.xml
+++ b/res/layout/fragment_grid.xml
@@ -81,7 +81,7 @@
It's critical for any TextViews inside the included layout to have text.
-->
<include
- layout="@layout/grid_option_2"
+ layout="@layout/grid_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible" />
diff --git a/res/layout/fragment_theme_full_preview.xml b/res/layout/fragment_theme_full_preview.xml
deleted file mode 100644
index 762af07..0000000
--- a/res/layout/fragment_theme_full_preview.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <include layout="@layout/section_header"/>
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingTop="@dimen/full_preview_page_default_padding_top"
- android:paddingBottom="@dimen/full_preview_page_default_padding_bottom"
- android:clipToPadding="false">
-
- <include layout="@layout/theme_preview_card"/>
- </FrameLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/fragment_theme_picker.xml b/res/layout/fragment_theme_picker.xml
deleted file mode 100644
index 0ecfdd0..0000000
--- a/res/layout/fragment_theme_picker.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2018 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.
--->
-<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">
- <include layout="@layout/section_header"/>
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/content_section"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <FrameLayout
- android:id="@+id/preview_card_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:paddingTop="@dimen/preview_content_padding_top"
- android:paddingBottom="@dimen/preview_content_padding_bottom"
- android:clipToPadding="false"
- app:layout_constrainedHeight="true"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@id/options_container"
- app:layout_constraintHeight_max="@dimen/preview_pager_max_height"
- app:layout_constraintVertical_bias="0.0"
- app:layout_constraintHeight_percent="@dimen/preview_pager_maximum_height_ratio">
- <include layout="@layout/theme_preview_card"/>
- </FrameLayout>
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/options_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_gravity="bottom|center_horizontal"
- android:layout_marginTop="10dp"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/preview_card_container"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintVertical_bias="1.0"/>
- </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/TitleTextAppearance"
- 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/grid_option.xml b/res/layout/grid_option.xml
index 0931dea..efed018 100644
--- a/res/layout/grid_option.xml
+++ b/res/layout/grid_option.xml
@@ -1,47 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (C) 2019 The Android Open Source Project
+ ~ Copyright (C) 2023 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.
+ ~
+ -->
- 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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="@dimen/option_item_size"
android:layout_height="wrap_content"
- android:paddingBottom="@dimen/option_bottom_margin"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ android:clipChildren="false">
<FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:padding="@dimen/option_tile_padding_vertical"
- android:background="@drawable/option_border"
- android:gravity="center">
+ android:layout_width="@dimen/option_item_size"
+ android:layout_height="@dimen/option_item_size"
+ android:clipChildren="false">
+
<ImageView
- android:id="@+id/grid_option_thumbnail"
+ android:id="@id/selection_border"
android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="match_parent"
+ android:background="@drawable/option_item_border"
+ android:alpha="0"
+ android:importantForAccessibility="no" />
+
+ <ImageView
+ android:id="@id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/option_item_background"
+ android:importantForAccessibility="no" />
+
+ <ImageView
+ android:id="@id/foreground"
+ android:layout_width="58dp"
+ android:layout_height="58dp"
+ android:layout_gravity="center" />
+
</FrameLayout>
+ <View
+ android:layout_width="0dp"
+ android:layout_height="8dp" />
+
<TextView
- android:id="@+id/option_label"
+ android:id="@id/text"
android:layout_width="wrap_content"
- android:layout_height="24dp"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="@dimen/theme_option_label_margin"
- android:gravity="center"
- android:textAppearance="@style/OptionTitleTextAppearance" />
+ android:layout_height="wrap_content"
+ android:textColor="@color/system_on_surface"
+ android:singleLine="true"
+ android:ellipsize="end"
+ android:text="Placeholder for stable size calculation, please do not remove."
+ tools:ignore="HardcodedText" />
+
</LinearLayout>
diff --git a/res/layout/grid_option_2.xml b/res/layout/grid_option_2.xml
deleted file mode 100644
index efed018..0000000
--- a/res/layout/grid_option_2.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2023 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.
- ~
- -->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="@dimen/option_item_size"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center_horizontal"
- android:clipChildren="false">
-
- <FrameLayout
- android:layout_width="@dimen/option_item_size"
- android:layout_height="@dimen/option_item_size"
- android:clipChildren="false">
-
- <ImageView
- android:id="@id/selection_border"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/option_item_border"
- android:alpha="0"
- android:importantForAccessibility="no" />
-
- <ImageView
- android:id="@id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/option_item_background"
- android:importantForAccessibility="no" />
-
- <ImageView
- android:id="@id/foreground"
- android:layout_width="58dp"
- android:layout_height="58dp"
- android:layout_gravity="center" />
-
- </FrameLayout>
-
- <View
- android:layout_width="0dp"
- android:layout_height="8dp" />
-
- <TextView
- android:id="@id/text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/system_on_surface"
- android:singleLine="true"
- android:ellipsize="end"
- android:text="Placeholder for stable size calculation, please do not remove."
- tools:ignore="HardcodedText" />
-
-</LinearLayout>
diff --git a/res/layout/grid_section_view.xml b/res/layout/grid_section_view.xml
index a7b2b1f..b423ea7 100644
--- a/res/layout/grid_section_view.xml
+++ b/res/layout/grid_section_view.xml
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<com.android.customization.picker.grid.GridSectionView
+<com.android.customization.picker.grid.ui.view.GridSectionView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -53,4 +53,4 @@
android:background="@drawable/picker_section_icon_background"
android:contentDescription="@string/gird_picker_entry_content_description" />
-</com.android.customization.picker.grid.GridSectionView>
\ No newline at end of file
+</com.android.customization.picker.grid.ui.view.GridSectionView>
\ No newline at end of file
diff --git a/res/layout/preview_card_color_content.xml b/res/layout/preview_card_color_content.xml
deleted file mode 100644
index 9ab90c1..0000000
--- a/res/layout/preview_card_color_content.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:gravity="center_horizontal"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="@dimen/preview_theme_color_component_size"
- android:layout_height="wrap_content"
- android:gravity="center|bottom"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <ImageView
- 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_0_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_0_icon"
- android:tint="@color/tile_enabled_icon_color"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <ImageView
- 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_1_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_1_icon"
- android:tint="@color/tile_enabled_icon_color"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <ImageView
- 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"/>
- <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_enabled_icon_color"/>
- </FrameLayout>
- </LinearLayout>
- <Space
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
- <LinearLayout
- android:layout_width="@dimen/preview_theme_color_component_size"
- android:layout_height="wrap_content"
- android:layout_weight="0"
- android:orientation="horizontal"
- android:gravity="center">
- <SeekBar
- android:id="@+id/preview_seekbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:tint="@color/theme_preview_icon_color"
- android:maxHeight="2dp"
- android:progress="1"
- android:clickable="true"
- android:max="3"/>
- </LinearLayout>
- <Space
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
- <LinearLayout
- android:layout_width="@dimen/preview_theme_color_component_size"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <CheckBox
- android:id="@+id/preview_check_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <RadioButton
- android:id="@+id/preview_radio_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1">
- <Switch
- android:id="@+id/preview_toggle_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/preview_card_font_content.xml b/res/layout/preview_card_font_content.xml
deleted file mode 100644
index 408778e..0000000
--- a/res/layout/preview_card_font_content.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:orientation="vertical"
- tools:showIn="@layout/theme_preview_card">
- <TextView
- style="@style/FontCardTitleStyle"
- android:id="@+id/font_card_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:gravity="center_horizontal"
- android:maxLines="1"
- android:text="@string/font_card_title"/>
- <Space
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
- <View
- android:id="@+id/font_card_divider"
- android:layout_width="16dp"
- android:layout_height="2dp"
- android:layout_gravity="center"
- android:background="?android:colorAccent"/>
- <Space
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
- <TextView
- style="@style/FontCardBodyTextStyle"
- android:id="@+id/font_card_body"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|center_horizontal"
- android:gravity="center_horizontal"
- android:text="@string/font_card_body"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/preview_card_icon_content.xml b/res/layout/preview_card_icon_content.xml
deleted file mode 100644
index 29620c8..0000000
--- a/res/layout/preview_card_icon_content.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:gravity="center_horizontal"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/preview_icon_0"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- <Space
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <ImageView
- android:id="@+id/preview_icon_1"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- <Space
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <ImageView
- android:id="@+id/preview_icon_2"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- </LinearLayout>
- <Space
- android:layout_width="match_parent"
- android:layout_height="68dp" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="bottom|center_horizontal"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/preview_icon_3"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- <Space
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <ImageView
- android:id="@+id/preview_icon_4"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- <Space
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <ImageView
- android:id="@+id/preview_icon_5"
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_weight="1"
- android:tint="@color/theme_preview_icon_color"/>
- </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/preview_card_shape_content.xml b/res/layout/preview_card_shape_content.xml
deleted file mode 100644
index 0afa6bc..0000000
--- a/res/layout/preview_card_shape_content.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:gravity="center_horizontal"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_0"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_gravity="center_horizontal"
- android:layout_margin="4dp"
- android:elevation="4dp"/>
- </FrameLayout>
- <Space
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_1"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_gravity="center_horizontal"
- android:layout_margin="4dp"
- android:elevation="4dp"/>
- </FrameLayout>
- <Space
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_2"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_gravity="center_horizontal"
- android:layout_margin="4dp"
- android:elevation="4dp"/>
- </FrameLayout>
- </LinearLayout>
- <Space
- android:layout_width="match_parent"
- android:layout_height="60dp" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="bottom|center_horizontal"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_3"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_gravity="center_horizontal"
- android:layout_margin="4dp"
- android:elevation="4dp"/>
- </FrameLayout>
- <Space
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_4"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_gravity="center_horizontal"
- android:layout_margin="4dp"
- android:elevation="4dp"/>
- </FrameLayout>
- <Space
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="match_parent"
- android:layout_weight="0" />
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1">
- <ImageView
- android:id="@+id/shape_preview_icon_5"
- android:layout_width="@dimen/preview_theme_shape_size"
- android:layout_height="@dimen/preview_theme_shape_size"
- android:layout_margin="4dp"
- android:layout_gravity="center_horizontal"
- android:elevation="4dp"/>
- </FrameLayout>
- </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/theme_color_option.xml b/res/layout/theme_color_option.xml
deleted file mode 100644
index 8d55626..0000000
--- a/res/layout/theme_color_option.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.
--->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginTop="28dp"
- android:layout_marginHorizontal="@dimen/component_options_margin_horizontal">
-
- <ImageView
- android:id="@+id/option_tile"
- android:layout_width="@dimen/component_color_chip_container_size"
- android:layout_height="@dimen/component_color_chip_container_size"
- android:layout_gravity="center"
- android:scaleType="center"/>
-</FrameLayout>
diff --git a/res/layout/theme_component_preview.xml b/res/layout/theme_component_preview.xml
deleted file mode 100644
index 67abe6b..0000000
--- a/res/layout/theme_component_preview.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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.
--->
-<androidx.constraintlayout.widget.ConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- 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:clipToPadding="false"
- android:maxHeight="@dimen/preview_theme_max_height"
- android:minHeight="@dimen/preview_theme_min_height"
- android:paddingTop="64dp">
-
- <TextView
- android:id="@+id/theme_preview_card_header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:drawablePadding="@dimen/theme_preview_header_drawable_padding"
- android:textAppearance="@style/CardTitleTextAppearance"
- android:importantForAccessibility="no"
- 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_toTopOf="parent"
- app:layout_constraintVertical_chainStyle="spread_inside"
- tools:text="Default"/>
-
- <FrameLayout
- android:id="@+id/theme_preview_card_body_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginTop="@dimen/preview_theme_content_margin"
- android:clipChildren="false"
- android:importantForAccessibility="noHideDescendants"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHeight_max="@dimen/preview_theme_content_max_height"
- 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_card_header"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/theme_font_option.xml b/res/layout/theme_font_option.xml
deleted file mode 100644
index dea4f78..0000000
--- a/res/layout/theme_font_option.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:paddingHorizontal="@dimen/option_tile_padding_horizontal"
- android:paddingVertical="@dimen/option_tile_padding_vertical"
- android:layout_marginHorizontal="@dimen/component_options_margin_horizontal"
- android:background="@drawable/option_border">
- <TextView
- android:id="@+id/thumbnail_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:textSize="@dimen/font_comonent_option_thumbnail_size"
- android:textAlignment="center"
- android:textColor="?android:attr/colorForeground"
- android:text="@string/font_component_option_thumbnail"/>
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/theme_icon_option.xml b/res/layout/theme_icon_option.xml
deleted file mode 100644
index 292b8cd..0000000
--- a/res/layout/theme_icon_option.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:paddingHorizontal="@dimen/option_tile_padding_horizontal"
- android:paddingVertical="@dimen/option_tile_padding_vertical"
- android:layout_marginHorizontal="@dimen/component_options_margin_horizontal"
- android:background="@drawable/option_border">
- <ImageView
- 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:tint="?android:colorForeground"/>
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/theme_info_view.xml b/res/layout/theme_info_view.xml
deleted file mode 100644
index 085a35e..0000000
--- a/res/layout/theme_info_view.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<com.android.customization.picker.theme.ThemeInfoView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="@dimen/wallpaper_info_pane_padding"
- android:theme="@style/WallpaperPicker.BottomPaneStyle">
-
- <TextView
- android:id="@+id/style_info_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/theme_info_margin"
- android:gravity="center"
- android:lineHeight="24dp"
- android:textAppearance="@style/SubtitleTextAppearance"
- android:textColor="?android:textColorPrimary"
- android:textSize="16sp"
- android:text="@string/style_info_description"/>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center">
-
- <TextView
- android:id="@+id/font_preview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginHorizontal="@dimen/theme_info_margin"
- android:importantForAccessibility="no"
- android:textSize="@dimen/theme_info_text_size"
- android:textColor="?android:attr/colorForeground"
- android:text="@string/font_component_option_thumbnail"/>
-
- <ImageView
- android:id="@+id/qs_preview_icon"
- android:layout_width="@dimen/theme_info_icon_size"
- android:layout_height="@dimen/theme_info_icon_size"
- android:layout_marginHorizontal="@dimen/theme_info_margin"
- android:tint="?android:textColorPrimary"/>
-
- <ImageView
- android:id="@+id/app_preview_icon"
- android:layout_width="@dimen/theme_info_icon_size"
- android:layout_height="@dimen/theme_info_icon_size"
- android:layout_marginHorizontal="@dimen/theme_info_margin"
- android:layout_marginVertical="@dimen/theme_info_app_preview_icon_margin"
- android:elevation="@dimen/theme_info_app_preview_icon_elevation"/>
-
- <ImageView
- android:id="@+id/shape_preview_icon"
- android:layout_width="@dimen/theme_info_icon_size"
- android:layout_height="@dimen/theme_info_icon_size"
- android:layout_marginHorizontal="@dimen/theme_info_margin"/>
- </LinearLayout>
-</com.android.customization.picker.theme.ThemeInfoView>
\ No newline at end of file
diff --git a/res/layout/theme_option.xml b/res/layout/theme_option.xml
deleted file mode 100644
index bdf82d0..0000000
--- a/res/layout/theme_option.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/option_padding_horizontal"
- android:paddingBottom="@dimen/option_bottom_margin"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <TextView
- android:id="@+id/option_label"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="@dimen/theme_option_label_margin"
- android:ellipsize="end"
- android:gravity="center_horizontal"
- android:maxLines="1"
- android:textAppearance="@style/OptionTitleTextAppearance"/>
- <RelativeLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:paddingHorizontal="@dimen/option_tile_padding_horizontal"
- android:paddingVertical="@dimen/option_tile_padding_vertical"
- android:background="@drawable/option_border">
- <ImageView
- android:id="@+id/theme_option_icon"
- android:layout_width="@dimen/theme_option_icon_sample_width"
- android:layout_height="@dimen/theme_option_icon_sample_height"
- android:layout_alignParentTop="true"
- android:layout_alignParentStart="true"
- android:tint="?android:colorForeground"/>
- <ImageView
- android:id="@+id/theme_option_shape"
- android:layout_width="@dimen/theme_option_shape_sample_width"
- android:layout_height="@dimen/theme_option_shape_sample_height"
- android:layout_alignBottom="@+id/theme_option_icon"
- android:layout_toEndOf="@id/theme_option_icon"
- android:layout_marginStart="@dimen/theme_option_sample_margin"/>
- <TextView
- android:id="@+id/theme_option_font"
- android:layout_width="@dimen/theme_option_font_sample_width"
- android:layout_height="@dimen/theme_option_font_sample_height"
- android:layout_gravity="center"
- android:layout_below="@id/theme_option_icon"
- android:layout_marginTop="@dimen/option_bottom_margin"
- android:autoSizeMaxTextSize="@dimen/theme_option_font_text_size"
- android:autoSizeMinTextSize="@dimen/theme_option_font_min_text_size"
- android:autoSizeTextType="uniform"
- android:gravity="center"
- android:letterSpacing=".2"
- android:text="@string/theme_font_example"
- android:textAlignment="center"
- android:textSize="@dimen/theme_option_font_text_size" />
- </RelativeLayout>
-</LinearLayout>
diff --git a/res/layout/theme_preview_app_icon_shape.xml b/res/layout/theme_preview_app_icon_shape.xml
deleted file mode 100644
index fe95f90..0000000
--- a/res/layout/theme_preview_app_icon_shape.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<androidx.constraintlayout.widget.ConstraintLayout
- 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">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/app_row_0"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@id/app_row_1">
-
- <LinearLayout
- android:id="@+id/app_item_0"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:clipChildren="false"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toStartOf="@id/app_item_1"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent">
- <ImageView
- android:id="@+id/shape_preview_icon_0"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="@dimen/preview_theme_app_icon_size"
- android:elevation="4dp"/>
- <TextView
- android:id="@+id/shape_preview_icon_app_name_0"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/preview_theme_app_icon_shape_text_margin_top"
- android:textSize="@dimen/preview_theme_app_icon_shape_text_size"
- android:lineHeight="20dp"
- android:singleLine="true"/>
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/app_item_1"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:clipChildren="false"
- app:layout_constraintStart_toEndOf="@id/app_item_0"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent">
- <ImageView
- android:id="@+id/shape_preview_icon_1"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="@dimen/preview_theme_app_icon_size"
- android:elevation="4dp"/>
- <TextView
- android:id="@+id/shape_preview_icon_app_name_1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/preview_theme_app_icon_shape_text_margin_top"
- android:textSize="@dimen/preview_theme_app_icon_shape_text_size"
- android:lineHeight="20dp"
- android:singleLine="true"/>
- </LinearLayout>
-
- </androidx.constraintlayout.widget.ConstraintLayout>
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/app_row_1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/app_row_0"
- app:layout_constraintBottom_toBottomOf="parent">
- <LinearLayout
- android:id="@+id/app_item_2"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:clipChildren="false"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toStartOf="@id/app_item_3"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent">
- <ImageView
- android:id="@+id/shape_preview_icon_2"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="@dimen/preview_theme_app_icon_size"
- android:elevation="4dp"/>
- <TextView
- android:id="@+id/shape_preview_icon_app_name_2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/preview_theme_app_icon_shape_text_margin_top"
- android:textSize="@dimen/preview_theme_app_icon_shape_text_size"
- android:lineHeight="20dp"
- android:singleLine="true"/>
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/app_item_3"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:clipChildren="false"
- app:layout_constraintStart_toEndOf="@id/app_item_2"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent">
- <ImageView
- android:id="@+id/shape_preview_icon_3"
- android:layout_width="@dimen/preview_theme_app_icon_size"
- android:layout_height="@dimen/preview_theme_app_icon_size"
- android:elevation="4dp"/>
- <TextView
- android:id="@+id/shape_preview_icon_app_name_3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/preview_theme_app_icon_shape_text_margin_top"
- android:textSize="@dimen/preview_theme_app_icon_shape_text_size"
- android:lineHeight="20dp"
- android:singleLine="true"/>
- </LinearLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/theme_preview_card.xml b/res/layout/theme_preview_card.xml
deleted file mode 100644
index 4fc8995..0000000
--- a/res/layout/theme_preview_card.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<androidx.cardview.widget.CardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/FullContentPreviewCard"
- android:id="@+id/theme_preview_card"
- android:contentDescription="@string/theme_preview_card_content_description"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center">
-
- <ImageView
- android:id="@+id/wallpaper_preview_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?android:colorPrimary" />
-
- <SurfaceView
- android:id="@+id/wallpaper_preview_surface"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <FrameLayout
- android:id="@+id/theme_preview_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:importantForAccessibility="noHideDescendants" />
-</androidx.cardview.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/theme_preview_color_icons.xml b/res/layout/theme_preview_color_icons.xml
deleted file mode 100644
index e87a7a1..0000000
--- a/res/layout/theme_preview_color_icons.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<androidx.cardview.widget.CardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:id="@+id/color_icons_section"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingHorizontal="@dimen/preview_theme_color_icons_padding_horizontal"
- android:paddingTop="@dimen/preview_theme_color_icons_padding_top"
- android:paddingBottom="@dimen/preview_theme_color_icons_padding_bottom"
- android:orientation="vertical"
- android:background="?android:colorBackground">
-
- <!-- Title -->
- <TextView
- android:id="@+id/color_icons_section_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/theme_preview_icons_section_title"
- android:textSize="@dimen/preview_theme_color_icons_title_text_size"
- android:textColor="?android:textColorSecondary"
- android:lineHeight="16dp"
- android:gravity="center"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@id/qs_icons"
- app:layout_constraintVertical_bias="0.0"
- app:layout_constraintVertical_chainStyle="spread_inside" />
-
- <!-- QS icons -->
- <LinearLayout
- android:id="@+id/qs_icons"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/color_icons_section_title"
- app:layout_constraintBottom_toTopOf="@id/button_icons">
- <FrameLayout
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size">
- <ImageView
- android:id="@+id/preview_color_qs_0_bg"
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size"/>
- <ImageView
- android:id="@+id/preview_color_qs_0_icon"
- android:layout_width="@dimen/preview_theme_color_icons_tile_size"
- android:layout_height="@dimen/preview_theme_color_icons_tile_size"
- android:tint="?android:textColorPrimary"
- android:layout_gravity="center"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"/>
- <FrameLayout
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size"
- android:layout_gravity="center_horizontal">
- <ImageView
- android:id="@+id/preview_color_qs_1_bg"
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size"/>
- <ImageView
- android:id="@+id/preview_color_qs_1_icon"
- android:layout_width="@dimen/preview_theme_color_icons_tile_size"
- android:layout_height="@dimen/preview_theme_color_icons_tile_size"
- android:tint="?android:textColorPrimary"
- android:layout_gravity="center"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"/>
- <FrameLayout
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size">
- <ImageView
- android:id="@+id/preview_color_qs_2_bg"
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size"/>
- <ImageView
- android:id="@+id/preview_color_qs_2_icon"
- android:layout_width="@dimen/preview_theme_color_icons_tile_size"
- android:layout_height="@dimen/preview_theme_color_icons_tile_size"
- android:tint="?android:textColorPrimary"
- android:layout_gravity="center"/>
- </FrameLayout>
- <Space
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"/>
- <FrameLayout
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size">
- <ImageView
- android:id="@+id/preview_color_qs_3_bg"
- android:layout_width="@dimen/preview_theme_color_icons_icon_size"
- android:layout_height="@dimen/preview_theme_color_icons_icon_size"/>
- <ImageView
- android:id="@+id/preview_color_qs_3_icon"
- android:layout_width="@dimen/preview_theme_color_icons_tile_size"
- android:layout_height="@dimen/preview_theme_color_icons_tile_size"
- android:tint="?android:textColorPrimary"
- android:layout_gravity="center"/>
- </FrameLayout>
- </LinearLayout>
-
- <!-- Icons of CheckBox/RadioButton/Switch. -->
- <RelativeLayout
- android:id="@+id/button_icons"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/qs_icons"
- app:layout_constraintBottom_toBottomOf="parent">
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_alignParentStart="true">
- <CheckBox
- android:id="@+id/preview_check_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
-
- <FrameLayout
- android:layout_width="@dimen/preview_theme_icon_size"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_centerHorizontal="true">
- <RadioButton
- android:id="@+id/preview_radio_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
-
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="@dimen/preview_theme_icon_size"
- android:layout_alignParentEnd="true">
- <Switch
- android:id="@+id/preview_toggle_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:checked="true"
- android:enabled="false"/>
- </FrameLayout>
- </RelativeLayout>
-
- </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.cardview.widget.CardView>
diff --git a/res/layout/theme_preview_content.xml b/res/layout/theme_preview_content.xml
deleted file mode 100644
index 4b29617..0000000
--- a/res/layout/theme_preview_content.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2020 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.
--->
-<androidx.constraintlayout.widget.ConstraintLayout
- 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:paddingTop="@dimen/preview_theme_content_padding_top"
- android:paddingBottom="@dimen/preview_theme_content_padding_bottom"
- android:clipToPadding="false"
- android:clipChildren="false">
-
- <FrameLayout
- android:id="@+id/topbar_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/preview_theme_topbar_container_margin_horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@id/smart_space_date"
- app:layout_constraintVertical_bias="0.0"
- app:layout_constraintVertical_chainStyle="spread_inside">
- <include layout="@layout/theme_preview_topbar" />
- </FrameLayout>
-
- <TextView
- android:id="@+id/smart_space_date"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:textSize="@dimen/preview_theme_smart_space_date_size"
- android:singleLine="true"
- android:gravity="center|bottom"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/topbar_container"
- app:layout_constraintBottom_toTopOf="@id/app_icon_shape_container"
- app:layout_constraintHeight_percent="0.1" />
-
- <FrameLayout
- android:id="@+id/app_icon_shape_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/smart_space_date"
- app:layout_constraintBottom_toTopOf="@id/color_icons_container"
- app:layout_constraintHeight_percent="0.49">
- <include layout="@layout/theme_preview_app_icon_shape" />
- </FrameLayout>
-
- <FrameLayout
- android:id="@+id/color_icons_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginHorizontal="@dimen/preview_theme_color_icons_container_margin_horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/app_icon_shape_container"
- app:layout_constraintBottom_toTopOf="@id/theme_qsb_container"
- app:layout_constraintHeight_percent="0.275">
- <include layout="@layout/theme_preview_color_icons" />
- </FrameLayout>
-
- <FrameLayout
- android:id="@+id/theme_qsb_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginHorizontal="@dimen/preview_theme_qsb_container_margin_horizontal"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/color_icons_container"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHeight_percent="0.1">
- <include layout="@layout/theme_cover_qsb" />
- </FrameLayout>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/theme_preview_topbar.xml b/res/layout/theme_preview_topbar.xml
deleted file mode 100644
index af69de9..0000000
--- a/res/layout/theme_preview_topbar.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- 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">
- <TextView
- android:id="@+id/theme_preview_clock"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="start|center_vertical"
- android:textColor="?android:textColorSecondary"
- android:textSize="@dimen/preview_theme_cover_topbar_clock_size"
- tools:text="8:10"/>
- <LinearLayout
- android:id="@+id/theme_preview_top_bar_icons"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="end|center_vertical"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/preview_icon_0"
- android:layout_width="@dimen/preview_theme_cover_topbar_icon_size"
- android:layout_height="@dimen/preview_theme_cover_topbar_icon_size"
- android:tint="?android:textColorSecondary"/>
- <ImageView
- android:id="@+id/preview_icon_1"
- android:layout_width="@dimen/preview_theme_cover_topbar_icon_size"
- android:layout_height="@dimen/preview_theme_cover_topbar_icon_size"
- android:layout_marginHorizontal="8dp"
- android:tint="?android:textColorSecondary"/>
- <ImageView
- android:id="@+id/preview_icon_2"
- android:layout_width="@dimen/preview_theme_cover_topbar_icon_size"
- android:layout_height="@dimen/preview_theme_cover_topbar_icon_size"
- android:tint="?android:textColorSecondary"/>
- </LinearLayout>
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/theme_shape_option.xml b/res/layout/theme_shape_option.xml
deleted file mode 100644
index c5682c0..0000000
--- a/res/layout/theme_shape_option.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center"
- android:layout_marginHorizontal="@dimen/component_options_margin_horizontal">
- <ImageView
- android:id="@+id/shape_thumbnail"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"/>
- </FrameLayout>
-</LinearLayout>
diff --git a/res/menu/custom_theme_editor_menu.xml b/res/menu/custom_theme_editor_menu.xml
deleted file mode 100644
index 7019181..0000000
--- a/res/menu/custom_theme_editor_menu.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/custom_theme_delete"
- android:title="@string/custom_theme_delete"
- android:icon="@drawable/ic_delete_24px"
- android:showAsAction="always"/>
-</menu>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index e016927..e0482d5 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Gepasmaakte horlosie"</string>
<string name="clock_description" msgid="3563839327378948">"Kies gepasmaakte horlosie"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Verander ’n gepasmaakte horlosie"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Horlosie-instellings"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Horlosieskermopsie <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Horlosiekleur en grootte"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Horlosiekleur en grootte"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Kleur"</string>
@@ -40,7 +41,8 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Horlosiegrootte verander na gelang van sluitskerminhoud"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Groot"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Klein"</string>
- <string name="grid_title" msgid="1688173478777254123">"Programrooster"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"’n Klein horlosie word in die hoek van jou skerm gewys"</string>
+ <string name="grid_title" msgid="1688173478777254123">"Approoster"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Pas toe"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tik om te wysig"</string>
<string name="keep_my_wallpaper" msgid="8012385376769568517">"Hou huidige muurpapier"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Voeg jou gunstelinglettertipes op elke skerm by"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Kies \'n roostergrootte"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Roostergrootteverandering sal werkspasie herlaai; kan paar sekondes neem."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Herlaai tans werkspasie met %1$s rooster"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Kon nie werkspasie met %1$s rooster herlaai nie"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Styl is suksesvol gestel"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Horlosie is suksesvol gestel"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Rooster is suksesvol gestel"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Links-kortpad"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Regs-kortpad"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Geen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Merk die volgende as jy “<xliff:g id="APPNAME">%1$s</xliff:g>” wil kies"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Kan nie kortpad byvoeg nie"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Maak <xliff:g id="APPNAME">%1$s</xliff:g> oop"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Om die <xliff:g id="APPNAME">%1$s</xliff:g>-app as ’n kortpad by te voeg, moet jy seker maak dat"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Klaar"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Geen"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Wys kennisgewings op die sluitskerm"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Versteek kennisgewings op die sluitskerm"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Meer sluitskermopsies"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privaatheid, Wat Speel, en meer"</string>
<string name="more_colors" msgid="3191071655353004591">"Nog kleure"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primêre omvattende tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primêre neutrale tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primêre intense tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primêre ekspressiewe tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Verstekkleuropsie"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Kleuropsie <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swiep links om ’n ander horlosieskerm te kies"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swiep regs om ’n ander horlosieskerm te kies"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Gepasmaakte horlosies"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 2c61157..2092b40 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"á„á á°áá”"</string>
<string name="clock_description" msgid="3563839327378948">"á„á á°áá” ááášáĄ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"á„á á°áá”á ááááĄ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ášClock á
áá„áźáœ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ášá°áá” áá” á áá«á <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ášClock ááá á„á áá á"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ášClock ááá á„á áá á"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>ᣠ<xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ááá"</string>
@@ -37,19 +38,20 @@
<string name="clock_color_teal" msgid="7499223425741344251">"á°áá
á ášáááŽ-á°áá«á"</string>
<string name="clock_size" msgid="5028923902364418263">"áá á"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"á°áááá"</string>
- <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ášClock áá á á áá« áᜠááá ááá” áá°ášá” ááááŁá"</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ášClock áá á á áá« áá
ááá ááá” áá°ášá” ááááŁá"</string>
<string name="clock_size_large" msgid="3143248715744138979">"á”áá
"</string>
<string name="clock_size_small" msgid="2280449912094164133">"á”ááœ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"á á„áá”á áá« áá
á„á áá á”áᜠá°áá” ááłá«á"</string>
<string name="grid_title" msgid="1688173478777254123">"ášáá°áá áȘá« ááááá"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"á°áá„á"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"áááá”á ááł á«á”áá"</string>
<string name="keep_my_wallpaper" msgid="8012385376769568517">"ášá ááá ááŁá á«áá©á”"</string>
- <string name="theme_preview_card_content_description" msgid="5989222908619535533">"ášá
á„ á
á”á-á„ááł"</string>
- <string name="grid_preview_card_content_description" msgid="8449383777584714842">"ášááááá á
á”á-á„ááł"</string>
- <string name="font_preview_content_description" msgid="128230439293337891">"ášá
ááž-ááá á
á”á-á„ááł"</string>
- <string name="icon_preview_content_description" msgid="7761101284351952890">"ášá á¶ á
á”á-á„ááł"</string>
- <string name="color_preview_content_description" msgid="4879120462082058124">"ášááá á
á”á-á„ááł"</string>
- <string name="shape_preview_content_description" msgid="6479487796176550432">"ášá
áᜠá
á”á-á„ááł"</string>
+ <string name="theme_preview_card_content_description" msgid="5989222908619535533">"ášá
á„ á
á”á-áááł"</string>
+ <string name="grid_preview_card_content_description" msgid="8449383777584714842">"ášááááá á
á”á-áááł"</string>
+ <string name="font_preview_content_description" msgid="128230439293337891">"ášá
ááž-ááá á
á”á-áááł"</string>
+ <string name="icon_preview_content_description" msgid="7761101284351952890">"ášá á¶ á
á”á-áááł"</string>
+ <string name="color_preview_content_description" msgid="4879120462082058124">"ášááá á
á”á-áááł"</string>
+ <string name="shape_preview_content_description" msgid="6479487796176550432">"ášá
áᜠá
á”á-áááł"</string>
<string name="option_applied_description" msgid="5022305212078053534">"<xliff:g id="ID_1">%1$s</xliff:g>ᣠá áá áá á°áá»á ááá"</string>
<string name="option_applied_previewed_description" msgid="5269654286638446858">"<xliff:g id="ID_1">%1$s</xliff:g>, currently applied and previewed"</string>
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, currently previewed"</string>
@@ -62,9 +64,12 @@
<string name="preview_name_shape" msgid="5676971146080968721">"á
ááœ"</string>
<string name="preview_name_wallpaper" msgid="1738652462949531828">"ááŁá"</string>
<string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
- <string name="font_card_body" msgid="6790525594503904468">"ášá„áá”áá á°ááłá
áááᜠáá° ááá áá« áᜠá«áá"</string>
+ <string name="font_card_body" msgid="6790525594503904468">"ášá„áá”áá á°ááłá
áááᜠáá° ááá áá« áá
á«áá"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ášááááá áá á ááášáĄ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ášááááá áá áá áááá„ áá„áȘá« áŠáłá áłáá áááá á„á á„áá” á°ááááœá ááá”á” ááœáááą"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"á %1$s ááááá áá„áȘá« áŠáłá á„áá°áá áá«á"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"á %1$s ááááá áá„áȘá« áŠáłá á„áá°áá áá«á á áá°áłá«á"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"á
á„ á á°áłá« áááł á°ááá„áŻá"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"á°áá” á á°áłá« áááł á°ááá„áŻá"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ááááá á á°áłá« áááł á°ááá„áŻá"</string>
@@ -89,10 +94,10 @@
<string name="use_style_instead_body" msgid="3051937045807471496">"ášáášá§ážá áááá° á á«áá” áš <xliff:g id="ID_1">%1$s</xliff:g> á
á„ áá ááááłááą á áá”á© <xliff:g id="ID_2">%1$s</xliff:g> áá áá ááááá?"</string>
<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>
+ <string name="clock_preview_content_description" msgid="5460561185905717460">"áš<xliff:g id="ID_1">%1$s</xliff:g> á°áá” á
á”á-áááł"</string>
<string name="something_went_wrong" msgid="529840112449799117">"áá! ášáá áœáá á°áá„áŻááą"</string>
<string name="theme_preview_icons_section_title" msgid="7064768910744000643">"ááá / á á¶ááœ"</string>
- <string name="style_info_description" msgid="2612473574431003251">"ášá
ááž-áááᣠášá á¶ááœáŁ ášáá°áá áȘá« á
áᜠá„á ášááá á
á”á-á„ááł"</string>
+ <string name="style_info_description" msgid="2612473574431003251">"ášá
ááž-áááᣠášá á¶ááœáŁ ášáá°áá áȘá« á
áᜠá„á ášááá á
á”á-áááł"</string>
<string name="accessibility_custom_font_title" msgid="966867359157303705">"á„á á
ááž-ááá"</string>
<string name="accessibility_custom_icon_title" msgid="5753297905849062296">"á„á á á¶"</string>
<string name="accessibility_custom_color_title" msgid="4124246598886320663">"á„á ááá"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ášáá« á áá«á"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ášáá á áá«á"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ááá"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"«<xliff:g id="APPNAME">%1$s</xliff:g>»á áááášá„ ášáášá°áá”á ááá”áč"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"á áá«áá áášá á áá°á»áá"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> áááá±"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"áš<xliff:g id="APPNAME">%1$s</xliff:g> áá°áá áȘá«á á„áá° á áá«á ááášá ášáášá°áá”á áá”ášááá á„ááá á ááá"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"á°ášáááá"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"á áá«áźáœ"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>ᣠ<xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ááá"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"á áá« áᜠááá áá ááłááá«ááœá á áłá"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"á áá« áᜠááá áá ááłááá«ááœá á°á„á
"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"á áá« áá
ááá áá ááłááá«ááœá á áłá"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"á°ášááȘ ášáá« áá
ááá á áá«áźáœ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ááááá”ᣠá áá á áá«áá” áá á„á áááœá"</string>
<string name="more_colors" msgid="3191071655353004591">"á°ášááȘ áááá”"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ášááááȘá« á°áááá ááœáł"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ášááááȘá« áááá°á ááœáł"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ášááááȘá« áá ááœáł"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ášááááȘá« ááá ááœáł"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ááŁáȘ ášááá á áá«á"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ášááá á áá«á <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ášá°ááš ášá°áá” ááá áááášá„ áá° áá« á«áážá«á”á±"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ášá°ááš ášá°áá” ááá áááášá„ áá° áá á«áážá«á”á±"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"á„á á°áá¶áœ"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index f3a3fae..2268eb1 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ŰźÙÙÙŰ© ێۧێ۩ ۳ۧŰčŰ© Ù
۟۔Ù۔۩"</string>
<string name="clock_description" msgid="3563839327378948">"ۧ۟ŰȘÙۧ۱ ŰźÙÙÙŰ© ێۧێ۩ ۳ۧŰčŰ© Ù
۟۔Ù۔۩"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ŰȘŰșÙÙ۱ ŰźÙÙÙŰ© ێۧێ۩ ۳ۧŰčŰ© Ù
۟۔Ù۔۩"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Ű„ŰčۯۧۯۧŰȘ ۧÙ۳ۧŰčŰ©"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ŰźÙۧ۱ ŰȘŰ”Ù
ÙÙ
ۧÙ۳ۧŰčŰ©: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ÙÙÙ Ű§Ù۳ۧŰčŰ© ÙŰŰŹÙ
Ùۧ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ÙÙÙ Ű§Ù۳ۧŰčŰ© ÙŰŰŹÙ
Ùۧ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g> Ù<xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ۧÙÙÙÙ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ÙŰȘŰșÙ۱ ŰŰŹÙ
ۧÙ۳ۧŰčŰ© ÙÙÙÙۧ ÙÙÙ
ŰŰȘÙÙ ŰčÙÙ ŰŽŰ§ŰŽŰ© ۧÙÙÙÙ."</string>
<string name="clock_size_large" msgid="3143248715744138979">"ÙŰšÙ۱"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Ű”ŰșÙ۱"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ŰȘŰžÙ۱ ۳ۧŰčŰ© Ű”ŰșÙ۱۩ ÙÙ ŰČۧÙÙŰ© ۧÙێۧێ۩."</string>
<string name="grid_title" msgid="1688173478777254123">"ŰŽŰšÙŰ© ۧÙŰȘŰ·ŰšÙÙۧŰȘ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ŰȘŰ·ŰšÙÙ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ۧÙÙÙ۱ ÙÙŰȘŰčŰŻÙÙ."</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ÙÙ
ÙÙÙ Ű„Ű¶Ű§ÙŰ© ۟۷ÙŰ·Ù Ű§ÙÙ
Ù۶ÙÙŰ© Ű„ÙÙ ÙÙ ŰŽŰ§ŰŽŰ©."</string>
<string name="grid_options_title" msgid="7071930966989877023">"ۧ۟ŰȘÙۧ۱ ŰŰŹÙ
ۧÙŰŽŰšÙŰ©"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ŰłÙŰ€ŰŻÙ ŰȘŰșÙÙ۱ ŰŰŹÙ
ۧÙŰŽŰšÙŰ© Ű„ÙÙ Ű„Űčۧۯ۩ ŰȘŰÙ
ÙÙ Ù
۳ۧŰŰ© ۧÙŰčÙ
Ù ÙÙŰŻ ÙŰłŰȘŰșŰ±Ù Ű°ÙÙ ŰšŰ¶Űč Ű«ÙۧÙÙ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ű„Űčۧۯ۩ ŰȘŰÙ
ÙÙ Ù
۳ۧŰŰ© ۧÙŰčÙ
Ù ŰšŰ§ŰłŰȘ۟ۯۧÙ
ŰŽŰšÙŰ© %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ŰȘŰč۰Ù۱ŰȘ Ű„Űčۧۯ۩ ŰȘŰÙ
ÙÙ Ù
۳ۧŰŰ© ۧÙŰčÙ
Ù ŰšŰ§ŰłŰȘ۟ۯۧÙ
ŰŽŰšÙŰ© %1$s."</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ŰȘÙ
۶ۚ۷ ۧÙÙÙ
Ű·."</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ŰȘÙ
۶ۚ۷ ۧÙ۳ۧŰčŰ©."</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ŰȘÙ
۶ۚ۷ ۧÙŰŽŰšÙŰ©."</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ۧ۟ŰȘ۔ۧ۱ ۧÙÙÙ
ÙÙ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ۧ۟ŰȘ۔ۧ۱ ۧÙÙ۳ۧ۱"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ۚۯÙÙ ŰŁŰČ۱ۧ۱"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Ùۧ۟ŰȘÙۧ۱ \"<xliff:g id="APPNAME">%1$s</xliff:g>\"Ű ŰȘŰŁÙÙŰŻ Ù
Ù
ۧ ÙÙÙ:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ŰȘŰč۰ÙÙ۱ ۄ۶ۧÙŰ© ۧÙۧ۟ŰȘ۔ۧ۱"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ÙŰȘŰ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Ùۄ۶ۧÙŰ© ŰȘŰ·ŰšÙÙ \"<xliff:g id="APPNAME">%1$s</xliff:g>\" Ùۧ۟ŰȘŰ”Ű§Ű±Ű ŰȘŰŁÙÙÙŰŻ Ù
Ù"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ŰȘÙ
"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"\"<xliff:g id="FIRST">%1$s</xliff:g>\" Ù\"<xliff:g id="SECOND">%2$s</xliff:g>\""</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ۚۯÙÙ Ű§ŰźŰȘ۔ۧ۱ۧŰȘ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ۄ۞Ùۧ۱ ۧÙۄێŰčۧ۱ۧŰȘ ŰčÙÙ ŰŽŰ§ŰŽŰ© ۧÙÙÙÙ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ۄ۟Ùۧۥ ۧÙۄێŰčۧ۱ۧŰȘ ŰčÙÙ ŰŽŰ§ŰŽŰ© ۧÙÙÙÙ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ۧÙÙ
ŰČÙŰŻ Ù
Ù ŰźÙۧ۱ۧŰȘ ێۧێ۩ ۧÙÙÙÙ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ۧÙ۟۔ÙŰ”ÙŰ© ÙÙ
ÙŰČŰ© \"ۧÙŰȘŰč۱ÙÙ Ű§ÙŰȘÙÙŰ§ŰŠÙ ŰčÙÙ Ű§ÙÙ
ÙŰłÙÙÙ\" ÙŰșÙ۱ ۰ÙÙ"</string>
<string name="more_colors" msgid="3191071655353004591">"ۧÙÙ
ŰČÙŰŻ Ù
Ù Ű§ÙŰŁÙÙۧÙ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Ù
ŰžÙ۱ ŰŻÙÙۧÙ
ÙÙÙ ŰŁŰłŰ§ŰłÙ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Ù
ŰžÙ۱ ŰŁŰłŰ§ŰłÙ Ù
ŰۧÙŰŻ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Ù
ŰžÙ۱ ŰŁŰłŰ§ŰłÙ Ùۧۚ۶ ۚۧÙŰÙۧ۩"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Ù
ŰžÙ۱ ŰŁŰłŰ§ŰłÙ Ù
ŰčŰšÙÙ۱"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ŰźÙۧ۱ ۧÙÙÙÙ Ű§ÙŰȘÙÙۧۊÙ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ŰźÙۧ۱ ۧÙÙÙÙ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Ù
۱ÙÙ۱ ۳۱ÙŰčÙۧ ÙÙÙÙ
ÙÙ Ùۧ۟ŰȘÙۧ۱ ŰȘŰ”Ù
ÙÙ
۳ۧŰčŰ© Ù
ŰźŰȘÙÙ."</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Ù
۱ÙÙ۱ ۳۱ÙŰčÙۧ ÙÙÙ۳ۧ۱ Ùۧ۟ŰȘÙۧ۱ ŰȘŰ”Ù
ÙÙ
۳ۧŰčŰ© Ù
ŰźŰȘÙÙ."</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ŰȘŰ”Ù
ÙÙ
ۧŰȘ ۳ۧŰčŰ© Ù
۟۔Ù۔۩"</string>
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 6279d5d..760b530 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àŠàŠŸàŠ·à§àŠàŠź àŠàŠĄàŠŒà§"</string>
<string name="clock_description" msgid="3563839327378948">"àŠàŠŸàŠ·à§àŠàŠź àŠàŠĄàŠŒà§ àŠŹàŠŸàŠàŠ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àŠàŠŸàŠ·à§àŠàŠź àŠàŠĄàŠŒà§ àŠžàŠČàŠšàŠż àŠà§°àŠ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àŠàŠĄàŠŒà§à§° àŠà§àŠàŠżàŠ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àŠà§àŠČàŠ àŠ«à§’àŠà§° àŠŹàŠżàŠàŠČà§àŠȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àŠàŠĄàŠŒà§à§° à§°àŠ àŠà§°à§ àŠàŠàŠŸà§°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àŠàŠĄàŠŒà§à§° à§°àŠ àŠà§°à§ àŠàŠàŠŸà§°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à§°àŠ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àŠŹàŠšà§àЧ àŠžà§àŠà§à§°à§àŠšà§° àŠžàŠźàŠČ àŠ
àŠšà§àŠžà§°àŠż àŠàŠĄàŠŒà§à§° àŠàŠàŠŸà§° àŠžàŠČàŠšàŠż àŠčàŠŻàŠŒ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àŠĄàŠŸàŠà§°"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àŠžà§°à§"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àŠàŠȘà§àŠšàŠŸà§° àŠžà§àŠà§à§°à§àŠšàŠàŠšà§° àŠà§àŠàŠ€ àŠàŠàŠŸ àŠžà§°à§ àŠàŠĄàŠŒà§àŠŻàŠŒà§ àŠŠà§àŠà§à§±àŠŸàŠŻàŠŒ"</string>
<string name="grid_title" msgid="1688173478777254123">"àŠàŠȘà§° àŠà§à§°àŠżàŠĄ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àŠȘà§à§°àŠŻàŠŒà§àŠ àŠà§°àŠ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àŠžàŠźà§àŠȘàŠŸàŠŠàŠšàŠŸ àŠà§°àŠżàŠŹàŠČà§ àŠàŠżàŠȘàŠ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àŠȘà§à§°àŠ€à§àŠŻà§àŠàŠàŠš àŠžà§àŠà§à§°à§àŠšàŠ€ àŠàŠȘà§àŠšàŠŸà§° àŠȘà§à§°àŠżàŠŻàŠŒ àŠ«’àŠŁà§àŠ àŠŻà§àŠ àŠŠàŠżàŠŻàŠŒàŠ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àŠàŠàŠŸ àŠà§à§°àŠżàŠĄà§° àŠàŠàŠŸà§° àŠŹàŠŸàŠàŠšàŠż àŠà§°àŠ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àŠà§à§°àŠżàŠĄ àŠàŠàŠŸà§° àŠžàŠČàŠšàŠż àŠà§°àŠżàŠČৠৱৰà§àŠàŠžà§àŠȘà§àŠ àŠȘà§àŠšà§° àŠČ’àŠĄ àŠč’àŠŹ àŠà§°à§ àŠà§àŠàŠà§àŠà§àŠŁà§àŠĄàŠźàŠŸàŠš àŠžàŠźàŠŻàŠŒ àŠČàŠŸàŠàŠżàŠŹ àŠȘàŠŸà§°à§à„€"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àŠà§à§°àŠżàŠĄà§° àŠžà§àŠ€à§ à§±à§°à§àŠàŠžà§àŠȘà§àŠ àŠȘà§àŠšà§° àŠČ’àŠĄ àŠà§°àŠż àŠ„àŠàŠŸ àŠčà§àŠà§"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àŠà§à§°àŠżàŠĄà§° àŠžà§àŠ€à§ à§±à§°à§àŠàŠžà§àŠȘà§àŠ àŠȘà§àŠšà§° àŠČ’àŠĄ àŠà§°àŠżàŠŹ àŠȘà§°àŠŸ àŠšàŠ’àŠČ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àŠ¶à§àŠČà§ àŠžàŠ«àŠČàŠ€àŠŸà§°à§ àŠà§àŠ àŠà§°àŠŸ àŠč’àŠČ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àŠàŠĄàŠŒà§ àŠžàŠ«àŠČàŠ€àŠŸà§°à§ àŠà§àŠ àŠà§°àŠŸ àŠč’àŠČ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àŠà§à§°àŠżàŠĄ àŠžàŠ«àŠČàŠ€àŠŸà§°à§ àŠà§àŠ àŠà§°àŠŸ àŠč’àŠČ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àŠŹàŠŸàŠàŠ àŠ¶à§àŠŹà§°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àŠžà§àŠ àŠ¶à§àŠŹà§°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àŠšàŠŸàŠ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àŠŹàŠŸàŠàŠšàŠż àŠà§°àŠżàŠŹàŠČà§ àŠàŠŻàŠŒàŠŸ àŠȘà§°à§àŠà§àŠ·àŠŸ àŠà§°àŠ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àŠ¶à§àŠŹà§°à§àŠàŠàŠŸàŠ àŠŻà§àŠ àŠà§°àŠżàŠŹ àŠšà§à§±àŠŸà§°àŠż"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àŠà§àŠČàŠ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> àŠàŠȘà§àŠà§àŠ àŠàŠàŠŸ àŠ¶à§àŠŹà§°à§àŠàŠàŠŸàŠ àŠčàŠżàŠàŠŸàŠȘà§ àŠŻà§àŠ àŠŠàŠżàŠŹàŠČà§, àŠàŠàŠà§àŠàŠàŠŸ àŠàŠ„àŠŸ àŠšàŠżàŠ¶à§àŠàŠżàŠ€ àŠà§°àŠ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àŠà§°àŠŸ àŠč’àŠČ"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"àŠ¶à§àŠŹà§°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àŠšàŠŸàŠ"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŠŹàŠšà§àЧ àŠžà§àŠà§à§°à§àŠšàŠ€ àŠàŠŸàŠšàŠšà§ àŠŠà§àŠà§à§±àŠŸàŠàŠ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àŠŹàŠšà§àЧ àŠžà§àŠà§à§°à§àŠšàŠ€ àŠàŠŸàŠšàŠšà§ àŠČà§àŠà§à§±àŠŸàŠàŠ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŠČàŠ àŠžà§àŠà§à§°à§àŠšàŠ€ àŠàŠŸàŠšàŠšà§ àŠŠà§àŠà§à§±àŠŸàŠàŠ"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àŠČàŠ àŠžà§àŠà§à§°à§àŠšà§° àŠ
àŠ§àŠżàŠ àŠŹàŠżàŠàŠČà§àŠȘ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àŠà§àŠȘàŠšà§àŠŻàŠŒàŠ€àŠŸ, àŠžàŠŠà§àŠŻ àŠȘà§°àŠżà§±à§àŠ¶àŠżàŠ€ àŠà§àŠ€ àŠà§°à§ àŠ
àŠ§àŠżàŠ"</string>
<string name="more_colors" msgid="3191071655353004591">"àŠ
àŠ§àŠżàŠ à§°àŠ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àŠȘà§à§°àŠŸàŠ„àŠźàŠżàŠ àŠĄàŠŸàŠàŠšàŠŸàŠźàŠżàŠ àŠ„à§àŠź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àŠȘà§à§°àŠŸàŠ„àŠźàŠżàŠ àŠšàŠżà§°àŠȘà§àŠà§àŠ· àŠ„à§àŠź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àŠȘà§à§°àŠŸàŠ„àŠźàŠżàŠ àŠà§à§±àŠšà§àŠ€ àŠ„à§àŠź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àŠȘà§à§°àŠŸàŠ„àŠźàŠżàŠ àŠ
àŠàŠżàŠŹà§àŠŻàŠà§àŠ€àŠżàŠȘà§à§°à§àŠŁ àŠ„à§àŠź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àŠĄàŠżàŠ«’àŠČà§àŠ à§°àŠà§° àŠŹàŠżàŠàŠČà§àŠȘ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"à§°àŠà§° àŠŹàŠżàŠàŠČà§àŠȘ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àŠ
àŠšà§àŠŻ àŠà§àŠšà§ àŠà§àŠČàŠ àŠ«à§’àŠ àŠŹàŠŸàŠàŠšàŠż àŠà§°àŠżàŠŹàŠČà§ àŠŹàŠŸàŠàŠàŠ«àŠŸàŠČàŠČà§ àŠà§à§±àŠŸàŠàŠȘ àŠà§°àŠ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àŠ
àŠšà§àŠŻ àŠà§àŠšà§ àŠà§àŠČàŠ àŠ«à§’àŠ àŠŹàŠŸàŠàŠšàŠż àŠà§°àŠżàŠŹàŠČà§ àŠžà§àŠàŠ«àŠŸàŠČàŠČà§ àŠà§à§±àŠŸàŠàŠȘ àŠà§°àŠ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àŠàŠŸàŠ·à§àŠàŠź àŠàŠĄàŠŒà§"</string>
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 8a971ed..b920a25 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"FÉrdi Saat"</string>
<string name="clock_description" msgid="3563839327378948">"FÉrdi saat seç"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"FÉrdi saatı dÉyiĆdir"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Saat Ayarları"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Siferblat seçimi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Saat rÉngi vÉ ölçü"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Saat rÉngi vÉ ölçüsü"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"RÉng"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Saat ölçüsü kilid ekranının mÉzmununa görÉ dÉyiĆir"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Böyük"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Kiçik"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ekranın mÉrkÉzindÉ kiçik saat görünür"</string>
<string name="grid_title" msgid="1688173478777254123">"TÉtbiq toru"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"TÉtbiq edin"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"RedaktÉ etmÉk üçün kliklÉyin"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Sevimli ĆriftlÉrinizi hÉr ekrana ÉlavÉ edin"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Tor ölçüsü seçin"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Tor ölçüsü dÉyiĆÉndÉ iĆ yeri yenidÉn yüklÉnÉcÉk."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s toru ilÉ iĆ yeri yenidÉn yüklÉnir"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s toru ilÉ iĆ yeri yenidÉn yüklÉnmÉdi"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Üslub uÄurla ayarlandı"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Saat uÄurla ayarlandı"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Tor uÄurla ayarlandı"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Sol qısayol"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"SaÄ qısayol"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Heç biri"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" seçmÉk üçün aĆaÄıdakıları yoxlayın"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Qısayol ÉlavÉ etmÉk olmur"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> linkini açın"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> tÉtbiqini qısayol kimi ÉlavÉ etmÉk üçün bunları tÉmin edin:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hazırdır"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Heç biri"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kilid ekranında bildiriĆlÉri göstÉrin"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Kilid ekranında bildiriĆlÉri gizlÉdin"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"DigÉr kilid ekranı seçimlÉri"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"MÉxfilik, İndi EfirdÉ vÉ s."</string>
<string name="more_colors" msgid="3191071655353004591">"DigÉr rÉnglÉr"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Æsas dinamik tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Æsas neytral tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Æsas canlı tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Æsas ekspressiv tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Defolt rÉng seçimi"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"RÉng seçimi <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"FÉrqli siferblat seçmÉk üçün sola sürüĆdürün"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"FÉrqli siferblat seçmÉk üçün saÄa sürüĆdürün"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"FÉrdi saatlar"</string>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index f887be1..11f7642 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"PrilagoÄeni sat"</string>
<string name="clock_description" msgid="3563839327378948">"PrilagoÄeni sat"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Promenite prilagoÄeni sat"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Podešavanja sata"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opcija brojÄanika <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Boja"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"DinamiÄki"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"VeliÄina sata se menja u skladu sa sadrĆŸajem zakljuÄanog ekrana"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Veliko"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"Mali"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Mali sat se prikazuje u uglu ekrana"</string>
<string name="grid_title" msgid="1688173478777254123">"MreĆŸa apl."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Primeni"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da biste izmenili"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Dodajte omiljene fontove na svaki ekran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Odaberite veliÄinu mreĆŸe"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Nova veliÄina mreĆŸe ponovo uÄitava radni prostor za par sekundi."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Radni prostor se ponovo uÄitava uz mreĆŸu %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ponovno uÄitavanje radnog prostora uz mreĆŸu %1$s nije uspelo"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stil je podešen"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Podešavanje sata je uspelo"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"MreĆŸa je podešena"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Leva preÄica"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Desna preÄica"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Da biste izabrali „<xliff:g id="APPNAME">%1$s</xliff:g>“, proverite sledeÄe"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Dodavanje preÄice nije uspelo"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otvorite: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Da biste dodali aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g> kao preÄicu, uverite se"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gotovo"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikazuj obaveštenja na zakljuÄanom ekranu"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sakrij obaveštenja na zakljuÄanom ekranu"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Još opcija za zakljuÄani ekran"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Trenutno svira i drugo"</string>
<string name="more_colors" msgid="3191071655353004591">"Još boja"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primarna dinamiÄna tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primarna neutralna tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primarna intenzivna tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primarna ekspresivna tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Podrazumevana opcija boje"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Prevucite nalevo da biste odabrali drugi brojÄanik"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Prevucite nadesno da biste odabrali drugi brojÄanik"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"PrilagoÄeni satovi"</string>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index fec9d8b..a86f170 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐаЎзŃĐœĐœŃĐș"</string>
<string name="clock_description" msgid="3563839327378948">"ĐŃĐ±Đ°Ń ŃŃŃĐ”ŃблаŃа"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐĐŒŃĐœĐ”ĐœĐœĐ” ŃŃŃĐ”ŃблаŃа"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐаЎзŃĐœĐœŃĐș"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐŃбŃĐ°ĐœŃ ŃŃŃĐ”ŃблаŃ: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐĐŸĐ»Đ”Ń/ĐżĐ°ĐŒĐ”Ń ĐłĐ°ĐŽĐ·-Đșа"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐĐŸĐ»Đ”Ń Ń ĐżĐ°ĐŒĐ”Ń ĐłĐ°ĐŽĐ·ŃĐœĐœŃĐșа"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐĐŸĐ»Đ”Ń"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ĐĐ°ĐŒĐ”Ń ĐłĐ°ĐŽĐ·ŃĐœĐœŃĐșа Đ·ĐŒŃĐœŃĐ”ŃŃа Ń Đ·Đ°Đ»Đ”Đ¶ĐœĐ°ŃŃŃ Đ°ĐŽ Đ·ĐŒĐ”ŃŃŃĐČа ĐœĐ° ŃĐșŃĐ°ĐœĐ” блаĐșŃŃĐŸŃĐșŃ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐŃĐ»ŃĐșŃ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐŃĐŸĐ±ĐœŃ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐĐ”ĐČŃĐ»ŃĐșŃ ĐłĐ°ĐŽĐ·ŃĐœĐœŃĐș Ń ĐČŃглД ŃĐșŃĐ°ĐœĐ°"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐĄĐ”ŃĐșа ĐżŃагŃĐ°ĐŒ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"УжŃŃŃ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐаĐșŃĐ°ĐœŃŃĐ”ŃŃ, Đșаб ŃŃЎагаĐČаŃŃ"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, ŃŃĐżĐ”Ń ĐżĐ°ĐżŃŃŃĐŽĐœĐ” паĐșазĐČаДŃŃа"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, Đ·ĐŒŃĐœŃŃĐ” ĐČŃбŃĐ°ĐœĐ°Đ” Ń ĐżĐ°ĐżŃŃŃĐŽĐœĐ” ĐżŃĐ°ĐłĐ»Đ”ĐŽĐ¶Đ°ĐœĐ°Đ”"</string>
<string name="theme_description" msgid="3697012391785254635">"ĐšŃŃŃŃ: <xliff:g id="ID_1">%1$s</xliff:g>, Đ·ĐœĐ°ŃĐșŃ: <xliff:g id="ID_2">%2$s</xliff:g>, ŃŃĐłŃŃа: <xliff:g id="ID_3">%3$s</xliff:g>, ĐșĐŸĐ»Đ”Ń: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"ĐĄŃĐ°ĐœĐŽĐ°ŃŃĐœĐ°"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"ĐĄŃĐ°ĐœĐŽĐ°ŃŃ"</string>
<string name="preview_name_font" msgid="4465423899630037038">"ĐšŃŃŃŃ"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"ĐĐœĐ°ŃĐŸĐș"</string>
<string name="preview_name_color" msgid="8776203144994416172">"ĐĐŸĐ»Đ”Ń"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐаЎаĐČаĐčŃĐ” Đ»ŃбŃĐŒŃŃ ŃŃŃŃŃŃ ĐœĐ° ĐșĐŸĐ¶ĐœŃ ŃĐșŃĐ°Đœ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐŃбДŃŃŃĐ” ĐżĐ°ĐŒĐ”Ń ŃĐ”ŃĐșŃ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐŃŃ Đ·ĐŒĐ”ĐœĐ” ĐżĐ°ĐŒĐ”ŃŃ ŃĐ”ŃĐșŃ Đ±ŃĐŽĐ·Đ” Đ°Đ±ĐœĐŸŃĐ»Đ”ĐœĐ° ĐżŃаŃĐŸŃĐœĐ°Ń ĐČĐŸĐ±Đ»Đ°ŃŃŃ. ĐŁĐČĐ”ŃŃ ĐżŃаŃŃŃ ĐŒĐŸĐ¶Đ° Đ·Đ°ĐœŃŃŃ ĐœĐ”ĐșалŃĐșŃ ŃĐ”ĐșŃĐœĐŽ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ĐĐŽĐ·Đ” Đ°Đ±ĐœĐ°ŃĐ»Đ”ĐœĐœĐ” ĐżŃаŃĐŸŃĐœĐ°Đč ĐČĐŸĐ±Đ»Đ°ŃŃŃ Đ· ŃĐ”ŃĐșаĐč %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐĐ” ŃĐŽĐ°Đ»ĐŸŃŃ Đ°Đ±ĐœĐ°ĐČŃŃŃ ĐżŃаŃĐŸŃĐœŃŃ ĐČĐŸĐ±Đ»Đ°ŃŃŃ Đ· ŃĐ”ŃĐșаĐč %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃŃĐ»Ń ĐżĐ°ŃĐżŃŃ
ĐŸĐČа Đ·Đ°ĐŽĐ°ĐŽĐ·Đ”ĐœŃ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ĐаЎзŃĐœĐœŃĐș паŃĐżŃŃ
ĐŸĐČа Đ·Đ°ĐŽĐ°ĐŽĐ·Đ”ĐœŃ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐĄĐ”ŃĐșа паŃĐżŃŃ
ĐŸĐČа Đ·Đ°ĐŽĐ°ĐŽĐ·Đ”ĐœĐ°"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐŻŃĐ»ŃĐș \"ŃлДĐČа\""</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐŻŃĐ»ŃĐș \"ŃĐżŃаĐČа\""</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐŃĐŒĐ°"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Đаб ĐČŃбŃаŃŃ ĐżŃагŃĐ°ĐŒŃ \"<xliff:g id="APPNAME">%1$s</xliff:g>\", Đ·ŃабŃŃĐ” ĐœĐ°ŃŃŃĐżĐœĐ°Đ”"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐĐ” ŃĐŽĐ°Đ»ĐŸŃŃ ĐŽĐ°ĐŽĐ°ŃŃ ŃŃĐ»ŃĐș."</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐĐŽĐșŃŃŃŃ \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Đаб ЎаЎаŃŃ ŃŃĐ»ŃĐș ĐŽĐ»Ń ĐżŃагŃĐ°ĐŒŃ \"<xliff:g id="APPNAME">%1$s</xliff:g>\", паŃŃабŃŃŃŃа ĐœĐ°ŃŃŃĐżĐœŃŃ ŃĐŒĐŸĐČŃ:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐаŃĐŸĐČа"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐŃĐŒĐ°"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐаĐșазĐČаŃŃ Đ°ĐżĐ°ĐČŃŃŃŃĐœĐœŃ ĐœĐ° ŃĐșŃĐ°ĐœĐ” блаĐșŃŃĐŸŃĐșŃ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐĐ” паĐșазĐČаŃŃ Đ°ĐżĐ°ĐČŃŃŃŃĐœĐœŃ ĐœĐ° ŃĐșŃĐ°ĐœĐ” блаĐșŃŃĐŸŃĐșŃ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐĐŸĐ»ŃŃ ĐżĐ°ŃĐ°ĐŒĐ”ŃŃĐ°Ń ŃĐșŃĐ°ĐœĐ° блаĐșŃŃĐŸŃĐșŃ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐŃŃĐČаŃĐœĐ°ŃŃŃ, ĐаŃаз ŃĐłŃаД Ń ŃĐœŃаД"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐĐŸĐ»ŃŃ ĐșĐŸĐ»Đ”ŃаŃ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐŃĐœĐ°ĐŒŃŃĐœĐ°Ń Đ°ŃĐœĐŸŃĐœĐ°Ń ŃŃĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐĐ”ĐčŃŃалŃĐœĐ°Ń Đ°ŃĐœĐŸŃĐœĐ°Ń ŃŃĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐŻŃĐșŃаĐČĐ°Ń Đ°ŃĐœĐŸŃĐœĐ°Ń ŃŃĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐŃŃĐ°Đ·ĐœĐ°Ń Đ°ŃĐœĐŸŃĐœĐ°Ń ŃŃĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĄŃĐ°ĐœĐŽĐ°ŃŃĐœŃ ĐČаŃŃŃĐœŃ ĐșĐŸĐ»Đ”ŃŃ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐаŃŃŃĐœŃ ĐșĐŸĐ»Đ”ŃŃ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Đаб ĐČŃбŃаŃŃ ŃĐœŃŃ ŃŃŃĐ”ŃблаŃ, ĐżŃаĐČŃĐŽĐ·ŃŃĐ” палŃŃĐ°ĐŒ ŃлДĐČа"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Đаб ĐČŃбŃаŃŃ ŃĐœŃŃ ŃŃŃĐ”ŃблаŃ, ĐżŃаĐČŃĐŽĐ·ŃŃĐ” палŃŃĐ°ĐŒ ŃĐżŃаĐČа"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐаŃŃŃŃалŃĐœŃŃĐșŃŃ ŃŃŃĐ”ŃблаŃŃ"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index eb5386d..518f582 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐĐ”ŃŃĐŸĐœĐ°Đ». ŃĐžŃĐ”ŃблаŃ"</string>
<string name="clock_description" msgid="3563839327378948">"ĐĐ”ŃŃĐŸĐœ. ŃĐžŃĐ”ŃблаŃ: ĐĐ·Đ±ĐŸŃ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐŃĐŸĐŒŃĐœĐ° ĐœĐ° пДŃŃĐŸĐœĐ°Đ»ĐžĐ·ĐžŃĐ°Đœ ŃĐžŃĐ”ŃблаŃ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ЧаŃĐŸĐČĐœĐžĐș: ĐаŃŃŃĐŸĐčĐșĐž"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐĐżŃĐžŃ Đ·Đ° ŃĐžŃĐ”ŃблаŃа: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ЧаŃĐŸĐČĐœ.: ĐŠĐČŃŃ Đž ŃĐ°Đ·ĐŒĐ”Ń"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ЧаŃĐŸĐČĐœ.: ĐŠĐČŃŃ Đž ŃĐ°Đ·ĐŒĐ”Ń"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐŠĐČŃŃ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Đ Đ°Đ·ĐŒĐ”ŃŃŃ ĐœĐ° ŃаŃĐŸĐČĐœĐžĐșа ŃĐ” ĐżŃĐŸĐŒĐ”ĐœŃ ŃĐżĐŸŃДЎ ŃŃĐŽŃŃĐ¶Đ°ĐœĐžĐ”ŃĐŸ ĐœĐ° заĐșĐ»ŃŃĐ”ĐœĐžŃ Đ”ĐșŃĐ°Đœ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐĐŸĐ»ŃĐŒ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐалŃĐș"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Đ ŃĐłŃла ĐœĐ° Đ”ĐșŃĐ°ĐœĐ° ŃĐ” ĐżĐŸĐșазĐČа ĐŒĐ°Đ»ŃĐș ŃаŃĐŸĐČĐœĐžĐș"</string>
<string name="grid_title" msgid="1688173478777254123">"Đ Đ”ŃĐ”ŃĐșа Ń ĐżŃОл."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐŃĐžĐ»Đ°ĐłĐ°ĐœĐ”"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐĐŸĐșĐŸŃĐœĐ”ŃĐ”, за Ўа ŃДЎаĐșŃĐžŃаŃĐ”"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"ĐĐŸĐœĐ°ŃŃĐŸŃŃĐ”ĐŒ Đ” ĐČОзŃалОзОŃĐ°ĐœĐ° ĐŸĐżŃĐžŃŃа „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"ĐŃĐŸĐŒŃĐœĐ° ĐœĐ° ОзбŃĐ°ĐœĐ°Ńа Đž ĐČОзŃалОзОŃĐ°ĐœĐ° ĐŸĐżŃĐžŃ „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
<string name="theme_description" msgid="3697012391785254635">"ĐšŃĐžŃŃ: <xliff:g id="ID_1">%1$s</xliff:g> – ĐžĐșĐŸĐœĐž: <xliff:g id="ID_2">%2$s</xliff:g> – ŃĐŸŃĐŒĐ°: <xliff:g id="ID_3">%3$s</xliff:g> – ŃĐČŃŃ: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"ĐŃĐœĐŸĐČĐœĐŸ"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"ĐŃĐœĐŸĐČĐ”Đœ"</string>
<string name="preview_name_font" msgid="4465423899630037038">"ĐšŃĐžŃŃ"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"ĐĐșĐŸĐœĐ°"</string>
<string name="preview_name_color" msgid="8776203144994416172">"ĐŠĐČŃŃ"</string>
@@ -64,7 +66,10 @@
<string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
<string name="font_card_body" msgid="6790525594503904468">"ĐĐŸĐ±Đ°ĐČĐ”ŃĐ” Đ»ŃĐ±ĐžĐŒĐžŃĐ” ŃĐž ŃŃĐžŃŃĐŸĐČĐ” ĐœĐ° ĐČŃĐ”ĐșĐž Đ”ĐșŃĐ°Đœ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐзбОŃĐ°ĐœĐ” ĐœĐ° ŃĐ°Đ·ĐŒĐ”Ń ĐœĐ° ŃĐ”ŃĐ”ŃĐșаŃа"</string>
- <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐŃĐ”ĐŸŃĐ°Đ·ĐŒ. ĐœĐ° ŃĐ”ŃĐ”ŃĐșаŃа ĐżŃДзаŃДжЎа Ńаб. ĐżŃĐŸŃŃŃ. Đž ĐŸŃĐœĐ”ĐŒĐ° ĐœŃĐșĐŸĐ»ĐșĐŸ ŃĐ”Đș."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Đ Đ°Đ±ĐŸŃĐœĐŸŃĐŸ ĐżŃĐŸŃŃŃĐ°ĐœŃŃĐČĐŸ ŃĐ” ĐżŃДзаŃДжЎа Ń ŃĐ”ŃĐ”ŃĐșа Ń ŃĐ°Đ·ĐŒĐ”Ń %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐŃДзаŃĐ”Đ¶ĐŽĐ°ĐœĐ”ŃĐŸ ĐœĐ° ŃĐ°Đ±ĐŸŃĐœĐŸŃĐŸ ĐżŃĐŸŃŃŃĐ°ĐœŃŃĐČĐŸ Ń ŃĐ”ŃĐ”ŃĐșа Ń ŃĐ°Đ·ĐŒĐ”Ń %1$s ĐœĐ” бД ŃŃпДŃĐœĐŸ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃОлŃŃ Đ±Đ” Đ·Đ°ĐŽĐ°ĐŽĐ”Đœ ŃŃпДŃĐœĐŸ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ЧаŃĐŸĐČĐœĐžĐșŃŃ Đ±Đ” Đ·Đ°ĐŽĐ°ĐŽĐ”Đœ ŃŃпДŃĐœĐŸ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Đ Đ”ŃĐ”ŃĐșаŃа бД Đ·Đ°ĐŽĐ°ĐŽĐ”ĐœĐ° ŃŃпДŃĐœĐŸ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐŃĐČ ĐżŃŃĐș ĐżŃŃ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐĐ”ŃĐ”Đœ ĐżŃŃĐș ĐżŃŃ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐДз"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Đа Ўа ОзбДŃĐ”ŃĐ” <xliff:g id="APPNAME">%1$s</xliff:g>, ĐżŃĐŸĐČĐ”ŃĐ”ŃĐ” ŃĐ»Đ”ĐŽĐœĐŸŃĐŸ:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐŃĐ”ĐșĐžŃŃ ĐżŃŃ ĐœĐ” ĐŒĐŸĐ¶Đ” Ўа ŃĐ” ĐŽĐŸĐ±Đ°ĐČĐž"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐŃĐČаŃŃĐœĐ” ĐœĐ° <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Đа Ўа ĐŽĐŸĐ±Đ°ĐČĐžŃĐ” ĐżŃŃĐș ĐżŃŃ ĐșŃĐŒ ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ”ŃĐŸ <xliff:g id="APPNAME">%1$s</xliff:g>, ŃŃŃбĐČа Ўа ŃĐ” ŃĐČĐ”ŃĐžŃĐ” ĐČ ŃĐ»Đ”ĐŽĐœĐŸŃĐŸ:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐŸŃĐŸĐČĐŸ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐŃĐŒĐ°"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐĐŸĐșазĐČĐ°ĐœĐ” ĐœĐ° ОзĐČĐ”ŃŃĐžŃŃа ĐœĐ° заĐșĐ»ŃŃĐ”ĐœĐžŃ Đ”ĐșŃĐ°Đœ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐĄĐșŃĐžĐČĐ°ĐœĐ” ĐœĐ° ОзĐČĐ”ŃŃĐžŃŃа ĐœĐ° заĐșĐ»ŃŃĐ”ĐœĐžŃ Đ”ĐșŃĐ°Đœ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐŃĐ” ĐŸĐżŃОО за заĐșĐ»ŃŃĐ”ĐœĐžŃ Đ”ĐșŃĐ°Đœ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐĐŸĐČĐ”ŃĐžŃĐ”Đ»ĐœĐŸŃŃ, „ХДга ŃĐ»ŃŃаŃĐ”“ Đž ĐŽŃ."</string>
<string name="more_colors" msgid="3191071655353004591">"ĐŃĐ” ŃĐČĐ”ŃĐŸĐČĐ”"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐĐžĐœĐ°ĐŒĐžŃĐ”Đœ ŃĐČŃŃ ĐŸŃ ĐŸŃĐœĐŸĐČĐœĐ°Ńа ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐĐ”ŃŃŃĐ°Đ»Đ”Đœ ŃĐČŃŃ ĐŸŃ ĐŸŃĐœĐŸĐČĐœĐ°Ńа ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐŻŃŃĐș ŃĐČŃŃ ĐŸŃ ĐŸŃĐœĐŸĐČĐœĐ°Ńа ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐĐșŃĐżŃĐ”ŃĐžĐČĐ”Đœ ŃĐČŃŃ ĐŸŃ ĐŸŃĐœĐŸĐČĐœĐ°Ńа ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĐżŃĐžŃ Đ·Đ° ŃĐČĐ”Ńа ĐżĐŸ ĐżĐŸĐŽŃазбОŃĐ°ĐœĐ”"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐĐżŃĐžŃ Đ·Đ° ŃĐČĐ”Ńа: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐĐ»ŃĐ·ĐœĐ”ŃĐ” ĐœĐ°Đ»ŃĐČĐŸ, за Ўа ОзбДŃĐ”ŃĐ” ĐŽŃŃĐł ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐĐ»ŃĐ·ĐœĐ”ŃĐ” ĐœĐ°ĐŽŃŃĐœĐŸ, за Ўа ОзбДŃĐ”ŃĐ” ĐŽŃŃĐł ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐĐ”ŃŃĐŸĐœĐ°Đ»ĐžĐ·ĐžŃĐ°ĐœĐž ŃаŃĐŸĐČĐœĐžŃĐž"</string>
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index b3a323a..e1af537 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"àŠàŠŸàŠžà§àŠàŠź àŠàŠĄàŠŒàŠż"</string>
<string name="clock_description" msgid="3563839327378948">"àŠàŠŸàŠžà§àŠàŠź àŠàŠĄàŠŒàŠż àŠŹà§àŠà§ àŠšàŠżàŠš"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àŠàŠŸàŠžà§àŠàŠź àŠàŠĄàŠŒàŠż àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠàаà§àŠš"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àŠàŠĄàŠŒàŠżàŠ° \'àŠžà§àŠàŠżàŠàŠž\'"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"àŠàŠĄàŠŒàŠżàŠ° àŠ°àŠ & àŠžàŠŸàŠàŠ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àŠàŠĄàŠŒàŠżàŠ° àŠĄàŠŸàŠŻàŠŒàŠŸàŠČà§àа àŠŹàŠżàŠàŠČà§àŠȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àŠàŠĄàŠŒàŠżàŠ° àŠ°àŠ & àŠžàŠŸàŠàŠ"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"àŠàŠĄàŠŒàŠżàŠ° àŠ°àŠ àŠ àŠžàŠŸàŠàŠ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àŠ°àŠ"</string>
<string name="clock_color_red" msgid="3843504214807597810">"àŠČàŠŸàŠČ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àŠČàŠ àŠžà§àŠà§àŠ°àŠżàŠšà§àа àŠàŠšà§àŠà§àŠšà§àŠ àŠ
àŠšà§àŠŻàŠŸàŠŻàŠŒà§ àŠàŠĄàŠŒàŠżàŠ° àŠžàŠŸàŠàŠ àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠčàŠŻàŠŒ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àŠŹàŠĄàŠŒ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àŠà§àŠ àŠàаà§àŠš"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àŠžà§àŠà§àŠ°àŠżàŠšà§àа àŠà§àŠšàŠŸàŠŻàŠŒ àŠàŠàŠàŠż àŠà§àŠ àŠàŠĄàŠŒàŠż àŠŠà§àŠàŠŸàŠšà§ àŠčàŠŻàŠŒ"</string>
<string name="grid_title" msgid="1688173478777254123">"àŠ
à§àŠŻàŠŸàŠȘ àŠà§àŠ°àŠżàŠĄ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àŠȘà§àŠ°àŠŻàŠŒà§àŠ àŠàаà§àŠš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àŠàŠĄàŠżàŠ àŠàŠ°àŠ€à§ àŠà§àŠŻàŠŸàŠȘ àŠàаà§àŠš"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àŠȘà§àŠ°àŠ€àŠżàŠàŠż àŠžà§àŠà§àŠ°àŠżàŠšà§ àŠàŠȘàŠšàŠŸàŠ° àŠȘàŠàŠšà§àŠŠà§àа àŠ«àŠšà§àŠ àŠŻà§àŠ àŠàаà§àŠš"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àŠà§àŠ°àŠżàŠĄà§àа àŠžàŠŸàŠàŠ àŠŹà§àŠà§ àŠšàŠżàŠš"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àŠà§àŠ°àŠżàŠĄ àŠžàŠŸàŠàŠ àŠŹàŠŠàŠČàŠŸàŠČà§ àŠàŠŻàŠŒàŠŸàŠ°à§àŠàŠžà§àŠȘà§àŠž àŠ°àŠżàŠČà§àŠĄ àŠàŠ°àŠŸ àŠčàŠŹà§ àŠ àŠàŠ€à§ àŠàŠŻàŠŒà§àŠ àŠžà§àŠà§àŠšà§àŠĄ àŠČàŠŸàŠàŠ€à§ àŠȘàŠŸàŠ°à§à„€"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àŠà§àŠ°àŠżàŠĄ àŠžàŠč àŠàŠŻàŠŒàŠŸàŠ°à§àŠàŠžà§àŠȘà§àŠž àŠ°àŠżàŠČà§àŠĄ àŠàŠ°àŠŸ àŠčàŠà§àŠà§"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àŠà§àŠ°àŠżàŠĄ àŠžàŠč àŠàŠŻàŠŒàŠŸàŠ°à§àŠàŠžà§àŠȘà§àŠž àŠ°àŠżàŠČà§àŠĄ àŠàŠ°àŠŸ àŠŻàŠŸàŠŻàŠŒàŠšàŠż"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àŠžà§àŠàŠŸàŠàŠČ àŠžàŠ«àŠČàŠàŠŸàŠŹà§ àŠžà§àŠ àŠàŠ°àŠŸ àŠčàŠŻàŠŒà§àŠà§"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àŠàŠĄàŠŒàŠż àŠžàŠ«àŠČàŠàŠŸàŠŹà§ àŠžà§àŠ àŠàŠ°àŠŸ àŠčàŠŻàŠŒà§àŠà§"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àŠà§àŠ°àŠżàŠĄ àŠžàŠ«àŠČàŠàŠŸàŠŹà§ àŠžà§àŠ àŠàŠ°àŠŸ àŠčàŠŻàŠŒà§àŠà§"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àŠŹàŠŸàŠàŠŠàŠżàŠà§àа àŠ¶àŠ°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àŠĄàŠŸàŠšàŠŠàŠżàŠà§àа àŠ¶àŠ°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àŠà§àŠšàŠàŠàŠżàŠ àŠšàŠŻàŠŒ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àŠŹà§àŠà§ àŠšàŠżàŠ€à§, àŠàŠà§àŠČàŠż àŠà§àŠ àŠàаà§àŠš"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àŠ¶àŠ°à§àŠàŠàŠŸàŠ°à§àŠ àŠŻà§àŠ àŠàŠ°àŠŸ àŠŻàŠŸàŠà§àŠà§ àŠšàŠŸ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àŠà§àŠČà§àŠš"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"àŠ¶àŠ°à§àŠàŠàŠŸàŠ àŠčàŠżàŠžà§àŠŹà§ <xliff:g id="APPNAME">%1$s</xliff:g> àŠ
à§àŠŻàŠŸàŠȘ àŠŻà§àŠ àŠàŠ°àŠ€à§, àŠàŠàŠžàŠŹ àŠŹàŠżàŠ·àŠŻàŠŒ àŠšàŠżàŠ¶à§àŠàŠżàŠ€ àŠàŠ°àŠ€à§ àŠčàŠŹà§"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àŠčàŠŻàŠŒà§ àŠà§àŠà§"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"àŠ¶àŠ°à§àŠàŠàŠŸàŠ"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àŠà§àŠšàŠ àŠ¶àŠ°à§àŠàŠàŠŸàŠ àŠšà§àŠ"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŠČàŠ àŠžà§àŠà§àŠ°àŠżàŠšà§ àŠŹàŠżàŠà§àŠàŠȘà§àŠ€àŠż àŠŠà§àŠàŠŸàŠš"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àŠČàŠ àŠžà§àŠà§àŠ°àŠżàŠšà§ àŠŹàŠżàŠà§àŠàŠȘà§àŠ€àŠż àŠČà§àŠàŠŸàŠš"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŠČàŠ àŠžà§àŠà§àŠ°àŠżàŠšà§ àŠŹàŠżàŠà§àŠàŠȘà§àŠ€àŠż àŠŠà§àŠà§àŠš"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àŠČàŠ àŠžà§àŠà§àŠ°àŠżàŠšà§àа àŠàŠ°àŠ àŠŹàŠżàŠàŠČà§àŠȘ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àŠà§àŠȘàŠšà§àŠŻàŠŒàŠ€àŠŸ, àŠàŠàŠš àŠàŠČàŠà§ àŠàŠŹàŠ àŠàŠ°àŠ àŠ
àŠšà§àŠ àŠàŠżàŠà§"</string>
<string name="more_colors" msgid="3191071655353004591">"àŠàŠ°àŠ àŠ°àŠ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àŠȘà§àŠ°àŠŸàŠàŠźàŠŸàŠ°àŠż àŠĄàŠŸàŠŻàŠŒàŠšàŠŸàŠźàŠżàŠ àŠ„àŠżàŠź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àŠȘà§àŠ°àŠŸàŠàŠźàŠŸàŠ°àŠż àŠšàŠżàŠàŠà§àŠ°àŠŸàŠČ àŠ„àŠżàŠź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àŠȘà§àŠ°àŠŸàŠàŠźàŠŸàŠ°àŠż àŠàŠŸàŠàŠŹà§àаà§àŠšà§àŠ àŠ„àŠżàŠź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àŠȘà§àŠ°àŠŸàŠàŠźàŠŸàŠ°àŠż àŠàŠà§àŠžàŠȘà§àаà§àŠžàŠżàŠ àŠ„àŠżàŠź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àŠ°àŠà§àа àŠĄàŠżàŠ«àŠČà§àŠ àŠŹàŠżàŠàŠČà§àŠȘ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àŠ°àŠà§àа àŠŹàŠżàŠàŠČà§àŠȘ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àŠ
àŠšà§àŠŻ àŠ§àŠ°àŠšà§àа àŠàŠĄàŠŒàŠżàŠ° àŠĄàŠŸàŠŻàŠŒàŠŸàŠČ àŠŹà§àŠà§ àŠšàŠżàŠ€à§ àŠŹàŠŸàŠàŠŠàŠżàŠà§ àŠžà§àŠŻàŠŒàŠŸàŠàŠȘ àŠàаà§àŠš"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àŠ
àŠšà§àŠŻ àŠ§àŠ°àŠšà§àа àŠàŠĄàŠŒàŠżàŠ° àŠĄàŠŸàŠŻàŠŒàŠŸàŠČ àŠŹà§àŠà§ àŠšàŠżàŠ€à§ àŠĄàŠŸàŠšàŠŠàŠżàŠà§ àŠžà§àŠŻàŠŒàŠŸàŠàŠȘ àŠàаà§àŠš"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àŠàŠŸàŠžà§àŠàŠźàŠŸàŠàŠ àŠàŠ°àŠŸ àŠàŠĄàŠŒàŠż"</string>
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index c2fd8a8..8630905 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"PrilagoÄeni sat"</string>
<string name="clock_description" msgid="3563839327378948">"Odabir prilagoÄ. sata"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Promijenite prilagoÄeni sat"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Postavke Sata"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opcija brojÄanika <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Boja"</string>
@@ -36,10 +37,11 @@
<string name="clock_color_gray" msgid="9221530636948859231">"Siva"</string>
<string name="clock_color_teal" msgid="7499223425741344251">"Tirkizna"</string>
<string name="clock_size" msgid="5028923902364418263">"VeliÄina"</string>
- <string name="clock_size_dynamic" msgid="1023930312455061642">"DinamiÄki"</string>
+ <string name="clock_size_dynamic" msgid="1023930312455061642">"DinamiÄno"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"VeliÄina sata se mijenja u skladu sa sadrĆŸajem na zakljuÄanom ekranu"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Veliko"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Mali sat se prikazuje u uglu vašeg ekrana"</string>
<string name="grid_title" msgid="1688173478777254123">"MreĆŸa aplikacija"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Primijeni"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da uredite"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Dodajte omiljene fontove na svaki ekran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Odaberite veliÄinu mreĆŸe"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Mijenjanje vel. mreĆŸe moĆŸe potrajati nekoliko s."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ponovno uÄitavanje radnog prostora s mreĆŸom %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ponovno uÄitavanje radnog prostora s mreĆŸom %1$s nije uspjelo"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stil je uspješno postavljen"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Sat je uspješno postavljen"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"MreĆŸa je uspješno postavljena"</string>
@@ -111,12 +116,12 @@
<string name="preset_color_tab_2" msgid="1444107326712562538">"Druge boje"</string>
<string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za ikone, sat i drugo"</string>
<string name="color_changed" msgid="7029571720331641235">"Boja je promijenjena"</string>
- <string name="adaptive_color_title" msgid="1336508599235896205">"DinamiÄki"</string>
+ <string name="adaptive_color_title" msgid="1336508599235896205">"DinamiÄno"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Boje sistema"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"PreÄica lijevo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"PreÄica desno"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Lijeva preÄica"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Desna preÄica"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Da odaberete aplikaciju \"<xliff:g id="APPNAME">%1$s</xliff:g>\" provjerite sljedeÄe"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nije moguÄe dodati preÄicu"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otvori aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Da dodate aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g> kao preÄicu, pobrinite se za sljedeÄe"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gotovo"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obavještenja na zakljuÄanom ekranu"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sakrivanje obavještenja na zakljuÄanom ekranu"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Više opcija zakljuÄavanja ekrana"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Trenutno se reproducira i drugo"</string>
<string name="more_colors" msgid="3191071655353004591">"Više boja"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primarna dinamiÄna tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primarna neutralna tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primarna ĆŸivahna tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primarna ekspresivna tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Zadana opcija boje"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Odabir drugog brojÄanika prevlaÄenjem ulijevo"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Odabir drugog brojÄanika prevlaÄenjem udesno"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"PrilagoÄeni satovi"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index fa98f97..f8397b8 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Rellotge pers."</string>
<string name="clock_description" msgid="3563839327378948">"Tria rellotge pers."</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Canvia un rellotge personalitzat"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Config. rellotge"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Color i mida rellotge"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opció d\'esfera de rellotge <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Color i mida rellotge"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Color i mida del rellotge"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Color"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Vermell"</string>
@@ -36,10 +37,11 @@
<string name="clock_color_gray" msgid="9221530636948859231">"Gris"</string>
<string name="clock_color_teal" msgid="7499223425741344251">"Verd blavós"</string>
<string name="clock_size" msgid="5028923902364418263">"Mida"</string>
- <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinàmica"</string>
+ <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinàmic"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"La mida del rellotge canvia d\'acord amb el contingut de la pantalla de bloqueig"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Gran"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Petit"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Es mostra un rellotge petit a l\'extrem de la pantalla"</string>
<string name="grid_title" msgid="1688173478777254123">"Quadrícula d\'apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplica"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toca per editar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Afegeix els teus tipus de lletra preferits a cada pantalla"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Tria una mida de quadrícula"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Canviar la quadrícula recarrega l\'àrea de treball i tarda uns segons."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"S\'està tornant a carregar l\'àrea de treball amb la quadrícula %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"No s\'ha pogut tornar a carregar l\'àrea de treball amb la quadrícula %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"L\'estil s\'ha definit correctament"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"El rellotge s\'ha definit correctament"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"La quadrícula s\'ha definit correctament"</string>
@@ -105,8 +110,8 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Canvia la quadrícula d\'aplicacions"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Colors del fons"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icones, text i més poden combinar amb els colors del fons"</string>
- <string name="wallpaper_color_title" msgid="5687965239180986458">"Color del fons de pantalla"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Combina el color d\'icones, text i més amb el fons"</string>
+ <string name="wallpaper_color_title" msgid="5687965239180986458">"Color de fons de pantalla"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Colors bàsics"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Altres colors"</string>
<string name="preset_color_subheader" msgid="8230588536141279371">"Tria qualsevol color per a les icones, el rellotge i més"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Drecera de l\'esquerra"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Drecera de la dreta"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Cap"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Per seleccionar <xliff:g id="APPNAME">%1$s</xliff:g>, comprova el següent"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"La drecera no es pot afegir"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Obre <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Per afegir l\'aplicació <xliff:g id="APPNAME">%1$s</xliff:g> com a drecera, assegura\'t que:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Fet"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Cap"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra les notificacions a la pantalla de bloqueig"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Amaga les notificacions a la pantalla de bloqueig"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Opcions de pantalla de bloqueig"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privadesa, Està sonant i més"</string>
<string name="more_colors" msgid="3191071655353004591">"Més colors"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinàmic principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutral principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema intens principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expressiu principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opció de color predeterminada"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opció de color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Llisca a l\'esquerra per triar una altra esfera de rellotge"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Llisca a la dreta per triar una altra esfera de rellotge"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Rellotges personalitzats"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f853901..7933b92 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Vlastní hodiny"</string>
<string name="clock_description" msgid="3563839327378948">"VýbÄr vlastních hodin"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ZmÄna vlastních hodin"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Nastavení hodin"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"MoĆŸnost ciferníku <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Barva a velikost"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Barva a velikost"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Barva"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Velikost hodin se mÄní podle obsahu obrazovky uzamÄení"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Velká"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Malé"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"V rohu obrazovky se zobrazují malé hodiny"</string>
<string name="grid_title" msgid="1688173478777254123">"MĆíĆŸka aplikací"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"PouĆŸít"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Klepnutím upravte"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"PĆidejte si oblíbená písma na všechny obrazovky"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Vyberte velikost mĆíĆŸky"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> × <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ZmÄna velikosti mĆíĆŸky povede k opÄtovnému naÄtení pracovního prostoru, coĆŸ mĆŻĆŸe trvat nÄkolik sekund."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"OpÄtovné naÄítání pracovního prostoru s mĆíĆŸkou %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"OpÄtovné naÄtení pracovního prostoru s mĆíĆŸkou %1$s se nezdaĆilo"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Styl byl úspÄšnÄ nastaven"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Hodiny byly úspÄšnÄ nastaveny"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"MĆíĆŸka byla úspÄšnÄ nastavena"</string>
@@ -101,7 +106,7 @@
<string name="mode_title" msgid="2394873501427436055">"Tmavý motiv"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"DoÄasnÄ deaktivováno spoĆiÄem baterie"</string>
<string name="mode_changed" msgid="2243581369395418584">"Motiv byl zmÄnÄn"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"Tematické ikony"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"PĆebarvené ikony"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ZmÄnit mĆíĆŸku aplikací"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Barvy tapety"</string>
@@ -112,25 +117,29 @@
<string name="preset_color_subheader" msgid="8230588536141279371">"Vyberte barvu pro ikony, hodiny atd."</string>
<string name="color_changed" msgid="7029571720331641235">"Barva byla zmÄnÄna"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamické"</string>
- <string name="color_picker_title" msgid="6666830057938082864">"Barvy systému"</string>
+ <string name="color_picker_title" msgid="6666830057938082864">"Systémové barvy"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Zkratka vlevo"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Zkratka vpravo"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ćœádné"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Aby bylo moĆŸné vybrat aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>, zkontrolujte následující"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Zástupce nelze pĆidat"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"OtevĆít aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Podmínky pro to, aby aplikaci <xliff:g id="APPNAME">%1$s</xliff:g> bylo moĆŸné pĆidat jako zkratku:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hotovo"</string>
- <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Zástupci"</string>
- <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Zástupci"</string>
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Zkratky"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Zkratky"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ćœádné"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Zobrazovat oznámení na obrazovce uzamÄení"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrýt oznámení na obrazovce uzamÄení"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Další moĆŸnosti obrazovky uzamÄení"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Soukromí, Co to hraje a další"</string>
<string name="more_colors" msgid="3191071655353004591">"Další barvy"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primární dynamický motiv"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primární neutrální motiv"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primární ĆŸivý motiv"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primární expresivní motiv"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Výchozí barevná varianta"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Barevná varianta <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"PĆejetím doleva vyberete jiný ciferník"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"PĆejetím doprava vyberete jiný ciferník"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Vlastní hodiny"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 8dbb97c..8acdacb 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Tilpasset ur"</string>
<string name="clock_description" msgid="3563839327378948">"Vælg tilpasset ur"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Juster et tilpasset ur"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Indstillinger for Ur"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Valgmulighed for urskive <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Urets farve og str."</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Urets farve og størrelse"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Farve"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Størrelsen på uret ændrer sig baseret på indhold på låseskærmen"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Stor"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Lille"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Et lille ur vises i hjørnet af skærmen"</string>
<string name="grid_title" msgid="1688173478777254123">"Appgitter"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Anvend"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tryk for at redigere"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Føj dine foretrukne skrifttyper til alle skærmbilleder"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Vælg gitterstørrelse"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Når du ændrer gitterstørrelsen genindlæses arbejdsområdet, hvilket kan tage et par sekunder."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Genindlæser arbejdsområde med gitteret %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Arbejdsområdet med gitteret %1$s kunne ikke genindlæses"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stilen er nu angivet"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Uret er nu indstillet"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Gitteret er nu oprettet"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Venstre genvej"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Højre genvej"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ingen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Hvis du vil vælge \"<xliff:g id="APPNAME">%1$s</xliff:g>\", skal du tjekke følgende"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Genvejen kan ikke tilføjes"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Åbn <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Før du tilføjer <xliff:g id="APPNAME">%1$s</xliff:g>-appen som en genvej, skal du sørge for følgende:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Udfør"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ingen"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Vis notifikationer på låseskærmen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skjul notifikationer på låseskærmen"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Flere muligheder for låseskærm"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privatliv, Find sangen m.m."</string>
<string name="more_colors" msgid="3191071655353004591">"Flere farver"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primært dynamisk tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primært neutralt tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primært farverigt tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primært varieret tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfarve"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Farvevalg <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Stryg til venstre for at vælge en anden urskive"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Stryg til højre for at vælge en anden urskive"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Tilpassede urskiver"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2683947..f84cfe1 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -17,12 +17,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="1647136562008520313">"Hintergrund & Stil"</string>
+ <string name="app_name" msgid="1647136562008520313">"Hintergrund und Stil"</string>
<string name="theme_title" msgid="2144932106319405101">"Design"</string>
<string name="clock_title" msgid="1974314575211361352">"Benutzerdefinierte Uhr"</string>
<string name="clock_description" msgid="3563839327378948">"Benutzerdefinierte Uhr wählen"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Benutzerdefinierte Uhr ändern"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Uhr-Einstellungen"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Zifferblatt-Option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Uhr-Farbe & -Größe"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Uhr-Farbe & -Größe"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Farbe"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Die Größe der Uhr ändert sich je nach Inhalt auf dem Sperrbildschirm"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Groß"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Klein"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Eine kleine Uhr wird in der Ecke des Displays angezeigt"</string>
<string name="grid_title" msgid="1688173478777254123">"App-Raster"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Anwenden"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Zum Bearbeiten tippen"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Füg jedem Bildschirm deine bevorzugten Schriftarten hinzu"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Rastergröße auswählen"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Durch Ändern der Rastergröße wird der Arbeitsbereich neu geladen. Dies kann ein paar Sekunden dauern."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Arbeitsbereich wird mit Rastergröße %1$s neu geladen"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Arbeitsbereich konnte mit Rastergröße %1$s nicht neu geladen werden"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Design festgelegt"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Uhr festgelegt"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Raster festgelegt"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Linke Verknüpf."</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Rechte Verknüpf."</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Keine"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Prüfe Folgendes, um <xliff:g id="APPNAME">%1$s</xliff:g>` auszuwählen"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Verknüpfung kann nicht hinzugefügt werden"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> öffnen"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Wenn du die <xliff:g id="APPNAME">%1$s</xliff:g> App als eine Verknüpfung hinzufügen möchtest, müssen folgende Bedingungen erfüllt sein"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Fertig"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Keine"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Benachrichtigungen auf dem Sperrbildschirm einblenden"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Benachrichtigungen auf dem Sperrbildschirm ausblenden"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Weitere Sperrbildschirmoptionen"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Datenschutz, Now Playing und mehr"</string>
<string name="more_colors" msgid="3191071655353004591">"Weitere Farben"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primäres dynamisches Design"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primäres neutrales Design"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primäres lebhaftes Design"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primäres ausdrucksstarkes Design"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfarboption"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Farboption <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Nach links wischen, um ein anderes Zifferblatt auszuwählen"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Nach rechts wischen, um ein anderes Zifferblatt auszuwählen"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Individuelle Zifferblätter"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 38a4cf6..a7baca5 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Προσαρ. ρολÏι"</string>
<string name="clock_description" msgid="3563839327378948">"ΕπιλογÎź προσαρ. ρολογιοÏ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ΑλλαγÎź προσαρ. ρολογιοÏ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Ρυθμ. ρολογιοÏ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ΕπιλογÎź Ïψης ρολογιοÏ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ΧρÏμα/μÎγεθ. ρολογ."</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ΧρÏμα και μÎγεθος"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ΧρÏμα"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Το μÎγεθος του ρολογιοÏ αλλÎŹζει ανÎŹλογα με το περιεχÏμενο της οθÏνης κλειδÏματος"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ΜεγÎŹλο"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ΜικρÏ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Îνα μικρÏ ρολÏι εμφανÎŻζεται στη γωνÎŻα της οθÏνης"</string>
<string name="grid_title" msgid="1688173478777254123">"ΠλÎγμα εφαρμ."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ΕφαρμογÎź"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ΠατÎźστε για επεξεργασÎŻα"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"ΑυτÎźν τη στιγμÎź εμφανÎŻζεται σε προεπισκÏπηση η επιλογÎź <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, η αλλαγÎź επιλÎχθηκε και προβλÎźθηκε σε προεπισκÏπηση"</string>
<string name="theme_description" msgid="3697012391785254635">"ΓραμματοσειρÎŹ: <xliff:g id="ID_1">%1$s</xliff:g>, εικονÎŻδια: <xliff:g id="ID_2">%2$s</xliff:g>, σχÎźμα: <xliff:g id="ID_3">%3$s</xliff:g>, χρÏμα: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"ΠροεπιλογÎź"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"Προεπιλ."</string>
<string name="preview_name_font" msgid="4465423899630037038">"ΓραμματοσειρÎŹ"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"ΕικονÎŻδιο"</string>
<string name="preview_name_color" msgid="8776203144994416172">"ΧρÏμα"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ΠροσθÎστε τις αγαπημÎνες σας γραμματοσειρÎς σε κÎŹθε οθÏνη"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ΕπιλÎξτε μÎγεθος πλÎγματος"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ΑλλÎŹζ. μÎγεθος πλÎγμ. επαναλαμβ. η φÏρτ. χÏρου εργ. σε λÎŻγα δευτ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ΕπανÎŹληψη φÏρτωσης χÏρου εργασÎŻας με πλÎγμα %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ΑπÎτυχε η επανÎŹληψη φÏρτωσης του χÏρου εργασÎŻας με πλÎγμα %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ΕπιτυχÎźς ρÏθμιση στιλ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ΕπιτυχÎźς ρÏθμιση ρολογιοÏ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ΕπιτυχÎźς ρÏθμιση πλÎγματος"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ΑριστερÎź συντÏμ."</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ΔεξιÎŹ συντÏμευση"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ΚαμÎŻα"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Για να επιλÎξετε \"<xliff:g id="APPNAME">%1$s</xliff:g>\", ελÎγξτε τα εξÎźς"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Δεν εÎŻναι δυνατÎź η προσθÎźκη συντÏμευσης"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Îνοιγμα <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Για να προσθÎσετε την εφαρμογÎź <xliff:g id="APPNAME">%1$s</xliff:g> ως συντÏμευση, βεβαιωθεÎŻτε Ïτι"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ΤÎλος"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ΚαμÎŻα"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ΕμφÎŹνιση ειδοποιÎźσεων στην οθÏνη κλειδÏματος"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ΑπÏκρυψη ειδοποιÎźσεων στην οθÏνη κλειδÏματος"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"ΠερισσÏτ. επιλογÎς οθÏνης κλειδ."</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"ΑπÏρρητο, ΑκοÏγεται τÏρα κ.ÎŹ."</string>
<string name="more_colors" msgid="3191071655353004591">"ΠερισσÏτερα χρÏματα"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ΚÏριο δυναμικÏ θÎμα"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ΚÏριο ουδÎτερο θÎμα"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ΚÏριο ζωηρÏ θÎμα"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ΚÏριο εκφραστικÏ θÎμα"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ΕπιλογÎź προεπιλεγμÎνου χρÏματος"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ΕπιλογÎź χρÏματος <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ΣÏρετε προς τα αριστερÎŹ για να επιλÎξετε μια διαφορετικÎź Ïψη ρολογιοÏ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ΣÏρετε προς τα δεξιÎŹ για να επιλÎξετε μια διαφορετικÎź Ïψη ρολογιοÏ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ΠροσαρμοσμÎνα ρολÏγια"</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 0a0d7fb..aa04dff 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Custom clock"</string>
<string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour & size"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Clock face option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock colour & size"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Colour"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"A small clock shows in the corner of your screen"</string>
<string name="grid_title" msgid="1688173478777254123">"App grid"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Add your favourite fonts to every screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changing grid size will reload workspace and may take a few seconds."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Reloading workspace with %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Failed to reload workspace with %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Clock set successfully"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid set successfully"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"To select \'<xliff:g id="APPNAME">%1$s</xliff:g>\' check the following"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Can\'t add shortcut"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
<string name="more_colors" msgid="3191071655353004591">"More colours"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primary dynamic theme"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primary neutral theme"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primary vibrant theme"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primary expressive theme"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe left to choose a different clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe right to choose a different clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Custom clocks"</string>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index d0ef6ac..ee937f1 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -19,45 +19,29 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1647136562008520313">"Wallpaper and style"</string>
<string name="theme_title" msgid="2144932106319405101">"Style"</string>
- <string name="clock_title" msgid="1974314575211361352">"Custom clock"</string>
+ <string name="clock_title" msgid="1974314575211361352">"Custom Clock"</string>
<string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
- <!-- no translation found for clock_settings_title (2940654205471453913) -->
- <skip />
- <!-- no translation found for clock_color_and_size_title (7146791234905111351) -->
- <skip />
- <!-- no translation found for clock_color_and_size_description (6578061553012886817) -->
- <skip />
- <!-- no translation found for clock_color (8081608867289156163) -->
- <skip />
- <!-- no translation found for clock_color_red (3843504214807597810) -->
- <skip />
- <!-- no translation found for clock_color_orange (4175805201144275804) -->
- <skip />
- <!-- no translation found for clock_color_yellow (7391699163247349977) -->
- <skip />
- <!-- no translation found for clock_color_green (1991157556500156596) -->
- <skip />
- <!-- no translation found for clock_color_blue (4037792003465759149) -->
- <skip />
- <!-- no translation found for clock_color_indigo (8910855386698452917) -->
- <skip />
- <!-- no translation found for clock_color_violet (3454503847169375826) -->
- <skip />
- <!-- no translation found for clock_color_gray (9221530636948859231) -->
- <skip />
- <!-- no translation found for clock_color_teal (7499223425741344251) -->
- <skip />
- <!-- no translation found for clock_size (5028923902364418263) -->
- <skip />
- <!-- no translation found for clock_size_dynamic (1023930312455061642) -->
- <skip />
- <!-- no translation found for clock_size_dynamic_description (2776620745774561662) -->
- <skip />
- <!-- no translation found for clock_size_large (3143248715744138979) -->
- <skip />
- <!-- no translation found for clock_size_small (2280449912094164133) -->
- <skip />
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Clock face option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock color & size"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color & size"</string>
+ <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="clock_color" msgid="8081608867289156163">"Color"</string>
+ <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
+ <string name="clock_color_orange" msgid="4175805201144275804">"Orange"</string>
+ <string name="clock_color_yellow" msgid="7391699163247349977">"Yellow"</string>
+ <string name="clock_color_green" msgid="1991157556500156596">"Green"</string>
+ <string name="clock_color_blue" msgid="4037792003465759149">"Blue"</string>
+ <string name="clock_color_indigo" msgid="8910855386698452917">"Indigo"</string>
+ <string name="clock_color_violet" msgid="3454503847169375826">"Violet"</string>
+ <string name="clock_color_gray" msgid="9221530636948859231">"Grey"</string>
+ <string name="clock_color_teal" msgid="7499223425741344251">"Teal"</string>
+ <string name="clock_size" msgid="5028923902364418263">"Size"</string>
+ <string name="clock_size_dynamic" msgid="1023930312455061642">"Dynamic"</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
+ <string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"A small clock shows in the corner of your screen"</string>
<string name="grid_title" msgid="1688173478777254123">"App grid"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -66,23 +50,26 @@
<string name="grid_preview_card_content_description" msgid="8449383777584714842">"Grid preview"</string>
<string name="font_preview_content_description" msgid="128230439293337891">"Font preview"</string>
<string name="icon_preview_content_description" msgid="7761101284351952890">"Icon preview"</string>
- <string name="color_preview_content_description" msgid="4879120462082058124">"Colour preview"</string>
+ <string name="color_preview_content_description" msgid="4879120462082058124">"Color preview"</string>
<string name="shape_preview_content_description" msgid="6479487796176550432">"Shape preview"</string>
<string name="option_applied_description" msgid="5022305212078053534">"<xliff:g id="ID_1">%1$s</xliff:g>, currently applied"</string>
<string name="option_applied_previewed_description" msgid="5269654286638446858">"<xliff:g id="ID_1">%1$s</xliff:g>, currently applied and previewed"</string>
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, currently previewed"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, change selected and previewed"</string>
- <string name="theme_description" msgid="3697012391785254635">"Font: <xliff:g id="ID_1">%1$s</xliff:g>, icons: <xliff:g id="ID_2">%2$s</xliff:g>, shape: <xliff:g id="ID_3">%3$s</xliff:g>, colour: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
+ <string name="theme_description" msgid="3697012391785254635">"Font: <xliff:g id="ID_1">%1$s</xliff:g>, icons: <xliff:g id="ID_2">%2$s</xliff:g>, shape: <xliff:g id="ID_3">%3$s</xliff:g>, color: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
<string name="default_theme_title" msgid="2555741736622366797">"Default"</string>
<string name="preview_name_font" msgid="4465423899630037038">"Font"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"Icon"</string>
- <string name="preview_name_color" msgid="8776203144994416172">"Colour"</string>
+ <string name="preview_name_color" msgid="8776203144994416172">"Color"</string>
<string name="preview_name_shape" msgid="5676971146080968721">"Shape"</string>
<string name="preview_name_wallpaper" msgid="1738652462949531828">"Wallpaper"</string>
<string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
- <string name="font_card_body" msgid="6790525594503904468">"Add your favourite fonts to every screen"</string>
+ <string name="font_card_body" msgid="6790525594503904468">"Add your favorite fonts to every screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changing grid size will reload workspace and may take a few seconds."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Reloading workspace with %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Failed to reload workspace with %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Clock set successfully"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid set successfully"</string>
@@ -95,7 +82,7 @@
<string name="custom_theme_delete" msgid="4744494663184126202">"Delete"</string>
<string name="font_component_title" msgid="8800340833695292049">"Choose font"</string>
<string name="icon_component_title" msgid="5779787138399083903">"Choose icons"</string>
- <string name="color_component_title" msgid="1194089273921078816">"Choose colour"</string>
+ <string name="color_component_title" msgid="1194089273921078816">"Choose color"</string>
<string name="shape_component_title" msgid="8366847436022025538">"Choose shape"</string>
<string name="name_component_title" msgid="532425087968663437">"Name your style"</string>
<string name="icon_component_label" msgid="2625784884001407944">"Icons <xliff:g id="ID_1">%1$d</xliff:g>"</string>
@@ -109,11 +96,11 @@
<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>
<string name="something_went_wrong" msgid="529840112449799117">"Oops! Something went wrong."</string>
- <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"Colour/Icons"</string>
- <string name="style_info_description" msgid="2612473574431003251">"Preview of font, icons, app shape and colour"</string>
+ <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"Color / Icons"</string>
+ <string name="style_info_description" msgid="2612473574431003251">"Preview of font, icons, app shape, and color"</string>
<string name="accessibility_custom_font_title" msgid="966867359157303705">"Custom font"</string>
<string name="accessibility_custom_icon_title" msgid="5753297905849062296">"Custom icon"</string>
- <string name="accessibility_custom_color_title" msgid="4124246598886320663">"Customised colour"</string>
+ <string name="accessibility_custom_color_title" msgid="4124246598886320663">"Custom color"</string>
<string name="accessibility_custom_shape_title" msgid="7708408259374643129">"Custom shape"</string>
<string name="accessibility_custom_name_title" msgid="5494460518085463262">"Custom style name"</string>
<string name="mode_title" msgid="2394873501427436055">"Dark theme"</string>
@@ -122,53 +109,37 @@
<string name="themed_icon_title" msgid="7312460430471956558">"Themed icons"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Change app grid"</string>
- <string name="wallpaper_color_tab" msgid="1447926591721403840">"Wallpaper colours"</string>
- <!-- no translation found for wallpaper_color_subheader (4044464573669965670) -->
- <skip />
- <string name="wallpaper_color_title" msgid="5687965239180986458">"Wallpaper colour"</string>
- <string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
- <!-- no translation found for preset_color_tab_2 (1444107326712562538) -->
- <skip />
- <!-- no translation found for preset_color_subheader (8230588536141279371) -->
- <skip />
- <string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
+ <string name="wallpaper_color_tab" msgid="1447926591721403840">"Wallpaper colors"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icons, text, and more match colors in your wallpaper"</string>
+ <string name="wallpaper_color_title" msgid="5687965239180986458">"Wallpaper color"</string>
+ <string name="preset_color_tab" msgid="3133391839341329314">"Basic colors"</string>
+ <string name="preset_color_tab_2" msgid="1444107326712562538">"Other colors"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"Choose any color for your icons, clock, and more"</string>
+ <string name="color_changed" msgid="7029571720331641235">"Color changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <!-- no translation found for color_picker_title (6666830057938082864) -->
- <skip />
- <!-- no translation found for keyguard_slot_name_bottom_start (8747677880200629719) -->
- <skip />
- <!-- no translation found for keyguard_slot_name_bottom_end (2525487375680217083) -->
- <skip />
- <!-- no translation found for keyguard_affordance_none (1751643933430782312) -->
- <skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_title (3389730825561696493) -->
- <skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_action_template (8117011931337357438) -->
- <skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_message (6136286758939253570) -->
- <skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_dismiss_button (629754625264422508) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
- <skip />
- <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
- <skip />
- <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
- <skip />
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
- <!-- no translation found for more_colors (3191071655353004591) -->
- <skip />
- <!-- no translation found for content_description_default_color_option (7011899327541080695) -->
- <skip />
- <!-- no translation found for content_description_color_option (4169813692012119578) -->
- <skip />
+ <string name="color_picker_title" msgid="6666830057938082864">"System colors"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
+ <string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Can\'t add shortcut"</string>
+ <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
+ <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
+ <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Shortcuts"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shortcuts"</string>
+ <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
+ <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing, and more"</string>
+ <string name="more_colors" msgid="3191071655353004591">"More Colors"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primary dynamic theme"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primary neutral theme"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primary vibrant theme"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primary expressive theme"</string>
+ <string name="content_description_default_color_option" msgid="7011899327541080695">"Default color option"</string>
+ <string name="content_description_color_option" msgid="4169813692012119578">"Color option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe left to choose a different clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe right to choose a different clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Custom Clocks"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 0a0d7fb..aa04dff 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Custom clock"</string>
<string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour & size"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Clock face option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock colour & size"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Colour"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"A small clock shows in the corner of your screen"</string>
<string name="grid_title" msgid="1688173478777254123">"App grid"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Add your favourite fonts to every screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changing grid size will reload workspace and may take a few seconds."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Reloading workspace with %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Failed to reload workspace with %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Clock set successfully"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid set successfully"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"To select \'<xliff:g id="APPNAME">%1$s</xliff:g>\' check the following"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Can\'t add shortcut"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
<string name="more_colors" msgid="3191071655353004591">"More colours"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primary dynamic theme"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primary neutral theme"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primary vibrant theme"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primary expressive theme"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe left to choose a different clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe right to choose a different clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Custom clocks"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 0a0d7fb..aa04dff 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Custom clock"</string>
<string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour & size"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Clock face option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock colour & size"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Colour"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"A small clock shows in the corner of your screen"</string>
<string name="grid_title" msgid="1688173478777254123">"App grid"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Add your favourite fonts to every screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changing grid size will reload workspace and may take a few seconds."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Reloading workspace with %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Failed to reload workspace with %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Clock set successfully"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid set successfully"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"To select \'<xliff:g id="APPNAME">%1$s</xliff:g>\' check the following"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Can\'t add shortcut"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
<string name="more_colors" msgid="3191071655353004591">"More colours"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primary dynamic theme"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primary neutral theme"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primary vibrant theme"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primary expressive theme"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe left to choose a different clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe right to choose a different clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Custom clocks"</string>
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index dc90fe4..6f6c334 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Custom Clock"</string>
<string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Clock Settings"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Clock face option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock color & size"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color & size"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Color"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"A small clock shows in the corner of your screen"</string>
<string name="grid_title" msgid="1688173478777254123">"App grid"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Add your favorite fonts to every screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changing grid size will reload workspace and may take a few seconds."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Reloading workspace with %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Failed to reload workspace with %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Clock set successfully"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid set successfully"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"To select `<xliff:g id="APPNAME">%1$s</xliff:g>` check the following"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Can\'t add shortcut"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing, and more"</string>
<string name="more_colors" msgid="3191071655353004591">"More Colors"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primary dynamic theme"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primary neutral theme"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primary vibrant theme"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primary expressive theme"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Default color option"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Color option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe left to choose a different clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe right to choose a different clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Custom Clocks"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 1d6b3b2..6081eac 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Reloj person."</string>
<string name="clock_description" msgid="3563839327378948">"Elige un reloj"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Cambia el reloj personalizado"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Config Reloj"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opción de cara de reloj <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Color, tamaño de reloj"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Reloj: color, tamaño"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Color"</string>
@@ -37,9 +38,10 @@
<string name="clock_color_teal" msgid="7499223425741344251">"Verde azulado"</string>
<string name="clock_size" msgid="5028923902364418263">"Tamaño"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"Dinámico"</string>
- <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Cambios del tamaño del reloj según el contenido de la pantalla de bloqueo"</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"El tamaño del reloj cambia según el contenido de la pantalla de bloqueo"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pequeño"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Aparece un reloj pequeño en la esquina de tu pantalla"</string>
<string name="grid_title" msgid="1688173478777254123">"Cuadr. de apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Presiona para editar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Agrega tus fuentes favoritas a cada pantalla"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Elige un tamaño de cuadrícula"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Cambiar la cuadrícula podrá tomar unos segundos."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Volviendo a cargar el espacio de trabajo con la cuadrícula %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"No se pudo volver a cargar el espacio de trabajo con la cuadrícula %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Se estableció correctamente el estilo"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Se estableció correctamente el reloj"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Se estableció correctamente la cuadrícula"</string>
@@ -113,24 +118,28 @@
<string name="color_changed" msgid="7029571720331641235">"Se cambió el color"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Colores del sistema"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atajo izquierdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atajo derecho"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para seleccionar \"<xliff:g id="APPNAME">%1$s</xliff:g>\", verifica lo siguiente"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"No se puede agregar el acceso directo"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para agregar la app <xliff:g id="APPNAME">%1$s</xliff:g> como acceso directo, asegúrate que se cumplan los siguientes requisitos:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Listo"</string>
- <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Comb. de teclas"</string>
- <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Comb. de teclas"</string>
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Accesos directos"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Accesos directos"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ninguno"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar las notificaciones en la pantalla de bloqueo"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Esconder las notificaciones en la pantalla de bloqueo"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Opciones de pantalla de bloqueo"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidad, Está sonando y más"</string>
<string name="more_colors" msgid="3191071655353004591">"Más colores"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinámico principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutro principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema intenso principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expresivo principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de color predeterminada"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opción en color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Desliza el dedo hacia la izquierda para elegir otra cara de reloj"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Desliza el dedo hacia la derecha para elegir otra cara de reloj"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Relojes personalizados"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0752e5c..79ddb6c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Reloj personalizado"</string>
<string name="clock_description" msgid="3563839327378948">"Elige un reloj personalizado"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Cambiar reloj personalizado"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Ajustes del reloj"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opción de formato del reloj <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Color/tamaño (reloj)"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Color y tamaño del reloj"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Color"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"El tamaño del reloj cambia en función del contenido de la pantalla de bloqueo"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pequeño"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Se muestra un pequeño reloj en la esquina de la pantalla"</string>
<string name="grid_title" msgid="1688173478777254123">"Cuadrícula de apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toca para editar"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g> (vista previa en curso)"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, cambio seleccionado y con vista previa"</string>
<string name="theme_description" msgid="3697012391785254635">"Fuente: <xliff:g id="ID_1">%1$s</xliff:g>; iconos: <xliff:g id="ID_2">%2$s</xliff:g>; forma: <xliff:g id="ID_3">%3$s</xliff:g>; color: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"Predeterminado"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"Predeterminado"</string>
<string name="preview_name_font" msgid="4465423899630037038">"Fuente"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"Icono"</string>
<string name="preview_name_color" msgid="8776203144994416172">"Color"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Añade tus fuentes favoritas a cada pantalla"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Elige un tamaño de cuadrícula"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Cambiar la cuadrícula volverá a cargar el espacio de trabajo"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Volviendo a cargar el espacio de trabajo con una cuadrícula de %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"No se ha podido volver a cargar el espacio de trabajo con una cuadrícula de %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Estilo aplicado correctamente"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Reloj puesto correctamente"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Cuadrícula configurada correctamente"</string>
@@ -101,7 +106,7 @@
<string name="mode_title" msgid="2394873501427436055">"Tema oscuro"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"Inhabilitado temporalmente debido a Ahorro de batería"</string>
<string name="mode_changed" msgid="2243581369395418584">"Tema cambiado"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"Iconos con tema"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"Iconos temáticos"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Cambiar cuadrícula de aplicaciones"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Colores del fondo"</string>
@@ -113,10 +118,10 @@
<string name="color_changed" msgid="7029571720331641235">"Color cambiado"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Colores del sistema"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atajo izquierdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atajo derecho"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para seleccionar <xliff:g id="APPNAME">%1$s</xliff:g>, comprueba lo siguiente"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"No puede añadir el acceso directo"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para añadir la aplicación <xliff:g id="APPNAME">%1$s</xliff:g> como acceso directo:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hecho"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ninguno"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificaciones en la pantalla de bloqueo"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ocultar notificaciones en la pantalla de bloqueo"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Más opciones de pantalla de bloqueo"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidad, Está Sonando y más"</string>
<string name="more_colors" msgid="3191071655353004591">"Más colores"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinámico principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutro principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema intenso principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expresivo principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de color predeterminada"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opción de color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Desliza hacia la izquierda para elegir otro formato de reloj"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Desliza hacia la derecha para elegir otro formato de reloj"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Relojes personalizados"</string>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index d7d452e..d1796d1 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Kohandatud kell"</string>
<string name="clock_description" msgid="3563839327378948">"Kohandatud kell"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Kohandatud kella muutmine"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Kella seaded"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Kelladisaini valik <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Kella värv/suurus"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Kella värv ja suurus"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Värv"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Kella suurus muutub olenevalt lukustuskuva sisust"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Suur"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Väike"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ekraaninurgas kuvatakse väike kell"</string>
<string name="grid_title" msgid="1688173478777254123">"Rak. ruudustik"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Rakenda"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Puudutage muutmiseks"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Lisage lemmikfondid igale erkaanikuvale"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Valige ruudustiku suurus"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> × <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Ruudustiku suuruse muutmine laadib tööruumi uuesti ja see võib võtta mõne sekundi."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Tööruumi uuesti laadimine ruudustikuga %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Tööruumi uuesti laadimine ruudustikuga %1$s ebaõnnestus"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stiili määramine õnnestus"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Kella määramine õnnestus"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Ruudustiku määramine õnnestus"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Vasak otsetee"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Parem otsetee"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Puudub"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Rakenduse „<xliff:g id="APPNAME">%1$s</xliff:g>“ valimiseks veenduge järgmises"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Otseteed ei saa lisada"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ava <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> otsetee lisamiseks veenduge järgmises."</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Valmis"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Pole"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kuva märguanded lukustuskuval"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Peida märguanded lukustuskuval"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Rohkem lukustuskuva valikuid"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privaatsus, Hetkel mängimas ja muu"</string>
<string name="more_colors" msgid="3191071655353004591">"Rohkem värve"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Peamine dünaamiline teema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Peamine neutraalne teema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Peamine elav teema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Peamine ekspressiivne teema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Vaikevärvi valik"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Värvivalik <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Pühkige vasakule, et valida muu kelladisain"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Pühkige paremale, et valida muu kelladisain"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Kohandatud kellad"</string>
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 001eebd..d260488 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Esfera pertsonalizatuak"</string>
<string name="clock_description" msgid="3563839327378948">"Hautatu esfera pertsonalizatu bat"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Aldatu esfera pertsonalizatua"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Erlojuaren ezarpenak"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Erloju-esferaren <xliff:g id="ID_1">%1$s</xliff:g>. aukera"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Erlojuaren kolorea eta tamaina"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Erlojuaren kolorea eta tamaina"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Kolorea"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Erlojuaren tamaina pantaila blokeatuko edukiaren arabera aldatzen da"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Handia"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Txikia"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Erloju txiki bat agertzen da pantailaren izkinan"</string>
<string name="grid_title" msgid="1688173478777254123">"Aplikazioen sareta"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplikatu"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Sakatu editatzeko"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Gehitu gogoko dituzun letrak pantaila guztietan"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Aukeratu saretaren tamaina"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> × <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Saretaren tamaina aldatuta, lan-eremua berriro kargatuko da. Baliteke segundo batzuk behar izatea."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Lan-eremua berriro kargatzen %1$s saretarekin"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ezin izan da kargatu berriro lan-eremua %1$s saretarekin"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Ezarri da estiloa"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Ezarri da erlojua"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Ezarri da sareta"</string>
@@ -104,8 +109,8 @@
<string name="themed_icon_title" msgid="7312460430471956558">"Ikono gaidunak"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Aldatu aplikazioen sareta"</string>
- <string name="wallpaper_color_tab" msgid="1447926591721403840">"Horma-papereko koloreak"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikonoak, testua eta abar horma-papereko koloreekin bat datoz"</string>
+ <string name="wallpaper_color_tab" msgid="1447926591721403840">"Horma-paperaren koloreak"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikonoak, testua, etab. horma-paperaren koloreekin bat datoz"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Horma-paperaren kolorea"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Oinarrizko koloreak"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Beste kolore batzuk"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Ezkerreko lasterbidea"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Eskuineko lasterbidea"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Bat ere ez"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"<xliff:g id="APPNAME">%1$s</xliff:g> hautatzeko, egin hauek:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Ezin da gehitu lasterbidea"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ireki <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> aplikazioa lasterbide gisa gehitzeko, ziurtatu hauek betetzen direla:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Eginda"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g> eta <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Bat ere ez"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Erakutsi jakinarazpenak pantaila blokeatuan"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ezkutatu jakinarazpenak pantaila blokeatuan"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Pantaila blokeatzeko aukera gehiago"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Pribatutasuna, Orain erreproduzitzen eta abar"</string>
<string name="more_colors" msgid="3191071655353004591">"Kolore gehiago"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Gai nagusi dinamikoa"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Gai nagusi neutroa"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Gai nagusi bizia"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Gai nagusi adierazgarria"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Kolore-aukera lehenetsia"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Kolore-aukera <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Pasatu hatza ezkerrera beste esfera bat aukeratzeko"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Pasatu hatza eskuinera beste esfera bat aukeratzeko"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Erloju pertsonalizatuak"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9170f2f..250895e 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"۳ۧŰčŰȘ ŰłÙۧ۱ێÛ"</string>
<string name="clock_description" msgid="3563839327378948">"ۧÙŰȘ۟ۧۚ ۳ۧŰčŰȘ ŰłÙۧ۱ێÛ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ŰȘŰșÛÛ۱ ۳ۧŰčŰȘ ŰłÙۧ۱ێÛ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ŰȘÙŰžÛÙ
ۧŰȘ ۳ۧŰčŰȘ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ÚŻŰČÛÙÙ Ű”ÙŰÙ ŰłŰ§ŰčŰȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ۧÙۯۧŰČÙ Ù Ű±ÙÚŻ ۳ۧŰčŰȘ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ۧÙۯۧŰČÙ Ù Ű±ÙÚŻ ۳ۧŰčŰȘ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>Ű <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"۱ÙÚŻ"</string>
@@ -40,7 +41,8 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ۧÙۯۧŰČÙ ŰłŰ§ŰčŰȘ Ù۳ۚŰȘ ŰšÙ Ù
ŰŰȘÙŰ§Û Ű”ÙŰÙ ÙÙÙ ŰȘŰșÛÛ۱ Ù
ÛÚ©ÙŰŻ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ŰšŰČ۱گ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Ú©ÙÚÚ©"</string>
- <string name="grid_title" msgid="1688173478777254123">"ŰŹŰŻÙÙ ŰšŰ±ÙۧÙ
Ù"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"۳ۧŰčŰȘ Ú©ÙÚÚ©Û ŰŻŰ± ÚŻÙŰŽÙ Ű”ÙŰÙÙÙ
ۧÛŰŽ ŰŽÙ
ۧ ÙŰŽŰ§Ù ŰŻŰ§ŰŻÙ Ù
ÛŰŽÙŰŻ"</string>
+ <string name="grid_title" msgid="1688173478777254123">"ŰŽŰšÚ©Ù ŰšŰ±ÙۧÙ
ÙÙۧ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ۧŰčÙ
ۧÙ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ŰšŰ±Ű§Û ÙÛ۱ۧÛŰŽ Ű¶Ű±ŰšÙ ŰšŰČÙÛŰŻ"</string>
<string name="keep_my_wallpaper" msgid="8012385376769568517">"ŰÙŰž کۧŰș۰ۯÛÙŰ§Ű±Û ÙŰčÙÛ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ÙÙÙ
ÙŰ§Û ŰŻÙŰźÙۧÙŰȘŰ§Ù Ű±Ű§ ŰšÙ ÙÙ
Ù Ű”ÙŰÙÙÙ
ۧÛŰŽÙۧ ۧ۶ۧÙÙ Ú©ÙÛŰŻ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ۧÙŰȘ۟ۧۚ ۧÙۯۧŰČÙ ŰŹŰŻÙÙ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ŰȘŰșÛÛ۱ ۧÙۯۧŰČÙ ŰŽŰšÚ©Ù ŰšŰ§ŰčŰ« ۚۧ۱ Ú©Ű±ŰŻÙ Ù
ŰŹŰŻŰŻ ÙŰ¶Ű§Û Ú©Ű§Ű±Û Ù
ÛŰŽÙŰŻ Ù Ù
Ù
Ú©Ù Ű§ŰłŰȘ ÚÙŰŻ ۫ۧÙÛÙ Ű·ÙÙ ŰšÚ©ŰŽŰŻ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ۯ۱ŰŰ§Ù ŰšŰ§Ű± Ú©Ű±ŰŻÙ Ù
ŰŹŰŻŰŻ ÙŰ¶Ű§Û Ú©Ű§Ű±Û ŰšŰ§ ŰŽŰšÚ©Ù %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ÙŰ¶Ű§Û Ú©Ű§Ű±Û ŰšŰ§ ŰŽŰšÚ©Ù %1$s Ù
ŰŹŰŻŰŻŰ§Ù ŰšŰ§Ű± ÙŰŽŰŻ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"۳ۚک ۚۧÙ
ÙÙÙÛŰȘ ŰȘÙŰžÛÙ
ŰŽŰŻ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"۳ۧŰčŰȘ ۚۧÙ
ÙÙÙÛŰȘ ŰȘÙŰžÛÙ
ŰŽŰŻ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ŰŹŰŻÙÙ ŰšŰ§Ù
ÙÙÙÛŰȘ ŰȘÙŰžÛÙ
ŰŽŰŻ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Ù
ÛۧÙۚ۱ ÚÙŸ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Ù
ÛۧÙۚ۱ ۱ۧ۳ŰȘ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ÙÛÚکۯۧÙ
"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ŰšŰ±Ű§Û Ű§ÙŰȘ۟ۧۚ «<xliff:g id="APPNAME">%1$s</xliff:g>»Ű Ù
Ù۱ۯ ŰČÛ۱ ۱ۧ ŰšŰ±Ű±ŰłÛ Ú©ÙÛŰŻ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Ù
ÛۧÙۚ۱ ۧ۶ۧÙÙ ÙŰŽŰŻ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ۚۧŰČ Ú©Ű±ŰŻÙ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ŰšŰ±Ű§Û Ű§ÙŰČÙŰŻÙ ŰšŰ±ÙۧÙ
Ù <xliff:g id="APPNAME">%1$s</xliff:g> ŰšÙŰčÙÙŰ§Ù Ù
ÛۧÙŰšŰ±Ű Ù
Ű·Ù
ŰŠÙ ŰŽÙÛŰŻ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ŰȘÙ
ۧÙ
"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>Ű <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ÙÛÚکۯۧÙ
"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ÙÙ
ۧÛŰŽ ۧŰčÙۧÙÙۧ ۯ۱ Ű”ÙŰÙ ÙÙÙ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ÙŸÙÙŰ§Ù Ú©Ű±ŰŻÙ Ű§ŰčÙۧÙÙۧ ۯ۱ Ű”ÙŰÙ ÙÙÙ"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"ÚŻŰČÛÙÙÙŰ§Û ŰšÛŰŽŰȘ۱ ŰšŰ±Ű§Û Ű”ÙŰÙ ÙÙÙ"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"«Ű۱ÛÙ
۟۔ÙŰ”Û»Ű «ŰŻŰ±ŰŰ§Ù ÙŸŰźŰŽ»Ű Ù Ù
Ùۧ۱ۯ ŰŻÛگ۱"</string>
<string name="more_colors" msgid="3191071655353004591">"۱ÙÚŻÙŰ§Û ŰšÛŰŽŰȘ۱"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ŰČÙ
ÛÙÙ ÙŸÙÛŰ§Û Ű§Ű”ÙÛ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ŰČÙ
ÛÙÙ ŰźÙŰ«Û Ű§Ű”ÙÛ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ŰČÙ
ÛÙÙ ŰČÙŰŻÙ Ű§Ű”ÙÛ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ŰČÙ
ÛÙÙ ŰȘŰŁŰ«Û۱گ۰ۧ۱ ۧ۔ÙÛ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ÚŻŰČÛÙÙ Ű±ÙÚŻ ÙŸÛŰŽÙ۱۶"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ÚŻŰČÛÙÙ Ű±ÙÚŻ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ŰšŰ±Ű§Û Ű§ÙŰȘ۟ۧۚ Ű”ÙŰÙ ŰłŰ§ŰčŰȘ Ù
ŰȘÙۧÙŰȘŰ ŰȘÙŰŻ ŰšÙ ÚÙŸ ŰšÚ©ŰŽÛŰŻ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ŰšŰ±Ű§Û Ű§ÙŰȘ۟ۧۚ Ű”ÙŰÙ ŰłŰ§ŰčŰȘ Ù
ŰȘÙۧÙŰȘŰ ŰȘÙŰŻ ŰšÙ Ű±Ű§ŰłŰȘ ŰšÚ©ŰŽÛŰŻ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"۳ۧŰčŰȘÙŰ§Û ŰłÙۧ۱ێÛ"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 55ebaff..1579cff 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Oma kello"</string>
<string name="clock_description" msgid="3563839327378948">"Valitse kello"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Muuta omaa kelloa"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Kelloasetukset"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Kellotauluvaihtoehto <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Kellon väri ja koko"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Kellon väri ja koko"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Väri"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Kellon koko riippuu lukitusnäytön sisällöstä"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Suuri"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pieni"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Näytön reunassa näkyy pieni kello"</string>
<string name="grid_title" msgid="1688173478777254123">"Ruudukko"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Käytä"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Muokkaa napauttamalla"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Lisää lempikirjasimesi joka näytölle"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Valitse ruudukon koko"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Jos muutat ruudukon kokoa, työtila päivittyy (parissa sekunnissa)."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Päivitetään työtilaa, jossa on ruudukko: %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ei voitu päivittää työtilaa, jossa on ruudukko: %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Tyyli valittu"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Kello asetettu"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Ruudukko asetettu"</string>
@@ -101,7 +106,7 @@
<string name="mode_title" msgid="2394873501427436055">"Tumma teema"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"Tilapäisesti pois käytöstä virransäästön takia"</string>
<string name="mode_changed" msgid="2243581369395418584">"Teema vaihdettu"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"Kuvakkeiden teemat"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"Teemaan sopivat kuvakkeet"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Muuta sovellusruudukkoa"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Taustakuvan värit"</string>
@@ -116,21 +121,25 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Vasen pikakuvake"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Oikea pikakuvake"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"–"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Tarkista seuraavat, jotta \"<xliff:g id="APPNAME">%1$s</xliff:g>\" on valittavissa"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Pikanäppäintä ei voi lisätä"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Avaa <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Jos haluat, että <xliff:g id="APPNAME">%1$s</xliff:g> lisätään pikakuvakkeeksi, varmista nämä:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Valmis"</string>
- <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Pikakomennot"</string>
- <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pikakomennot"</string>
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Pikakuvakkeet"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pikakuvakkeet"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"–"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Näytä ilmoitukset lukitusnäytöllä"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Piilota lukitusnäytön ilmoitukset"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Lisää valintoja lukitusnäytölle"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Yksityisyys, Musiikintunnistus ja muita"</string>
<string name="more_colors" msgid="3191071655353004591">"Lisää värejä"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Ensisijainen dynaaminen teema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Ensisijainen neutraali teema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Ensisijainen voimakas teema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Ensisijainen ekspressiivinen teema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Oletusväri"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Värivaihtoehto: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Valitse toinen kellotaulu pyyhkäisemällä vasemmalle"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Valitse toinen kellotaulu pyyhkäisemällä oikealle"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Omat kellot"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 4dd4be6..0963d0d 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Horloge personnalisée"</string>
<string name="clock_description" msgid="3563839327378948">"Choisissez une horloge personnalisée"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Modifiez une horloge personnalisée"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Param. horloge"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Option du cadran d\'horloge <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Couleur/taille"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Couleur/taille (horloge)"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Couleur"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"La taille de l\'horloge varie en fonction du contenu de l\'écran de verrouillage"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Petite"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Une petite horloge s\'affiche dans le coin de votre écran"</string>
<string name="grid_title" msgid="1688173478777254123">"Grille d\'applis"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Appliquer"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toucher pour modifier"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Ajoutez vos polices préférées à chaque écran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choisir une taille de grille"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"La modification de la taille de la grille entraîne l\'actualisation de l\'espace de travail et peut prendre quelques secondes."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Actualisation de l\'espace de travail avec la grille %1$s en cours…"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Échec de l\'actualisation de l\'espace de travail avec la grille %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Le style a été appliqué"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"L\'horloge a été réglée"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"La grille a été définie"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"Bêta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Modifiez la grille d\'applications"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Couleurs fond d\'écran"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte, etc. assortis aux couleurs du fond d\'écran"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte, etc., assortis aux couleurs du fond d\'écran"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Couleur du fond d\'écran"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Autres couleurs"</string>
@@ -115,8 +120,8 @@
<string name="color_picker_title" msgid="6666830057938082864">"Couleurs système"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Raccourci gauche"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Raccourci droit"</string>
- <string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucune"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Pour sélectionner « <xliff:g id="APPNAME">%1$s</xliff:g> » vérifiez ce qui suit"</string>
+ <string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucun"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Impossible d\'ajouter le raccourci"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ouvrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Pour ajouter l\'application <xliff:g id="APPNAME">%1$s</xliff:g> en tant que raccourci, assurez-vous"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"OK"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Raccourcis"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Aucun"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Affichez les notifications sur l\'écran de verrouillage"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Masquez les notifications sur l\'écran de verrouillage"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Afficher les notifications sur l\'écran de verrouillage"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Options : écran de verrouillage"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Confidentialité, En cours de lecture, etc."</string>
<string name="more_colors" msgid="3191071655353004591">"Plus de couleurs"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Thème dynamique principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Thème neutre principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Thème vif principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Thème expressif principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Option de couleur par défaut"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Option de couleur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Faites glisser vers la gauche pour un cadran d\'horloge différent"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Faites glisser vers la droite pour choisir un cadran d\'horloge différent"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Cadrans d\'horloge personnalisés"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 8738174..7e298e8 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Cadran perso."</string>
<string name="clock_description" msgid="3563839327378948">"Choisir cadran"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Modifier un cadran personnalisé"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Paramètres Horloge"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Taille et couleur Horloge"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Option de cadran <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Taille et couleur de l\'Horloge"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Taille et couleur de l\'horloge"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Couleur"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Rouge"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"La taille de l\'horloge change selon le contenu de l\'écran de verrouillage"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Petite"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Une petite horloge s\'affiche dans le coin de votre écran."</string>
<string name="grid_title" msgid="1688173478777254123">"Grille d\'applis"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Appliquer"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Appuyer pour modifier"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Ajoutez vos polices préférées sur chaque écran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Choisir une taille de grille"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Changer la taille de la grille actualisera l\'espace de travail. Cela peut prendre quelques secondes."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Actualisation de l\'espace de travail avec une grille %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Échec de l\'actualisation de l\'espace de travail avec une grille %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Le style a bien été défini"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"L\'horloge a bien été réglée"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"La grille a bien été définie"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"Bêta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Modifier la grille d\'applis"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Couleurs fond d\'écran"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte et autres couleurs de votre fond d\'écran"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Couleur des icônes, du texte… assortie au fond d\'écran"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Couleur du fond d\'écran"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Autres couleurs"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Raccourci gauche"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Raccourci droit"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucun"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Pour sélectionner <xliff:g id="APPNAME">%1$s</xliff:g>, vérifiez ce qui suit"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Impossible d\'ajouter un raccourci"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ouvrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Pour ajouter l\'appli <xliff:g id="APPNAME">%1$s</xliff:g> comme raccourci, procédez aux vérifications suivantes"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"OK"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Aucun"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Afficher les notifications sur l\'écran de verrouillage"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Masquer les notifications sur l\'écran de verrouillage"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Plus d\'options écran verrouillage"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Confidentialité, En écoute et plus"</string>
<string name="more_colors" msgid="3191071655353004591">"Autres couleurs"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Thème dynamique primaire"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Thème neutre primaire"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Thème intense primaire"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Thème expressif direct"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Option de couleur par défaut"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Option de couleur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Balayer à gauche pour changer de clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Balayer à droite pour changer de clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Personnaliser les Horloges"</string>
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 6d2401f..fe67933 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Reloxo person."</string>
<string name="clock_description" msgid="3563839327378948">"Elixe reloxo pers."</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Cambiar reloxo personalizado"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Config. reloxo"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opción de esfera de reloxo: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Tamaño/cor (Reloxo)"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Tamaño/cor do reloxo"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Cor"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"O tamaño do reloxo cambia en función do contido da pantalla de bloqueo"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pequeno"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Un pequeno reloxo móstrase na esquina da pantalla"</string>
<string name="grid_title" msgid="1688173478777254123">"Grade de apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toca para editar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Engade as túas fontes favoritas a todas as pantallas"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Escoller un tamaño para a grade"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Cambio tamaño grade volve cargar esp. traballo; pode tardar uns seg."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Volvendo cargar o espazo de traballo coa grade %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Non se puido volver cargar o espazo de traballo coa grade %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"O estilo aplicouse correctamente"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"O reloxo aplicouse correctamente"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"A grade aplicouse correctamente"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atallo: Esquerda"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atallo: Dereita"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ningunha"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para seleccionar <xliff:g id="APPNAME">%1$s</xliff:g>, comproba o seguinte"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Non se puido engadir o atallo"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para engadir a aplicación <xliff:g id="APPNAME">%1$s</xliff:g> como atallo, asegúrate de que se cumpra o seguinte:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Feito"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atallos"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ningún"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra as notificacións na pantalla de bloqueo"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Oculta as notificacións na pantalla de bloqueo"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificacións na pantalla de bloqueo"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Máis opcións da pantalla de bloqueo"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidade, Está soando e moito máis"</string>
<string name="more_colors" msgid="3191071655353004591">"Máis cores"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinámico con cores primarias"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutro con cores primarias"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema intenso con cores primarias"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expresivo con cores primarias"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de cor predeterminada"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opción de cor: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Pasar o dedo cara á esquerda para seleccionar outra esfera de reloxo"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Pasar o dedo cara á dereita para seleccionar outra esfera de reloxo"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Reloxos personalizados"</string>
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 5f8f4e6..5e09635 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àȘàȘžà«àȘàȘź àȘàȘĄàȘżàȘŻàȘŸàȘł"</string>
<string name="clock_description" msgid="3563839327378948">"àȘàȘžà«àȘàȘź àȘàȘĄàȘżàȘŻàȘŸàȘł àȘà«àȘàȘà«"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àȘàȘžà«àȘàȘź àȘàȘĄàȘżàȘŻàȘŸàȘł àȘŹàȘŠàȘČà«"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àȘàȘĄàȘżàȘŻàȘŸàȘłàȘšàȘŸ àȘžà«àȘàȘżàȘàȘ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àȘà«àȘČà«àȘ àȘ«à«àȘžàȘšà« àȘ”àȘżàȘàȘČà«àȘȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àȘàȘĄàȘżàȘŻàȘŸàȘłàȘšà« àȘ°àȘàȘ àȘ
àȘšà« àȘàȘŠ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àȘàȘĄàȘżàȘŻàȘŸàȘłàȘšà« àȘ°àȘàȘ àȘ
àȘšà« àȘàȘŠ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àȘ°àȘàȘ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àȘàȘĄàȘżàȘŻàȘŸàȘłàȘšà«àȘ àȘàȘŠ àȘČà«àȘ àȘžà«àȘà«àȘ°à«àȘš àȘȘàȘ°àȘšàȘŸ àȘàȘšà«àȘà«àȘšà«àȘ àȘ
àȘšà«àȘžàȘŸàȘ° àȘŹàȘŠàȘČàȘŸàȘŻ àȘà«"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àȘźà«àȘà«àȘ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àȘšàȘŸàȘšà«àȘ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àȘ€àȘźàȘŸàȘ°à« àȘžà«àȘà«àȘ°à«àȘšàȘšàȘŸ àȘà«àȘŁàȘŸàȘźàȘŸàȘ àȘàȘ àȘšàȘŸàȘšà« àȘàȘĄàȘżàȘŻàȘŸàȘł àȘŠà«àȘàȘŸàȘŻ àȘà«"</string>
<string name="grid_title" msgid="1688173478777254123">"àȘàȘȘ àȘà«àȘ°àȘżàȘĄ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àȘČàȘŸàȘà« àȘàȘ°à«"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àȘ«à«àȘ°àȘ«àȘŸàȘ° àȘàȘ°àȘ”àȘŸ àȘźàȘŸàȘà« àȘà«
àȘȘ àȘàȘ°à«"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àȘŠàȘ°à«àȘ àȘžà«àȘà«àȘ°à«àȘš àȘȘàȘ° àȘ€àȘźàȘŸàȘ°àȘŸ àȘźàȘšàȘȘàȘžàȘàȘŠ àȘ«à«àȘšà«àȘ àȘàȘźà«àȘ°à«"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àȘà«àȘ°àȘżàȘĄàȘšà«àȘ àȘàȘŠ àȘȘàȘžàȘàȘŠ àȘàȘ°à«"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àȘà«àȘ°àȘżàȘĄàȘšà«àȘ àȘàȘŠ àȘŹàȘŠàȘČàȘ”àȘŸàȘ„à« àȘàȘŸàȘ°à«àȘŻàȘžà«àȘ„àȘł àȘ«àȘ°à«àȘ„à« àȘČà«àȘĄ àȘ„àȘ¶à« àȘ
àȘšà« àȘ€à«àȘźàȘŸàȘ àȘ„à«àȘĄà« àȘžàȘźàȘŻ àȘČàȘŸàȘà« àȘ¶àȘà« àȘà«."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àȘà«àȘ°àȘżàȘĄ àȘ”àȘĄà« àȘàȘŸàȘ°à«àȘŻàȘžà«àȘ„àȘł àȘ«àȘ°à«àȘ„à« àȘČà«àȘĄ àȘàȘ°à« àȘ°àȘčà«àȘŻà«àȘ àȘà«"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àȘà«àȘ°àȘżàȘĄ àȘ”àȘĄà« àȘàȘŸàȘ°à«àȘŻàȘžà«àȘ„àȘł àȘ«àȘ°à«àȘ„à« àȘČà«àȘĄ àȘàȘ°àȘ”àȘŸàȘźàȘŸàȘ àȘšàȘżàȘ·à«àȘ«àȘł àȘ°àȘčà«àȘŻàȘŸàȘ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àȘ¶à«àȘČà« àȘžàȘ«àȘłàȘ€àȘŸàȘȘà«àȘ°à«àȘ”àȘ àȘžà«àȘ àȘàȘ°à«"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àȘàȘĄàȘżàȘŻàȘŸàȘł àȘžàȘ«àȘłàȘ€àȘŸàȘȘà«àȘ°à«àȘ”àȘ àȘžà«àȘ àȘàȘ°à«"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àȘà«àȘ°àȘżàȘĄ àȘžàȘ«àȘłàȘ€àȘŸàȘȘà«àȘ°à«àȘ”àȘ àȘžà«àȘ àȘàȘ°à«"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àȘĄàȘŸàȘŹà« àȘ¶à«àȘ°à«àȘàȘàȘ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àȘàȘźàȘŁà« àȘ¶à«àȘ°à«àȘàȘàȘ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àȘàȘàȘȘàȘŁ àȘšàȘčà«àȘ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>`àȘšà« àȘȘàȘžàȘàȘŠ àȘàȘ°àȘ”àȘŸ àȘźàȘŸàȘà«, àȘšà«àȘà«àȘšà« àȘŹàȘŸàȘŹàȘ€ àȘà«àȘ àȘàȘ°à«"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àȘ¶à«àȘ°à«àȘàȘàȘ àȘàȘźà«àȘ°à« àȘ¶àȘàȘ€àȘŸ àȘšàȘ„à«."</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àȘà«àȘČà«"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> àȘàȘȘàȘšà« àȘ¶à«àȘ°à«àȘàȘàȘ àȘ€àȘ°à«àȘà« àȘàȘźà«àȘ°àȘ”àȘŸ àȘźàȘŸàȘà«, àȘ àȘŹàȘŸàȘŹàȘ€à«àȘšà« àȘàȘŸàȘ€àȘ°à« àȘàȘ°à«"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àȘ„àȘ àȘàȘŻà«àȘ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àȘàȘàȘȘàȘŁ àȘšàȘčà«àȘ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àȘČà«àȘ àȘžà«àȘà«àȘ°à«àȘš àȘȘàȘ° àȘšà«àȘàȘżàȘ«àȘżàȘà«àȘ¶àȘš àȘŹàȘ€àȘŸàȘ”à«"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àȘČà«àȘ àȘžà«àȘà«àȘ°à«àȘš àȘȘàȘ° àȘšà«àȘàȘżàȘ«àȘżàȘà«àȘ¶àȘš àȘà«àȘȘàȘŸàȘ”à«"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àȘČà«àȘ àȘžà«àȘà«àȘ°à«àȘšàȘšàȘŸ àȘ”àȘ§à« àȘ”àȘżàȘàȘČà«àȘȘà«"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àȘȘà«àȘ°àȘŸàȘàȘ”àȘžà«, àȘčàȘźàȘŁàȘŸàȘ àȘ”àȘŸàȘà« àȘ°àȘčà«àȘŻà«àȘ àȘà« àȘ
àȘšà« àȘŹà«àȘà«àȘ àȘàȘŁà«àȘ"</string>
<string name="more_colors" msgid="3191071655353004591">"àȘ”àȘ§à« àȘ°àȘàȘà«"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àȘȘà«àȘ°àȘŸàȘ„àȘżàȘźàȘ àȘĄàȘŸàȘŻàȘšà«
àȘźàȘżàȘ àȘ„à«àȘź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àȘȘà«àȘ°àȘŸàȘ„àȘźàȘżàȘ àȘà«àȘŠàȘ°àȘ€à« àȘ„à«àȘź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àȘȘà«àȘ°àȘŸàȘ„àȘżàȘźàȘ àȘ”àȘŸàȘàȘŹà«àȘ°àȘšà«àȘ àȘ„à«àȘź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àȘȘà«àȘ°àȘŸàȘ„àȘżàȘźàȘ àȘ
àȘàȘżàȘ”à«àȘŻàȘà«àȘ€àȘȘà«àȘ°à«àȘŁ àȘ„à«àȘź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àȘĄàȘżàȘ«à«àȘČà«àȘ àȘ°àȘàȘàȘšà« àȘ”àȘżàȘàȘČà«àȘȘ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àȘ°àȘàȘàȘšà« àȘ”àȘżàȘàȘČà«àȘȘ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àȘà«àȘ àȘŹà«àȘà« àȘàȘĄàȘżàȘŻàȘŸàȘł àȘȘàȘžàȘàȘŠ àȘàȘ°àȘ”àȘŸ àȘźàȘŸàȘà« àȘĄàȘŸàȘŹà« àȘžà«àȘ”àȘŸàȘàȘȘ àȘàȘ°à«"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àȘà«àȘ àȘŹà«àȘà« àȘàȘĄàȘżàȘŻàȘŸàȘł àȘȘàȘžàȘàȘŠ àȘàȘ°àȘ”àȘŸ àȘźàȘŸàȘà« àȘàȘźàȘŁà« àȘžà«àȘ”àȘŸàȘàȘȘ àȘàȘ°à«"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àȘàȘžà«àȘàȘź àȘàȘĄàȘżàȘŻàȘŸàȘłà«"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 3b9917b..5fac6be 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"à€à€Ąà€Œà„ à€à€Ÿ à€à€à€à„à€š"</string>
<string name="clock_description" msgid="3563839327378948">"à€à€Ąà€Œà„ à€à€à€à„à€š à€à„à€šà„à€"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"à€Șà€žà€à€Š à€à„ à€źà„à€€à€Ÿà€Źà€żà€ à€à€Ąà€Œà„ à€à€Ÿ à€à€à€à„à€š à€Źà€Šà€Čà„à€"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"à€à€Ąà€Œà„ à€à„ à€žà„à€à€żà€à€"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"à€žà„à€źà€Ÿà€°à„à€à€”à„à€ à€à„ à€žà„à€à„à€°à„à€š à€à„ à€Ąà€żà€à€Œà€Ÿà€à€š à€à„ à€Čà€żà€ à€”à€żà€à€Čà„à€Ș <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"à€à€Ąà€Œà„ à€à€Ÿ à€°à€à€ à€à€° à€žà€Ÿà€à€à€Œ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"à€à€Ąà€Œà„ à€à€Ÿ à€°à€à€ à€à€° à€žà€Ÿà€à€à€Œ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à€°à€à€"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"à€Ąà€Ÿà€à€šà„à€źà€żà€"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"à€Čà„à€ à€žà„à€à„à€°à„à€š à€à„ à€à„à€šà„à€à„à€à€ à€à„ à€čà€żà€žà€Ÿà€Ź à€žà„ à€à€Ąà€Œà„ à€à€Ÿ à€žà€Ÿà€à€à€Œ à€Źà€Šà€Čà€€à€Ÿ à€čà„"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à€Źà€Ąà€Œà€Ÿ"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"à€à„à€à€Ÿ à€à€°à„à€"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"à€à„à€à€Ÿ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à€à€Șà€à„ à€Ąà€żà€”à€Ÿà€à€ž à€à„ à€žà„à€à„à€°à„à€š à€à„ à€à„à€šà„ à€źà„à€ à€à€ à€à„à€à„ à€à€Ąà€Œà„ à€Šà€żà€à€€à„ à€čà„"</string>
<string name="grid_title" msgid="1688173478777254123">"à€à€Șà„à€Čà€żà€à„à€¶à€š à€à„à€°à€żà€Ą"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"à€Čà€Ÿà€à„ à€à€°à„à€"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à€Źà€Šà€Čà€Ÿà€” à€à€°à€šà„ à€à„ à€Čà€żà€ à€à„à€Ș à€à€°à„à€"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"à€čà€° à€žà„à€à„à€°à„à€š à€Șà€° à€
à€Șà€šà„ à€Șà€žà€à€Šà„à€Šà€Ÿ à€«à€Œà„à€šà„à€ à€à„à€Ąà€Œà„à€"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à€à„à€°à€żà€Ą à€à€Ÿ à€žà€Ÿà€à€à€Œ à€à„à€šà„à€"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"à€à„à€°à€żà€Ą à€žà€Ÿà€à€à€Œ à€Źà€Šà€Čà€šà„ à€Șà€° à€«à€Œà€Ÿà€à€Č à€«à€Œà„à€Čà„à€Ąà€° à€«à€żà€° à€žà„ à€Čà„à€Ą à€čà„à€à€Ÿ. à€à€žà€źà„à€ à€¶à€Ÿà€Żà€Š à€žà€źà€Ż à€Čà€à„."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s à€à„à€°à€żà€Ą à€à„ à€žà€Ÿà€„ à€«à€Œà€Ÿà€à€Č à€«à€Œà„à€Čà„à€Ąà€° à€à„ à€«à€żà€° à€žà„ à€Čà„à€Ą à€à€żà€Żà€Ÿ à€à€Ÿ à€°à€čà€Ÿ à€čà„"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s à€à„à€°à€żà€Ą à€à„ à€žà€Ÿà€„ à€«à€Œà€Ÿà€à€Č à€«à€Œà„à€Čà„à€Ąà€° à€à„ à€«à€żà€° à€žà„ à€Čà„à€Ą à€šà€čà„à€ à€à€żà€Żà€Ÿ à€à€Ÿ à€žà€à€Ÿ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"à€„à„à€ź à€žà„à€ à€čà„ à€à€"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"à€à€Ąà€Œà„ à€žà„à€ à€čà„ à€à€"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"à€à„à€°à€żà€Ą à€žà„à€ à€čà„ à€à€Żà€Ÿ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à€Źà€Ÿà€Żà€Ÿà€ à€¶à„à€°à„à€à€à€"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à€Šà€Ÿà€Żà€Ÿà€ à€¶à„à€°à„à€à€à€"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"à€à„à€ à€šà€čà„à€"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` à€à„ à€à„à€šà€šà„ à€à„ à€Čà€żà€, à€Šà€żà€ à€à€ à€šà€żà€°à„à€Šà„à€¶à„à€ à€à€Ÿ à€Șà€Ÿà€Čà€š à€à€°à„à€"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"à€¶à„à€°à„à€à€à€ à€šà€čà„à€ à€à„à€Ąà€Œà€Ÿ à€à€Ÿ à€žà€à€€à€Ÿ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> à€à„à€Čà„à€"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> à€à€Șà„à€Čà€żà€à„à€¶à€š à€à„ à€¶à„à€°à„à€à€à€ à€à„ à€€à„à€° à€Șà€° à€à„à€Ąà€Œà€šà„ à€à„ à€Čà€żà€, à€à€š à€Źà€Ÿà€€à„à€ à€à€Ÿ à€§à„à€Żà€Ÿà€š à€°à€à„à€"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à€čà„ à€à€Żà€Ÿ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"à€à„à€ à€šà€čà„à€"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"à€Čà„à€ à€žà„à€à„à€°à„à€š à€Șà€° à€žà„à€à€šà€Ÿà€à€ à€Šà€żà€à€Ÿà€à€"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à€Čà„à€ à€žà„à€à„à€°à„à€š à€Șà€° à€žà„à€à€šà€Ÿà€à€ à€à€żà€Șà€Ÿà€à€"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
- <string name="more_colors" msgid="3191071655353004591">"à€à€Œà„à€Żà€Ÿà€Šà€Ÿ à€à€Čà€°"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"à€Čà„à€ à€žà„à€à„à€°à„à€š à€à„ à€à€° à€”à€żà€à€Čà„à€Ș"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"à€šà€żà€à€€à€Ÿ, \'à€
à€à„ à€à€Č à€°à€čà€Ÿ à€čà„\' à€žà„à€”à€żà€§à€Ÿ, à€à€° à€
à€šà„à€Ż à€žà„à€”à€żà€§à€Ÿ"</string>
+ <string name="more_colors" msgid="3191071655353004591">"à€à„à€ à€à€° à€°à€à€"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€Ąà€Ÿà€à€šà„à€źà€żà€ à€„à„à€ź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€šà„à€Żà„à€à„à€°à€Č à€„à„à€ź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€”à€Ÿà€à€Źà„à€°à„à€à€ à€„à„à€ź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€à€à„à€žà€Șà„à€°à„à€žà€żà€” à€„à„à€ź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"à€°à€à€ à€à€Ÿ à€Ąà€żà€«à€Œà„à€Čà„à€ à€”à€żà€à€Čà„à€Ș"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"à€°à€à€ à€à€Ÿ à€”à€żà€à€Čà„à€Ș <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"à€žà„à€źà€Ÿà€°à„à€à€”à„à€ à€à„ à€žà„à€à„à€°à„à€š à€à€Ÿ à€Ąà€żà€à€Œà€Ÿà€à€š à€à„à€šà€šà„ à€à„ à€Čà€żà€ à€Źà€Ÿà€à€ à€à€° à€žà„à€”à€Ÿà€à€Ș à€à€°à„à€"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"à€žà„à€źà€Ÿà€°à„à€à€”à„à€ à€à„ à€žà„à€à„à€°à„à€š à€à€Ÿ à€Ąà€żà€à€Œà€Ÿà€à€š à€à„à€šà€šà„ à€à„ à€Čà€żà€ à€Šà€Ÿà€à€ à€à€° à€žà„à€”à€Ÿà€à€Ș à€à€°à„à€"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à€žà„à€źà€Ÿà€°à„à€à€”à„à€ à€à„ à€žà„à€à„à€°à„à€š à€à€Ÿ à€Ąà€żà€à€Œà€Ÿà€à€š à€Șà€žà€à€Š à€à„ à€źà„à€€à€Ÿà€Źà€żà€ à€Źà€šà€Ÿà€à€"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 2eb78b7..a846c07 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"PrilagoÄeni sat"</string>
<string name="clock_description" msgid="3563839327378948">"Odaberite prilagoÄeni sat"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Promijenite prilagoÄeni sat"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Postavke sata"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opcija brojÄanika <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Boja i veliÄina sata"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Boja"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"DinamiÄan"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"VeliÄina sata mijenja se u skladu sa sadrĆŸajem zakljuÄanog zaslona"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Velik"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"Mali"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"U kutu zaslona prikazuje se mali sat"</string>
<string name="grid_title" msgid="1688173478777254123">"Rešetka aplik."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Primijeni"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da biste uredili"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Dodajte svoje omiljene fontove na svaki zaslon"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Odaberite veliÄinu rešetke"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Promjena veliÄina rešetke ponovno Äe uÄitati radni prostor i moĆŸe potrajati nekoliko sekundi."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ponovno uÄitavanje radnog prostora s rešetkom %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nije uspjelo ponovno uÄitavanje radnog prostora s rešetkom %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stil je uspješno postavljen"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Sat je uspješno postavljen"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Rešetka je uspješno postavljena"</string>
@@ -105,18 +110,18 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Promjena rešetke aplikacije"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Boje pozadine"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i više toga odgovaraju bojama na pozadini"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i ostalo odgovara bojama na pozadini"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Boja pozadine"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
- <string name="preset_color_tab_2" msgid="1444107326712562538">"Ostale boje"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za svoje ikone, sat i više"</string>
+ <string name="preset_color_tab_2" msgid="1444107326712562538">"Druge boje"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za svoje ikone, sat i ostalo"</string>
<string name="color_changed" msgid="7029571720331641235">"Promijenjena boja"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"DinamiÄno"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Boje sustava"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Lijevi preÄac"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Desni preÄac"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Da biste odabrali <xliff:g id="APPNAME">%1$s</xliff:g>, oznaÄite sljedeÄe"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nije moguÄe dodati preÄac"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otvori <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Da biste aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g> dodali kao preÄac, uÄinite sljedeÄe"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gotovo"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obavijesti na zakljuÄanom zaslonu"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrivanje obavijesti na zakljuÄanom zaslonu"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Više opcija zakljuÄanog zaslona"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Upravo svira i drugo"</string>
<string name="more_colors" msgid="3191071655353004591">"Više boja"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primarna dinamiÄna tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primarna neutralna tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primarna vibrantna tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primarna ekspresivna tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Zadana opcija boje"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"PrijeÄite prstom ulijevo da biste odabrali drugi brojÄanik"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"PrijeÄite prstom udesno da biste odabrali drugi brojÄanik"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"PrilagoÄeni satovi"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 0346ed0..2b9bd7f 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Egyedi óra"</string>
<string name="clock_description" msgid="3563839327378948">"Egyedi óra választása"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Egyedi óra módosítása"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Óra beállításai"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Kiválasztott óralap-beállítás: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Óra színe és mérete"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Óra színe & mérete"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Szín"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Az óra mérete a lezárási képernyĆ tartalmától függĆen változik."</string>
<string name="clock_size_large" msgid="3143248715744138979">"Nagy"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Kicsi"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Megjelenik egy kis óra a képernyĆ sarkában."</string>
<string name="grid_title" msgid="1688173478777254123">"Alkalmazásrács"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Alkalmaz"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Koppintson a szerkesztéshez"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Adja hozzá kedvenc betƱtípusát az összes képernyĆhöz"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Rácsméret kiválasztása"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>×<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"A rácsméret módosítása újratölti a munkaterületet, ami eltarthat néhány másodpercig."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Munkaterület újratöltése %1$s ráccsal…"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nem sikerült újratölteni a munkaterületet %1$s ráccsal"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Sikerült a stílus beállítása"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Sikerült az óra beállítása"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Sikerült a rács beállítása"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Bal parancsikon"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Jobb parancsikon"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nincs"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"A(z) „<xliff:g id="APPNAME">%1$s</xliff:g>” kiválasztásához el kell végeznie a következĆket"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nem sikerült hozzáadni a gyorsparancsot."</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> megnyitása"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Ha szeretné felvenni a(z) <xliff:g id="APPNAME">%1$s</xliff:g> alkalmazást parancsikonként, gondoskodjon a következĆkrĆl:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Kész"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nincs"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Értesítések megjelenítése a lezárási képernyĆn"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Értesítések elrejtése a lezárási képernyĆn"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Más lezárásiképernyĆ-beállítások"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Adatvédelem, Now Playing és egyebek"</string>
<string name="more_colors" msgid="3191071655353004591">"További színek"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ElsĆdleges dinamikus téma"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ElsĆdleges semleges téma"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ElsĆdleges élénk téma"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ElsĆdleges kifejezĆ téma"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Alapértelmezettként beállított szín"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Választható szín: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Csúsztassa gyorsan balra az ujját másik óralap kiválasztásához"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Csúsztassa gyorsan jobbra az ujját másik óralap kiválasztásához"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Egyéni óralapok"</string>
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index cad1120..618ad21 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ŐŐĄŐżŐžÖŐŻ Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻ"</string>
<string name="clock_description" msgid="3563839327378948">"ÔžŐ¶ŐżÖŐ„Ö Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ŐŐžŐŐ„Ö Ő°ŐĄŐżŐžÖŐŻ Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻŐš"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ÔżŐĄÖŐŁŐĄŐŸŐžÖŐžÖŐŽŐ¶Ő„Ö"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ÔčŐŸŐĄŐżŐĄŐŐżŐĄŐŻŐ« ŐżŐĄÖŐąŐ„ÖŐĄŐŻ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ÔłŐžÖŐ”Ő¶Őš Ö ŐčŐĄÖŐœŐš"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ÔłŐžÖŐ”Ő¶Őš Ö ŐčŐĄÖŐœŐš"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ÔłŐžÖŐ”Ő¶"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ÔșŐĄŐŽŐĄÖŐžÖŐ”ÖŐ« ŐčŐĄÖŐœŐš ÖŐžŐŐŸŐžÖŐŽ Ő§ ŐŻŐžŐČŐșŐ§ŐŻÖŐĄŐ¶Ő« ŐąŐžŐŸŐĄŐ¶Ő€ŐĄŐŻŐžÖŐ©Ő”ŐĄŐ¶Őš Ő°ŐĄŐŽŐĄŐșŐĄŐżŐĄŐœŐŐĄŐ¶"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ŐŐ„Őź"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ŐŐžÖÖ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ô·ŐŻÖŐĄŐ¶Ő« ŐĄŐ¶ŐŻŐ”ŐžÖŐ¶ŐžÖŐŽ ÖŐžÖÖŐĄŐ€ÖŐŸŐžÖŐŽ Ő§ ÖŐžÖÖŐ«ŐŻ ŐȘŐĄŐŽŐĄÖŐžÖŐ”Ö"</string>
<string name="grid_title" msgid="1688173478777254123">"ŐŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„ÖŐ« ÖŐĄŐ¶Ö"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ÔżŐ«ÖŐĄŐŒŐ„ŐŹ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ŐŐșŐ„ÖŐ ÖŐžÖŐžŐŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Ô±ŐŸŐ„ŐŹŐĄÖÖŐ„Ö Ő±Ő„Ö Ő¶ŐĄŐŐšŐ¶ŐżÖŐĄŐź ŐżŐĄŐŒŐĄŐżŐ„ŐœŐĄŐŻŐ¶Ő„ÖŐš Ő”ŐžÖÖŐĄÖŐĄŐ¶ŐčŐ”ŐžÖÖ Ő§ŐŻÖŐĄŐ¶Ő«Ő¶"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ÔžŐ¶ŐżÖŐ„Ö ÖŐĄŐ¶ÖŐ« ŐčŐĄÖŐš"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ŐŐĄŐ¶ÖŐ« ŐčŐĄÖŐš ÖŐžŐŐ„ŐŹŐžÖ Ő€Ő„ŐșÖŐžÖŐŽ ŐĄŐ·ŐŐĄŐżŐĄŐ¶ÖŐĄŐ”Ő«Ő¶ ŐżŐĄÖŐĄŐźÖŐš ŐŽŐ« ÖŐĄŐ¶Ő« ŐŸŐĄŐ”ÖŐŻŐ”ŐĄŐ¶ŐžÖŐŽ ŐŻŐŸŐ„ÖŐĄŐąŐ„ŐŒŐ¶ŐŸŐ«Ö"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ô±Ő·ŐŐĄŐżŐĄŐ¶ÖŐĄŐ”Ő«Ő¶ ŐżŐĄÖŐĄŐźÖŐ« (%1$s ÖŐĄŐ¶ÖŐžŐŸ) ŐŸŐ„ÖŐĄŐąŐ„ŐŒŐ¶ŐžÖŐŽ"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ŐŐ°ŐĄŐ»ŐžŐČŐŸŐ„Ö ŐŸŐ„ÖŐĄŐąŐ„ŐŒŐ¶Ő„ŐŹ %1$s ÖŐĄŐ¶ÖŐžŐŸ ŐĄŐ·ŐŐĄŐżŐĄŐ¶ÖŐĄŐ”Ő«Ő¶ ŐżŐĄÖŐĄŐźÖŐš"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ŐŐłŐš ŐŻŐĄÖŐŁŐĄŐŸŐžÖŐŸŐ„Ö"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ÔșŐĄŐŽŐĄÖŐžÖŐ”ÖŐš ŐŻŐĄÖŐŁŐĄŐŸŐžÖŐŸŐ„Ö"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ŐŐĄŐ¶ÖŐš ŐŻŐĄÖŐŁŐĄŐŸŐžÖŐŸŐ„Ö"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ŐŐĄŐ Ő€Ő”ŐžÖÖŐĄŐ¶ÖŐžÖŐŽ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Ô±Ő» Ő€Ő”ŐžÖÖŐĄŐ¶ÖŐžÖŐŽ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ŐŐč ŐŽŐ„ŐŻŐš"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"«<xliff:g id="APPNAME">%1$s</xliff:g>» Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶ ŐšŐ¶ŐżÖŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ ŐŻŐĄŐżŐĄÖŐ„Ö Ő°Ő„ŐżÖŐ”ŐĄŐŹŐš"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ŐŐ°ŐĄŐ»ŐžŐČŐŸŐ„Ö ŐĄŐŸŐ„ŐŹŐĄÖŐ¶Ő„ŐŹ Ő€Ő”ŐžÖÖŐĄŐ¶ÖŐžÖŐŽ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ÔČŐĄÖŐ„ŐŹ <xliff:g id="APPNAME">%1$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ« Ő€Ő”ŐžÖÖŐĄŐ¶ÖŐžÖŐŽŐ¶ ŐĄŐŸŐ„ŐŹŐĄÖŐ¶Ő„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ Ő°ŐĄŐŽŐžŐŠŐŸŐ„Ö, ŐžÖŐ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ŐŐĄŐżÖŐĄŐœŐż Ő§"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ÔžŐ¶ŐżÖŐŸŐĄŐź ŐčŐ§"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ŐŐžÖÖŐĄŐ€ÖŐ„ŐŹ ŐźŐĄŐ¶ŐžÖÖŐžÖŐŽŐ¶Ő„ÖŐš ŐŻŐžŐČŐșŐ§ŐŻÖŐĄŐ¶Ő«Ő¶"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ÔčŐĄÖÖŐ¶Ő„ŐŹ ŐźŐĄŐ¶ŐžÖÖŐžÖŐŽŐ¶Ő„ÖŐš ŐŻŐžŐČŐșŐ§ŐŻÖŐĄŐ¶Ő«Ő¶"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ÔżŐžŐČŐșŐ§ŐŻÖŐĄŐ¶Ő« ŐĄŐ”ŐŹ ŐŻŐĄÖŐŁŐĄŐŸŐžÖŐžÖŐŽŐ¶Ő„Ö"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ÔłŐĄŐČŐżŐ¶Ő«ŐžÖŐ©Ő”ŐžÖŐ¶, «Ô±Ő”ŐȘŐŽ Ő°Ő¶ŐčŐžÖŐŽ Ő§» Ö ŐĄŐŸŐ„ŐŹŐ«Ő¶"</string>
<string name="more_colors" msgid="3191071655353004591">"Ô±Ő”ŐŹ ŐŁŐžÖŐ”Ő¶Ő„Ö"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ŐŐ«ŐŽŐ¶ŐĄŐŻŐĄŐ¶ Ő€Ő«Ő¶ŐĄŐŽŐ«ŐŻ Ő©Ő„ŐŽŐĄ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ŐŐ«ŐŽŐ¶ŐĄŐŻŐĄŐ¶ ŐčŐ„ŐŠŐžÖ Ő©Ő„ŐŽŐĄ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ŐŐ«ŐŽŐ¶ŐĄŐŻŐĄŐ¶ ŐŁŐžÖŐ¶Ő„ŐČ Ő©Ő„ŐŽŐĄ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ŐŐ«ŐŽŐ¶ŐĄŐŻŐĄŐ¶ ŐĄÖŐżŐĄŐ°ŐĄŐ”ŐżŐ«Őč Ő©Ő„ŐŽŐĄ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ÔłŐžÖŐ”Ő¶Ő« ŐŻŐĄŐ¶ŐŐĄŐ€ÖŐŸŐĄŐź ŐżŐĄÖŐąŐ„ÖŐĄŐŻ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ÔłŐžÖŐ”Ő¶Ő« ŐżŐĄÖŐąŐ„ÖŐĄŐŻ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ŐŐĄŐ°Ő„ÖÖŐ„Ö Ő±ŐĄŐŐ ŐĄŐ”ŐŹ Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻ ŐšŐ¶ŐżÖŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ŐŐĄŐ°Ő„ÖÖŐ„Ö ŐĄŐ»Ő ŐĄŐ”ŐŹ Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻ ŐšŐ¶ŐżÖŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ŐŐĄŐżŐžÖŐŻ Ő©ŐŸŐĄŐżŐĄŐŐżŐĄŐŻŐ¶Ő„Ö"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 7e22274..1853c49 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Jam Kustom"</string>
<string name="clock_description" msgid="3563839327378948">"Pilih jam kustom"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ubah jam kustom"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Setelan Jam"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opsi tampilan jam <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Warna & ukuran jam"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Warna & ukuran jam"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Warna"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Ukuran jam berubah sesuai dengan konten layar kunci"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Besar"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Kecil"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil ditampilkan di sudut layar Anda"</string>
<string name="grid_title" msgid="1688173478777254123">"Petak aplikasi"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Terapkan"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Ketuk untuk mengedit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Tambahkan font favorit ke setiap layar"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Pilih ukuran petak"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Mengubah ukuran petak akan memuat ulang ruang kerja dan mungkin perlu waktu beberapa detik."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Memuat ulang ruang kerja dengan %1$s petak"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Gagal memuat ulang ruang kerja dengan %1$s petak"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Gaya berhasil disetel"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Jam berhasil disetel"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Petak berhasil disetel"</string>
@@ -105,18 +110,18 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Ubah petak aplikasi"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna wallpaper"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Warna ikon, teks, dan yang cocok lainnya di wallpaper"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikon, teks, dan lain-lain serasi dengan warna wallpaper"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Warna wallpaper"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Warna dasar"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Warna lainnya"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"Pilih warna apa pun untuk ikon, jam, dan lainnya"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"Pilih warna untuk ikon, jam, dan lain-lain"</string>
<string name="color_changed" msgid="7029571720331641235">"Warna diubah"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamis"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Warna sistem"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Pintasan kiri"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Pintasan kanan"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Tidak ada"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Untuk memilih `<xliff:g id="APPNAME">%1$s</xliff:g>`, periksa hal berikut"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Tidak dapat menambahkan pintasan"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Buka <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Untuk menambahkan aplikasi <xliff:g id="APPNAME">%1$s</xliff:g> sebagai pintasan, pastikan"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Selesai"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Tidak ada"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Tampilkan notifikasi di layar kunci"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sembunyikan notifikasi di layar kunci"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Opsi layar kunci lainnya"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privasi, Now Playing, dan lainnya"</string>
<string name="more_colors" msgid="3191071655353004591">"Warna Lainnya"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinamis utama"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema netral utama"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema cerah utama"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema ekspresif utama"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opsi warna default"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opsi warna <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Geser ke kiri untuk memilih tampilan jam yang berbeda"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Geser ke kanan untuk memilih tampilan jam yang berbeda"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Tampilan Jam Kustom"</string>
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 4742dc4..c07f38b 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Sérsniðin klukka"</string>
<string name="clock_description" msgid="3563839327378948">"Veldu sérsniðna klukku"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Breyta sérsniðinni klukku"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Klukkustillingar"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Úrskífuvalkostur <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Klukkustærð og litur"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Klukkustærð og litur"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Litur"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Stærð klukku breytist í samræmi við efni á lásskjá"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Stór"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Lítil"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Lítil klukka birtist í horni skjásins"</string>
<string name="grid_title" msgid="1688173478777254123">"Forritatafla"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Nota"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Ýttu til að breyta"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Fáðu uppáhaldsleturgerðirnar þínar á alla skjái"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Velja stærð hnitanets"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Breyting á töflustærð endurhleður vinnusvæði og getur tekið nokkrar sekúndur."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Endurhleður vinnusvæði með %1$s töflu"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ekki tókst að endurhlaða vinnusvæði með %1$s töflu"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stíll var stilltur"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Klukka var stillt"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Hnitanet var stillt"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Vinstri flýtilykill"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Hægri flýtilykill"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ekkert"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Til að velja „<xliff:g id="APPNAME">%1$s</xliff:g>“ skaltu athuga eftirfarandi"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Ekki tókst að bæta flýtileið við"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Opna <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Til að bæta forritinu <xliff:g id="APPNAME">%1$s</xliff:g> við sem flýtileið skaltu ganga úr skugga um að"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Lokið"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ekkert"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Sýna tilkynningar á lásskjánum"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fela tilkynningar á lásskjánum"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Fleiri valkostir fyrir lásskjá"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Persónuvernd, í spilun og fleira"</string>
<string name="more_colors" msgid="3191071655353004591">"Fleiri litir"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Kvikt aðalþema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Hlutlaust aðalþema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Líflegt aðalþema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tjáningarríkt aðalþema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Sjálfgefinn litavalkostur"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Litavalkostur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Strjúktu til vinstri til að velja aðra klukku"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Strjúktu til hægri til að velja aðra klukku"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Sérsniðnar klukkur"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index d54138d..5f2393c 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Orologio personalizzato"</string>
<string name="clock_description" msgid="3563839327378948">"Scegli un orologio personalizzato"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Modifica un orologio personalizzato"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Impos. Orologio"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Colore/dim. orologio"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opzione quadrante orologio <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Colore/dim. orologio"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Colore e dimensioni orologio"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Colore"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Rosso"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamiche"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Le dimensioni dell\'orologio cambiano in base ai contenuti della schermata di blocco"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grandi"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"Piccolo"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"Piccole"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Un piccolo orologio visualizzato nell\'angolo dello schermo"</string>
<string name="grid_title" msgid="1688173478777254123">"Griglia di app"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Applica"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tocca per modificare"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Aggiungi i tuoi caratteri preferiti a ogni schermata"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Scegli la dimensione della griglia"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Modificare la dimensione della griglia ricarica lo spazio di lavoro e richiede alcuni secondi."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Stai ricaricando lo spazio di lavoro con griglia %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Impossibile ricaricare lo spazio di lavoro con griglia %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stile impostato"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Orologio impostato"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Griglia impostata"</string>
@@ -115,22 +120,26 @@
<string name="color_picker_title" msgid="6666830057938082864">"Colori di sistema"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Scorciatoia sinistra"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Scorciatoia destra"</string>
- <string name="keyguard_affordance_none" msgid="1751643933430782312">"Nessuno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Per poter selezionare \"<xliff:g id="APPNAME">%1$s</xliff:g>\", devi controllare quanto segue:"</string>
+ <string name="keyguard_affordance_none" msgid="1751643933430782312">"Nessuna"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Impossibile aggiungere la scorciatoia"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Apri <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Per aggiungere l\'app <xliff:g id="APPNAME">%1$s</xliff:g> come scorciatoia, assicurati che:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Fine"</string>
<string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Scorciatoie"</string>
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Scorciatoie"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
- <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nessun elemento"</string>
+ <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nessuna"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra le notifiche sulla schermata di blocco"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Nascondi le notifiche sulla schermata di blocco"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Altre opzioni per la schermata di blocco"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing e altro"</string>
<string name="more_colors" msgid="3191071655353004591">"Altri colori"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinamico primario"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema naturale primario"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema intenso primario"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema espressivo primario"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opzione colore predefinita"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opzione colore <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Scorri a sinistra per selezionare un altro quadrante"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Scorri a destra per selezionare un altro quadrante"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Quadranti personalizzati"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 695536e..d514ac9 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Ś©ŚąŚŚ ŚŚŚȘŚŚ ŚŚŚ©ŚŚȘ"</string>
<string name="clock_description" msgid="3563839327378948">"ŚŚŚŚšŚȘ Ś©ŚąŚŚ ŚŚŚȘŚŚ ŚŚŚ©ŚŚȘ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ś©ŚŚ ŚŚ Ś©ŚąŚŚ ŚŚŚȘŚŚ ŚŚŚ©ŚŚȘ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ŚŚŚŚšŚŚȘ ŚŚ©ŚąŚŚ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ŚŚŚ€Ś©ŚšŚŚȘ Ś©Ś ŚȘŚŠŚŚŚȘ ŚŚ©ŚąŚŚ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ŚŚŠŚŚą ŚŚŚŚŚŚ Ś©Ś ŚŚ©ŚąŚŚ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ŚŚŠŚŚą ŚŚŚŚŚŚ Ś©Ś ŚŚ©ŚąŚŚ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ŚŠŚŚą"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ŚŚŚŚ ŚŚ©ŚąŚŚ ŚŚ©ŚȘŚ Ś ŚŚŚȘŚŚ ŚŚȘŚŚŚ ŚŚŚĄŚ ŚŚ ŚąŚŚŚ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ŚŚŚŚ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Ś§ŚŚ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ś©ŚąŚŚ Ś§ŚŚ ŚŚŚ€ŚŚą ŚŚ€ŚŚ ŚȘ ŚŚŚĄŚ"</string>
<string name="grid_title" msgid="1688173478777254123">"ŚȘŚŠŚŚŚȘ ŚŚŚ€ŚŚŚ§ŚŠŚŚŚȘ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ŚŚŚ©ŚŚš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ŚŚ© ŚŚŚ§ŚŚ© ŚŚŚ ŚŚąŚšŚŚ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ŚŚ€Ś©Śš ŚŚŚŚĄŚŚŁ ŚŚȘ ŚŚŚŚ€Ś ŚŚ ŚŚŚŚąŚŚ€ŚŚ ŚŚŚ ŚŚĄŚ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ŚŚŚŚšŚȘ ŚŚŚŚ ŚŚšŚ©ŚȘ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Ś©ŚŚ ŚŚ ŚŚŚŚ ŚŚšŚ©ŚȘ ŚŚŚąŚ ŚŚŚŚ© ŚŚȘ ŚĄŚŚŚŚȘ ŚŚąŚŚŚŚ ŚŚŚŚ§Ś ŚŚŚ Ś©Ś ŚŚŚȘ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ŚŚąŚŚ Ś ŚŚŚŚ© Ś©Ś ŚĄŚŚŚŚȘ ŚŚąŚŚŚŚ ŚąŚ ŚšŚ©ŚȘ %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ŚŚ ŚŚŠŚŚŚ Ś ŚŚŚąŚŚ ŚŚŚŚ© ŚŚȘ ŚĄŚŚŚŚȘ ŚŚąŚŚŚŚ ŚąŚ ŚšŚ©ŚȘ %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ŚŚĄŚŚ ŚŚ ŚŚŚŚŚš ŚŚŚŠŚŚŚ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ŚŚ©ŚąŚŚ ŚŚŚŚŚš ŚŚŚŠŚŚŚ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ŚŚšŚ©ŚȘ ŚŚŚŚŚšŚ ŚŚŚŠŚŚŚ"</string>
@@ -113,24 +118,28 @@
<string name="color_changed" msgid="7029571720331641235">"ŚŚŠŚŚą ŚŚ©ŚȘŚ Ś"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ŚŚŚ ŚŚ"</string>
<string name="color_picker_title" msgid="6666830057938082864">"ŚŠŚŚąŚ ŚŚŚąŚšŚŚȘ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Ś§ŚŚŠŚŚš ŚŚšŚ ŚŚŚŚŚ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Ś§ŚŚŠŚŚš ŚŚšŚ ŚŚ©ŚŚŚ"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Ś§ŚŚŠŚŚš ŚŚšŚ Ś©ŚŚŚŚ"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Ś§ŚŚŠŚŚš ŚŚšŚ ŚŚŚ Ś"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ŚŚŚ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ŚŚŚ ŚŚŚŚŚš ŚŚŚ€ŚŚŚ§ŚŠŚŚ <xliff:g id="APPNAME">%1$s</xliff:g> ŚŠŚšŚŚ ŚŚĄŚŚ ŚŚȘ ŚŚŚ€Ś©ŚšŚŚŚŚȘ ŚŚŚŚŚȘ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ŚŚ Ś ŚŚȘŚ ŚŚŚŚĄŚŚŁ ŚŚȘ Ś§ŚŚŠŚŚš ŚŚŚšŚ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ś€ŚȘŚŚŚȘ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ŚŚŚ ŚŚŚŚĄŚŚŁ ŚŚȘ ŚŚŚ€ŚŚŚ§ŚŠŚŚ <xliff:g id="APPNAME">%1$s</xliff:g> ŚŚ§ŚŚŠŚŚš ŚŚšŚ, ŚŠŚšŚŚ ŚŚŚŚŚ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ŚĄŚŚŚ"</string>
<string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Ś§ŚŚŠŚŚšŚ ŚŚšŚ"</string>
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Ś§ŚŚŠŚŚšŚ ŚŚšŚ"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
- <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ŚŚŚ"</string>
+ <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ŚŚŚ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ŚŚŠŚŚȘ ŚŚŚȘŚšŚŚŚȘ ŚŚŚĄŚ ŚŚ ŚąŚŚŚ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ŚŚĄŚȘŚšŚȘ ŚŚŚȘŚšŚŚŚȘ ŚŚŚĄŚ ŚŚ ŚąŚŚŚ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ŚąŚŚ ŚŚ€Ś©ŚšŚŚŚŚȘ Ś©Ś ŚŚĄŚ ŚŚ ŚąŚŚŚ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Ś€ŚšŚŚŚŚȘ, \'ŚŚ Ś©ŚŚŚąŚŚ ŚąŚŚ©ŚŚ?\' ŚŚąŚŚ"</string>
<string name="more_colors" msgid="3191071655353004591">"ŚŠŚŚąŚŚ Ś ŚŚĄŚ€ŚŚ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ŚąŚŚŠŚŚ ŚšŚŚ©Ś ŚŚŚ ŚŚ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ŚąŚŚŠŚŚ ŚšŚŚ©Ś Ś ŚŚŚŚšŚŚ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ŚąŚŚŠŚŚ ŚšŚŚ©Ś ŚŚŠŚŚąŚŚ ŚąŚŚŚ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ŚąŚŚŠŚŚ ŚšŚŚ©Ś ŚŚ§ŚĄŚ€ŚšŚĄŚŚŚ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ŚŚ€Ś©ŚšŚŚȘ ŚŚŠŚŚą Ś©ŚŚŚŚŚšŚȘ ŚŚŚšŚŚšŚȘ ŚŚŚŚ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ŚŚ€Ś©ŚšŚŚȘ ŚŠŚŚą <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ŚŚŚ ŚŚŚŚŚš ŚȘŚŠŚŚŚȘ Ś©ŚąŚŚ Ś©ŚŚ Ś, ŚŠŚšŚŚ ŚŚŚŚŚŚ§ ŚŚŚŚ Ś"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ŚŚŚ ŚŚŚŚŚš ŚȘŚŠŚŚŚȘ Ś©ŚąŚŚ Ś©ŚŚ Ś, ŚŠŚšŚŚ ŚŚŚŚŚŚ§ Ś©ŚŚŚŚ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Ś©ŚąŚŚ ŚŚ ŚŚŚȘŚŚŚ ŚŚŚ©ŚŚȘ"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 58bf265..f6c8ba0 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ă«ăčăżă æćç€"</string>
<string name="clock_description" msgid="3563839327378948">"æćç€ăźéžæ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"æćç€ăźć€æŽ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"æèšăźèšćź"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"æćç€ăȘăă·ă§ăł <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"æèšăźèČăšă”ă€ăș"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"æèšăźèČăšă”ă€ăș"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>ă<xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"èČ"</string>
@@ -37,9 +38,10 @@
<string name="clock_color_teal" msgid="7499223425741344251">"ăăŁăŒă«"</string>
<string name="clock_size" msgid="5028923902364418263">"ă”ă€ăș"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"ćç"</string>
- <string name="clock_size_dynamic_description" msgid="2776620745774561662">"æèšăźă”ă€ășăŻăăăŻç»éąăźć
ćźčă«ćżăăŠć€ăăăŸă"</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"æèšăźă”ă€ășăăăăŻç»éąăźç¶æłă«ćżăăŠć€ăăăŸă"</string>
<string name="clock_size_large" msgid="3143248715744138979">"性"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ć°"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ç»éąăźé
ă«ć°ăăæèšăèĄšç€șăă"</string>
<string name="grid_title" msgid="1688173478777254123">"ăąăăȘă°ăȘăă"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"é©çš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ăżăăăăŠç·šé"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ăæ°ă«ć
„ăăźăă©ăłăăăăčăŠăźç»éąă«èżœć ă§ăăŸă"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ă°ăȘăăă”ă€ășăźéžæ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ă°ăȘăăăźă”ă€ășăć€ăăăšăŻăŒăŻăčăăŒăčăćèȘăżèŸŒăżăăăŸăïŒæ°ç§ăăăăăšăăăăŸăïŒă"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s ă°ăȘăăă§ăŻăŒăŻăčăăŒăčăćèȘăżèŸŒăżăăŠăăŸă"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s ă°ăȘăăă§ăźăŻăŒăŻăčăăŒăčăźćèȘăżèŸŒăżă«ć€±æăăŸăă"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ăčăżă€ă«ăźèšćźăćźäșăăŸăă"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"æèšăźèšćźăćźäșăăŸăă"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ă°ăȘăăăźèšćźăćźäșăăŸăă"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ć·Šă·ă§ăŒăă«ăă"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ćłă·ă§ăŒăă«ăă"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ăȘă"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ă<xliff:g id="APPNAME">%1$s</xliff:g>ăăéžæăăă«ăŻă仄äžăçąșèȘăăŸă"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ă·ă§ăŒăă«ăăăèżœć ă§ăăŸăă"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> ăéăăŸăă"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ăąăăȘăă·ă§ăŒăă«ăăăšăăŠèżœć ăăăăăźæé "</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ćźäș"</string>
@@ -124,11 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ă·ă§ăŒăă«ăă"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>ă<xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ăȘă"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ăăăŻç»éąă«éç„ăèĄšç€șăăŸă"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ăăăŻç»éąă§ăŻéç„ăéèĄšç€șă«ăăŸă"</string>
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ăăăŻç»éąă«éç„ăèĄšç€șăă"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"ăăăŻç»éąăźè©łçްăȘăă·ă§ăł"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"ăă©ă€ăă·ăŒăăăźæČăȘă«ïŒăăăźä»"</string>
<string name="more_colors" msgid="3191071655353004591">"ä»ăźèČ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ăĄă€ăłăźćçăȘăăŒă"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ăĄă€ăłăźäžéăăŒă"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ăĄă€ăłăźéźźăăăȘăăŒă"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ăĄă€ăłăźèĄšçŸćè±ăăȘăăŒă"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ăăă©ă«ăăźă«ă©ăŒ ăȘăă·ă§ăł"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ă«ă©ăŒ ăȘăă·ă§ăł <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ć„ăźæćç€ăéžæăăă«ăŻăć·Šă«ăčăŻă€ăăăŸă"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ć„ăźæćç€ăéžæăăă«ăŻăćłă«ăčăŻă€ăăăŸă"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ă«ăčăżă æèš"</string>
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 44ca0c5..567a945 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ááá ááááŁáá áĄáááá"</string>
<string name="clock_description" msgid="3563839327378948">"ááá á©ááá ááá ááááŁáá áĄáááá"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ášááȘááááá ááá ááááŁáá áĄáááá"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"áĄááááᥠááá ááááąá ááá"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"áĄááááᥠáŹááá ááźáá áᥠááá ááááąá <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"áĄááááᥠá€áá á áá áááá"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"áĄááááᥠá€áá á & amp; áááá"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"á€áá á"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"áĄááááᥠáááá ááȘááááá ááááááááá ááá áááᥠášááááá áĄáᥠáááźááááá"</string>
<string name="clock_size_large" msgid="3143248715744138979">"áááá"</string>
<string name="clock_size_small" msgid="2280449912094164133">"áááąáá á"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"áááąáá á áĄáááá ááááááĄáááŁááá áá„áááá ááá áááᥠááŁááźáášá"</string>
<string name="grid_title" msgid="1688173478777254123">"áááááᥠáááá"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"áááĄááááááá"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ášáááźáá á áááá„áąáá ááááĄááááĄ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ááááááąáá áá„áááá áĄáá§ááá ááá ášá áá€áąááá á§áááá ááá áááá"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ááá á©ááá ááááᥠáááá"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ááááᥠááááᥠášááȘáááá áŹááááášá ááááááąááá áááá áĄáááŁášáá áĄááá áȘá."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"áááááááá áááᥠáĄáááŁášáá áĄááá áȘáᥠáááááąááá ááá %1$s ááááá"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"áĄáááŁášáá áĄááá áȘáᥠáááááąááá ááá %1$s ááááá ááá áááźáá áźáá"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"áĄáąááá áŹáá áááąáááá ááá§áááá"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"áĄáááá áŹáá áááąáááá ááá§áááá"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"áááá áŹáá áááąáááá ááá§áááá"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ááá áȘáźááá ááááĄááźáááá"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ááá áŻáááá ááááĄááźáááá"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"áá áȘáá áá"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"„<xliff:g id="APPNAME">%1$s</xliff:g>“-áᥠááĄáá á©áááá ášáááááŹááá ášáááááá"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ááááĄááźááááᥠáááááąááá ášááŁá«ááááááá"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g>-áᥠáááźáĄáá"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ááá á áá ááááĄááźááááᥠáĄááźáá ááááááąáá, ááá áŹááŁáááá, á áá"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"áááááá"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"áá áȘáá áá"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ášááąá§áááááááááᥠá©áááááá á©ááááąáá ááá áááá"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ášááąá§áááááááááᥠááááááá á©ááááąáá ááá áááá"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"á©ááááąááá ááá áááᥠáĄáźáá ááá ááááąá ááá"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"áááá€áááááȘááááŁá ááá, á á áŁáá ááᥠáá áĄáźáá"</string>
<string name="more_colors" msgid="3191071655353004591">"áááąá á€áá á"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"á«áá ááááá áááááááŁá á áááá"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"á«áá ááááá ááááąá áááŁá á áááá"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"á«áá ááááá áȘááȘáźááá áááá"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"á«áá ááááá áá„áĄáá ááĄááŁáá áááá"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"á€áá áᥠááááŁáááĄáźáááá ááá ááááąá"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"á€áá áᥠááá ááááąá <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ááááá€áŁá áȘááá ááá áȘáźááá ááááĄáźááááááŁáá áȘáá€áá ááááąáᥠááĄáá á©áááá"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ááááá€áŁá áȘááá ááá áŻáááá ááááĄáźááááááŁáá áȘáá€áá ááááąáᥠááĄáá á©áááá"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ááá ááááŁáá áĄáááááá"</string>
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 47bac27..59c0407 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"ĐŃĐœĐ°ŃĐ»Ń ŃаÒаŃ"</string>
<string name="clock_description" msgid="3563839327378948">"ĐŃĐœĐ°ŃĐ»Ń ŃаÒаŃŃŃ ŃĐ°ÒŁĐŽĐ°Ń"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐŃĐœĐ°ŃĐ»Ń ŃаÒаŃŃŃ Ó©Đ·ĐłĐ”ŃŃŃ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ХаÒĐ°Ń ĐżĐ°ŃĐ°ĐŒĐ”ŃŃŃ"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"ХаÒĐ°Ń ŃÒŻŃŃ, ĐșÓ©Đ»Đ”ĐŒŃ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐŠĐžŃĐ”ŃĐ±Đ»Đ°Ń ĐŸĐżŃĐžŃŃŃ: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ХаÒĐ°Ń ŃÒŻŃŃ, ĐșÓ©Đ»Đ”ĐŒŃ"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"ХаÒаŃŃŃÒŁ ŃÒŻŃŃ, Ó©Đ»ŃĐ”ĐŒŃ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐąÒŻŃ"</string>
<string name="clock_color_red" msgid="3843504214807597810">"ÒŃĐ·ŃĐ»"</string>
@@ -35,11 +36,12 @@
<string name="clock_color_violet" msgid="3454503847169375826">"ĐÒŻĐ»ĐłŃĐœ"</string>
<string name="clock_color_gray" msgid="9221530636948859231">"ĐĄÒ±Ń"</string>
<string name="clock_color_teal" msgid="7499223425741344251">"ĐÓ©ĐșŃŃĐ» жаŃŃĐ»"</string>
- <string name="clock_size" msgid="5028923902364418263">"ĐÓ©Đ»Đ”ĐŒ"</string>
+ <string name="clock_size" msgid="5028923902364418263">"ӚлŃĐ”ĐŒ"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"ĐĐžĐœĐ°ĐŒĐžĐșалŃÒ"</string>
- <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ХаÒĐ°Ń ĐșÓ©Đ»Đ”ĐŒŃ ÒÒ±Đ»ŃĐż ŃĐșŃĐ°ĐœŃĐœĐŽĐ°ÒŃ ĐșĐŸĐœŃĐ”ĐœŃĐșĐ” ŃаĐč өзгДŃДЎŃ."</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ХаÒаŃŃŃÒŁ Ó©Đ»ŃĐ”ĐŒŃ ÒÒ±Đ»ŃĐż ŃĐșŃĐ°ĐœŃĐœĐŽĐ°ÒŃ ĐșĐŸĐœŃĐ”ĐœŃĐșĐ” ŃаĐč өзгДŃДЎŃ."</string>
<string name="clock_size_large" msgid="3143248715744138979">"ÒźĐ»ĐșĐ”Đœ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐŃŃi"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐĐșŃĐ°ĐœĐœŃÒŁ Đ±Ò±ŃŃŃŃĐœĐŽĐ° ŃаÒŃĐœ ŃаÒĐ°Ń ĐșÓ©ŃŃĐ”ŃŃлДЎŃ."</string>
<string name="grid_title" msgid="1688173478777254123">"ÒĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ŃĐŸŃŃ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ÒĐŸĐ»ĐŽĐ°ĐœŃ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ӚзгДŃŃŃ ÒŻŃŃĐœ ŃÒŻŃŃŃÒŁŃĐ·"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ÓŃ ŃĐșŃĐ°ĐœÒа Ò±ĐœĐ°ĐčŃŃĐœ ÒаŃŃĐżŃŃ ÒĐŸŃ Đ°Đ»Đ°ŃŃĐ·."</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐąĐŸŃ Ó©Đ»ŃĐ”ĐŒŃĐœ ŃĐ°ÒŁĐŽĐ°ÒŁŃĐ·"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐąĐŸŃ Ó©Đ»ŃĐ”ĐŒŃ Ó©Đ·ĐłĐ”ŃŃŃĐ»ŃĐ”, Đ¶Ò±ĐŒŃŃ ĐŸŃĐœŃ Đ±ŃŃĐœĐ”ŃĐ” ŃĐ”ĐșŃĐœĐŽ ÒаĐčŃа Đ¶ÒŻĐșŃДлДЎŃ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s ŃĐŸŃŃ Đ±Đ°Ń Đ¶Ò±ĐŒŃŃ ĐŸŃĐœŃ ÒаĐčŃа Đ¶ÒŻĐșŃДлŃĐŽĐ”"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s ŃĐŸŃŃ Đ±Đ°Ń Đ¶Ò±ĐŒŃŃ ĐŸŃĐœŃ Đ¶ÒŻĐșŃĐ”Đ»ĐŒĐ”ĐŽŃ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃĐžĐ»Ń ĐŸŃĐœĐ°ŃŃлЎŃ."</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ХаÒĐ°Ń ĐŸŃĐœĐ°ŃŃлЎŃ."</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐąĐŸŃ ĐŸŃĐœĐ°ŃŃлЎŃ."</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"ĐąÒ±ŃÒаÒаз ŃÒŻŃŃ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"ĐДгŃĐ·ĐłŃ ŃÒŻŃŃĐ”Ń"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ĐаŃÒа ŃÒŻŃŃĐ”Ń"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"ĐДлгŃŃĐ”, ŃаÒĐ°Ń Đ¶ÓĐœĐ” Ń.б. ÒŻŃŃĐœ ĐșДз ĐșĐ”Đ»ĐłĐ”Đœ ŃÒŻŃ ŃĐ°ÒŁĐŽĐ°ÒŁŃĐ·."</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"ĐДлгŃŃДлДŃ, ŃаÒаŃ, Ń.б. ÒŻŃŃĐœ ÒалаÒĐ°Đœ ŃÒŻŃŃŃ ŃĐ°ÒŁĐŽĐ°ÒŁŃĐ·."</string>
<string name="color_changed" msgid="7029571720331641235">"ĐąÒŻŃ Ó©Đ·ĐłĐ”ŃŃŃлЎŃ."</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ĐĐžĐœĐ°ĐŒĐžĐșалŃÒ"</string>
<string name="color_picker_title" msgid="6666830057938082864">"ĐÒŻĐčĐ” ŃÒŻŃŃĐ”ŃŃ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐĄĐŸĐ» Đ¶Đ°Ò ŃĐ°ÒŁĐ±Đ°Ńа"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐÒŁ Đ¶Đ°Ò ŃĐ°ÒŁĐ±Đ°Ńа"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐĄĐŸĐ» Đ¶Đ°Ò Đ¶ŃĐ»ĐŽĐ°ĐŒ ĐżÓŃĐŒĐ”Đœ"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐÒŁ Đ¶Đ°Ò Đ¶ŃĐ»ĐŽĐ°ĐŒ ĐżÓŃĐŒĐ”Đœ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐŸÒ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" ÒĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃĐœ ŃĐ°ÒŁĐŽĐ°Ń ÒŻŃŃĐœ ĐŒŃĐœĐ°ĐœŃ ĐŸŃŃĐœĐŽĐ°ÒŁŃĐ·:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐąĐ°ÒŁĐ±Đ°Ńа ÒĐŸŃŃ ĐŒÒŻĐŒĐșŃĐœ Đ”ĐŒĐ”Ń"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> ÒĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃĐœ аŃŃ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ÒĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃĐœ ŃĐ°ÒŁĐ±Đ°Ńа ŃĐ”ŃŃĐœĐŽĐ” ÒĐŸŃŃ ÒŻŃŃĐœ ĐșДлДŃŃ ÓŃĐ”ĐșĐ”ŃŃĐ”ŃĐŽŃ ĐŸŃŃĐœĐŽĐ°ŃĐŽŃ Ò±ĐŒŃŃĐżĐ°ÒŁŃĐ·:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐаĐčŃĐœ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐŃÒĐ°ĐœĐŽĐ°Đč"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ÒÒ±Đ»ŃĐż ŃĐșŃĐ°ĐœŃĐœĐŽĐ° Ń
абаŃĐ»Đ°ĐœĐŽŃŃŃлаŃĐŽŃ ĐșÓ©ŃŃĐ”ŃŃ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ÒÒ±Đ»ŃĐż ŃĐșŃĐ°ĐœŃĐœĐŽĐ° Ń
абаŃĐ»Đ°ĐœĐŽŃŃŃлаŃĐŽŃ Đ¶Đ°ŃŃŃŃ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ÒÒ±Đ»ŃĐż ŃĐșŃĐ°ĐœŃĐœŃÒŁ баŃÒа ĐŸĐżŃĐžŃлаŃŃ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ÒÒ±ĐżĐžŃĐ»ŃÒ, Now Playing жÓĐœĐ” баŃÒа ŃŃĐœĐșŃĐžŃлаŃ"</string>
<string name="more_colors" msgid="3191071655353004591">"ÒĐŸŃŃĐŒŃа ŃÒŻŃŃĐ”Ń"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐДгŃĐ·ĐłŃ ĐŽĐžĐœĐ°ĐŒĐžĐșалŃÒ ŃаÒŃŃŃĐż"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐДгŃĐ·ĐłŃ Đ±Đ”ĐčŃаŃап ŃаÒŃŃŃĐż"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐДгŃĐ·ĐłŃ ÒĐ°ĐœŃÒ ŃаÒŃŃŃĐż"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐДгŃĐ·ĐłŃ Đ±Đ”ĐčĐœĐ”Đ»Ń ŃаÒŃŃŃĐż"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ÓЎДпĐșŃ ŃÒŻŃ ĐŸĐżŃĐžŃŃŃ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> ŃÒŻŃ ĐŸĐżŃĐžŃŃŃ"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐаŃÒа ŃĐžŃĐ”ŃĐ±Đ»Đ°Ń ŃĐ°ÒŁĐŽĐ°Ń ÒŻŃŃĐœ ŃĐŸĐ»Òа ŃŃŃÒŃŃŃÒŁŃĐ·."</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐаŃÒа ŃĐžŃĐ”ŃĐ±Đ»Đ°Ń ŃĐ°ÒŁĐŽĐ°Ń ÒŻŃŃĐœ ĐŸÒŁÒа ŃŃŃÒŃŃŃÒŁŃĐ·."</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐŃĐœĐ°ŃĐ»Ń ŃаÒаŃŃаŃ"</string>
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index a1fe61f..f04db02 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"áá¶áĄá·áá¶áááá¶ááááááœá"</string>
<string name="clock_description" msgid="3563839327378948">"ááááŸáááŸááá¶áĄá·áá¶áááá¶ááááááœá"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ááááŒááá¶áĄá·áá¶âáááá¶ááááááœá"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"áá¶áááááááá¶áĄá·áá¶"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"áááááŸááá»ááá¶áĄá·áá¶ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ááá áá·áááá ááá¶áĄá·áá¶"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ááá áá·áááá ááá¶áĄá·áá¶"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ááá"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ááá ááá¶áĄá·áá¶âáááá¶ááááááŒááá
áá¶áááááčááá¶áâááŸáąááááááá
á¶áááá"</string>
<string name="clock_size_large" msgid="3143248715744138979">"áá"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ááŒá
"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"áá¶áĄá·áá¶âááŒá
ááœáâáááá á¶áâáá
áááá»áááâáąááááááâáááááąááá"</string>
<string name="grid_title" msgid="1688173478777254123">"ááááĄá¶âáááááá·ááž"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ááááŸ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"á
á»á
ááŸáááážâáá"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"áááá
áŒááá»áááâáąááááâááááąáááá
áŒáá
á·áááâáá
ááááááąáááááá"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ááááŸáááŸáâááá áááááĄá¶"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"áá¶áááááŒáááá áááááĄá¶ááčááááá»áááá áá¶ááá¶ááĄáŸááá·á áá·ááąá¶á
á
ááá¶ááááááááá·á
á"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"áááá»ááááá»ááĄáŸááá·áááŒáááá áá¶ááá¶áááááá¶áááááĄá¶ %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"áá·ááąá¶á
áááá»ááĄáŸááá·áááŒáááá áá¶ááá¶áááááá¶áááááĄá¶ %1$s áá"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"áá¶ááááááâáá
áá¶ááááááááâáááááá"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"áá¶ááááááâáá¶áĄá·áá¶áááâáááááá"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"áá¶ááááááâááááĄá¶áááâáááááá"</string>
@@ -98,7 +103,7 @@
<string name="accessibility_custom_color_title" msgid="4124246598886320663">"áááâáááá¶ááááááœá"</string>
<string name="accessibility_custom_shape_title" msgid="7708408259374643129">"ááŒááá¶áâáááá¶ááááááœá"</string>
<string name="accessibility_custom_name_title" msgid="5494460518085463262">"áááááâáá
áá¶áááááâáááá¶ááááááœá"</string>
- <string name="mode_title" msgid="2394873501427436055">"âáá
áá¶áááááâáááčá"</string>
+ <string name="mode_title" msgid="2394873501427436055">"áááááááá
áá¶áááčá"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"áá¶ááá·áâáá¶âáááááááąá¶áááá ááááá¶áâáá»ááá¶áâáááááâááá"</string>
<string name="mode_changed" msgid="2243581369395418584">"áá¶áâáááá¶ááááááŒáâáá
áá¶ááááá"</string>
<string name="themed_icon_title" msgid="7312460430471956558">"ááŒááááá¶áááááŒááá¶ááááááááá
áá¶"</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"áááâáááá¶ááááŒááá¶á"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"áááâááá"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ááááááááááá"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"ááááŸáááŸáááááá¶ááœáááááá¶ááááŒááááá¶á áá¶áĄá·áá¶ áá·ááąááážááá¶á
áááŸáááááááááąááá"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"ááááŸáááŸáááááá¶ááœáááááá¶áááá¶áĄá·áá¶ ááŒááááá¶ááááááąááá áá·áá
áááŸáááá"</string>
<string name="color_changed" msgid="7029571720331641235">"áá¶áâáááá¶ááááááŒáâááá"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"áážáá¶áá·á"</string>
<string name="color_picker_title" msgid="6666830057938082864">"ááááááááááá"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ááááŒááá¶áááá¶áááááá"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ááááŒááá¶áááá¶ááááá¶á"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"áááá¶á"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ááŸáááážááááŸáááŸá `<xliff:g id="APPNAME">%1$s</xliff:g>` ááŒááá·áá·áááááŸááá¶áááááá"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"áá·ááąá¶á
âáááá
áŒáâááááŒááá¶ááâáá¶ááá"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ááŸá <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ááŸáááážáááá
áŒááááááá·ááž <xliff:g id="APPNAME">%1$s</xliff:g> áá¶ááááŒááá¶áá ááŒááááá¶áááá¶"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ááœá
áá¶áá"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"áááá¶á"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"áááá á¶ááá¶áááŒáááááčááá
ááŸáąááááááá
á¶áááá"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"áá¶áááá¶áááŒáááááčááá
ááŸáąááááááá
á¶áááá"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"áááááŸááąááááááá
á¶ááááá
áááŸáááá"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"áŻááááá¶á, Now Playing áá·ááąááážáá
áááŸáááá"</string>
<string name="more_colors" msgid="3191071655353004591">"áááâá
áááŸáááá"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"áááááááá
áá¶ááááážáá¶áá·áá
áááá"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"áááááááá
áá¶ááááááááá¶á
áááá"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"áááááááá
áá¶áááááááááŸáá
áááá"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"áááááááá
áá¶ááááááá á¶áá
áááá"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"áááááŸáááááááá¶áááŸá"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"áááááŸáâááá <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"áąáŒááá
ááááá ááŸáááážááááŸáááŸááá»ááá¶áĄá·áá¶ááááá"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"áąáŒááá
áááá¶á ááŸáááážááááŸáááŸááá»ááá¶áĄá·áá¶ááááá"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"áá¶áĄá·áá¶áááá¶ááááááœá"</string>
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 8b1c5ca..e87c7f1 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àČàČžàłàČàČźàł àČàČĄàČżàČŻàČŸàȰ"</string>
<string name="clock_description" msgid="3563839327378948">"àČàČžàłàČàČźàł àČ”àČŸàČàł àČȘàČżàČàł"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àČàČžàłàČàČźàł àČàČĄàČżàČŻàČŸàȰ àČŹàČŠàČČàČżàČžàČż"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àČàČĄàČżàČŻàČŸàȰ àČžàłàČàłàČàČżàČàČàłàČàČłàł"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àČàłàČČàČŸàČàł àČ«àłàČžàł àČàČŻàłàČàł <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àČàČĄàČżàČŻàČŸàȰàČŠ àČŹàČŁàłàČŁ, àČàČŸàČ€àłàȰ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àČàČĄàČżàČŻàČŸàȰàČŠ àČŹàČŁàłàČŁ, àČàČŸàČ€àłàȰ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àČŹàČŁàłàČŁ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àČČàČŸàČàł àČžàłàČàłàȰàłàČšàłàČšàČČàłàČČàČżàȰàłàČ” àČ”àČżàČ·àČŻàČàłàČàł àČ
àČšàłàČàłàČŁàČ”àČŸàČàČż àČàČĄàČżàČŻàČŸàȰàČŠ àČàČŸàČ€àłàȰ àČŹàČŠàČČàČŸàČàłàČ€àłàČ€àČŠàł"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àČŠàłàČĄàłàČĄàČŠàł"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àČàČżàČàłàČàČŠàł"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àČšàČżàČźàłàČź àČžàłàČàłàȰàłàČšàłàČš àČźàłàČČàłàČŻàČČàłàČČàČż àČžàČŁàłàČŁ àČàČĄàČżàČŻàČŸàȰàČ”àłàČàČŠàł àČàČŸàČŁàČżàČžàłàČ€àłàČ€àČŠàł"</string>
<string name="grid_title" msgid="1688173478777254123">"àČàłàČŻàČȘàł àČàłàȰàČżàČĄàł"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àČ
àČšàłàČ”àČŻàČżàČžàČż"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àČàČĄàČżàČàł àČźàČŸàČĄàČČàł àČàłàČŻàČŸàČȘàł àČźàČŸàČĄàČż"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àČȘàłàȰàČ€àČż àČžàłàČàłàȰàłàČšàłàČàł àČšàČżàČźàłàČź àČźàłàČàłàČàČżàČš àČ«àČŸàČàČàłàČàČłàČšàłàČšàł àČžàłàȰàČżàČžàČż"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àČàłàȰàČżàČĄàł àČàČŸàČ€àłàȰàČ”àČšàłàČšàł àČàȰàČżàČžàČż"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àČàłàȰàČżàČĄàł àČàČŸàČ€àłàȰàČ”àČšàłàČšàł àČŹàČŠàČČàČŸàČŻàČżàČžàłàČ”àłàČŠàȰàČżàČàČŠ àČàČŸàȰàłàČŻàČžàłàČ„àČłàČ”àČšàłàČšàł àČźàȰàłàČČàłàČĄàł àČźàČŸàČĄàłàČ€àłàČ€àČŠàł àČźàČ€àłàČ€àł àČàłàČČàČ”àł àČžàłàČàłàČàČĄàłàČàČłàČšàłàČšàł àČ€àłàČàłàČŠàłàČàłàČłàłàČłàČŹàČčàłàČŠàł."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àČàłàȰàČżàČĄàł àČźàłàČČàČ àČàČŸàȰàłàČŻàČžàłàČ„àČłàČ”àČšàłàČšàł àČźàȰàłàČČàłàČĄàł àČźàČŸàČĄàČČàČŸàČàłàČ€àłàČ€àČżàČŠàł"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àČàłàȰàČżàČĄàł àČźàłàČČàČ àČàČŸàȰàłàČŻàČžàłàČ„àČłàČ”àČšàłàČšàł àČźàȰàłàČČàłàČĄàł àČźàČŸàČĄàČČàł àČ”àČżàČ«àČČàČ”àČŸàČàČżàČŠàł"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àȶàłàČČàČżàČŻàČšàłàČšàł àČŻàȶàČžàłàČ”àČżàČŻàČŸàČàČż àČčàłàČàČŠàČżàČžàČČàČŸàČàČżàČŠàł"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àČàČĄàČżàČŻàČŸàȰàČ”àČšàłàČšàł àČŻàȶàČžàłàČ”àČżàČŻàČŸàČàČż àČčàłàČàČŠàČżàČžàČČàČŸàČàČżàČŠàł"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àČàłàȰàČżàČĄàł àČ
àČšàłàČšàł àČŻàȶàČžàłàČ”àČżàČŻàČŸàČàČż àČčàłàČàČŠàČżàČžàČČàČŸàČàČżàČŠàł"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"àČŹàłàČàČŸ"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"àČàłàČŻàČȘàł àČàłàȰàČżàČĄàł àČŹàČŠàČČàČŸàČŻàČżàČžàČż"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"àČ”àČŸàČČàłàČȘàłàČȘàČ°àł àČŹàČŁàłàČŁàČàČłàł"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"àČšàČżàČźàłàČź àČ”àČŸàČČàłàČȘàłàČȘàȰàłàČšàČČàłàČČàČż àČàČàČŸàČšàłàČàČłàł, àČȘàČ àłàČŻ àČźàČ€àłàČ€àł àČàČšàłàČšàČ·àłàČàłàČčàłàČàČŠàČŸàČŁàČżàČàłàČŻ àČŹàČŁàłàČŁàČàČłàł"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"àČàČàČŸàČšàł, àČȘàČ àłàČŻ àČźàČ€àłàČ€àł àČàČ€àłàČŻàČŸàČŠàČżàČàČłàł àČ”àČŸàČČàłàČȘàłàČȘàȰàłàČšàČČàłàČČàČżàČš àČŹàČŁàłàČŁàČàČłàČšàłàČšàł àČčàłàČČàłàČ€àłàČ€àČ”àł"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"àČ”àČŸàČČàłàČȘàłàČȘàČ°àł àČŹàČŁàłàČŁ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"àČźàłàČČ àČŹàČŁàłàČŁàČàČłàł"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"àČàČ€àȰ àČŹàČŁàłàČŁàČàČłàł"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àČàČĄ àȶàČŸàȰàłàČàłàČàČàł"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àČŹàČČ àȶàČŸàȰàłàČàłàČàČàł"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àČŻàČŸàČ”àłàČŠàł àČ
àČČàłàČČ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àČ
àČšàłàČšàł àČàČŻàłàČàłàČźàČŸàČĄàČČàł àČ àČàłàČłàČàČżàČšàČ”àłàČàČłàČšàłàČšàł àČàłàȰàłàČ€àł àČźàČŸàČĄàČż"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àȶàČŸàȰàłàČàłàČàČàł àČžàłàȰàČżàČžàČČàł àČžàČŸàȧàłàČŻàČ”àČżàČČàłàČČ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àČ
àČšàłàČšàł àČ€àłàȰàłàČŻàČżàȰàČż"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> àČàłàČŻàČȘàł àČ
àČšàłàČšàł àȶàČŸàȰàłàČàłàČàČàł àČàČàČż àČžàłàȰàČżàČžàČČàł àČàłàČłàČàČżàČšàČ”àłàČàČłàČšàłàČšàł àČàČàČżàČ€àČȘàČĄàČżàČžàČżàČàłàČłàłàČłàČż"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àČźàłàČàČżàČŠàČżàČŠàł"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àČŻàČŸàČ”àłàČŠàł àČ
àČČàłàČČ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àČČàČŸàČàł àČžàłàČàłàȰàłàČšàłàČšàČČàłàČČàČż àČ
àȧàČżàČžàłàČàČšàłàČàČłàČšàłàČšàł àČ€àłàȰàČżàČžàČż"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àČČàČŸàČàł àČžàłàČàłàȰàłàČšàłàČšàČČàłàČČàČż àČ
àȧàČżàČžàłàČàČšàłàČàČłàČšàłàČšàł àČźàȰàłàČźàČŸàČĄàČż"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"àČàČšàłàČšàČ·àłàČàł àČČàČŸàČàł àČžàłàČàłàȰàłàČšàł àČàČŻàłàČàłàČàČłàł"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"àČàłàČȘàłàČŻàČ€àł, Now Playing àČźàČ€àłàČ€àł àČàČšàłàČšàČ·àłàČàł"</string>
<string name="more_colors" msgid="3191071655353004591">"àČàČšàłàČšàČ·àłàČàł àČŹàČŁàłàČŁàČàČłàł"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àČȘàłàȰàČŸàČ„àČźàČżàČ àČĄàłàČšàČŸàČźàČżàČàł àČ„àłàČźàł"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àČȘàłàȰàČŸàČ„àČźàČżàČ àČ€àČàČžàłàČ„ àČ„àłàČźàł"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àČȘàłàȰàČŸàČ„àČźàČżàČ àČ”àłàČŹàłàȰàłàČàČàł àČ„àłàČźàł"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àČȘàłàȰàČŸàČ„àČźàČżàČ àČ
àČàČżàČ”àłàČŻàČàłàČ€àČżàȶàłàČČ àČ„àłàČźàł"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àČĄàłàČ«àČŸàČČàłàČàł àČŹàČŁàłàČŁàČŠ àČàČŻàłàČàł"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àČŹàČŁàłàČŁàČŠ àČàČŻàłàČàł <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àČŹàłàȰàłàČàČŠàł àČàłàČČàČŸàČàł àČ«àłàČžàł àČ
àČšàłàČšàł àČàČŻàłàČàłàČźàČŸàČĄàČČàł àČàČĄàČàłàČàł àČžàłàČ”àłàČȘàł àČźàČŸàČĄàČż"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àČŹàłàȰàłàČàČŠàł àČàłàČČàČŸàČàł àČ«àłàČžàł àČ
àČšàłàČšàł àČàČŻàłàČàłàČźàČŸàČĄàČČàł àČŹàČČàČàłàČàł àČžàłàČ”àłàČȘàł àČźàČŸàČĄàČż"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àČàČžàłàČàČźàł àČàłàČČàČŸàČàłàČàČłàł"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 88e8f4d..c4f231b 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ë§ì¶€ ìêł"</string>
<string name="clock_description" msgid="3563839327378948">"ë§ì¶€ ìêł ì í"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ë§ì¶€ ìêł ëłêČœ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ìêł ì€ì "</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ìêł íìŽì€ ì”ì
<xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ìêł ìì ë° íŹêž°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ìêł ìì ë° íŹêž°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ìì"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ìêł íŹêž°ê° ì êž í멎 ìœí
ìž ì ë°ëŒ ëłêČœë©ëë€."</string>
<string name="clock_size_large" msgid="3143248715744138979">"íŹêČ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ìêČ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ìì ìêłê° í멎 ëȘšì늏ì íìë©ëë€."</string>
<string name="grid_title" msgid="1688173478777254123">"ì± ê·žëŠŹë"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ì ì©"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ííìŹ ìì "</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ëȘšë í멎ì ìąìíë êžêŒŽì ì¶ê°íìžì."</string>
<string name="grid_options_title" msgid="7071930966989877023">"ê·žëŠŹë íŹêž° ì í"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ê·žëŠŹë íŹêž°ë„Œ ëłêČœí멎 ìì
êł”ê°ìŽ ìëĄêł ìčšëë©° ëȘ ìŽ ì ë 걞늎 ì ìì”ëë€."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s ê·žëŠŹëëĄ ìì
êł”ê°ì ìëĄêł ìčšíë ì€"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s ê·žëŠŹëëĄ ìì
êł”ê°ì ìëĄêł ìčšíì§ ëȘ»íš"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ì€íìŒ ì€ì ìŽ ìëŁëìì”ëë€."</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ìêł ì€ì ìŽ ìëŁëìì”ëë€."</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ê·žëŠŹë ì€ì ìŽ ìëŁëìì”ëë€."</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ìŒìȘœ ë°ëĄê°êž°"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ì€ë„žìȘœ ë°ëĄê°êž°"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ìì"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` ì±ì ì ííë €ë©Ž ë€ìì ì ííìžì"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ëšì¶í€ë„Œ ì¶ê°í ì ìì"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> ìŽêž°"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ì±ì ë°ëĄê°êž°ëĄ ì¶ê°íë €ë©Ž ë€ìì íìžíìžì."</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ìëŁ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ìì"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ì êž í멎ì ì늌 íì"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ì êž í멎ìì ì늌 ìšêž°êž°"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ì êž í멎 ì”ì
ëëłŽêž°"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ê°ìž ì 볎 볎íž, Now Playing ë±"</string>
<string name="more_colors" msgid="3191071655353004591">"ìì ëëłŽêž°"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"êž°ëłž ëì í
ë§"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"êž°ëłž ëłŽí” í
ë§"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"êž°ëłž íêž° í
ë§"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"êž°ëłž íí í
ë§"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"êž°ëłž ìì ì”ì
"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> ìì ì”ì
"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ìŒìȘœìŒëĄ ì€ììŽííìŹ ë€ë„ž ìêł íìŽì€ ì í"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ì€ë„žìȘœìŒëĄ ì€ììŽííìŹ ë€ë„ž ìêł íìŽì€ ì í"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ìêł íìŽì€ ë§ì¶€ì€ì "</string>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 539a67f..5e8e84e 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐĐ”ĐșĐ” ŃааŃ"</string>
<string name="clock_description" msgid="3563839327378948">"ĐĐ”ĐșĐ” ŃааŃŃŃ ŃĐ°ĐœĐŽĐŸĐŸ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐĐ”ĐșĐ” ŃааŃŃŃ Ó©Đ·ĐłÓ©ŃŃÒŻÒŻ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ХааŃŃŃĐœ паŃĐ°ĐŒĐ”ŃŃлДŃĐž"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐŠĐžŃĐ”ŃблаŃŃŃĐœ ĐČаŃĐžĐ°ĐœŃŃ: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ХааŃŃŃĐœ ŃÒŻŃÒŻ, Ó©Đ»ŃÓ©ĐŒÒŻ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ХааŃŃŃĐœ ŃÒŻŃÒŻ, Ó©Đ»ŃÓ©ĐŒÒŻ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐąÒŻŃ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ХааŃŃŃĐœ Ó©Đ»ŃÓ©ĐŒÒŻ ĐșŃлпŃĐ»Đ°ĐœĐłĐ°Đœ ŃĐșŃĐ°ĐœĐŽĐ°ĐłŃ ĐœĐ”ŃŃДлДŃгД ŃлаĐčŃĐș Ó©Đ·ĐłÓ©ŃÓ©Ń"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Đ§ĐŸÒŁ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐĐžŃĐžĐœĐ”"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐĐžŃĐžĐœĐ”ĐșĐ”Đč ŃĐ°Đ°Ń ŃĐșŃĐ°ĐœĐŽŃĐœ бŃŃŃŃĐœĐŽĐ° ĐșÓ©ŃÒŻĐœÒŻĐż ŃŃŃаŃ"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐœŃĐœ ŃĐŸŃŃĐŸŃŃ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐĐŸĐ»ĐŽĐŸĐœŃŃ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ӚзгөŃŃÒŻÒŻ ÒŻŃÒŻĐœ ŃапŃап ĐșĐŸŃÒŁŃĐ·"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐаĐșŃŃŃĐłĐ°Đœ аŃОпŃĐ”ŃĐžÒŁĐžĐ·ĐŽĐž ĐșĐ°Đ°Đ»Đ°ĐłĐ°Đœ ŃĐșŃĐ°ĐœĐłĐ° ĐșĐŸŃĐż алŃĐ°ÒŁŃĐ· Đ±ĐŸĐ»ĐŸŃ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐąĐŸŃŃĐŸĐœŃĐœ Ó©Đ»ŃÓ©ĐŒÒŻĐœ ŃĐ°ĐœĐŽĐŸĐŸ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐąĐŸŃŃĐŸĐœŃĐœ Ó©Đ»ŃÓ©ĐŒÒŻ Ó©Đ·ĐłÓ©ŃŃÓ©, ĐžŃŃÓ©Ó© аĐčĐŒĐ°ĐłŃ ĐșаĐčŃа Đ¶ÒŻĐșŃөлөŃ. ĐŃга Đ±ĐžŃ ĐœĐ”ŃĐ” ŃĐ”ĐșŃĐœĐŽ ĐșĐ”ŃĐ”Đș."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ĐŃŃÓ©Ó© аĐčĐŒĐ°ĐłŃ %1$s ŃĐŸŃŃĐŸ ĐŒĐ”ĐœĐ”Đœ ĐșаĐčŃа Đ¶ÒŻĐșŃÓ©Đ»ÒŻÒŻĐŽÓ©"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐŃŃÓ©Ó© аĐčĐŒĐ°ĐłŃ %1$s ŃĐŸŃŃĐŸ ĐŒĐ”ĐœĐ”Đœ ĐșаĐčŃа Đ¶ÒŻĐșŃөлбөĐč ĐșалЎŃ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃĐžĐ»Ń ĐșĐŸŃлЎŃ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ĐĄĐ°Đ°Ń ĐžĐčгОлОĐșŃÒŻÒŻ Đ¶Ó©ĐœĐŽÓ©Đ»ĐŽÒŻ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐąĐŸŃŃĐŸ ĐžĐčгОлОĐșŃÒŻÒŻ Đ¶Ó©ĐœĐŽÓ©Đ»ĐŽÒŻ"</string>
@@ -105,18 +110,18 @@
<string name="beta_title" msgid="8703819523760746458">"ĐĐ”Ńа"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ĐĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐœŃĐœ ŃĐŸŃŃĐŸŃŃĐœ Ó©Đ·ĐłÓ©ŃŃÒŻÒŻ"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"ĐąŃŃĐșагазЎŃĐœ ŃÒŻŃŃÓ©ŃÒŻ"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ĐąŃŃĐșагаз ŃÒŻŃÒŻĐœÓ© жаŃаŃа ŃÒŻŃÓ©ŃŃөлөŃ, ŃĐ”ĐșŃŃ Đ¶Đ” баŃĐșалаŃ"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ĐĄÒŻŃÓ©ŃŃөлөŃ, ŃĐ”ĐșŃŃ Đ¶.б. ŃŃŃĐșагазЎŃĐœ ŃÒŻŃÒŻĐœÓ© аĐčĐșалŃŃаŃ"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"ĐąŃŃĐșагазЎŃĐœ ŃÒŻŃÒŻ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"ĐДгОзгО ŃÒŻŃŃÓ©Ń"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ĐаŃĐșа ŃÒŻŃŃÓ©Ń"</string>
<string name="preset_color_subheader" msgid="8230588536141279371">"ĐĄÒŻŃÓ©ŃŃөлөŃÒŻÒŁÒŻĐ·, ŃааŃŃÒŁŃĐ· жД баŃĐșа ĐœĐ”ŃŃĐ”Đ»Đ”Ń ÒŻŃÒŻĐœ ĐșĐ°Đ°Đ»Đ°ĐłĐ°Đœ ŃÒŻŃŃÒŻ ŃĐ°ĐœĐŽĐ°ÒŁŃĐ·"</string>
<string name="color_changed" msgid="7029571720331641235">"ĐąÒŻŃ Ó©Đ·ĐłÓ©ŃŃÒŻĐ»ĐŽÒŻ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ĐĐžĐœĐ°ĐŒĐžĐșалŃĐș"</string>
- <string name="color_picker_title" msgid="6666830057938082864">"ĐąŃŃŃĐŒĐŽŃĐœ ŃÒŻŃŃÓ©ŃÒŻ"</string>
+ <string name="color_picker_title" msgid="6666830057938082864">"ĐĄĐžŃŃĐ”ĐŒĐ°ĐœŃĐœ ŃÒŻŃŃÓ©ŃÒŻ"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐĄĐŸĐ» ŃĐșŃĐ°ĐŒ баŃĐșŃŃ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐÒŁ ŃĐșŃĐ°ĐŒ баŃĐșŃŃ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐŸĐș"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃĐœ ŃĐ°ĐœĐŽĐŸĐŸ ÒŻŃÒŻĐœ ŃÓ©ĐŒÓ©ĐœĐșÒŻĐ»Ó©ŃĐŽÒŻ аŃĐșаŃŃÒŁŃĐ·:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Đ«ĐșŃĐ°ĐŒ баŃĐșŃŃ ĐșĐŸŃŃлбаĐč жаŃаŃ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> аŃŃŃ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃĐœ ŃĐșŃĐ°ĐŒ баŃĐșŃŃ ĐșаŃаŃŃ ĐșĐŸŃŃŃ ÒŻŃÒŻĐœ ŃÓ©ĐŒÓ©ĐœĐșÒŻĐ»Ó©ŃĐŽÒŻ аŃĐșаŃŃÒŁŃĐ·:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐÒŻŃŃÒŻ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐĐŸĐș"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐОлЎОŃĐŒĐ”Đ»Đ”ŃĐŽĐž ĐșŃлпŃĐ»Đ°ĐœĐłĐ°Đœ ŃĐșŃĐ°ĐœĐŽĐ° ĐșÓ©ŃŃÓ©ŃÒŻÒŻ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐОлЎОŃĐŒĐ”Đ»Đ”ŃĐŽĐž ĐșŃлпŃĐ»Đ°ĐœĐłĐ°Đœ ŃĐșŃĐ°ĐœĐŽĐ° жаŃŃŃŃŃ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐŃлпŃĐ»Đ°ĐœĐłĐ°Đœ ŃĐșŃĐ°Đœ паŃĐ°ĐŒĐ”ŃŃлДŃĐž"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐŃĐżŃŃĐ»ŃĐș, ĐĐŒĐœĐ” ĐŸĐčĐœĐŸĐż жаŃаŃ? Đ¶Đ°ĐœĐ° баŃĐșалаŃ"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐĐ°ĐłŃ ŃÒŻŃŃÓ©Ń"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐДгОзгО ĐŽĐžĐœĐ°ĐŒĐžĐșалŃĐș ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐДгОзгО ĐœĐ”ĐčŃŃалЎŃŃ ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐДгОзгО ĐșĐ°ĐœŃĐșĐșĐ°Đœ ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐДгОзгО аŃŃĐș ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĐ”ĐŒĐ”ĐčĐșĐž ŃÒŻŃ ĐČаŃĐžĐ°ĐœŃŃ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> ŃÒŻŃ ĐČаŃĐžĐ°ĐœŃŃ"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐаŃĐșа ŃĐžŃĐ”ŃблаŃŃŃ ŃĐ°ĐœĐŽĐŸĐŸ ÒŻŃÒŻĐœ ŃĐșŃĐ°ĐœĐŽŃ ŃĐŸĐ»ĐłĐŸ ŃÒŻŃÒŻÒŁÒŻĐ·"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐаŃĐșа ŃĐžŃĐ”ŃблаŃŃŃ ŃĐ°ĐœĐŽĐŸĐŸ ÒŻŃÒŻĐœ ŃĐșŃĐ°ĐœĐŽŃ ĐŸÒŁĐłĐŸ ŃÒŻŃÒŻÒŁÒŻĐ·"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐĐ”ĐșĐ” ŃааŃŃаŃ"</string>
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 9a41c5b..5177e16 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"à»àșĄàșàșàș”à»àșàșłàșàș»àșà»àșàș"</string>
<string name="clock_description" msgid="3563839327378948">"à»àș„àș·àșàșà»àșĄàșàșàșłàșàș»àșà»àșàș"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àșà»àșœàșà»àșĄàșàșàșłàșàș»àșà»àșàș"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àșàșČàșàșàș±à»àșàșà»àșČà»àșĄàș"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àșàș»àș§à»àș„àș·àșàșà»à»àșČàșàș±àșà»àșĄàș <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àșȘàș” à»àș„àș° àșàș°à»àșČàșà»àșĄàș"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àșȘàș” à»àș„àș° àșàș°à»àșČàșà»àșĄàș"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àșȘàș”"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àșàș°à»àșČàșàșàșàșà»àșĄàșàșà»àșœàșàșàșČàșĄà»àșàș·à»àșàș«àșČà»àșà»à»àșČàșà»àș„àș±àșàș"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à»àș«àșà»"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àșà»àșàș"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à»àșĄàșàșà»àșàșàșàș”à»àșȘàș°à»àșàșàșąàșčà»à»àșàșĄàșžàșĄàșàșàșà»à»àșČàșà»àșà»àșČàș"</string>
<string name="grid_title" msgid="1688173478777254123">"àșàșČàșàș°àș„àșČàșà»àșàș±àș"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àșàșłà»àșà»"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à»àșàș°à»àșàș·à»àșà»àșà»à»àș"</string>
@@ -65,11 +67,14 @@
<string name="font_card_body" msgid="6790525594503904468">"à»àșàș”à»àșĄàșàșàșàșàș”à»àșà»àșČàșàșĄàș±àșà»àșȘà»àșàșžàșà»à»àșČàșà»"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à»àș„àș·àșàșàșàș°à»àșČàșàșà»àșàș"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àșàșČàșàșà»àșœàșàșàș°à»àșČàșà»àșàșàșźà»àșČàșàșàșČàșàș°àș„àșČàșàșàș°à»àș«àșŒàșàșà»àșàșà»àșźàș±àșàș§àșœàș à»àș„àș° àșàșČàșà»àșà»à»àș§àș„àșČàșȘàșàșàșȘàșČàșĄàș§àșŽàșàșČàșàș”."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"àșàșłàș„àș±àșà»àș«àșŒàșàșà»àșàșà»àșźàș±àșàș§àșœàșàșàș·àșà»à»à»àșà»àș§àșà»àșàșàșźà»àșČàșàșàșČàșàș°àș„àșČàș %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"à»àș«àșŒàșàșà»àșàșà»àșźàș±àșàș§àșœàșàșàș·àșà»à»à»àșà»àș§àșà»àșàșàșźà»àșČàșàșàșČàșàș°àș„àșČàș %1$s àșà»à»àșȘàșłà»àș„àș±àș"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àșàș±à»àșàșźàșčàșà»àșàșàșȘàșłà»àș„àș±àșà»àș„à»àș§"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àșàș±à»àșà»àșĄàșàșȘàșłà»àș„àș±àșà»àș„à»àș§"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àșàș±à»àșàșà»àșàșàșȘàșłà»àș„àș±àșà»àș„à»àș§"</string>
<string name="apply_theme_error_msg" msgid="791364062636538317">"à»àșàș”àșàșàș±àșàș«àșČà»àșàșàșČàșàșàșłà»àșà»àșźàșčàșà»àșàș"</string>
- <string name="custom_theme_next" msgid="6235420097213197301">"àșàș±àșà»àș"</string>
+ <string name="custom_theme_next" msgid="6235420097213197301">"àșà»à»à»àș"</string>
<string name="custom_theme_previous" msgid="4941132112640503022">"àșà»àșČàșàșĄàșČ"</string>
<string name="custom_theme" msgid="1618351922263478163">"àșàșłàșàș»àșà»àșàș"</string>
<string name="custom_theme_title" msgid="2192300350332693631">"à»àșàșàșàșłàșàș»àșà»àșàș <xliff:g id="ID_1">%1$d</xliff:g>"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àșàșČàșàș„àș±àșàșà»àșČàș"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àșàșČàșàș„àș±àșàșàș§àșČ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àșà»à»àșĄàș”"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"à»àșàș·à»àșà»àș„àș·àșàș `<xliff:g id="APPNAME">%1$s</xliff:g>` àșàș°àș„àșžàșàșČàșàș§àșàșȘàșàșàșȘàșŽà»àșàșà»à»à»àșàșàș”à»"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àșà»à»àșȘàșČàșĄàșČàșà»àșàș”à»àșĄàșàșČàșàș„àș±àșà»àșà»"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"à»àșàș”àș <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"à»àșàș·à»àșà»àșàș”à»àșĄà»àșàș±àș <xliff:g id="APPNAME">%1$s</xliff:g> à»àșàș±àșàșàșČàșàș„àș±àș, àșàș°àș„àșžàșàșČàșàș§àșàșȘàșàșà»àș«à»à»àșà»à»àșàș§à»àșČ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à»àș„à»àș§à»"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àșà»à»àșĄàș”"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àșȘàș°à»àșàșàșàșČàșà»àșà»àșà»àșàș·àșàșàșąàșčà»à»à»àșČàșà»àș„àș±àșàș"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à»àșàș·à»àșàșàșàșČàșà»àșà»àșà»àșàș·àșàșàșąàșčà»à»à»àșČàșà»àș„àș±àșàș"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"àșàș»àș§à»àș„àș·àșàșà»à»àșČàșà»àș„àș±àșàșà»àșàș”à»àșĄà»àșàș”àșĄ"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"àșàș§àșČàșĄà»àșàș±àșàșȘà»àș§àșàșàș»àș§, Now Playing à»àș„àș° àșàș·à»àșà»"</string>
<string name="more_colors" msgid="3191071655353004591">"àșȘàș”à»àșàș”à»àșĄà»àșàș”àșĄ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àșźàșčàșà»àșàșàșȘàș”àșȘàș±àșàș«àșŒàș±àșà»àșàșà»àșàșàșČàșĄàșŽàș"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àșźàșčàșà»àșàșàșȘàș”àșȘàș±àșàș«àșŒàș±àșà»àșàșà»àșà»àșȘàș”à»àșàșàșàșČàș"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àșźàșčàșà»àșàșàșȘàș”àșȘàș±àșàș«àșŒàș±àșà»àșàșàșȘàș”àșȘàș±àșàșȘàș»àșà»àșȘ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àșźàșčàșà»àșàșàșȘàș”àșȘàș±àșàș«àșŒàș±àșà»àșàșàșàș±àșà»àșàș"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àșàș»àș§à»àș„àș·àșàșàșȘàș”àșà»àșČà»àș„àș”à»àșĄàșàș»à»àș"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àșàș»àș§à»àș„àș·àșàșàșȘàș” <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àșàș±àșàșà»àșČàșà»àșàș·à»àșà»àș„àș·àșàșà»à»àșČàșàș±àșà»àșĄàșà»àșàșàșà»àșČàșà»"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àșàș±àșàșàș§àșČà»àșàș·à»àșà»àș„àș·àșàșà»à»àșČàșàș±àșà»àșĄàșà»àșàșàșà»àșČàșà»"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à»à»àșČàșàș±àșà»àșĄàșà»àșàșàșàșłàșàș»àșà»àșàș"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 90b8bd7..2164508 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Tink. laikrodis"</string>
<string name="clock_description" msgid="3563839327378948">"Pasir. tink. laikr."</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Keiskite tinkintÄ
laikrodÄŻ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Laikr. nustat."</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Ciferblato parinktis: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Laikr. spalva, dyd."</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Laikr. spalva ir dydis"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Spalva"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"LaikrodĆŸio dydis keiÄiamas pagal uĆŸrakinimo ekrano turinÄŻ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Didelis"</string>
<string name="clock_size_small" msgid="2280449912094164133">"MaĆŸas"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ekrano kampe rodomas nedidelis laikrodis"</string>
<string name="grid_title" msgid="1688173478777254123">"Pr. tinklelis"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Taikyti"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Palieskite ir redaguokite"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"PridÄkite mÄgstamiausiĆł šriftĆł prie kiekvieno ekrano"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Pasirinkti tinklelio dydÄŻ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"KeiÄiant tinklelio dydÄŻ iš naujo ÄŻkeliama darbo sritis ir tai gali uĆŸtrukti kelias sekundes."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Iš naujo ÄŻkeliama darbo sritis su %1$s tinkleliu"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nepavyko iš naujo ÄŻkelti darbo srities su %1$s tinkleliu"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stilius nustatytas sÄkmingai"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Laikrodis nustatytas sÄkmingai"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Tinklelis nustatytas sÄkmingai"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Spart. kl. kair."</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Spart. kl. deš."</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"NÄra"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Jei norite pasirinkti „<xliff:g id="APPNAME">%1$s</xliff:g>“, patikrinkite toliau nurodytus dalykus."</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nepavyko pridÄti sparÄiojo klavišo"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Atidaryti „<xliff:g id="APPNAME">%1$s</xliff:g>“"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Jei norite pridÄti programÄ
„<xliff:g id="APPNAME">%1$s</xliff:g>“ kaip šaukinÄŻ, ÄŻsitikinkite, kad atitinkate reikalavimus."</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Atlikta"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"NÄra"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Rodyti pranešimus uĆŸrakinimo ekrane"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"SlÄpti pranešimus uĆŸrakinimo ekrane"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Daugiau uĆŸrakinimo ekrano parinkÄiĆł"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privatumas, „Dabar leidĆŸiama“ ir kt."</string>
<string name="more_colors" msgid="3191071655353004591">"Daugiau spalvĆł"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"PagrindinÄ dinaminÄ tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"PagrindinÄ neutrali tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"PagrindinÄ ryški tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"PagrindinÄ išraiškinga tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Numatytoji spalvos parinktis"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Spalvos parinktis: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Perbraukite kairÄn, kad pasirinktumÄte kitÄ
ciferblatÄ
"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Perbraukite dešinÄn, kad pasirinktumÄte kitÄ
ciferblatÄ
"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Tinkinti ciferblatai"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index a28e6a5..45ff8e2 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"PielÄgots ekrÄns"</string>
<string name="clock_description" msgid="3563839327378948">"PielÄgota ekrÄna izvÄle"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Mainiet pielÄgotu pulksteĆa ekrÄnu."</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"PulksteĆa iestatÄ«jumi"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"PulksteĆa ekrÄna opcija: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"PulksteĆa krÄsa/lielums"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"PulksteĆa krÄsa/lielums"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"KrÄsa"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"PulksteĆa lielums mainÄs atkarÄ«bÄ no bloÄ·Äšanas ekrÄna satura."</string>
<string name="clock_size_large" msgid="3143248715744138979">"Liels"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Mazs"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"JĆ«su ekrÄna stĆ«rÄ« tiek rÄdÄ«ts neliels pulkstenis."</string>
<string name="grid_title" msgid="1688173478777254123">"LietotĆu reĆŸÄŁis"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Lietot"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Pieskarieties, lai rediÄŁÄtu"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Pievienojiet savus iecienÄ«tos fontus visos ekrÄnos."</string>
<string name="grid_options_title" msgid="7071930966989877023">"ReĆŸÄŁa izmÄra izvÄle"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Mainot reĆŸÄŁa lielumu, tiks atkÄrtoti ielÄdÄta darbvieta, kas var ilgt daĆŸas sekundes."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Tiek atkÄrtoti ielÄdÄta darbvieta ar reĆŸÄŁi %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"NeizdevÄs atkÄrtoti ielÄdÄt darbvietu ar reĆŸÄŁi %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stils ir sekmīgi iestatīts"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Pulkstenis ir sekmīgi iestatīts"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ReĆŸÄŁis ir sekmÄ«gi iestatÄ«ts"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Saīsne pa kreisi"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Saīsne pa labi"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nav"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Lai atlasÄ«tu lietotni <xliff:g id="APPNAME">%1$s</xliff:g>, pÄrbaudiet tÄlÄk minÄto"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nevar pievienot saīsni"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"AtvÄrt lietotni <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Lai pievienotu lietotni <xliff:g id="APPNAME">%1$s</xliff:g> kÄ saÄ«sni, jÄbĆ«t izpildÄ«tiem tÄlÄk minÄtajiem nosacÄ«jumiem."</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gatavs"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nav"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"RÄdÄ«t paziĆojumus bloÄ·Äšanas ekrÄnÄ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"PaslÄpt paziĆojumus bloÄ·Äšanas ekrÄnÄ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Citas bloÄ·Äšanas ekrÄna opcijas"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"KonfidencialitÄte, funkcija “Tagad atskaĆo” un citi iestatÄ«jumi"</string>
<string name="more_colors" msgid="3191071655353004591">"Citas krÄsas"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"PrimÄrais dinamiskais motÄ«vs"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"PrimÄrais neitrÄlais motÄ«vs"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"PrimÄrais spilgtais motÄ«vs"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"PrimÄrais ekspresÄ«vais motÄ«vs"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"NoklusÄjuma krÄsas opcija"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g>. krÄsas opcija"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Velciet pa kreisi, lai izvÄlÄtos citu pulksteĆa ekrÄnu"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Velciet pa labi, lai izvÄlÄtos citu pulksteĆa ekrÄnu"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"PielÄgoti pulksteĆa ekrÄni"</string>
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 9375f88..a331714 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐŃĐžŃĐżĐŸŃĐŸĐ±Đ”Đœ ŃаŃĐŸĐČĐœĐžĐș"</string>
<string name="clock_description" msgid="3563839327378948">"ĐзбДŃĐ”ŃĐ” ĐżŃĐžŃĐżĐŸŃĐŸĐ±Đ”Đœ ŃаŃĐŸĐČĐœĐžĐș"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐŃĐŸĐŒĐ”ĐœĐ”ŃĐ” ĐłĐŸ ĐżŃĐžŃĐżĐŸŃĐŸĐ±Đ”ĐœĐžĐŸŃ ŃаŃĐŸĐČĐœĐžĐș"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐĐŸŃŃаĐČĐșĐž"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐĐżŃĐžŃа за Đ”ĐșŃĐ°Đœ ĐœĐ° ŃаŃĐŸĐČĐœĐžĐș <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐĐŸŃа Đž ĐłĐŸĐ»Đ”ĐŒĐžĐœĐ°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐĐŸŃа Đž ĐłĐŸĐ»Đ”ĐŒĐžĐœĐ°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐĐŸŃа"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"ĐĐžĐœĐ°ĐŒĐžŃĐœa"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ĐĐŸĐ»Đ”ĐŒĐžĐœĐ°Ńа ĐœĐ° ŃаŃĐŸĐČĐœĐžĐșĐŸŃ ŃĐ” ĐżŃĐŸĐŒĐ”ĐœŃĐČа ŃĐżĐŸŃДЎ ŃĐŸĐŽŃĐ¶ĐžĐœĐžŃĐ” ĐœĐ° заĐșĐ»ŃŃĐ”Đœ Đ”ĐșŃĐ°Đœ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐĐŸĐ»Đ”ĐŒĐ°"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"Đал"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"Đала"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐĐŸ Đ°ĐłĐŸĐ»ĐŸŃ ĐœĐ° Đ”ĐșŃĐ°ĐœĐŸŃ ŃĐ” ĐżŃĐžĐșажŃĐČа ĐŒĐ°Đ» ŃаŃĐŸĐČĐœĐžĐș"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐŃДжа"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐŃĐžĐŒĐ”ĐœĐž"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐĐŸĐżŃĐ”ŃĐ” за Ўа ĐžĐ·ĐŒĐ”ĐœĐžŃĐ”"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐĐŸĐŽĐ°ŃŃĐ” гО ĐŸĐŒĐžĐ»Đ”ĐœĐžŃĐ” ŃĐŸĐœŃĐŸĐČĐž ĐœĐ° ŃĐ”ĐșĐŸŃ Đ”ĐșŃĐ°Đœ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐзбДŃĐ”ŃĐ” ĐłĐŸĐ»Đ”ĐŒĐžĐœĐ° ĐœĐ° ŃĐ”ŃĐ”ŃĐșа"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐŃĐŸĐŒĐ”ĐœĐ°Ńа ĐœĐ° ĐłĐŸĐ»Đ”ĐŒĐžĐœĐ°Ńа ĐœĐ° ŃĐ”ŃĐ”ŃĐșаŃа паĐș ŃĐ” ĐłĐŸ ĐČŃĐžŃа ŃĐ°Đ±ĐŸŃĐœĐžĐŸŃ ĐżŃĐŸŃŃĐŸŃ Đž ĐŒĐŸĐ¶Đ” Ўа ĐżĐŸŃŃаД ĐœĐ”ĐșĐŸĐ»ĐșŃ ŃĐ”ĐșŃĐœĐŽĐž."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Đ Đ°Đ±ĐŸŃĐœĐžĐŸŃ ĐżŃĐŸŃŃĐŸŃ ŃĐ” ĐČŃĐžŃŃĐČа ĐżĐŸĐČŃĐŸŃĐœĐŸ ŃĐŸ ŃĐ”ŃĐ”ŃĐșаŃа %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Đ Đ°Đ±ĐŸŃĐœĐžĐŸŃ ĐżŃĐŸŃŃĐŸŃ ĐœĐ” ĐŒĐŸĐ¶Đ”ŃĐ” Ўа ŃĐ” ĐČŃĐžŃа ĐżĐŸĐČŃĐŸŃĐœĐŸ ŃĐŸ ŃĐ”ŃĐ”ŃĐșаŃа %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃĐžĐ»ĐŸŃ Đ” ŃŃпДŃĐœĐŸ ĐżĐŸŃŃаĐČĐ”Đœ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ЧаŃĐŸĐČĐœĐžĐșĐŸŃ Đ” ŃŃпДŃĐœĐŸ ĐżĐŸŃŃаĐČĐ”Đœ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐŃДжаŃа Đ” ŃŃпДŃĐœĐŸ ĐżĐŸŃŃаĐČĐ”ĐœĐ°"</string>
@@ -101,11 +106,11 @@
<string name="mode_title" msgid="2394873501427436055">"ĐąĐ”ĐŒĐœĐ° ŃĐ”ĐŒĐ°"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"ĐŃĐžĐČŃĐ”ĐŒĐ”ĐœĐŸ ĐŸĐœĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶Đ”ĐœĐŸ ĐżĐŸŃаЎО „ĐšŃДЎаŃĐŸŃ ĐœĐ° баŃĐ”ŃĐžŃа“"</string>
<string name="mode_changed" msgid="2243581369395418584">"ĐąĐ”ĐŒĐ°Ńа Đ” ĐżŃĐŸĐŒĐ”ĐœĐ”Ńа"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"ĐĐșĐŸĐœĐž ŃĐŸ ŃĐ”ĐŒĐ°"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"ĐąĐ”ĐŒĐ°ŃŃĐșĐž ĐžĐșĐŸĐœĐž"</string>
<string name="beta_title" msgid="8703819523760746458">"ĐĐ”Ńа"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ĐŃĐŸĐŒĐ”ĐœĐ”ŃĐ” Ńа ĐŒŃДжаŃа ĐœĐ° аплОĐșаŃОО"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"ĐĐŸĐž ĐŸĐŽ ŃапДŃĐŸŃ"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ĐĐșĐŸĐœĐž, ŃĐ”ĐșŃŃ Đž ĐżĐŸĐČĐ”ŃĐ” ŃĐŸĐČпаŃаŃĐșĐž Đ±ĐŸĐž ĐœĐ° ŃапДŃĐŸŃ"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ĐĐșĐŸĐœĐžŃĐ”, ŃĐ”ĐșŃŃĐŸŃ Đž ĐŽŃ. ŃĐ” ŃĐŸĐČпаŃĐ°Đ°Ń ĐżĐŸ Đ±ĐŸŃа ŃĐŸ ŃапДŃĐŸŃ"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"ĐĐŸŃа ĐœĐ° ŃапДŃ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"ĐŃĐœĐŸĐČĐœĐž Đ±ĐŸĐž"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ĐŃŃгО Đ±ĐŸĐž"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐĐ”ĐČа ĐșŃаŃĐ”ĐœĐșа"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐĐ”ŃĐœĐ° ĐșŃаŃĐ”ĐœĐșа"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐ”ĐŒĐ°"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Đа Ўа ОзбДŃĐ”ŃĐ” „<xliff:g id="APPNAME">%1$s</xliff:g>“, ĐżŃĐŸĐČĐ”ŃĐ”ŃĐ” ĐłĐŸ ŃĐ»Đ”ĐŽĐœĐŸĐČĐŸ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐĐ” ĐŒĐŸĐ¶Đ” Ўа ŃĐ” ĐŽĐŸĐŽĐ°ĐŽĐ” ĐșŃаŃĐ”ĐœĐșаŃа"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐŃĐČĐŸŃĐ”ŃĐ” Ńа <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Đа Ўа Ńа ĐŽĐŸĐŽĐ°ĐŽĐ”ŃĐ” аплОĐșаŃĐžŃаŃа <xliff:g id="APPNAME">%1$s</xliff:g> ĐșаĐșĐŸ ĐșŃаŃĐ”ĐœĐșа, ŃŃДба Ўа Đ±ĐžĐŽĐ°Ń ĐžŃĐżĐŸĐ»ĐœĐ”ŃĐž ŃĐ»Đ”ĐŽĐœĐžĐČĐ” ŃŃĐ»ĐŸĐČĐž"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐŸŃĐŸĐČĐŸ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐĐ”ĐŒĐ°"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐŃĐžĐșажŃĐČĐ°Ń ĐžĐ·ĐČĐ”ŃŃŃĐČаŃа ĐœĐ° заĐșĐ»ŃŃĐ”Đœ Đ”ĐșŃĐ°Đœ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐĄĐŸĐșŃĐžĐČĐ°Ń ĐžĐ·ĐČĐ”ŃŃŃĐČаŃа ĐœĐ° заĐșĐ»ŃŃĐ”Đœ Đ”ĐșŃĐ°Đœ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐĐŸĐČĐ”ŃĐ” ĐŸĐżŃОО за заĐșĐ»ŃŃĐ”Đœ Đ”ĐșŃĐ°Đœ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐŃĐžĐČаŃĐœĐŸŃŃ, Now Playing Đž ĐŽŃŃĐłĐŸ"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐĐŸĐČĐ”ŃĐ” Đ±ĐŸĐž"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐŃĐžĐŒĐ°ŃĐœĐ° ĐŽĐžĐœĐ°ĐŒĐžŃĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐŃĐžĐŒĐ°ŃĐœĐ° ĐœĐ”ŃŃŃĐ°Đ»ĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐŃĐžĐŒĐ°ŃĐœĐ° жОĐČĐŸĐżĐžŃĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐŃĐžĐŒĐ°ŃĐœĐ° Đ”ĐșŃĐżŃĐ”ŃĐžĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĄŃĐ°ĐœĐŽĐ°ŃĐŽĐœĐ° ĐŸĐżŃĐžŃа за Đ±ĐŸŃа"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐĐżŃĐžŃа за <xliff:g id="ID_1">%1$d</xliff:g> Đ±ĐŸŃа"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐĐŸĐČлДŃĐ”ŃĐ” ĐœĐ°Đ»Đ”ĐČĐŸ за Ўа ОзбДŃĐ”ŃĐ” ĐŽŃŃĐł Đ”ĐșŃĐ°Đœ ĐœĐ° ŃаŃĐŸĐČĐœĐžĐșĐŸŃ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐĐŸĐČлДŃĐ”ŃĐ” ĐœĐ°ĐŽĐ”ŃĐœĐŸ за Ўа ОзбДŃĐ”ŃĐ” ĐŽŃŃĐł Đ”ĐșŃĐ°Đœ ĐœĐ° ŃаŃĐŸĐČĐœĐžĐșĐŸŃ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐŃĐžŃĐżĐŸŃĐŸĐ±Đ”ĐœĐž ŃаŃĐŸĐČĐœĐžŃĐž"</string>
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index b5c9739..d97a0a0 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àŽàŽžà”àŽ±à”àŽ±àŽ àŽà”àŽČà”àŽà”àŽà”"</string>
<string name="clock_description" msgid="3563839327378948">"àŽàŽžà”àŽ±à”àŽ±àŽ àŽà”àŽČà”àŽà”àŽà” àŽ€àŽżàŽ°àŽà”àŽà”àŽà”àŽà”àŽà”"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àŽàŽ·à”àŽàŽŸàŽšà”àŽžà”àŽ€ àŽà”àŽČà”àŽà”àŽà” àŽźàŽŸàŽ±à”àŽ±à”"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àŽà”àŽČà”àŽà”àŽà” àŽžà”àŽ±à”àŽ±àŽżàŽàŽà”"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àŽà”àŽČà”àŽà”àŽà” àŽ«à”àŽŻà”àŽžà” àŽàŽȘà”àŽ·à”» <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àŽà”àŽČà”àŽà”àŽàŽżàŽšà”àŽ±à” àŽšàŽżàŽ±àŽ, àŽ”àŽČà”àŽȘà”àŽȘàŽ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àŽà”àŽČà”àŽà”àŽàŽżàŽšà”àŽ±à” àŽšàŽżàŽ±àŽ, àŽ”àŽČà”àŽȘà”àŽȘàŽ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àŽšàŽżàŽ±àŽ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àŽČà”àŽà”àŽà” àŽžà”àŽà”àŽ°à”à”» àŽàŽłà”àŽłàŽàŽà”àŽàŽ€à”àŽ€àŽżàŽšàŽšà”àŽžàŽ°àŽżàŽà”àŽà” àŽà”àŽČà”àŽà”àŽàŽżàŽšà”àŽ±à” àŽ”àŽČà”àŽȘà”àŽȘàŽ àŽźàŽŸàŽ±à”àŽšà”àŽšà”"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àŽ”àŽČà”àŽ€à”"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àŽà”àŽ±à”àŽ€à”"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àŽžà”àŽà”àŽ°à”àŽšàŽżàŽšà”àŽ±à” àŽźà”àŽČàŽŻàŽżà”œ àŽàŽ°à” àŽà”àŽ±àŽżàŽŻ àŽà”àŽČà”àŽà”àŽà” àŽàŽŸàŽŁàŽżàŽà”àŽà”àŽšà”àŽšà”"</string>
<string name="grid_title" msgid="1688173478777254123">"àŽàŽȘà”àŽȘà” àŽà”àŽ°àŽżàŽĄà”"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àŽȘà”àŽ°àŽŻà”àŽàŽżàŽà”àŽà”àŽ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àŽàŽĄàŽżàŽ±à”àŽ±à” àŽà”àŽŻà”àŽŻàŽŸà”» àŽàŽŸàŽȘà”àŽȘà” àŽà”àŽŻà”àŽŻà”àŽ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àŽàŽČà”àŽČàŽŸ àŽžà”àŽà”àŽ°à”àŽšàŽżàŽČà”àŽà”àŽà”àŽ àŽšàŽżàŽà”àŽàŽłà”àŽà” àŽȘà”àŽ°àŽżàŽŻàŽȘà”àŽȘà”àŽà”àŽ àŽ«à”àŽŁà”àŽà”àŽà”Ÿ àŽà”à”ŒàŽà”àŽà”àŽ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àŽà”àŽ°àŽżàŽĄà” àŽ”àŽČà”àŽȘà”àŽȘàŽ àŽ€àŽżàŽ°àŽà”àŽà”àŽà”àŽà”àŽà”àŽ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àŽà”àŽ°àŽżàŽĄà” àŽ”àŽČà”àŽȘà”àŽȘàŽ àŽźàŽŸàŽ±à”àŽ±à”àŽšà”àŽšàŽ€à” àŽ”à”ŒàŽà”àŽà”àŽžà”àŽȘà”àŽŻà”àŽžàŽżàŽšà” àŽ±à”àŽČà”àŽĄà” àŽà”àŽŻà”àŽ€à”àŽà”àŽàŽŸàŽ, àŽàŽ€àŽŸàŽšà”àŽ àŽžà”àŽà”àŽà”»àŽĄà”àŽà”Ÿ àŽžàŽźàŽŻàŽźà”àŽà”àŽà”àŽà”àŽàŽŻà”àŽ àŽà”àŽŻà”àŽŻà”àŽ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àŽà”àŽ°àŽżàŽĄà” àŽàŽȘàŽŻà”àŽàŽżàŽà”àŽà” àŽ”à”ŒàŽà”àŽà”àŽžà”àŽȘà”àŽŻà”àŽžà” àŽ±à”àŽČà”àŽĄà” àŽà”àŽŻà”àŽŻà”àŽšà”àŽšà”"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àŽà”àŽ°àŽżàŽĄà” àŽàŽȘàŽŻà”àŽàŽżàŽà”àŽà” àŽ”à”ŒàŽà”àŽà”àŽžà”àŽȘà”àŽŻà”àŽžà” àŽ±à”àŽČà”àŽĄà” àŽà”àŽŻà”àŽŻàŽŸàŽšàŽŸàŽŻàŽżàŽČà”àŽČ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àŽžà”àŽ±à”àŽ±à”à”œ àŽžàŽà”àŽà”àŽàŽ°àŽżàŽà”àŽà”"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àŽà”àŽČà”àŽà”àŽà” àŽžàŽà”àŽàŽźàŽŸàŽà”àŽàŽż"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àŽà”àŽ°àŽżàŽĄà” àŽžàŽà”àŽà”àŽàŽ°àŽżàŽà”àŽà”"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àŽàŽàŽ€à” àŽà”àŽ±à”àŽà”àŽà”àŽ”àŽŽàŽż"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àŽ”àŽČàŽ€à” àŽà”àŽ±à”àŽà”àŽà”àŽ”àŽŽàŽż"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àŽàŽšà”àŽšà”àŽźàŽżàŽČà”àŽČ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àŽ€àŽżàŽ°àŽà”àŽà”àŽà”àŽà”àŽàŽŸà”», àŽàŽšàŽżàŽȘà”àŽȘàŽ±àŽŻà”àŽšà”àŽšàŽ” àŽȘàŽ°àŽżàŽ¶à”àŽ§àŽżàŽà”àŽà”àŽ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àŽà”àŽ±à”àŽà”àŽà”àŽ”àŽŽàŽż àŽà”à”ŒàŽà”àŽàŽŸàŽšàŽŸàŽàŽżàŽČà”àŽČ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àŽ€à”àŽ±àŽà”àŽà”àŽ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"àŽà”àŽ±à”àŽà”àŽà”àŽ”àŽŽàŽżàŽŻàŽŸàŽŻàŽż <xliff:g id="APPNAME">%1$s</xliff:g> àŽàŽȘà”àŽȘà” àŽà”à”ŒàŽà”àŽàŽŸà”», àŽàŽšàŽżàŽȘà”àŽȘàŽ±àŽŻà”àŽšà”àŽš àŽàŽŸàŽ°à”àŽŻàŽà”àŽà”Ÿ àŽàޱàŽȘà”àŽȘàŽŸàŽà”àŽà”àŽ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àŽȘà”à”ŒàŽ€à”àŽ€àŽżàŽŻàŽŸàŽŻàŽż"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àŽàŽšà”àŽšà”àŽźàŽżàŽČà”àŽČ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŽČà”àŽà”àŽà” àŽžà”àŽà”àŽ°à”àŽšàŽżà”œ àŽ
àŽ±àŽżàŽŻàŽżàŽȘà”àŽȘà”àŽà”Ÿ àŽàŽŸàŽŁàŽżàŽà”àŽà”àŽ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àŽČà”àŽà”àŽà” àŽžà”àŽà”àŽ°à”àŽšàŽżà”œ àŽ
àŽ±àŽżàŽŻàŽżàŽȘà”àŽȘà”àŽà”Ÿ àŽźàŽ±àŽŻà”àŽà”àŽà”àŽ"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"àŽà”àŽà”àŽ€à”œ àŽČà”àŽà”àŽà” àŽžà”àŽà”àŽ°à”à”» àŽàŽȘà”àŽ·àŽšà”àŽà”Ÿ"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"àŽžà”àŽ”àŽàŽŸàŽ°à”àŽŻàŽ€, àŽàŽȘà”àŽȘà”à”Ÿ àŽà”à”ŸàŽà”àŽà”àŽšà”àŽšàŽ€à”, àŽàŽšà”àŽšàŽżàŽ”àŽŻà”àŽ àŽźàŽ±à”àŽ±à”àŽ"</string>
<string name="more_colors" msgid="3191071655353004591">"àŽà”àŽà”àŽ€à”œ àŽšàŽżàŽ±àŽà”àŽà”Ÿ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àŽȘà”àŽ°àŽŸàŽ„àŽźàŽżàŽ àŽĄà”àŽšàŽŸàŽźàŽżàŽà” àŽ€à”àŽ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àŽȘà”àŽ°àŽŸàŽ„àŽźàŽżàŽ àŽšà”àŽŻà”àŽà”àŽ°à”œ àŽ€à”àŽ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àŽȘà”àŽ°àŽŸàŽ„àŽźàŽżàŽ àŽ”à”àŽŹà”àŽ°àŽšà”àŽ±à” àŽ€à”àŽ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àŽȘà”àŽ°àŽŸàŽ„àŽźàŽżàŽ àŽàŽà”àŽžà”àŽȘà”àŽ°àŽžà”àŽ”à” àŽ€à”àŽ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àŽĄàŽżàŽ«à”à”ŸàŽà”àŽà” àŽ”à”ŒàŽŁà”àŽŁ àŽàŽȘà”àŽ·à”»"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àŽ”à”ŒàŽŁà”àŽŁ àŽàŽȘà”àŽ·à”» <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àŽźàŽ±à”àŽ±à”àŽ°à” àŽà”àŽČà”àŽà”àŽà” àŽ«à”àŽžà” àŽ€àŽżàŽ°àŽà”àŽà”àŽà”àŽà”àŽàŽŸà”» àŽàŽàŽ€à”àŽàŽŸàŽàŽ€à”àŽ€à”àŽà”àŽà” àŽžà”àŽ”à”àŽȘà”àŽȘà” àŽà”àŽŻà”àŽŻà”àŽ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àŽźàŽ±à”àŽ±à”àŽ°à” àŽà”àŽČà”àŽà”àŽà” àŽ«à”àŽžà” àŽ€àŽżàŽ°àŽà”àŽà”àŽà”àŽà”àŽàŽŸà”» àŽ”àŽČàŽ€à”àŽàŽŸàŽàŽ€à”àŽ€à”àŽà”àŽà” àŽžà”àŽ”à”àŽȘà”àŽȘà” àŽà”àŽŻà”àŽŻà”àŽ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àŽàŽ·à”àŽàŽŸàŽšà”àŽžà”àŽ€ àŽà”àŽČà”àŽà”àŽà”àŽà”Ÿ"</string>
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index ddf19e2..b2378bb 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐаŃ
ĐžĐ°Đ»ĐłĐ°Ń Ńаг"</string>
<string name="clock_description" msgid="3563839327378948">"ĐаŃ
ĐžĐ°Đ»ĐłĐ°Ń Ńаг ŃĐŸĐœĐłĐŸŃ
"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐаŃ
ĐžĐ°Đ»ĐłĐ°Ń ŃагОĐčĐł Ó©Ó©ŃŃлөŃ
"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐŠĐ°ĐłĐœŃ ŃĐŸŃ
ĐžŃĐłĐŸĐŸ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐŠĐ°ĐłĐœŃ ĐœÒŻÒŻŃĐœĐžĐč ŃĐŸĐœĐłĐŸĐ»Ń <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐŠĐ°ĐłĐœŃ Ó©ĐœĐłÓ©, Ń
ŃĐŒĐ¶ŃŃ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐŠĐ°ĐłĐœŃ Ó©ĐœĐłÓ©, Ń
ŃĐŒĐ¶ŃŃ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ÓšĐœĐłÓ©"</string>
@@ -37,9 +38,10 @@
<string name="clock_color_teal" msgid="7499223425741344251">"ĐŁŃĐ°Đœ ŃŃĐœŃ
ŃŃ"</string>
<string name="clock_size" msgid="5028923902364418263">"Đ„ŃĐŒĐ¶ŃŃ"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"ĐĐžĐœĐ°ĐŒĐžĐș"</string>
- <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ĐŠĐ°ĐłĐœŃ Ń
ŃĐŒĐ¶ŃŃ ĐœŃ ŃÒŻĐłĐ¶ĐžĐłĐŽŃŃĐœ ĐŽŃлгŃŃĐžĐčĐœ ĐșĐŸĐœŃĐ”ĐœŃĐŸĐŸŃ Ń
Đ°ĐŒĐ°Đ°ŃŃ Ó©Ó©ŃŃлөгЎЎөг"</string>
+ <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ĐŠĐ°ĐłĐœŃ Ń
ŃĐŒĐ¶ŃŃ ĐœŃ ŃÒŻĐłĐ¶ŃŃŃŃĐč ĐŽŃлгŃŃĐžĐčĐœ ĐșĐŸĐœŃĐ”ĐœŃĐŸĐŸŃ Ń
Đ°ĐŒĐ°Đ°ŃŃ Ó©Ó©ŃŃлөгЎЎөг"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐąĐŸĐŒ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐОжОг"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐąĐ°ĐœŃ ĐŽŃлгŃŃĐžĐčĐœ бŃĐ»Đ°ĐœĐŽ жОжОг Ńаг Ń
аŃŃŃлЎаг"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐппŃĐœ Ń
ÒŻŃĐœŃĐłŃ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐŃОглаŃ
"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐаŃаŃ
ŃĐœ ŃŃлЎ ŃĐŸĐČŃĐžĐœĐŸ ŃŃ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐŃлгŃŃ Đ±ÒŻŃĐŽ ĐŽŃŃŃаĐč ŃĐŸĐœŃĐŸĐŸ ĐœŃĐŒŃŃ
"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐąĐŸŃŃĐœ Ń
ŃĐŒĐ¶ŃŃĐł ŃĐŸĐœĐłĐŸŃ
"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Đ„ÒŻŃĐœŃĐłŃĐžĐčĐœ Ń
ŃĐŒĐ¶ŃŃĐł Ó©Ó©ŃŃлөŃ
ĐœŃ Đ°Đ¶Đ»ŃĐœ ŃалбаŃŃĐł ЎаŃ
ĐžĐœ аŃаалаŃ
ба Ń
ŃĐŽŃĐœ ŃĐ”ĐșŃĐœĐŽ заŃŃŃŃлж ĐŒĐ°ĐłĐ°ĐŽĐłÒŻĐč."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s-Đœ Ń
ÒŻŃĐœŃĐłŃŃŃŃ Đ°Đ¶Đ»ŃĐœ ŃалбаŃŃĐł ЎаŃ
ĐžĐœ аŃаалж баĐčĐœĐ°"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s-Đœ Ń
ÒŻŃĐœŃĐłŃŃŃŃ Đ°Đ¶Đ»ŃĐœ ŃалбаŃŃĐł ЎаŃ
ĐžĐœ аŃаалж ŃаЎŃĐ°ĐœĐłÒŻĐč"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐагĐČаŃŃĐł Đ°ĐŒĐ¶ĐžĐ»ŃŃаĐč ŃĐŸŃ
ĐžŃŃŃллаа"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ЊагОĐčĐł Đ°ĐŒĐ¶ĐžĐ»ŃŃаĐč ŃĐŸŃ
ĐžŃŃŃллаа"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐąĐŸŃŃĐł Đ°ĐŒĐ¶ĐžĐ»ŃŃаĐč ŃĐŸŃ
ĐžŃŃŃллаа"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐÒŻÒŻĐœ ŃĐŸĐČŃĐ»ĐŸĐ»"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐаŃŃŃĐœ ŃĐŸĐČŃĐ»ĐŸĐ»"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐаĐčŃ
ĐłÒŻĐč"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>`-Đł ŃĐŸĐœĐłĐŸŃ
ŃĐœ ŃŃлЎ ЎаŃааŃ
ŃĐł ŃĐ°Đ»ĐłĐ°ĐœĐ° ŃŃ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐąĐŸĐČŃĐ»ĐŸĐ»ŃĐł ĐœŃĐŒŃŃ
Đ±ĐŸĐ»ĐŸĐŒĐ¶ĐłÒŻĐč"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g>-Đł ĐœŃŃŃ
"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> аппŃĐł ŃĐŸĐČŃĐ»ĐŸĐ»ĐŸĐŸŃ ĐœŃĐŒŃŃ
ĐžĐčĐœ ŃŃлЎ ЎаŃааŃ
ŃĐł баŃалгаажŃŃĐ»ĐœĐ° ŃŃ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐŸĐ»ŃĐŸĐœ"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ĐąĐŸĐČŃĐ»ĐŸĐ»"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐаĐčŃ
ĐłÒŻĐč"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐąÒŻĐłĐ¶ĐžĐłĐŽŃŃĐœ ĐŽŃлгŃŃ ĐŽŃŃŃ ĐŒŃĐŽŃгЎлОĐčĐł Ń
аŃŃŃлаŃ
"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐąÒŻĐłĐ¶ĐžĐłĐŽŃŃĐœ ĐŽŃлгŃŃ ĐŽŃŃŃŃ
ĐŒŃĐŽŃĐłĐŽĐ»ÒŻÒŻĐŽĐžĐčĐł ĐœŃŃŃ
"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐąÒŻĐłĐ¶ŃŃŃŃĐč ĐŽŃлгŃŃ ĐŽŃŃŃ ĐŒŃĐŽŃгЎŃĐ» Ń
аŃŃŃлаŃ
"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐąÒŻĐłĐ¶ŃŃŃŃĐč ĐŽŃлгŃŃĐžĐčĐœ Ó©Ó©Ń ŃĐŸĐœĐłĐŸĐ»Ń"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐŃŃŃлал, Now Playing Đ±ĐŸĐ»ĐŸĐœ бŃŃаЎ"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐŃŃаЎ Ó©ĐœĐłÓ©"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ÒźĐœĐŽŃŃĐœ ĐŽĐžĐœĐ°ĐŒĐžĐș загĐČаŃ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ÒźĐœĐŽŃŃĐœ заĐČŃŃŃĐœ загĐČаŃ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ÒźĐœĐŽŃŃĐœ Ń
ŃŃŃ ŃĐŸĐŽ загĐČаŃ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ÒźĐœĐŽŃŃĐœ ОлŃŃŃ
ĐžĐčĐ»ŃĐ»ŃŃĐč загĐČаŃ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ÓšĐłÓ©ĐłĐŽĐŒÓ©Đ» Ó©ĐœĐłÓ©ĐœĐžĐč ŃĐŸĐœĐłĐŸĐ»Ń"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ÓšĐœĐłÓ©ĐœĐžĐč ŃĐŸĐœĐłĐŸĐ»Ń <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ÓšÓ©Ń ŃĐ°ĐłĐœŃ ĐœÒŻÒŻŃ ŃĐŸĐœĐłĐŸŃ
ŃĐœ ŃŃлЎ Đ·ÒŻÒŻĐœ ŃĐžĐčŃ ŃŃЎаŃĐœĐ° ŃŃ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ÓšÓ©Ń ŃĐ°ĐłĐœŃ ĐœÒŻÒŻŃ ŃĐŸĐœĐłĐŸŃ
ŃĐœ ŃŃлЎ баŃŃŃĐœ ŃĐžĐčŃ ŃŃЎаŃĐœĐ° ŃŃ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐаŃ
ĐžĐ°Đ»ĐłĐ°Ń ŃĐ°ĐłĐœŃŃĐŽ"</string>
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index fa9267d..0a7bd04 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"à€à€žà„à€à€ź à€à„à€Čà„à€"</string>
<string name="clock_description" msgid="3563839327378948">"à€à€žà„à€à€ź à€à„à€Čà„à€ à€šà€żà€”à€Ąà€Ÿ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"à€à€žà„à€à€ź à€à„à€Čà„à€ à€Źà€Šà€Čà€Ÿ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"à€à„à€Čà„à€ à€žà„à€à€żà€à€à„à€"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock à€à€Ÿ à€°à€à€ à€” à€à€à€Ÿà€°"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"à€à„à€Čà„à€ à€«à„à€ž à€Șà€°à„à€Żà€Ÿà€Ż <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Clock à€à€Ÿ à€°à€à€ à€” à€à€à€Ÿà€°"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"à€à€Ąà„à€Żà€Ÿà€łà€Ÿà€à€Ÿ à€°à€à€ à€” à€à€à€Ÿà€°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à€°à€à€"</string>
<string name="clock_color_red" msgid="3843504214807597810">"à€Čà€Ÿà€Č"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"à€Čà„à€ à€žà„à€à„à€°à„à€šà€”à€°à„à€Č à€à€¶à€Żà€Ÿà€šà„à€žà€Ÿà€° à€à€Ąà„à€Żà€Ÿà€łà€Ÿà€à€Ÿ à€à€à€Ÿà€° à€Źà€Šà€Čà„à€Č"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à€źà„à€ à€Ÿ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"à€à„à€à„"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à€€à„à€źà€à„à€Żà€Ÿ à€žà„à€à„à€°à„à€šà€à„à€Żà€Ÿ à€à„à€Șà€±à„à€Żà€Ÿà€źà€§à„à€Żà„ à€à€ à€Čà€čà€Ÿà€š à€à€Ąà„à€Żà€Ÿà€ł à€Šà€żà€žà€€à„"</string>
<string name="grid_title" msgid="1688173478777254123">"à„Čà€Ș à€à„à€°à€żà€Ą"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"à€Čà€Ÿà€à„ à€à€°à€Ÿ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à€žà€à€Șà€Ÿà€Šà€żà€€ à€à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„ à€à„
à€Ș à€à€°à€Ÿ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"à€Șà„à€°à€€à„à€Żà„à€ à€žà„à€à„à€°à„à€šà€”à€° à€€à„à€źà€à„ à€à€”à€Ąà€€à„ à€«à„à€à€ à€à„à€Ąà€Ÿ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à€à„à€°à€żà€Ąà€à€Ÿ à€à€à€Ÿà€° à€šà€żà€”à€Ąà€Ÿ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"à€à„à€°à€żà€Ąà€à€Ÿ à€à€à€Ÿà€° à€Źà€Šà€Čà„à€Żà€Ÿà€šà„ à€”à€°à„à€à€žà„à€Șà„à€ž à€°à„à€Čà„à€Ą à€čà„à€à€Č, à€Żà€Ÿà€Čà€Ÿ à€à€Ÿà€čà„ à€žà„à€à€à€Š à€Čà€Ÿà€à„ à€¶à€à€€à€Ÿà€€."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s à€à„à€°à€żà€Ą à€”à€Ÿà€Șà€°à„à€š à€”à€°à„à€à€žà„à€Șà„à€ž à€°à„à€Čà„à€Ą à€à€°à€€ à€à€čà„"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s à€à„à€°à€żà€Ą à€”à€Ÿà€Șà€°à„à€š à€”à€°à„à€à€žà„à€Șà„à€ž à€°à„à€Čà„à€Ą à€à€°à€€à€Ÿ à€à€Čà„ à€šà€Ÿà€čà„"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"à€¶à„à€Čà„ à€Żà€¶à€žà„à€”à„à€°à„à€€à„à€Żà€Ÿ à€žà„à€ à€à„à€Čà„"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"à€à„à€Čà„à€ à€Żà€¶à€žà„à€”à„à€°à„à€€à„à€Żà€Ÿ à€žà„à€ à€à„à€Čà„"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"à€à„à€°à€żà€Ą à€Żà€¶à€žà„à€”à„à€°à„à€€à„à€Żà€Ÿ à€žà„à€ à€à„à€Čà„"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à€Ąà€Ÿà€”à€Ÿ à€¶à„à€°à„à€à€à€"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à€à€à€”à€Ÿ à€¶à„à€°à„à€à€à€"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"à€à€Ÿà€čà„à€čà„ à€šà€Ÿà€čà„"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` à€šà€żà€”à€Ąà€Łà„à€Żà€Ÿà€žà€Ÿà€ à„ à€Șà„à€ąà„à€Č à€à„à€·à„à€à„ à€€à€Șà€Ÿà€žà€Ÿ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"à€¶à„à€°à„à€à€à€ à€à„à€Ąà„ à€¶à€à€€ à€šà€Ÿà€čà„"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> à€à€à€Ąà€Ÿ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> à€čà„ à€
à„
à€Ș à€¶à„à€°à„à€à€à€ à€źà„à€čà€Łà„à€š à€à„à€Ąà€Łà„à€Żà€Ÿà€žà€Ÿà€ à„, à€Șà„à€ąà„à€Č à€à„à€·à„à€à„à€à€à„ à€à€Ÿà€€à„à€°à„ à€à€°à€Ÿ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à€Șà„à€°à„à€Ł à€à€Ÿà€Čà„"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"à€à€Ÿà€čà„à€čà„ à€šà€Ÿà€čà„"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"à€Čà„à€ à€žà„à€à„à€°à„à€šà€”à€° à€žà„à€à€šà€Ÿ à€Šà€Ÿà€à€”à€Ÿ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à€Čà„à€ à€žà„à€à„à€°à„à€šà€”à€° à€žà„à€à€šà€Ÿ à€Čà€Șà€”à€Ÿ"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"à€à€Łà€à„ à€Čà„à€ à€žà„à€à„à€°à„à€š à€Șà€°à„à€Żà€Ÿà€Ż"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"à€à„à€Șà€šà„à€Żà€€à€Ÿ, Now Playing à€à€Łà€ż à€à€Łà€à„ à€Źà€°à„à€ à€à€Ÿà€čà„"</string>
<string name="more_colors" msgid="3191071655353004591">"à€à€Łà€à„ à€°à€à€"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"à€Șà„à€°à€Ÿà€„à€źà€żà€ à€Ąà€Ÿà€Żà€šà„
à€źà€żà€ à€„à„à€ź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"à€Șà„à€°à€Ÿà€„à€źà€żà€ à€šà„à€Żà„à€à„à€°à€Č à€„à„à€ź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"à€Șà„à€°à€Ÿà€„à€źà€żà€ à€à€à€°à„à€·à€ à€„à„à€ź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"à€Șà„à€°à€Ÿà€„à€źà€żà€ à€à€Ÿà€”à€Šà€°à„à€¶à„ à€„à„à€ź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"à€°à€à€à€Ÿà€à€Ÿ à€Ąà„à€«à„à€Čà„à€ à€Șà€°à„à€Żà€Ÿà€Ż"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> à€°à€à€à€Ÿà€à€Ÿ à€Șà€°à„à€Żà€Ÿà€Ż"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"à€”à„à€à€łà„ à€à„à€Čà„à€ à€«à„à€ž à€šà€żà€”à€Ąà€Łà„à€Żà€Ÿà€žà€Ÿà€ à„ à€Ąà€Ÿà€”à„à€à€Ąà„ à€žà„à€”à€Ÿà€à€Ș à€à€°à€Ÿ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"à€”à„à€à€łà„ à€à„à€Čà„à€ à€«à„à€ž à€šà€żà€”à€Ąà€Łà„à€Żà€Ÿà€žà€Ÿà€ à„ à€à€à€”à„à€à€Ąà„ à€žà„à€”à€Ÿà€à€Ș à€à€°à€Ÿ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à€à€žà„à€à€ź à€à„à€Čà„à€"</string>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 14c8592..ef807b1 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -17,12 +17,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="1647136562008520313">"Kertas dinding & gaya"</string>
+ <string name="app_name" msgid="1647136562008520313">"Hiasan latar & gaya"</string>
<string name="theme_title" msgid="2144932106319405101">"Gaya"</string>
<string name="clock_title" msgid="1974314575211361352">"Jam Tersuai"</string>
<string name="clock_description" msgid="3563839327378948">"Pilih jam tersuai"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Tukar jam tersuai"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Tetapan Jam"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Pilihan muka jam <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Warna & saiz jam"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Warna & saiz jam"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Warna"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Saiz jam berubah mengikut kandungan skrin kunci"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Besar"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Kecil"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil yang dipaparkan pada penjuru skrin anda"</string>
<string name="grid_title" msgid="1688173478777254123">"Grid apl"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Gunakan"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Ketik untuk edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Tambahkan fon kegemaran anda pada setiap skrin"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Pilih saiz grid"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Ruang kerja dimuatkan semula jika saiz grid diubah."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Memuatkan semula ruang kerja dengan grid %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Gagal memuatkan semula ruang kerja dengan grid %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Gaya berjaya ditetapkan"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Jam berjaya ditetapkan"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grid berjaya ditetapkan"</string>
@@ -104,7 +109,7 @@
<string name="themed_icon_title" msgid="7312460430471956558">"Ikon bertema"</string>
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Tukar grid apl"</string>
- <string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna kertas dinding"</string>
+ <string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna hiasan latar"</string>
<string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikon, teks dan pelbagai padanan warna pada hiasan latar"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Warna kertas dinding"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Warna asas"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Pintasan kiri"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Pintasan kanan"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Tiada"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Untuk memilih `<xliff:g id="APPNAME">%1$s</xliff:g>` semak perkara berikut"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Tidak dapat menambahkan pintasan"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Buka <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Untuk menambahkan apl <xliff:g id="APPNAME">%1$s</xliff:g> sebagai pintasan, pastikan"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Selesai"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Tiada"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Tunjukkan pemberitahuan pada skrin kunci"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sembunyikan pemberitahuan pada skrin kunci"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Lebih banyak pilihan skrin kunci"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privasi, Now Playing dan pelbagai lagi"</string>
<string name="more_colors" msgid="3191071655353004591">"Lagi Warna"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinamik utama"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutral utama"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema ceria utama"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema ekspresif utama"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Pilihan warna lalai"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Pilihan warna <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Leret ke kiri untuk memilih muka jam yang lain"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Leret ke kanan untuk memilih muka jam yang lain"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Jam Tersuai"</string>
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index a969545..c98d4e0 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"á
áááșááŒááŻááșááŹááź"</string>
<string name="clock_description" msgid="3563839327378948">"á
áááșááŒááŻááșááŹááźááœá±ážáá«"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"á
áááșááŒááŻááșááŹááź ááŒá±áŹááșážáááŻááșáááș"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ááŹááźáááșáááșáá»áŹáž"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ááŹááźáááŻááșááœááș ááœá±ážá
áᏠ<xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ááŹááźáĄáá±áŹááșá áĄááœááș"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ááŹááźáĄáá±áŹááșááŸáá·áșáĄááœááș"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>á <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"áĄáá±áŹááș"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"áá±áŹá·ááșáá»ááșááŸáŹááŒááș áĄááŒá±áŹááșážáĄááŹáĄáááŻááș ááŹááźáĄááœááșáĄá
áŹáž ááŒá±áŹááșážááČáááș"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ááŒáźáž"</string>
<string name="clock_size_small" msgid="2280449912094164133">"áá±áž"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ááá·áșáááșááŹážááŒááșáá±áŹáá·áșááœááș ááŒáááŹážáá±áŹ ááŹááźáĄáá±ážáá
áșááŻ"</string>
<string name="grid_title" msgid="1688173478777254123">"áĄááșááșáááŹáž"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"áĄááŻá¶ážááŒáŻáááș"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"áááșážááŒááșáááș áááŻá·áá«"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"áá»ááșááŸáŹááŒááșáááŻááșážááœááș ááá·áșáĄááŒááŻááșááŻá¶áž áá±áŹáá·áșáá»áŹáž ááá·áșáááș"</string>
<string name="grid_options_title" msgid="7071930966989877023">"áááŹážááœááșáĄááœááșáĄá
áŹážáá
áșáᯠááœá±ážáá«"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ááá
áșáĄááœááșáĄá
áŹážááŒá±áŹááșážááŒááșážáááș áĄááŻááșáá±ááŹááᯠááŒááșá
áááșá
á±ááŒáźáž á
ááčááá·áșáĄáááșážáááș ááŒáŹáááŻááșáááșá"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s ááá
áșááŒáá·áș áĄááŻááșáá±áᏠááŒááșáááșá
áááșáá±áááș"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s ááá
áșááŒáá·áș áĄááŻááșáá±áᏠááŒááșáááșá
áááșá áááá«"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ááŻá¶á
á¶ááᯠáĄá±áŹááșááŒááșá
áœáŹ áááșááŸááșááŒáźážáá«ááŒáź"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ááŹááźááᯠáĄá±áŹááșááŒááșá
áœáŹ áááșááŸááșááŒáźážáá«ááŒáź"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"áááŹážááœááșááᯠáĄá±áŹááșááŒááșá
áœáŹ áááșááŸááșááŒáźážáá«ááŒáź"</string>
@@ -101,11 +106,11 @@
<string name="mode_title" msgid="2394873501427436055">"áĄááŸá±áŹááșáá±áŹááșáá¶"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"‘áááșáááź áĄáŹážááááșáž’ ááŒá±áŹáá·áș ááŹááźááááșááŹážáááș"</string>
<string name="mode_changed" msgid="2243581369395418584">"áĄááŒááșáĄáááș ááŒá±áŹááșážáááŻááșáá«ááŒáź"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"áĄááŒááșáĄáááșááŻá¶áž áááșáčáá±ááá»áŹáž"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"áĄááŒá±áŹááșážáĄáᏠáááșáčáá±ááá»áŹáž"</string>
<string name="beta_title" msgid="8703819523760746458">"á
ááșážáááș"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"áĄááșááșáááŹáž ááŒá±áŹááșážáááș"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"áá±áŹááșáá¶áĄáá±áŹááșáá»áŹáž"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ááá·áșáá±áŹááșáá¶ááŸá áááșáčáá±áá á
áŹááŹážá áá±áŹááșáááșáá°ááźááá·áșáĄáá±áŹááș"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"áááșáčáá±áá á
áŹááŹážá
áááșáááŻá·áááș ááá·áșáá±áŹááșáá¶áĄáá±áŹááșáá»áŹážááŸáá·áș áááŻááșááźáááș"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"áá±áŹááșáá¶áĄáá±áŹááș"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"áĄááŒá±áá¶áĄáá±áŹááșáá»áŹáž"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"áĄááŒáŹážáĄáá±áŹááș"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"áááșááŒááșáááșážááá·áșááș"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ááŹááŒááșáááșážááá·áșááș"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"áááŸá"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` ááœá±ážáá»ááșáááș áĄá±áŹááșáá«áááŻá·ááᯠááŒáá·áșáá«"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ááŒááșáááșážááá·áșááș ááá·áșááááá«"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> ááœáá·áșáááș"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> áĄááșááșááᯠááŒááșáááșážááá·áșááșáĄááŒá
áș ááá·áșáááș áĄá±áŹááșáá«áááŻá·ááŸáá·áșáááŻááșááźááááș"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ááŒáźážááŒáź"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>á <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"áááŸá"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"áĄááŒá±áŹááșážááŒáŹážáá»ááșáá»áŹážááᯠáá±áŹá·ááșáá»ááșááŸáŹááŒááșááœááș ááŒáá«"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"áĄááŒá±áŹááșážááŒáŹážáá»ááșáá»áŹážááᯠáá±áŹá·ááșáá»ááșááŸáŹááŒááșááœááș áá»á±áŹááșááŹážáááș"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"áá±áŹááșáááș áá±áŹá·ááșáá»ááșááŸáŹááŒááș áááșážáááșážáá»áŹáž"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"áááŻááșáá±ážáĄáá»ááșáĄáááșááŻá¶ááŒáŻá¶ááŸáŻá Now Playing ááŸáá·áșáĄááŒáŹáž"</string>
<string name="more_colors" msgid="3191071655353004591">"áá±áŹááșáááșáĄáá±áŹááșáá»áŹáž"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"áá°á ááŒá±áŹááșážááČáááŻááșáá±áŹ áĄááŒááșáĄáááș"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"áá°á áááŻáááá·áș áĄááŒááșáĄáááș"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"áá°á á
ááŻááœááșáá±áŹ áĄááŒááșáĄáááș"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"áá°á áá¶á
áŹážááŸáŻáጠáĄááŒááșáĄáááș"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"áá°á áĄáá±áŹááșááœá±ážá
ááŹ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"áĄáá±áŹááșááœá±ážá
áᏠ<xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"áĄááŒáŹážááŹááźáááŻááșááœááșááœá±ážáááș áááșáááșáááŻá· ááœááșááœáČáá«"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"áĄááŒáŹážááŹááźáááŻááșááœááșááœá±ážáááș ááŹáááșáááŻá· ááœááșááœáČáá«"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"á
áááșááŒááŻááș ááŹááźáááŻááșááœááșáá»áŹáž"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index cdf7f7c..822e71a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Tilpasset klokke"</string>
<string name="clock_description" msgid="3563839327378948">"Velg en tilpasset klokke"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Endre en tilpasset klokke"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Klokkevalg"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Urskivealternativ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Farge og størrelse"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Farge og størrelse"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Farge"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Klokkens størrelse endres basert på innholdet på låseskjermen"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Stor"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Liten"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"En liten klokke vises i hjørnet av skjermen"</string>
<string name="grid_title" msgid="1688173478777254123">"Apprutenett"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Bruk"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Trykk for å endre"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Legg til favorittskrifttypen din på alle skjermer"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Velg rutenettstørrelse"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Endring av rutenettstørrelse laster inn arbeidsområdet på nytt, noe som kan ta noen sekunder."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Laster inn arbeidsområdet med rutenett på %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Kunne ikke laste inn arbeidsområdet med rutenett på %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stilen er angitt"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Klokken er angitt"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Rutenettet er angitt"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Venstre snarvei"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Høyre snarvei"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ingen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"For å velge «<xliff:g id="APPNAME">%1$s</xliff:g>», sjekk det følgende"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Kan ikke legge til snarveien"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Åpne <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"For å legge til <xliff:g id="APPNAME">%1$s</xliff:g>-appen som en snarvei må du sørge for at"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Ferdig"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ingen"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Vis varsler på låseskjermen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skjul varsler på låseskjermen"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Flere låseskjermalternativer"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Personvern, Spilles nå med mer"</string>
<string name="more_colors" msgid="3191071655353004591">"Flere farger"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Dynamisk primærtema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Nøytralt primærtema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Intenst primærtema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Uttrykksfullt primærtema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Standard fargealternativ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Fargealternativ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Sveip til venstre for å velge en annen urskive"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Sveip til høyre for å velge en annen urskive"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Tilpassede klokker"</string>
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 99d8675..70706bc 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"à€à€žà„à€à€ź à€à€Ąà„"</string>
<string name="clock_description" msgid="3563839327378948">"à€à€žà„à€à€ź à€à€Ąà„ à€à€Ÿà€šà„à€šà„…"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"à€à„à€šà„ à€à€žà„à€à€ź à€à€Ąà„ à€Șà€°à€żà€”à€°à„à€€à€š à€à€°à„à€šà„à€čà„à€žà„"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"à€à€Ąà„à€à€Ÿ à€žà„à€à€żà€"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"à€à€Ąà„à€à„ à€žà„à€à„à€°à€żà€šà€à„ à€Ąà€żà€à€Ÿà€à€šà€à„ à€”à€żà€à€Čà„à€Ș <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"à€à€Ąà„à€à„ à€°à€ à€° à€à€à€Ÿà€°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"à€à€Ąà„à€à„ à€°à€ à€° à€à€à€Ÿà€°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à€°à€"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"à€à€Ąà„à€à„ à€à€à€Ÿà€° à€Čà€ à€žà„à€à„à€°à€żà€šà€à„ à€žà€Ÿà€źà€à„à€°à„à€à€Ÿ à€à€§à€Ÿà€°à€źà€Ÿ à€Șà€°à€żà€”à€°à„à€€à€š à€čà„à€šà„à€"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à€ à„à€Čà„"</string>
<string name="clock_size_small" msgid="2280449912094164133">"à€žà€Ÿà€šà„"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à€€à€Șà€Ÿà€à€à€à„ à€žà„à€à„à€°à€żà€šà€à„ à€à„à€šà€Ÿà€źà€Ÿ à€žà€Ÿà€šà„ à€à€Ąà„ à€Šà„à€à€Ÿ à€Șà€°à„à€"</string>
<string name="grid_title" msgid="1688173478777254123">"à€à€Ș à€à„à€°à€żà€Ą"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"à€Čà€Ÿà€à„ à€à€°à„à€šà„à€čà„à€žà„"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à€žà€źà„à€Șà€Ÿà€Šà€š à€à€°à„à€š à€à„à€Żà€Ÿà€Ș à€à€°à„à€šà„à€čà„à€žà„"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"à€Șà„à€°à€€à„à€Żà„à€ à€žà„à€à„à€°à€żà€šà€źà€Ÿ à€à€«à„à€Čà€Ÿà€ à€źà€š à€Șà€°à„à€šà„ à€«à€šà„à€à€čà€°à„ à€„à€Șà„à€šà„à€čà„à€žà„"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à€à„à€°à€żà€Ąà€à„ à€à€à€Ÿà€° à€à€šà„à€ à€à€°à„à€šà„à€čà„à€žà„"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"à€€à€Șà€Ÿà€à€à€Čà„ à€à„à€°à€żà€Ąà€à„ à€à€à€Ÿà€° à€Șà€°à€żà€”à€°à„à€€à€š à€à€°à„à€šà„à€à€Żà„ à€à€šà„ à€”à€°à„à€à€žà„à€Șà„à€ž à€°à€żà€Čà„à€Ą à€čà„à€šà„à€ à€° à€°à€żà€Čà„à€Ą à€čà„à€š à€à„à€čà„ à€žà„à€à„à€šà„à€Ą à€Čà€Ÿà€à„à€š à€žà€à„à€à„€"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s à€à„à€°à€żà€Ą à€žà„à€ à€à€°à„à€° à€”à€°à„à€à€žà„à€Șà„à€ž à€Șà„à€šà€ à€Čà„à€Ą à€à€°à€żà€à€Šà„ à€"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s à€à„à€°à€żà€Ą à€žà„à€ à€à€°à€żà€à€à„ à€”à€°à„à€à€žà„à€Șà„à€ž à€°à€żà€Čà„à€Ą à€à€°à„à€š à€žà€à€żà€à€š"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"à€¶à„à€Čà„ à€žà€«à€Čà€€à€Ÿà€Șà„à€°à„à€”à€ à€žà„à€ à€à€°à€żà€Żà„"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"à€à€Ąà„ à€žà€«à€Čà€€à€Ÿà€Șà„à€°à„à€”à€ à€žà„à€ à€à€°à€żà€Żà„"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"à€à„à€°à€żà€Ą à€žà€«à€Čà€€à€Ÿà€Șà„à€°à„à€”à€ à€žà„à€ à€à€°à€żà€Żà„"</string>
@@ -90,7 +95,7 @@
<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>
- <string name="something_went_wrong" msgid="529840112449799117">"à€čà€€à„à€€à„à€°à€żà€à€Ÿ! à€à„à€čà„ à€à€żà€ à€à€Ąà€Źà€Ą à€à€Żà„à„€"</string>
+ <string name="something_went_wrong" msgid="529840112449799117">"à€čà€€à„à€€à„à€°à€żà€à€Ÿ! à€à„à€šà„ à€žà€źà€žà„à€Żà€Ÿ à€à€Żà„à„€"</string>
<string name="theme_preview_icons_section_title" msgid="7064768910744000643">"à€°à€ / à€à€à€à€šà€čà€°à„"</string>
<string name="style_info_description" msgid="2612473574431003251">"à€«à€šà„à€, à€à€à€à€š, à€à€Șà€à„ à€à€à„à€€à€ż à€° à€°à€à€à„ à€Șà„à€°à€żà€à„à€Żà„"</string>
<string name="accessibility_custom_font_title" msgid="966867359157303705">"à€à€«à„à€Čà„ à€°à„à€à„à€à„ à€«à€šà„à€"</string>
@@ -113,10 +118,10 @@
<string name="color_changed" msgid="7029571720331641235">"à€°à€ à€Źà€Šà€Čà€żà€Żà„"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"à€à€€à€żà€¶à„à€Č"</string>
<string name="color_picker_title" msgid="6666830057938082864">"à€žà€żà€žà„à€à€źà€à€Ÿ à€°à€à€čà€°à„"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à€Źà€Ÿà€Żà€Ÿà€à€à„ à€žà€°à„à€à€à€"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à€Šà€Ÿà€Żà€Ÿà€à€à„ à€žà€°à„à€à€à€"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à€Źà€Ÿà€Żà€Ÿà€ à€žà€°à„à€à€à€"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à€Šà€Ÿà€Żà€Ÿà€ à€žà€°à„à€à€à€"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"à€à„à€šà„ à€Șà€šà€ż à€čà„à€à€š"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" à€à€Żà€š à€à€°à„à€š à€€à€Č à€Šà€żà€à€à€à€Ÿ à€šà€żà€°à„à€Šà„à€¶à€šà€čà€°à„ à€Șà€Ÿà€Čà€šà€Ÿ à€à€°à„à€šà„à€čà„à€žà„"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"à€žà€°à„à€à€à€ à€žà€żà€°à„à€à€šà€Ÿ à€à€°à„à€š à€žà€à€żà€à€š"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> à€à„à€Čà„à€šà„à€čà„à€žà„"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> à€à€Șà€Čà€Ÿà€ à€žà€°à„à€à€à€à€à€Ÿ à€°à„à€Șà€źà€Ÿ à€čà€Ÿà€Čà„à€š, à€šà€żà€źà„à€š à€à„à€°à€Ÿ à€žà„à€šà€żà€¶à„à€à€żà€€ à€à€°à„à€šà„à€čà„à€žà„:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à€Șà„à€°à€Ÿ à€à€Żà„"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"à€à„à€šà„ à€Șà€šà€ż à€čà„à€à€š"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"à€Čà€ à€žà„à€à„à€°à€żà€šà€źà€Ÿ à€žà„à€à€šà€Ÿà€čà€°à„ à€Šà„à€à€Ÿà€à€à€šà„"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à€Čà€ à€žà„à€à„à€°à€żà€šà€źà€Ÿ à€žà„à€à€šà€Ÿà€čà€°à„ à€Čà„à€à€Ÿà€à€à€šà„"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"à€Čà€ à€žà„à€à„à€°à€żà€šà€žà€źà„à€Źà€šà„à€§à„ à€„à€Ș à€”à€żà€à€Čà„à€Șà€čà€°à„"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"à€à„à€Șà€šà„à€Żà€€à€Ÿ, Now Playing à€° à€
à€šà„à€Ż à€à„à€°à€Ÿà€čà€°à„"</string>
<string name="more_colors" msgid="3191071655353004591">"à€„à€Ș à€°à€à€čà€°à„"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€Ąà€Ÿà€à€šà€Ÿà€źà€żà€ à€„à€żà€ź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€šà„à€Żà„à€à„à€°à€Č à€„à€żà€ź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€à€Ÿà€à€Źà„à€°à„à€šà„à€ à€„à€żà€ź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"à€Șà„à€°à€Ÿà€à€źà€°à„ à€à€à„à€žà€Șà„à€°à„à€žà€żà€ à€„à€żà€ź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"à€°à€à€žà€źà„à€Źà€šà„à€§à„ à€Ąà€żà€«à€Čà„à€ à€”à€żà€à€Čà„à€Ș"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"à€°à€à€žà€źà„à€Źà€šà„à€§à„ à€”à€żà€à€Čà„à€Ș <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"à€à€Ąà„à€à„ à€žà„à€à„à€°à€żà€šà€à„ à€
à€°à„à€à„ à€Ąà€żà€à€Ÿà€à€š à€à€šà„à€ à€à€°à„à€š à€Źà€Ÿà€Żà€Ÿà€à€€à€żà€° à€žà„à€”à€Ÿà€à€Ș à€à€°à„à€šà„à€čà„à€žà„"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"à€à€Ąà„à€à„ à€žà„à€à„à€°à€żà€šà€à„ à€
à€°à„à€à„ à€Ąà€żà€à€Ÿà€à€š à€à€šà„à€ à€à€°à„à€š à€Šà€Ÿà€Żà€Ÿà€à€€à€żà€° à€žà„à€”à€Ÿà€à€Ș à€à€°à„à€šà„à€čà„à€žà„"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à€à€Ąà„à€à„ à€žà„à€à„à€°à€żà€šà€à€Ÿ à€à€žà„à€à€ź à€Ąà€żà€à€Ÿà€à€šà€čà€°à„"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 26bd072..f39a1c4 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -22,8 +22,9 @@
<string name="clock_title" msgid="1974314575211361352">"Aangepaste klok"</string>
<string name="clock_description" msgid="3563839327378948">"Klok kiezen"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Aangepaste klok wijzigen"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Klokinstellingen"</string>
- <string name="clock_color_and_size_title" msgid="7146791234905111351">"Kleur en grootte van klok"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Wijzerplaatoptie <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Kleur en grootte van klok"</string>
+ <string name="clock_color_and_size_title" msgid="7146791234905111351">"Kleur en formaat van klok"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Kleur"</string>
<string name="clock_color_red" msgid="3843504214807597810">"Rood"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Het formaat van de klok past zich aan de content van het vergrendelscherm aan"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Groot"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Klein"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Er staat een kleine klok in de hoek van je scherm"</string>
<string name="grid_title" msgid="1688173478777254123">"App-raster"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Toepassen"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tik om te bewerken"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Voeg je favoriete lettertypen toe aan elk scherm"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Een rastergrootte kiezen"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Als je de rastergrootte wijzigt, wordt de werkruimte opnieuw geladen. Dit kan een paar seconden duren."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Werkruimte opnieuw laden met %1$s raster"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Kan werkruimte niet opnieuw laden met %1$s raster"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stijl ingesteld"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Klok ingesteld"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Raster ingesteld"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Snelkoppeling links"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Snelkoppeling rechts"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Geen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Check het volgende als je <xliff:g id="APPNAME">%1$s</xliff:g> wilt selecteren"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Kan sneltoets niet toevoegen"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> openen"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Zorg voor het volgende om de <xliff:g id="APPNAME">%1$s</xliff:g>-app toe te voegen als snelkoppeling:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Klaar"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Geen"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Meldingen tonen op het vergrendelscherm"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Meldingen verbergen op het vergrendelscherm"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Meer schermvergrendelingsopties"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing en meer"</string>
<string name="more_colors" msgid="3191071655353004591">"Meer kleuren"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primair dynamisch thema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primair neutraal thema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primair levendig thema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primair expressief thema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Standaard kleuroptie"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Kleuroptie <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swipe naar links om een andere wijzerplaat te kiezen"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swipe naar rechts om een andere wijzerplaat te kiezen"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Aangepaste wijzerplaten"</string>
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index b18bcb3..64ca819 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -17,12 +17,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="1647136562008520313">"à±àŹŸàŹČàŹȘààŹȘàŹ°à àŹàŹŹàŹ àŹ·ààŹàŹŸàŹàŹČà"</string>
+ <string name="app_name" msgid="1647136562008520313">"à±àŹŸàŹČàŹȘààŹȘàŹ° àŹàŹŹàŹ àŹ·ààŹàŹŸàŹàŹČ"</string>
<string name="theme_title" msgid="2144932106319405101">"àŹ·ààŹàŹŸàŹàŹČà"</string>
<string name="clock_title" msgid="1974314575211361352">"àŹàŹ·ààŹàŹź àŹàŹŁààŹàŹŸ"</string>
<string name="clock_description" msgid="3563839327378948">"àŹàŹ·ààŹàŹź àŹàŹŁààŹàŹŸ àŹŹàŹŸàŹ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àŹàŹ àŹàŹ·ààŹàŹź àŹàŹŁààŹàŹŸàŹà àŹȘàŹ°àŹżàŹŹàŹ°ààŹ€ààŹ€àŹš àŹàŹ°àŹšààŹ€à"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àŹààŹČàŹ àŹžààŹàŹżàŹàŹž"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àŹàŹŁààŹàŹŸ àŹ«ààŹž àŹŹàŹżàŹàŹłààŹȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àŹàŹŁààŹàŹŸàŹ° àŹ°àŹààŹ àŹ àŹžàŹŸàŹàŹ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àŹàŹŁààŹàŹŸàŹ° àŹ°àŹààŹ àŹ àŹàŹàŹŸàŹ°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àŹ°àŹààŹ"</string>
@@ -40,7 +41,8 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àŹàŹŁààŹàŹŸàŹ° àŹàŹàŹŸàŹ° àŹČàŹ àŹžààŹààŹ°àŹżàŹšàŹ° àŹŹàŹżàŹ·ààŹŹàŹžààŹ€à àŹ
àŹšààŹžàŹŸàŹ°à àŹȘàŹ°àŹżàŹŹàŹ°ààŹ€ààŹ€àŹš àŹčààŹàŹ„àŹŸàŹ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àŹŹàŹĄàŹŒ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àŹààŹ"</string>
- <string name="grid_title" msgid="1688173478777254123">"àŹàŹȘà àŹààŹ°àŹżàŹĄà"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àŹàŹȘàŹŁàŹààŹ àŹžààŹààŹ°àŹżàŹšàŹ° àŹààŹŁàŹ°à àŹàŹ àŹààŹ àŹààŹČàŹ àŹŠààŹàŹŸàŹŻàŹŸàŹàŹàŹż"</string>
+ <string name="grid_title" msgid="1688173478777254123">"àŹàŹȘ àŹààŹ°àŹżàŹĄ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àŹȘààŹ°àààŹ àŹàŹ°àŹšààŹ€à"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àŹàŹĄàŹżàŹ àŹàŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹàŹ àŹàŹŸàŹȘ àŹàŹ°àŹšààŹ€à"</string>
<string name="keep_my_wallpaper" msgid="8012385376769568517">"àŹŹàŹ°ààŹ€ààŹ€àŹźàŹŸàŹšàŹ° à±àŹŸàŹČààŹȘààŹȘàŹ°ààŹà àŹ°àŹàŹšààŹ€à"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àŹàŹȘàŹŁàŹààŹ àŹȘàŹžàŹšààŹŠàŹ° àŹ«àŹŁààŹàŹà àŹȘààŹ°àŹ€ààààŹ àŹžààŹààŹ°àŹżàŹšààŹ°à àŹŻààŹ àŹàŹ°àŹšààŹ€à"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àŹàŹ àŹààŹ°àŹżàŹĄà àŹàŹàŹŸàŹ° àŹŹàŹŸàŹàŹšààŹ€à"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àŹààŹ°àŹżàŹĄàŹ° àŹàŹàŹŸàŹ° àŹȘàŹ°àŹżàŹŹàŹ°ààŹ€ààŹ€àŹš àŹàŹ°àŹżàŹŹàŹŸ à±àŹŸàŹ°ààŹàŹžààŹȘààŹžàŹà àŹȘààŹŁàŹż àŹČààŹĄ àŹàŹ°àŹżàŹŹ àŹàŹŹàŹ àŹàŹ„àŹżàŹȘàŹŸàŹàŹ àŹàŹżàŹàŹż àŹžààŹààŹŁààŹĄ àŹČàŹŸàŹàŹżàŹȘàŹŸàŹ°àà„€"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àŹààŹ°àŹżàŹĄ àŹžàŹčàŹżàŹ€ à±àŹŸàŹ°ààŹàŹžààŹȘààŹžàŹà àŹȘààŹŁàŹż àŹČààŹĄ àŹàŹ°àŹżàŹŹàŹŸ"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àŹààŹ°àŹżàŹĄ àŹžàŹčàŹżàŹ€ à±àŹŸàŹ°ààŹàŹžààŹȘààŹžàŹà àŹȘààŹŁàŹż àŹČààŹĄ àŹàŹ°àŹżàŹŹàŹŸàŹ°à àŹŹàŹżàŹ«àŹł àŹčààŹàŹàŹż"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àŹ·ààŹàŹŸàŹàŹČà àŹžàŹ«àŹłàŹ€àŹŸàŹ° àŹžàŹč àŹžààŹà àŹčààŹàŹàŹż"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àŹàŹŁààŹàŹŸ àŹžàŹ«àŹłàŹ€àŹŸàŹ° àŹžàŹč àŹžààŹà àŹčààŹàŹàŹż"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àŹààŹ°àŹżàŹĄà àŹžàŹ«àŹłàŹ€àŹŸàŹ° àŹžàŹč àŹžààŹà àŹčààŹàŹàŹż"</string>
@@ -101,7 +106,7 @@
<string name="mode_title" msgid="2394873501427436055">"àŹàŹŸàŹąàŹŒàŹŸ àŹ„àŹżàŹźà"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"àŹŹàààŹŸàŹààŹ°à àŹžààŹàʰà àŹŻààŹààŹ àŹ
àŹžààŹ„àŹŸàà àŹàŹŸàŹŹà àŹ
àŹààŹ·àŹź àŹàŹ°àŹŸàŹŻàŹŸàŹàŹàŹż"</string>
<string name="mode_changed" msgid="2243581369395418584">"àŹ„àŹżàŹź àŹȘàŹ°àŹżàŹŹàŹ°ààŹ€ààŹ€àŹš àŹàŹ°àŹŸàŹŻàŹŸàŹàŹàŹż"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"àŹ„àŹżàŹźà àŹŻààŹààŹ€ àŹàŹàŹàŹšà"</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"àŹ„àŹżàŹź àŹŻààŹààŹ€ àŹàŹàŹàŹš"</string>
<string name="beta_title" msgid="8703819523760746458">"àŹŹàŹżàŹàŹŸ"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"àŹàŹȘà àŹààŹ°àŹżàŹĄà àŹȘàŹ°àŹżàŹŹàŹ°ààŹ€ààŹ€àŹš àŹàŹ°àŹšààŹ€à"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"à±àŹŸàŹČàŹȘààŹȘàŹ° àŹ°àŹààŹàŹààŹĄàŹŒàŹżàŹ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àŹŹàŹŸàŹź àŹžàŹ°ààŹàŹàŹ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àŹĄàŹŸàŹčàŹŸàŹŁ àŹžàŹ°ààŹàŹàŹ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àŹàŹżàŹàŹż àŹšàŹŸàŹčàŹżàŹ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>`àŹà àŹààŹš àŹàŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹàŹ àŹšàŹżàŹźààŹšààŹààŹ€àŹà àŹŻàŹŸàŹààŹ àŹàŹ°àŹšààŹ€à"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àŹžàŹ°ààŹàŹàŹ àŹŻààŹ àŹàŹ°àŹŸàŹŻàŹŸàŹàŹȘàŹŸàŹ°àŹżàŹŹ àŹšàŹŸàŹčàŹżàŹ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àŹààŹČàŹšààŹ€à"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"àŹàŹ àŹžàŹ°ààŹàŹàŹ àŹàŹŸàŹŹà <xliff:g id="APPNAME">%1$s</xliff:g> àŹàŹȘ àŹŻààŹ àŹàŹ°àŹżàŹŹàŹŸàŹà, àŹàŹčàŹŸ àŹžààŹšàŹżàŹ¶ààŹàŹżàŹ€ àŹàŹ°àŹšààŹ€à"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àŹčààŹàŹàŹČàŹŸ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àŹàŹżàŹàŹż àŹšàŹŸàŹčàŹżàŹ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àŹČàŹ àŹžààŹààŹ°àŹżàŹšàŹ°à àŹŹàŹżàŹààŹàŹȘààŹ€àŹżàŹààŹĄàŹŒàŹżàŹà àŹŠààŹàŹŸàŹšààŹ€à"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àŹČàŹ àŹžààŹààŹ°àŹżàŹšàŹ°à àŹŹàŹżàŹààŹàŹȘààŹ€àŹżàŹààŹĄàŹŒàŹżàŹà àŹČààŹàŹŸàŹšààŹ€à"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àŹ
àŹ§àŹżàŹ àŹČàŹ àŹžààŹààŹ°àŹżàŹš àŹŹàŹżàŹàŹłààŹȘ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àŹààŹȘàŹšàààŹ€àŹŸ, àŹŹàŹ°ààŹ€ààŹ€àŹźàŹŸàŹš àŹȘààŹČà àŹčààŹàŹàŹż àŹàŹŹàŹ àŹàŹčààŹ°àŹż àŹ
àŹšààŹ àŹàŹżàŹàŹż"</string>
<string name="more_colors" msgid="3191071655353004591">"àŹ
àŹ§àŹżàŹ àŹ°àŹààŹ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àŹȘààŹ°àŹŸàŹ„àŹźàŹżàŹ àŹĄàŹŸàŹàŹšàŹŸàŹźàŹżàŹ àŹ„àŹżàŹź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àŹȘààŹ°àŹŸàŹ„àŹźàŹżàŹ àŹšààààŹààŹ°àŹŸàŹČ àŹ„àŹżàŹź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àŹȘààŹ°àŹŸàŹ„àŹźàŹżàŹ àŹàŹŸàŹàŹŹààŹ°àŹŸàŹŁààŹ àŹ„àŹżàŹź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àŹȘààŹ°àŹŸàŹ„àŹźàŹżàŹ àŹàŹààŹžàŹȘààŹ°ààŹžàŹżàŹ àŹ„àŹżàŹź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àŹĄàŹżàŹ«àŹČààŹ àŹ°àŹààŹàʰ àŹŹàŹżàŹàŹłààŹȘ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àŹ°àŹààŹàʰ àŹŹàŹżàŹàŹłààŹȘ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àŹàŹ àŹàŹżàŹšààŹš àŹààŹČàŹ àŹ«ààŹž àŹŹàŹŸàŹàŹżàŹŹàŹŸàŹà àŹŹàŹŸàŹźàŹà àŹžàà±àŹŸàŹàŹȘ àŹàŹ°àŹšààŹ€à"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àŹàŹ àŹàŹżàŹšààŹš àŹààŹČàŹ àŹ«ààŹž àŹŹàŹŸàŹàŹżàŹŹàŹŸàŹà àŹĄàŹŸàŹčàŹŸàŹŁàŹà àŹžàà±àŹŸàŹàŹȘ àŹàŹ°àŹšààŹ€à"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àŹààŹČàŹ àŹ«ààŹž àŹàŹ·ààŹàŹź àŹàŹ°àŹšààŹ€à"</string>
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index ed0e4f8..9efd3d6 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àš”àšżàšàšàš€à© àšà©à©"</string>
<string name="clock_description" msgid="3563839327378948">"àš”àšżàšàšàš€à© àšà©à© àšà©àšŁà©"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àš”àšżàšàšàš€à© àšà©à© àšŹàšŠàšČà©"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àšà©à© àšŠà©àšàš àšžà©àšàšżà©°àšàšŸàš"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àšà©à© àšŠà© àšĄàšŸàšàšČ àšŠàšŸ àš”àšżàšàšČàšȘ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àšà©à© àšŠàšŸ àš°à©°àš àš
àš€à© àšàšàšŸàš°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àšà©à© àšŠàšŸ àš°à©°àš àš
àš€à© àšàšàšŸàš°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àš°à©°àš"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"àšȘàš°àšżàš”àš°àš€àššàšžàšŒà©àšČ"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àšà©à© àšŠàšŸ àšàšàšŸàš° àšČàšŸàš àšžàšà©àš°à©àšš àšŠà© àšžàšźà©±àšàš°à© àšźà©àš€àšŸàšŹàš àšŹàšŠàšČàšŠàšŸ àščà©"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àš”à©±àšĄàšŸ"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"àšà©àšàšŸ àšàš°à©"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"àšà©àšàšŸ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àš€à©àščàšŸàšĄà© àšžàšà©àš°à©àšš àšŠà© àšà©àššà© \'àš€à© àšà©±àš àšà©àšà© àšà©à© àšŠàšżàšàšŸàš àšŠàšżà©°àšŠà© àščà©"</string>
<string name="grid_title" msgid="1688173478777254123">"àšàšȘ àšà©àš°àšżàšĄ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àšČàšŸàšà© àšàš°à©"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àšžà©°àšȘàšŸàšŠàšš àšàš°àšš àšČàš àšà©àšȘ àšàš°à©"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, àš«àšżàšČàščàšŸàšČ àšȘà©àš°àš”-àšàšČàš àšŠà©àšà© àšàš"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, àšàšž àš”àšżàšàšČàšȘ àššà©à©° àšŹàšŠàšČà© àšàšżàšž àššà©à©° àšà©àšŁàšżàš àšàšżàš àš
àš€à© àšàšżàšž àšŠà© àšȘà©àš°àš”-àšàšČàš àšŠà©àšà© àšàš àščà©"</string>
<string name="theme_description" msgid="3697012391785254635">"àš«à©àšàš: <xliff:g id="ID_1">%1$s</xliff:g>, àšȘà©àš°àš€à©àš: <xliff:g id="ID_2">%2$s</xliff:g>, àšàšà©àš°àšżàš€à©: <xliff:g id="ID_3">%3$s</xliff:g>, àš°à©°àš: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"àšȘà©àš°àš”-àššàšżàš°àš§àšŸàš°àš€"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"àšȘà©àš°àš”-àššàšżàš°àš§àšŸàš°àšżàš€"</string>
<string name="preview_name_font" msgid="4465423899630037038">"àš«à©àšàš"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"àšȘà©àš°àš€à©àš"</string>
<string name="preview_name_color" msgid="8776203144994416172">"àš°à©°àš"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àščàš° àšžàšà©àš°à©àšš \'àš€à© àšàšȘàšŁà© àšźàššàšȘàšžà©°àšŠ àš«à©àšàš àšžàšŒàšŸàšźàšČ àšàš°à©"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àšà©àš°àšżàšĄ àšŠàšŸ àšàšàšŸàš° àšà©àšŁà©"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àšàš°àšżà©±àšĄ àšŠàšŸ àšàšàšŸàš° àšŹàšŠàšČàšŁ àššàšŸàšČ àš”àš°àšàšžàšȘà©àšž àš°à©àšČà©àšĄ àščà©àšŁ àš”àšżà©±àš àšà©àš àšžàšźàšŸàš àšČà©±àš àšžàšàšŠàšŸ àščà©à„€"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àšàš°àšżà©±àšĄ àššàšŸàšČ àš”àš°àšàšžàšȘà©àšž àššà©à©° àš°à©àšČà©àšĄ àšà©àš€àšŸ àšàšŸ àš°àšżàščàšŸ àščà©"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àšàš°àšżà©±àšĄ àššàšŸàšČ àš”àš°àšàšžàšȘà©àšž àššà©à©° àš°à©àšČà©àšĄ àšàš°àššàšŸ àš
àšžàš«àšČ àš°àšżàščàšŸ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àšžàšàšŸàšàšČ àšžàš«àšČàš€àšŸàšȘà©àš°àš”àš àšžà©à©±àš àšà©àš€àšŸ àšàšżàš"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àšà©à© àšžàš«àšČàš€àšŸàšȘà©àš°àš”àš àšžà©à©±àš àšà©àš€à© àšàš"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àšà©àš°àšżàšĄ àšžàš«àšČàš€àšŸàšȘà©àš°àš”àš àšžà©à©±àš àšà©àš€àšŸ àšàšżàš"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àšà©±àšŹàšŸ àšžàšŒàšŸàš°àšàšà©±àš"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àšžà©±àšàšŸ àšžàšŒàšŸàš°àšàšà©±àš"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àšà©àš àššàščà©àš"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àššà©à©° àšà©àšŁàšš àšČàš, àščà©àš àšŸàš àšŠàšżà©±àš€à©àšàš àščàšżàšŠàšŸàšàš€àšŸàš àšŠà© àšȘàšŸàšČàšŁàšŸ àšàš°à©"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àšžàšŒàšŸàš°àšàšà©±àš àšžàšŒàšŸàšźàšČ àššàščà©àš àšà©àš€àšŸ àšàšŸ àšžàšàšŠàšŸ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àšà©àšČà©àščà©"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> àšàšȘ àššà©à©° àšžàšŒàšŸàš°àšàšà©±àš àš”àšà©àš àšžàšŒàšŸàšźàšČ àšàš°àšš àšČàš, àšȘੱàšàšŸ àšàš°à© àšàšż"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àščà© àšàšżàš"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àšà©àš àššàščà©àš"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àšČàšŸàš àšžàšà©àš°à©àšš \'àš€à© àšžà©àšàššàšŸàš”àšŸàš àšŠàšżàšàšŸàš"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àšČàšŸàš àšžàšà©àš°à©àšš \'àš€à© àšžà©àšàššàšŸàš”àšŸàš àšČà©àšàšŸàš"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àščà©àš° àšČàšŸàš àšžàšà©àš°à©àšš àš”àšżàšàšČàšȘ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àšȘàš°àšŠà©àšŠàšŸàš°à©, Now Playing àš
àš€à© àščà©àš°"</string>
<string name="more_colors" msgid="3191071655353004591">"àščà©àš° àš°à©°àš"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àšȘà©àš°àšŸàšàšźàš°à© àšȘàš°àšżàš”àš°àš€àššàšžàšŒà©àšČ àš„à©àšź"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àšȘà©àš°àšŸàšàšźàš°à© àššàšżàš°àšȘà©±àš àš„à©àšź"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àšȘà©àš°àšŸàšàšźàš°à© àš”àšŸàšàšŹàš°à©àšàš àš„à©àšź"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àšȘà©àš°àšŸàšàšźàš°à© àšàšŸàš”àšȘà©àš°àšš àš„à©àšź"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àš°à©°àš àšŠàšŸ àšȘà©àš°àš”-àššàšżàš°àš§àšŸàš°àšżàš€ àš”àšżàšàšČàšȘ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àš°à©°àš àšŠàšŸ àš”àšżàšàšČàšȘ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àšà©àš àš”à©±àšàš°àšŸ àšà©à© àšŠàšŸ àšĄàšŸàšàšČ àšà©àšŁàšš àšČàš àšà©±àšŹà© àšȘàšŸàšžà© àš”à©±àšČ àšžàš”àšŸàšàšȘ àšàš°à©"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àšà©àš àš”à©±àšàš°àšŸ àšà©à© àšŠàšŸ àšĄàšŸàšàšČ àšà©àšŁàšš àšČàš àšžà©±àšà© àšȘàšŸàšžà© àš”à©±àšČ àšžàš”àšŸàšàšȘ àšàš°à©"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àš”àšżàšàšàš€àšŹà©±àš§ àšà©à©àšàš"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f67f187..2c31419 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"WĆasny zegar"</string>
<string name="clock_description" msgid="3563839327378948">"Wybierz wĆasny zegar"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ZmieĆ wĆasny zegar"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Ustawienia zegara"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opcja tarczy zegarka: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Kolor i rozmiar zegara"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Kolor i rozmiar zegara"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Kolor"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Rozmiar zegara zmienia siÄ w zaleĆŒnoĆci od zawartoĆci ekranu blokady"</string>
<string name="clock_size_large" msgid="3143248715744138979">"DuĆŒy"</string>
<string name="clock_size_small" msgid="2280449912094164133">"MaĆy"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"MaĆy zegar wyĆwietlany w rogu ekranu"</string>
<string name="grid_title" msgid="1688173478777254123">"Siatka aplikacji"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Zastosuj"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Kliknij, by edytowaÄ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Dodaj swoje ulubione czcionki do kaĆŒdego ekranu"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Wybierz rozmiar siatki"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Zmiana rozmiaru siatki spowoduje ponowne zaĆadowanie obszaru roboczego. MoĆŒe to zajÄ
Ä kilka sekund."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ponowne Ćadowanie obszaru roboczego z siatkÄ
%1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nie udaĆo siÄ ponownie zaĆadowaÄ obszaru roboczego z siatkÄ
%1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Styl zostaĆ ustawiony"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Zegar zostaĆ ustawiony"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Siatka zostaĆa ustawiona"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Lewy skrót"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Prawy skrót"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Brak"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Aby wybraÄ opcjÄ „<xliff:g id="APPNAME">%1$s</xliff:g>”, wykonaj te czynnoĆci"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nie udaĆo siÄ dodaÄ skrótu"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otwórz: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Aby dodaÄ aplikacjÄ <xliff:g id="APPNAME">%1$s</xliff:g> jako skrót, upewnij siÄ, ĆŒe speĆnione zostaĆy te warunki:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gotowe"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Brak"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Pokazuj powiadomienia na ekranie blokady"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ukrywaj powiadomienia na ekranie blokady"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"WiÄcej opcji ekranu blokady"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"PrywatnoĆÄ, Co jest grane i inne ustawienia"</string>
<string name="more_colors" msgid="3191071655353004591">"WiÄcej kolorów"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"GĆówny motyw dynamiczny"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"GĆówny motyw neutralny"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"GĆówny motyw barwny"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"GĆówny motyw ekspresyjny"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"DomyĆlna opcja koloru"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opcja koloru <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"PrzesuĆ w lewo, aby wybraÄ innÄ
tarczÄ zegara"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"PrzesuĆ w prawo, aby wybraÄ innÄ
tarczÄ zegara"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Zegary niestandardowe"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 8de02c3..80d3581 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Relógio person."</string>
<string name="clock_description" msgid="3563839327378948">"Escolha rel. pers."</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Altere um relógio personalizado"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Def. do Relógio"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opção de mostrador <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Cor/tamanho relógio"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Cor/tamanho relógio"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Cor"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"O tamanho do relógio muda de acordo com o conteúdo do ecrã de bloqueio"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pequeno"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Um pequeno relógio é apresentado no canto do ecrã"</string>
<string name="grid_title" msgid="1688173478777254123">"Grelha de apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toque para editar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Adicione os seus tipos de letra favoritos a todos os ecrãs."</string>
<string name="grid_options_title" msgid="7071930966989877023">"Escolha um tamanho de grelha"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Mudar tam. grelha atualiza o esp. trab. e pode demorar algum tempo."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"A atualizar o espaço de trabalho com a grelha %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Não foi possível atualizar o espaço de trabalho com a grelha %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Estilo definido com êxito."</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Relógio definido com êxito."</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grelha definida com êxito."</string>
@@ -85,8 +90,8 @@
<string name="delete_custom_theme_button" msgid="5102462988130208824">"Eliminar"</string>
<string name="cancel" msgid="4651030493668562067">"Cancelar"</string>
<string name="set_theme_wallpaper_dialog_message" msgid="2179661027350908003">"Defina a imagem de fundo do estilo"</string>
- <string name="use_style_instead_title" msgid="1578754995763917502">"Pretende utilizar <xliff:g id="ID_1">%1$s</xliff:g>?"</string>
- <string name="use_style_instead_body" msgid="3051937045807471496">"Os componentes que escolheu correspondem ao estilo <xliff:g id="ID_1">%1$s</xliff:g>. Em vez disso, pretende utilizar <xliff:g id="ID_2">%1$s</xliff:g>?"</string>
+ <string name="use_style_instead_title" msgid="1578754995763917502">"Quer utilizar <xliff:g id="ID_1">%1$s</xliff:g>?"</string>
+ <string name="use_style_instead_body" msgid="3051937045807471496">"Os componentes que escolheu correspondem ao estilo <xliff:g id="ID_1">%1$s</xliff:g>. Em vez disso, quer utilizar <xliff:g id="ID_2">%1$s</xliff:g>?"</string>
<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, 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>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Altere a grelha de apps"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores imag. de fundo"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto, etc. condizem c/ cores da imag. de fundo"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto, etc. condizem com a imagem de fundo"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Cor da imagem de fundo"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Outras cores"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atalho esquerdo"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atalho direito"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nenhum"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para selecionar \"<xliff:g id="APPNAME">%1$s</xliff:g>\", verifique o seguinte"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Não é possível adicionar o atalho"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para adicionar a app <xliff:g id="APPNAME">%1$s</xliff:g> como um atalho, garanta"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Concluído"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nenhum"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostre as notificações no ecrã de bloqueio"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Oculte as notificações no ecrã de bloqueio"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Mais opções do ecrã de bloqueio"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidade, A reproduzir e muito mais"</string>
<string name="more_colors" msgid="3191071655353004591">"Mais cores"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinâmico principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutro principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema vibrante principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expressivo principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opção de cor predefinida"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opção de cor <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Deslizar rapidamente para a esquerda para escolher um mostrador diferente"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Deslizar rapidamente para a direita para escolher um mostrador diferente"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Relógios personalizados"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index a5a3ba8..0250429 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Relógio personalizado"</string>
<string name="clock_description" msgid="3563839327378948">"Escolha um relógio personalizado"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Edite um relógio personalizado"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Configurações do Relógio"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opção de aparência do relógio: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Cor/tam. do relógio"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Cor e tamanho do relógio"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Cor"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"O tamanho do relógio muda de acordo com o conteúdo na tela de bloqueio"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Pequeno"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Um relógio pequeno aparece no canto da tela"</string>
<string name="grid_title" msgid="1688173478777254123">"Grade de apps"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Toque para editar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Adicione suas fontes favoritas a cada tela"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Escolha o tamanho da grade"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"A mudança do tamanho da grade recarrega o espaço de trabalho e pode levar alguns segundos."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Recarregando o espaço de trabalho com uma grade %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Falha ao recarregar o espaço de trabalho com uma grade %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Estilo definido"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Relógio definido"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grade definida"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Mudar a grade de apps"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores do plano de fundo"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto e mais cores que combinam com o plano de fundo"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto e mais para combinar com o plano de fundo"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Cor do plano de fundo"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Outras cores"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atalho à esquerda"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atalho à direita"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nenhum"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para selecionar o app <xliff:g id="APPNAME">%1$s</xliff:g>, marque a opção a seguir"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Não é possível adicionar o atalho"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para adicionar o app <xliff:g id="APPNAME">%1$s</xliff:g> como um atalho, confira se"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Concluído"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nenhum"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificações na tela de bloqueio"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ocultar notificações na tela de bloqueio"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Mais opções da tela de bloqueio"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privacidade, Tocando agora e muito mais"</string>
<string name="more_colors" msgid="3191071655353004591">"Mais cores"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinâmico principal"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema neutro principal"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema vibrante principal"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema expressivo principal"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opção de cor padrão"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opção de cor <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Deslize para a esquerda para escolher outro mostrador do relógio"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Deslize para a direita para escolher outro mostrador do relógio"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Mostradores personalizados"</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index c0cecf4..77efaf6 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Ecran personalizat"</string>
<string name="clock_description" msgid="3563839327378948">"Alege un ecran personalizat"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ModificÄ un ecran personalizat"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"SetÄri pentru ceas"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"OpÈiune privind aspectul ceasului <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Culoare / mÄrime"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Culoare / dimensiune"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Culoare"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"DinamicÄ"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Dimensiunea ceasului se schimbÄ în funcÈie de conÈinutul ecranului de blocare"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Mare"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"Mic"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"MicÄ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Un ceas mic apare în colÈul ecranului"</string>
<string name="grid_title" msgid="1688173478777254123">"GrilÄ aplicaÈii"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"AplicÄ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Atinge pentru a modifica"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"AdaugÄ fonturile preferate pe fiecare ecran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Alege o dimensiune de grilÄ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Schimbarea dimensiunii grilei va reîncÄrca spaÈiul de lucru Èi poate dura câteva secunde."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Se reîncarcÄ spaÈiul de lucru cu grila %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nu s-a reîncÄrcat spaÈiul de lucru cu grila %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stilul a fost setat"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Ceasul a fost setat"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Grila a fost setatÄ"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"Beta"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"SchimbÄ grila de aplicaÈii"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"Culori de fundal"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Culori pentru pictograme, text Èi altele din imaginea de fundal"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Culori pictograme, text etc. asortate cu imaginea de fundal"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"Culoarea imaginii de fundal"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Culori de bazÄ"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Alte culori"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Comanda rapidÄ stânga"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Comanda rapidÄ dreapta"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"FÄrÄ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Ca sÄ selectezi <xliff:g id="APPNAME">%1$s</xliff:g>, urmeazÄ aceste instrucÈiuni"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Nu se poate adÄuga comanda rapidÄ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Deschide <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Pentru a adÄuga aplicaÈia <xliff:g id="APPNAME">%1$s</xliff:g> drept comandÄ rapidÄ, asigurÄ-te"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Gata"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Niciunul"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"AfiÈeazÄ notificÄrile pe ecranul de blocare"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ascunde notificÄrile pe ecranul de blocare"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Alte opÈiuni pentru ecranul de blocare"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ConfidenÈialitate, Now Playing Èi altele"</string>
<string name="more_colors" msgid="3191071655353004591">"Mai multe culori"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"TemÄ dinamicÄ principalÄ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"TemÄ neutrÄ principalÄ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"TemÄ vibrantÄ principalÄ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"TemÄ expresivÄ principalÄ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"OpÈiune de culoare prestabilitÄ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"OpÈiunea de culoare <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"GliseazÄ spre stânga ca sÄ alegi alt aspect de ceas"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"GliseazÄ spre dreapta ca sÄ alegi alt aspect de ceas"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Ceasuri personalizate"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index c20c1a2..e9e7c58 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐаŃŃŃ. ŃĐžŃĐ”Ńбл."</string>
<string name="clock_description" msgid="3563839327378948">"ĐŃбДŃ. ŃĐžŃĐ”Ńбл."</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐŃбДŃĐžŃĐ” ĐœĐ°ŃŃŃаОĐČĐ°Đ”ĐŒŃĐč ŃĐžŃĐ”ŃблаŃ."</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐаŃŃŃĐŸĐčĐșĐž ŃаŃĐŸĐČ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐŠĐžŃĐ”ŃблаŃ, ĐČаŃĐžĐ°ĐœŃ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐŠĐČĐ”Ń Đž ŃĐ°Đ·ĐŒĐ”Ń ŃаŃĐŸĐČ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐŠĐČĐ”Ń Đž ŃĐ°Đ·ĐŒĐ”Ń ŃаŃĐŸĐČ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>."</string>
<string name="clock_color" msgid="8081608867289156163">"ĐŠĐČĐ”Ń"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Đ Đ°Đ·ĐŒĐ”Ń ŃаŃĐŸĐČ ĐŒĐ”ĐœŃĐ”ŃŃŃ ĐČ Đ·Đ°ĐČĐžŃĐžĐŒĐŸŃŃĐž ĐŸŃ ĐșĐŸĐœŃĐ”ĐœŃа ĐœĐ° Đ·Đ°Đ±Đ»ĐŸĐșĐžŃĐŸĐČĐ°ĐœĐœĐŸĐŒ ŃĐșŃĐ°ĐœĐ”"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐĐŸĐ»ŃŃĐŸĐč"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐĐ°Đ»Đ”ĐœŃĐșĐžĐč"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐĐ”Đ±ĐŸĐ»ŃŃОД ŃаŃŃ ĐČ ŃĐłĐ»Ń ŃĐșŃĐ°ĐœĐ°"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐĄĐ”ŃĐșа ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐč"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐŃĐžĐŒĐ”ĐœĐžŃŃ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐĐ°Đ¶ĐŒĐžŃĐ”, ŃŃĐŸĐ±Ń ĐžĐ·ĐŒĐ”ĐœĐžŃŃ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐĐŸĐ±Đ°ĐČŃŃĐ” Đ»ŃĐ±ĐžĐŒŃĐ” ŃŃĐžŃŃŃ ĐœĐ° ĐșажЎŃĐč ŃĐșŃĐ°Đœ."</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐŃбДŃĐžŃĐ” ŃĐ°Đ·ĐŒĐ”Ń ŃĐ”ŃĐșĐž"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐŃĐž ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžĐž ŃĐ°Đ·ĐŒĐ”Ńа ŃĐ”ŃĐșĐž ŃĐ°Đ±ĐŸŃĐ°Ń ĐŸĐ±Đ»Đ°ŃŃŃ ĐŸĐ±ĐœĐŸĐČĐ»ŃĐ”ŃŃŃ. ĐŃĐŸ ĐŒĐŸĐ¶Đ”Ń Đ·Đ°ĐœŃŃŃ ĐœĐ”ŃĐșĐŸĐ»ŃĐșĐŸ ŃĐ”ĐșŃĐœĐŽ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ĐĐ±ĐœĐŸĐČĐ»Đ”ĐœĐžĐ” ŃĐ°Đ±ĐŸŃĐ”Đč ĐŸĐ±Đ»Đ°ŃŃĐž Ń ŃĐ”ŃĐșĐŸĐč \"%1$s\"."</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐĐ” ŃĐŽĐ°Đ»ĐŸŃŃ ĐŸĐ±ĐœĐŸĐČĐžŃŃ ŃĐ°Đ±ĐŸŃŃŃ ĐŸĐ±Đ»Đ°ŃŃŃ Ń ŃĐ”ŃĐșĐŸĐč \"%1$s\"."</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃĐžĐ»Ń ĐœĐ°ŃŃŃĐŸĐ”Đœ."</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ЧаŃŃ ĐœĐ°ŃŃŃĐŸĐ”ĐœŃ."</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐĄĐ”ŃĐșа ĐœĐ°ŃŃŃĐŸĐ”ĐœĐ°."</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐŻŃĐ»ŃĐș ŃлДĐČа"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐŻŃĐ»ŃĐș ŃĐżŃаĐČа"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐ”Ń"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ЧŃĐŸĐ±Ń ĐČŃбŃаŃŃ ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APPNAME">%1$s</xliff:g>\", ŃЎДлаĐčŃĐ” ŃлДЎŃŃŃДД:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐĐ” ŃĐŽĐ°Đ»ĐŸŃŃ ĐŽĐŸĐ±Đ°ĐČĐžŃŃ ŃŃĐ»ŃĐș"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐŃĐșŃŃŃŃ: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ĐĐ»Ń ĐŽĐŸĐ±Đ°ĐČĐ»Đ”ĐœĐžŃ ŃŃĐ»ŃĐșа ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ \"<xliff:g id="APPNAME">%1$s</xliff:g>\" ĐŽĐŸĐ»Đ¶ĐœŃ ĐČŃĐżĐŸĐ»ĐœŃŃŃŃŃ ŃлДЎŃŃŃОД ŃŃĐ»ĐŸĐČĐžŃ:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐĐ”Ń"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐĐŸĐșазŃĐČаŃŃ ŃĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžŃ ĐœĐ° Đ·Đ°Đ±Đ»ĐŸĐșĐžŃĐŸĐČĐ°ĐœĐœĐŸĐŒ ŃĐșŃĐ°ĐœĐ”"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐĄĐșŃŃĐČаŃŃ ŃĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžŃ ĐœĐ° Đ·Đ°Đ±Đ»ĐŸĐșĐžŃĐŸĐČĐ°ĐœĐœĐŸĐŒ ŃĐșŃĐ°ĐœĐ”"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐŃŃ ĐœĐ°ŃŃŃĐŸĐčĐșĐž Đ·Đ°Đ±Đ»ĐŸĐș. ŃĐșŃĐ°ĐœĐ°"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐĐŸĐœŃĐžĐŽĐ”ĐœŃОалŃĐœĐŸŃŃŃ, ŃŃĐœĐșŃĐžŃ \"ЧŃĐŸ ŃĐ”ĐčŃĐ°Ń ĐžĐłŃаДŃ?\" Đž Ń. ĐŽ."</string>
<string name="more_colors" msgid="3191071655353004591">"ĐŃŃ ŃĐČĐ”Ńа"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐŃĐœĐŸĐČĐœĐ°Ń ĐŽĐžĐœĐ°ĐŒĐžŃĐ”ŃĐșĐ°Ń ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐŃĐœĐŸĐČĐœĐ°Ń ĐœĐ”ĐčŃŃалŃĐœĐ°Ń ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐŃĐœĐŸĐČĐœĐ°Ń Đ¶ĐžĐČĐ°Ń ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐŃĐœĐŸĐČĐœĐ°Ń ĐČŃŃазОŃДлŃĐœĐ°Ń ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐŠĐČĐ”Ń ĐżĐŸ ŃĐŒĐŸĐ»ŃĐ°ĐœĐžŃ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐŠĐČĐ”Ń: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐŃĐŸĐČДЎОŃĐ” ĐČлДĐČĐŸ, ŃŃĐŸĐ±Ń ĐČŃбŃаŃŃ ĐŽŃŃĐłĐŸĐč ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐŃĐŸĐČДЎОŃĐ” ĐČĐżŃаĐČĐŸ, ŃŃĐŸĐ±Ń ĐČŃбŃаŃŃ ĐŽŃŃĐłĐŸĐč ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐаŃŃŃаОĐČĐ°Đ”ĐŒŃĐ” ŃĐžŃĐ”ŃблаŃŃ"</string>
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index d34dea4..35b2220 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"à¶
à¶·à·à¶»à·à¶ à· à¶à¶»à¶œà·à·à·à·"</string>
<string name="clock_description" msgid="3563839327378948">"à¶
à¶·à·à¶»à·à¶ à· à¶à¶»à¶œà·à·à·à·à¶à· à¶à·à¶»à¶±à·à¶±"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"à¶
à¶·à·à¶»à·à¶ à· à¶à¶»à¶œà·à·à·à·à¶à· à·à·à¶±à·à· à¶à¶»à¶±à·à¶±"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"à¶à¶»à¶œà·à·à· à·à·à¶à·à·à¶žà·"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"à¶à¶»à¶œà·à·à· à¶žà·à·à·à¶«à¶à· à·à·à¶à¶œà·à¶Žà¶ș <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"à¶à¶»à¶œà·à·à· à·à¶»à·à¶«à¶ș à·à· à¶à¶»à¶ž"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"à¶à¶»à¶œà·à·à· à·à¶»à·à¶«à¶ș à·à· à¶à¶»à¶ž"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à·à¶»à·à¶«à¶ș"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"à¶
à¶à·à·
à· à¶à·à¶»à¶șà· à¶
à¶±à·à¶à¶»à·à¶à¶à¶ș à¶
à¶±à·à· à¶à¶»à¶œà·à·à·à·à· à¶à¶»à¶ž à·à·à¶±à·à· à·à·"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à·à·à·à·à¶œ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"à¶à·à¶©à·"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à¶à¶¶à· à¶à·à¶»à¶șà· à¶à·à·
à·à¶»à· à¶à·à¶©à· à¶à¶»à¶œà·à·à·à·à¶à· à¶Žà·à¶±à·à·à¶șà·"</string>
<string name="grid_title" msgid="1688173478777254123">"à¶șà·à¶Żà·à¶žà· à¶ąà·à¶œà¶à¶ș"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"à¶șà·à¶Żà¶±à·à¶±"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à·à¶à·à·à¶à¶»à¶«à¶șà¶§ à¶à¶§à·à¶§à· à¶à¶»à¶±à·à¶±"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"à·à·à¶ž à¶à·à¶»à¶șà¶§à¶ž à¶à¶¶à· à¶Žà·à¶»à·à¶șà¶à¶ž à¶
à¶à·à¶»à· à¶à¶à· à¶à¶»à¶±à·à¶±"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à¶ąà·à¶œà¶ à¶à¶»à¶žà¶à· à¶à·à¶»à· à¶à¶±à·à¶±"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"à¶ąà·à¶œà¶ à¶Žà·à¶»à¶žà·à¶«à¶ș à·à·à¶±à·à· à¶à·à¶»à·à¶ž à¶à·à¶»à·à¶ș à¶à¶© à¶±à·à·à¶ à¶Žà·à¶»à¶«à¶ș à¶à¶»à¶± à¶
à¶à¶» à¶à¶à·à¶Žà¶» à¶à·à·à·à¶Žà¶șà¶à· à¶à¶ à·à·à¶ș à·à·à¶."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s à¶ąà·à¶œà¶à¶ș à·à¶žà¶ à¶à·à¶»à·à¶ș à¶à¶© à¶±à·à·à¶ à¶Žà·à¶»à¶«à¶ș à·à·"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s à¶ąà·à¶œà¶à¶ș à·à¶žà¶ à¶à·à¶»à·à¶ș à¶à¶© à¶±à·à·à¶ à¶Žà·à¶»à¶«à¶ș à¶à·à¶»à·à¶žà¶§ à¶
à·à¶žà¶à· à·à·à¶ș"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"à·à·à¶œà·à· à·à·à¶»à·à¶źà¶à· à·à·à¶à·à·à¶«à·"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"à¶à¶»à¶œà·à·à·à· à·à·à¶»à·à¶źà¶à· à·à·à¶à·à·à¶«à·"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"à¶ąà·à¶œà¶à¶ș à·à·à¶»à·à¶źà¶à· à·à·à¶à·à·à¶«à·"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à·à¶žà· à¶à·à¶§à·à¶žà¶"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à¶Żà¶à·à¶«à· à¶à·à¶§à·à¶žà¶"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"à¶à·à·à·à¶à· à¶±à·à¶"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` à¶à·à¶»à·à¶ž à·à¶łà·à· à¶Žà·à¶ à¶Żà· à¶Žà¶»à·à¶à·à·à· à¶à¶»à¶±à·à¶±"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"à¶à·à¶§à·à¶žà¶ à¶à¶à· à¶à·
à¶±à·à·à·à¶"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> à·à·à·à·à¶ à¶à¶»à¶±à·à¶±"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"à¶à·à¶§à·à¶žà¶à¶à· à¶œà·à· <xliff:g id="APPNAME">%1$s</xliff:g> à¶à¶à· à¶à·à¶»à·à¶žà¶§, à¶à·à·à·à¶»à· à¶à¶» à¶à¶±à·à¶±"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à¶±à·à¶žà¶șà·"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"à¶à·à·à·à·à¶à· à¶±à·à¶"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"à¶
à¶à·à·
à· à¶à·à¶»à¶ș à¶žà¶ à¶Żà·à¶±à·à¶žà·à¶Żà·à¶žà· à¶Žà·à¶±à·à·à¶±à·à¶±"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à¶
à¶à·à·
à· à¶à·à¶»à¶ș à¶žà¶ à¶Żà·à¶±à·à¶žà·à¶Żà·à¶žà· à·à¶à·à¶±à·à¶±"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"à¶à·à¶à· à¶
à¶à·à¶œà· à¶à·à¶» à·à·à¶à¶œà·à¶Ž"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"à¶Žà·à¶Żà·à¶à¶œà·à¶à¶à·à·à¶ș, Now Playing, à·à· à¶à·à¶à· à¶Żà·"</string>
<string name="more_colors" msgid="3191071655353004591">"à¶à·à¶à· à·à¶»à·à¶«"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"à¶žà·à¶œà·à¶ à¶à¶à·à¶ à¶à·à¶žà·à·"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"à¶žà·à¶œà·à¶ à¶žà¶°à·à¶șà·à·à¶ź à¶à·à¶žà·à·"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"à¶žà·à¶œà·à¶ à·à·à¶ à·à¶à·à¶»à·à¶à· à¶à·à¶žà·à·"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"à¶žà·à¶œà·à¶ à¶Žà·à¶»à¶à·à·à¶± à¶à·à¶žà·à·"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"à¶Žà·à¶»à¶±à·à¶žà· à·à¶»à·à¶« à·à·à¶à¶œà·à¶Žà¶ș"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"à·à¶»à·à¶« à·à·à¶à¶œà·à¶Žà¶ș <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"à·à·à¶±à·à· à¶à¶»à¶œà·à·à· à¶žà·à·à·à¶«à¶à¶à· à¶à·à¶»à· à¶à·à¶±à·à¶žà¶§ à·à¶žà¶§ à·à·à·à¶șà·à¶Žà· à¶à¶»à¶±à·à¶±"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"à·à·à¶±à·à· à¶à¶»à¶œà·à·à· à¶žà·à·à·à¶«à¶à¶à· à¶à·à¶»à· à¶à·à¶±à·à¶žà¶§ à¶Żà¶à·à¶«à¶§ à·à·à·à¶șà·à¶Žà· à¶à¶»à¶±à·à¶±"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à¶
à¶·à·à¶»à·à¶ à· à¶à¶»à¶œà·à·à·"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 8bf29a6..d74b82c 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Vlastné hodiny"</string>
<string name="clock_description" msgid="3563839327378948">"Vyberte vlastné hodiny"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ZmeĆte vlastné hodiny"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Nastav. hodín"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"MoĆŸnosĆ„ ciferníka <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Farba a veÄŸkosĆ„"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Farba a veÄŸkosĆ„"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Farba"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"VeÄŸkosĆ„ hodín sa mení podÄŸa obsahu na uzamknutej obrazovke"</string>
<string name="clock_size_large" msgid="3143248715744138979">"VeÄŸké"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Malé"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"V rohu obrazovky sa zobrazujú malé hodiny"</string>
<string name="grid_title" msgid="1688173478777254123">"MrieĆŸka aplik."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"PouĆŸiĆ„"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Klepnutím upravte"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Pridajte na kaĆŸdú obrazovku svoje obÄŸúbené písma"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Vyberte veÄŸkosĆ„ mrieĆŸky"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> × <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Zmena veÄŸkosti mrieĆŸky znova naÄíta pracovný priestor a môĆŸe trvaĆ„ niekoÄŸko sekúnd."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Znova sa naÄítava pracovný priestor s mrieĆŸkou %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Nepodarilo sa znova naÄítaĆ„ pracovný priestor s mrieĆŸkou %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Štýl bol úspešne nastavený"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Hodiny boli úspešne nastavené"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"MrieĆŸka bola úspešne nastavená"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Skratka vÄŸavo"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Skratka vpravo"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ćœiadne"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Ak chcete vybraĆ„ aplikáciu <xliff:g id="APPNAME">%1$s</xliff:g>, skontrolujte nasledovné"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Odkaz sa nedá pridaĆ„"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"OtvoriƄ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Ak chcete aplikáciu <xliff:g id="APPNAME">%1$s</xliff:g> pridaĆ„ ako odkaz, uistite sa, ĆŸe"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hotovo"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ćœiadne"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ZobrazovaƄ upozornenia na uzamknutej obrazovke"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"SkrývaĆ„ upozornenia na uzamknutej obrazovke"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Viac moĆŸností uzamkn. obrazovky"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Ochrana súkromia, Äo to hrá a Äalšie funkcie"</string>
<string name="more_colors" msgid="3191071655353004591">"Äalšie farby"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primárny dynamický motív"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primárny neutrálny motív"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primárny sýty motív"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primárny expresívny motív"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Predvolená farba"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Farba: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Potiahnutím doÄŸava vyberiete iný ciferník"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Potiahnutím doprava vyberiete iný ciferník"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Vlastné hodiny"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 5097ac3..e15ff8e 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Ura po meri"</string>
<string name="clock_description" msgid="3563839327378948">"Izberite uro po meri"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Spremenite uro po meri"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Nastavitve ure"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"MoĆŸnost številÄnice <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Barva, velikost ure"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Barva, velikost ure"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Barva"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Velikost ure se spremeni glede na vsebino zaklenjenega zaslona."</string>
<string name="clock_size_large" msgid="3143248715744138979">"Velika"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Majhna"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"V kotu zaslona je prikazana majhna ura"</string>
<string name="grid_title" msgid="1688173478777254123">"MreĆŸa aplikacij"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Uporabi"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dotaknite se za urejanje"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Dodajte priljubljeno pisavo na vsak zaslon"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Izbira velikosti mreĆŸe"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Äe spremenite velikost mreĆŸe, se znova naloĆŸi delovni prostor, kar lahko traja nekaj sekund."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"VnoviÄno nalaganje delovnega prostora z mreĆŸo %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Delovnega prostora z mreĆŸo %1$s ni bilo mogoÄe znova naloĆŸiti"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Slog je uspešno nastavljen"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Ura je uspešno nastavljena"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"MreĆŸa je uspešno nastavljena"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Leva bliĆŸnjica"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Desna bliĆŸnjica"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Brez"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Äe ĆŸelite izbrati aplikacijo »<xliff:g id="APPNAME">%1$s</xliff:g>«, potrdite naslednje:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"BliĆŸnjice ni mogoÄe dodati"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Odpri <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Äe ĆŸelite aplikacijo <xliff:g id="APPNAME">%1$s</xliff:g> dodati kot bliĆŸnjico, zagotovite naslednje:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"KonÄano"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"BliĆŸnjice"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Brez"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obvestil na zaklenjenem zaslonu"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrivanje obvestil na zaklenjenem zaslonu"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"PrikaĆŸi obvestila na zaklenjenem zaslonu"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"VeÄ glede zaklenjenega zaslona"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Zasebnost, Zdaj se predvaja in drugo"</string>
<string name="more_colors" msgid="3191071655353004591">"VeÄ barv"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Primarna dinamiÄna tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Primarna nevtralna tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Primarna ĆŸivahna tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Primarna izrazna tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Privzeta moĆŸnost barve"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"MoĆŸnost barve <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Povlecite v levo, Äe ĆŸelite izbrati drugaÄno številÄnico"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Povlecite v desno, Äe ĆŸelite izbrati drugaÄno številÄnico"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Ure po meri"</string>
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 95a8fa6..1d7c825 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Orë e personalizuar"</string>
<string name="clock_description" msgid="3563839327378948">"Orë e personalizuar"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ndrysho orën e personalizuar"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Ora: Cilësimet"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opsioni i fushës së orës: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Ora: Ngjyrë/madhësi"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Ora: Ngjyra/madhësia"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Ngjyra"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Madhësia e orës ndryshon sipas përmbajtjes së ekranit të kyçjes"</string>
<string name="clock_size_large" msgid="3143248715744138979">"E madhe"</string>
<string name="clock_size_small" msgid="2280449912094164133">"E vogël"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Në këndin e ekranit shfaqet një orë e vogël"</string>
<string name="grid_title" msgid="1688173478777254123">"Rrjeta e aplikacioneve"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Zbato"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Trokit për të modifikuar"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Shto fontet e tua të preferuara në çdo ekran"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Zgjidh një madhësi rrjete"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Ndryshimi i rrjetës ringarkon vendin e punës dhe zgjat disa sekonda."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Vendi i punës po ringarkohet me rrjetën %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Vendi i punës nuk mund të ringarkohej me rrjetën %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stili u caktua me sukses"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Ora u caktua me sukses"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Rrjeta u caktua me sukses"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Shkurtorja maj."</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Shkurtorja djath."</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Asnjë"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Për të zgjedhur \"<xliff:g id="APPNAME">%1$s</xliff:g>\", kontrollo si më poshtë"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Shkurtorja nuk mund të shtohet"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Hap \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Për të shtuar aplikacionin \"<xliff:g id="APPNAME">%1$s</xliff:g>\" si një shkurtore, sigurohu që"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"U krye"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Asnjë"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Shfaq njoftimet në ekranin e kyçjes"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fshih njoftimet në ekranin e kyçjes"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Opsione të tjera të ekranit të kyçjes"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Privatësia, \"Gjej këngën\" etj."</string>
<string name="more_colors" msgid="3191071655353004591">"Më shumë ngjyra"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema kryesore dinamike"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema kryesore neutrale"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema kryesore vibrante"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Tema kryesore ekspresive"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Opsioni i parazgjedhur i ngjyrës"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opsioni i ngjyrës: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Rrëshqit shpejt majtas për të zgjedhur një tjetër fushë ore"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Rrëshqit shpejt djathtas për të zgjedhur një tjetër fushë ore"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Fusha ore të personalizuara"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 0028732..93ef431 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐŃĐžĐ»Đ°ĐłĐŸŃĐ”ĐœĐž ŃаŃ"</string>
<string name="clock_description" msgid="3563839327378948">"ĐŃĐžĐ»Đ°ĐłĐŸŃĐ”ĐœĐž ŃаŃ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐŃĐŸĐŒĐ”ĐœĐžŃĐ” ĐżŃĐžĐ»Đ°ĐłĐŸŃĐ”ĐœĐž ŃаŃ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐĐŸĐŽĐ”ŃаĐČаŃа ŃаŃа"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐĐżŃĐžŃа бŃĐŸŃŃĐ°ĐœĐžĐșа <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐĐŸŃа Đž ĐČДлОŃĐžĐœĐ° ŃаŃа"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐĐŸŃа Đž ĐČДлОŃĐžĐœĐ° ŃаŃа"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐĐŸŃа"</string>
@@ -39,7 +40,8 @@
<string name="clock_size_dynamic" msgid="1023930312455061642">"ĐĐžĐœĐ°ĐŒĐžŃĐșĐž"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"ĐДлОŃĐžĐœĐ° ŃаŃа ŃĐ” ĐŒĐ”Ńа Ń ŃĐșĐ»Đ°ĐŽŃ Ńа ŃаЎŃжаŃĐ”ĐŒ заĐșŃŃŃĐ°ĐœĐŸĐł Đ”ĐșŃĐ°ĐœĐ°"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐДлОĐșĐŸ"</string>
- <string name="clock_size_small" msgid="2280449912094164133">"ĐĐ°Đ»ĐŸ"</string>
+ <string name="clock_size_small" msgid="2280449912094164133">"ĐалО"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐалО ŃĐ°Ń ŃĐ” ĐżŃĐžĐșазŃŃĐ” Ń ŃĐłĐ»Ń Đ”ĐșŃĐ°ĐœĐ°"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐŃДжа апл."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐŃĐžĐŒĐ”ĐœĐž"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐĐŸĐŽĐžŃĐœĐžŃĐ” Ўа бОŃŃĐ” ĐžĐ·ĐŒĐ”ĐœĐžĐ»Đž"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐĐŸĐŽĐ°ŃŃĐ” ĐŸĐŒĐžŃĐ”ĐœĐ” ŃĐŸĐœŃĐŸĐČĐ” ĐœĐ° ŃĐČаĐșĐž Đ”ĐșŃĐ°Đœ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐЎабДŃĐžŃĐ” ĐČДлОŃĐžĐœŃ ĐŒŃДжД"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐĐŸĐČа ĐČДлОŃĐžĐœĐ° ĐŒŃДжД ĐżĐŸĐœĐŸĐČĐŸ ŃŃĐžŃаĐČа ŃĐ°ĐŽĐœĐž ĐżŃĐŸŃŃĐŸŃ Đ·Đ° ĐżĐ°Ń ŃĐ”ĐșŃĐœĐŽĐž."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Đ Đ°ĐŽĐœĐž ĐżŃĐŸŃŃĐŸŃ ŃĐ” ĐżĐŸĐœĐŸĐČĐŸ ŃŃĐžŃаĐČа ŃĐ· ĐŒŃĐ”Đ¶Ń %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐĐŸĐœĐŸĐČĐœĐŸ ŃŃĐžŃаĐČаŃĐ” ŃĐ°ĐŽĐœĐŸĐł ĐżŃĐŸŃŃĐŸŃа ŃĐ· ĐŒŃĐ”Đ¶Ń %1$s ĐœĐžŃĐ” ŃŃĐżĐ”Đ»ĐŸ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐĄŃОл ŃĐ” ĐżĐŸĐŽĐ”ŃĐ”Đœ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ĐĐŸĐŽĐ”ŃаĐČаŃĐ” ŃаŃа ŃĐ” ŃŃĐżĐ”Đ»ĐŸ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐŃДжа ŃĐ” ĐżĐŸĐŽĐ”ŃĐ”ĐœĐ°"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐĐ”ĐČа ĐżŃĐ”ŃĐžŃа"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐĐ”ŃĐœĐ° ĐżŃĐ”ŃĐžŃа"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐžŃŃа"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Đа бОŃŃĐ” ОзабŃалО „<xliff:g id="APPNAME">%1$s</xliff:g>“, ĐżŃĐŸĐČĐ”ŃĐžŃĐ” ŃлДЎДŃĐ”"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐĐŸĐŽĐ°ĐČаŃĐ” ĐżŃĐ”ŃĐžŃĐ” ĐœĐžŃĐ” ŃŃĐżĐ”Đ»ĐŸ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐŃĐČĐŸŃĐžŃĐ”: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Đа бОŃŃĐ” ĐŽĐŸĐŽĐ°Đ»Đž аплОĐșаŃĐžŃŃ <xliff:g id="APPNAME">%1$s</xliff:g> ĐșĐ°ĐŸ ĐżŃĐ”ŃĐžŃŃ, ŃĐČĐ”ŃĐžŃĐ” ŃĐ”"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐŸŃĐŸĐČĐŸ"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐĐžŃŃа"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐŃĐžĐșазŃŃ ĐŸĐ±Đ°ĐČĐ”ŃŃĐ”Ńа ĐœĐ° заĐșŃŃŃĐ°ĐœĐŸĐŒ Đ”ĐșŃĐ°ĐœŃ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ХаĐșŃĐžŃ ĐŸĐ±Đ°ĐČĐ”ŃŃĐ”Ńа ĐœĐ° заĐșŃŃŃĐ°ĐœĐŸĐŒ Đ”ĐșŃĐ°ĐœŃ"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"ĐĐŸŃ ĐŸĐżŃĐžŃа за заĐșŃŃŃĐ°ĐœĐž Đ”ĐșŃĐ°Đœ"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"ĐŃĐžĐČаŃĐœĐŸŃŃ, ĐąŃĐ”ĐœŃŃĐœĐŸ ŃĐČĐžŃа Đž ĐŽŃŃĐłĐŸ"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐĐŸŃ Đ±ĐŸŃа"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐŃĐžĐŒĐ°ŃĐœĐ° ĐŽĐžĐœĐ°ĐŒĐžŃĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐŃĐžĐŒĐ°ŃĐœĐ° ĐœĐ”ŃŃŃĐ°Đ»ĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐŃĐžĐŒĐ°ŃĐœĐ° ĐžĐœŃĐ”ĐœĐ·ĐžĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐŃĐžĐŒĐ°ŃĐœĐ° Đ”ĐșŃĐżŃĐ”ŃĐžĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĐŸĐŽŃазŃĐŒĐ”ĐČĐ°ĐœĐ° ĐŸĐżŃĐžŃа Đ±ĐŸŃĐ”"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐĐżŃĐžŃа Đ±ĐŸŃĐ” <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐŃĐ”ĐČŃŃĐžŃĐ” ĐœĐ°Đ»Đ”ĐČĐŸ Ўа бОŃŃĐ” ĐŸĐŽĐ°Đ±ŃалО ĐŽŃŃгО бŃĐŸŃŃĐ°ĐœĐžĐș"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐŃĐ”ĐČŃŃĐžŃĐ” ĐœĐ°ĐŽĐ”ŃĐœĐŸ Ўа бОŃŃĐ” ĐŸĐŽĐ°Đ±ŃалО ĐŽŃŃгО бŃĐŸŃŃĐ°ĐœĐžĐș"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐŃĐžĐ»Đ°ĐłĐŸŃĐ”ĐœĐž ŃаŃĐŸĐČĐž"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index b600940..51a772d 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Anpassad klocka"</string>
<string name="clock_description" msgid="3563839327378948">"Välj anpassad klocka"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ändra en anpassad klocka"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Klockalternativ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Urtavlealternativ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Klockstorlek/färg"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Klockstorlek/färg"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Färg"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Klockans storlek ändras utifrån innehållet på låsskärmen"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Stor"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Liten"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"En liten klockas visas i skärmens hörn"</string>
<string name="grid_title" msgid="1688173478777254123">"Apprutnät"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Använd"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tryck för att redigera"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Lägg till teckensnitt som du gillar på varje skärm"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Välj rutnätsstorlek"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"När du ändrar rutnätsstorlek läses arbetsytan in igen. Detta kan ta några sekunder."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Läser in arbetsytan igen med rutnätet %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Det gick inte att läsa in arbetsytan igen med rutnätet %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stilen har angetts"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Klockan har angetts"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Rutnätet har angetts"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Vänster genväg"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Höger genväg"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Inga"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Om du vill välja <xliff:g id="APPNAME">%1$s</xliff:g> markerar du följande"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Det går inte att lägga till genvägen"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Öppna <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Om du vill lägga till <xliff:g id="APPNAME">%1$s</xliff:g>-appen som en genväg ser du till att"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Klar"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Inga"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Visa aviseringar på låsskärmen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Dölj aviseringar på låsskärmen"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Fler låsskärmsalternativ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Integritet, Nu spelas med mera"</string>
<string name="more_colors" msgid="3191071655353004591">"Fler färger"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Dynamiskt tema med primära färger"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Neutralt tema med primära färger"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Livfullt tema med primära färger"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Uttrycksfullt tema med primära färger"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfärgen"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Färgalternativet <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Svep åt vänster för att välja en annan urtavla"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Svep åt höger för att välja en annan urtavla"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Anpassade urtavlor"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index f63c537..464f0a0 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Saa Maalum"</string>
<string name="clock_description" msgid="3563839327378948">"Chagua saa maalum"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Badili saa maalum"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Mipangilio ya Saa"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Chaguo la sura ya saa <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Rangi na ukubwa wa saa"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Rangi na ukubwa wa saa"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Rangi"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Ukubwa wa saa hubadilika kulingana na maudhui yaliyo kwenye skrini iliyofungwa"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Kubwa"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Ndogo"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Saa ndogo inaonekana kwenye kona ya skrini yako"</string>
<string name="grid_title" msgid="1688173478777254123">"Gridi ya programu"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Tumia"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Gusa ili ubadilishe"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Ongeza fonti unayopenda kwenye kila skrini"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Chagua ukubwa wa gridi"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Kubadilisha ukubwa wa gridi kutapakia upya nafasi ya kazi na kunaweza kuchukua sekunde kadhaa."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Inapakia upya nafasi ya kazi kwa kutumia gridi ya %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Imeshindwa kupakia upya nafasi ya kazi kwa kutumia gridi ya %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Mtindo umewekwa"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Imeweka saa"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Gridi imewekwa"</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"Rangi ya mandhari"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Rangi za msingi"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Rangi nyinginezo"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"Chagua rangi yoyote ya aikoni zako, saa na zaidi"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"Chagua rangi yoyote uitumie kwenye aikoni, saa na zaidi"</string>
<string name="color_changed" msgid="7029571720331641235">"Rangi imebadilishwa"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Inayobadilika"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Rangi za mfumo"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Njia ya mkato ya kushoto"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Njia ya mkato ya kulia"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Hamna"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Ili uchague `<xliff:g id="APPNAME">%1$s</xliff:g>` zingatia yafuatayo"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Imeshindwa kuweka njia ya mkato"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Fungua <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Ili kuweka programu ya <xliff:g id="APPNAME">%1$s</xliff:g> kuwa njia ya mkato, hakikisha"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Nimemaliza"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Hamna"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Onyesha arifa kwenye skrini iliyofungwa"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ficha arifa kwenye skrini iliyofungwa"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
- <string name="more_colors" msgid="3191071655353004591">"Rangi Nyingi Zaidi"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Chaguo zaidi za kufunga skrini"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Faragha, Kitambua Ngoma na zaidi"</string>
+ <string name="more_colors" msgid="3191071655353004591">"Rangi Zaidi"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Mandhari msingi nyumbufu"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Mandhari msingi yenye rangi zilizopoa"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Mandhari msingi yenye rangi inayong\'aa"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Mandhari msingi inayojidhihirisha"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Chaguo la rangi chaguomsingi"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Chaguo la rangi ya <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Telezesha kidole kushoto ili uchague uso tofauti wa saa"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Telezesha kidole kulia ili uchague uso tofauti wa saa"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Uso wa Saa"</string>
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index ba70c1b..1a6eeb1 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àźȘàźżàź°àź€àŻàź€àźżàźŻàŻàźàźàŻ àźàźàźżàźàźŸàź°àźźàŻ"</string>
<string name="clock_description" msgid="3563839327378948">"àźȘàźżàź°àź€àŻàź€àźżàźŻàŻàźàźàŻ àźàźàźżàźàźŸàź°àź€àŻàź€àŻàź€àŻ àź€àŻàź°àŻàź”àŻàźàŻàźŻàŻàź"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àźȘàźżàź°àź€àŻàź€àźżàźŻàŻàźàźàŻ àźàźàźżàźàźŸàź°àź€àŻàź€àŻ àźźàźŸàź±àŻàź±àŻàźźàŻ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àźàźàźżàźàźŸàź° àź
àźźàŻàźȘàŻàźȘàŻàźàźłàŻ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àźàźàźżàźàźŸàź° àźźàŻàźàźȘàŻàźȘàŻàźàŻàźàźŸàź© àź”àźżàź°àŻàźȘàŻàźȘàźźàŻ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àźàźàźżàźàźŸàź° àźšàźżàź±àźźàŻ & àź
àźłàź”àŻ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àźàźàźżàźàźŸàź° àźšàźżàź±àźźàŻ & àź
àźłàź”àŻ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àźšàźżàź±àźźàŻ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àźȘàŻàźàŻàźàŻàź€àŻ àź€àźżàź°àŻàźŻàźżàźČàŻ àźàźłàŻàźł àźàźłàŻàźłàźàźàŻàźàź€àŻàź€àŻàźȘàŻ àźȘàŻàź±àŻàź€àŻàź€àŻ àźàźàźżàźàźŸàź°àź€àŻàź€àźżàź©àŻ àź
àźłàź”àŻ àźźàźŸàź±àŻàźȘàźàŻàźźàŻ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àźȘàŻàź°àźżàźŻàź€àŻ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àźàźżàź±àźżàźŻàź€àŻ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àźàźàŻàźàźłàŻ àź€àźżàź°àŻàźŻàźżàź©àŻ àźźàŻàźČàŻàźŻàźżàźČàŻ àźàź°àŻ àźàźżàź±àźżàźŻ àźàźàźżàźàźŸàź°àźźàŻ àźàźŸàźàŻàźàźȘàŻàźȘàźàŻàźźàŻ"</string>
<string name="grid_title" msgid="1688173478777254123">"àźàźȘàŻàźžàŻ àźàźàŻàźàźźàŻ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àźȘàźŻàź©àŻàźȘàźàŻàź€àŻàź€àŻ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"\'àź€àŻàźźàŻàź€àŻ\' àź€àźżàź°àŻàź€àŻàź€ àź€àźàŻàźàź”àŻàźźàŻ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àźàź”àŻàź”àŻàź°àŻ àź€àźżàź°àŻàźŻàźżàźČàŻàźźàŻ àźàźàŻàźàźłàŻàźàŻàźàŻàźȘàŻ àźȘàźżàźàźżàź€àŻàź€ àźàźŽàŻàź€àŻàź€àŻàź°àŻàźàŻàźàźłàŻàźàŻ àźàŻàź°àŻàźàŻàźàźłàŻ"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àźàźàŻàź àź
àźłàź”àŻàź€àŻ àź€àŻàź°àŻàź”àŻàźàŻàźŻàŻàź€àźČàŻ"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àźàźàŻàź àź
àźłàź”àŻ àźźàźŸàź±àŻàź±àźżàź©àźŸàźČàŻ àźȘàźŁàźżàźŻàźżàźàźźàŻ àź°àŻàźàźȘàŻàź°àŻàź·àŻ àźàŻàźŻàŻàźŻàźȘàŻàźȘàźàŻàźźàŻ, àźàźżàźČ àź”àźżàź©àźŸàźàźżàźàźłàŻ àźàźàźàŻàźàŻàźàŻàźźàŻ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s àźàźàŻàźàź€àŻàź€àŻàźàź©àŻ àźȘàźŁàźżàźŻàźżàźàź€àŻàź€àŻ àź°àŻàźàźȘàŻàź°àŻàź·àŻ àźàŻàźŻàŻàźàźżàź±àź€àŻ"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s àźàźàŻàźàź€àŻàź€àŻàźàź©àŻ àźȘàźŁàźżàźŻàźżàźàź€àŻàź€àŻ àź°àŻàźàźȘàŻàź°àŻàź·àŻ àźàŻàźŻàŻàźŻ àźźàŻàźàźżàźŻàź”àźżàźČàŻàźČàŻ"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àźžàŻàźàŻàźČàŻ àź
àźźàŻàźàŻàźàźȘàŻàźȘàźàŻàźàź€àŻ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àźàźàźżàźàźŸàź°àźźàŻ àź
àźźàŻàźàŻàźàźȘàŻàźȘàźàŻàźàź€àŻ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àźàźàŻàźàźźàŻ àź
àźźàŻàźàŻàźàźȘàŻàźȘàźàŻàźàź€àŻ"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"àźȘàŻàźàŻàźàźŸ"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"àźàźȘàŻàźžàŻ àźàźàŻàźàźàŻ àźàźŸàźàŻàźàźżàźŻàŻ àźźàźŸàź±àŻàź±àŻàźźàŻ"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"àź”àźŸàźČàŻàźȘàŻàźȘàŻàźȘàź°àŻ àźšàźżàź±àźàŻàźàźłàŻ"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"àź”àźŸàźČàŻàźȘàŻàźȘàŻàźȘàź°àŻàźàź©àŻ àźȘàŻàź°àŻàźšàŻàź€àŻàźźàŻ àźàźàźŸàź©àŻ, àźàź°àŻ & àźȘàźČàź”àź±àŻàź±àźżàź©àŻ àź”àźŁàŻàźŁàźźàŻ"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"àźàźàźŸàź©àŻ, àźàź°àŻ àźźàź±àŻàź±àŻàźźàŻ àźȘàźČàź”àź±àŻàź±àźżàź©àŻ àź”àźŁàŻàźŁàźźàŻ àź”àźŸàźČàŻàźȘàŻàźȘàŻàźȘàź°àŻàźàź©àŻ àźȘàŻàź°àŻàźšàŻàź€àŻàźźàŻ"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"àź”àźŸàźČàŻàźȘàŻàźȘàŻàźȘàź°àźżàź©àŻ àźšàźżàź±àźźàŻ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"àź
àźàźżàźȘàŻàźȘàźàŻ àź”àźŁàŻàźŁàźàŻàźàźłàŻ"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"àźȘàźżàź± àź”àźŁàŻàźŁàźàŻàźàźłàŻ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àźàźàź€àŻ àź·àźŸàź°àŻàźàŻàźàźàŻ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àź”àźČàź€àŻ àź·àźŸàź°àŻàźàŻàźàźàŻ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àźàź€àŻàźźàźżàźČàŻàźČàŻ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` àźàźȘàŻàźžàŻàź€àŻ àź€àŻàź°àŻàźšàŻàź€àŻàźàŻàźàŻàź àźȘàźżàź©àŻàź”àź°àŻàźȘàź”àź±àŻàź±àŻàźàŻ àźàź°àźżàźȘàźŸàź°àŻàźàŻàźàź”àŻàźźàŻ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àź·àźŸàź°àŻàźàŻàźàźàŻàźàŻàźàŻ àźàŻàź°àŻàźàŻàź àźźàŻàźàźżàźŻàź”àźżàźČàŻàźČàŻ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> àźàź€àŻ àź€àźżàź±àźàŻàźàŻàźźàŻ"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> àźàźȘàŻàźžàŻ àź·àźŸàź°àŻàźàŻàźàźàŻàźàźŸàźàźàŻ àźàŻàź°àŻàźàŻàź àźàź”àź±àŻàź±àŻàźȘàŻ àźȘàźżàź©àŻàźȘàź±àŻàź±àŻàź”àź€àŻ àźàź±àŻàź€àźżàźàŻàźŻàŻàź€àŻàźàŻàźłàŻàźłàź”àŻàźźàŻ:"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àźàź°àźż"</string>
@@ -124,13 +129,17 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"àź·àźŸàź°àŻàźàŻàźàźàŻàźàźłàŻ"</string>
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àźàź€àŻàźźàźżàźČàŻàźČàŻ"</string>
- <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àźȘàŻàźàŻàźàŻàź€àŻ àź€àźżàź°àŻàźŻàźżàźČàŻ àź
àź±àźżàź”àźżàźȘàŻàźȘàŻàźàźłàŻàźàŻ àźàźŸàźàŻàźàŻàźźàŻ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àźȘàŻàźàŻàźàŻàź€àŻ àź€àźżàź°àŻàźŻàźżàźČàŻ àź
àź±àźżàź”àźżàźȘàŻàźȘàŻàźàźłàŻàźàŻ àźàźŸàźàŻàźàźŸàź€àŻ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àźȘàŻàźàŻàźàŻàź€àŻ àź€àźżàź°àŻàźŻàźżàźČàŻ àź
àź±àźżàź”àźżàźȘàŻàźȘàŻàźàźłàŻàźàŻ àźàźŸàźàŻàźàŻ"</string>
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àźàŻàźàŻàź€àźČàŻ àźȘàŻàźàŻàźàŻàź€àŻ àź€àźżàź°àŻ àź”àźżàź°àŻàźȘàŻàźȘàźźàŻ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àź€àź©àźżàźŻàŻàź°àźżàźźàŻ, àźȘàźŸàźàźČàŻ àź”àźżàź”àź°àźźàŻ àźźàź±àŻàź±àŻàźźàŻ àźȘàźČ"</string>
<string name="more_colors" msgid="3191071655353004591">"àźàŻàźàŻàź€àźČàŻ àź”àźŁàŻàźŁàźàŻàźàźłàŻ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àźźàŻàź€àź©àŻàźźàŻàźŻàźŸàź© àźàŻàź©àźźàźżàźàŻ àź€àŻàźźàŻ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àźźàŻàź€àź©àŻàźźàŻàźŻàźŸàź© àźšàźżàźŻàŻàźàŻàź°àźČàŻ àź€àŻàźźàŻ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àźźàŻàź€àź©àŻàźźàŻàźŻàźŸàź© àź”àź°àŻàźŁàźàźŸàźČàź€àŻ àź€àŻàźźàŻ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àźźàŻàź€àź©àŻàźźàŻàźŻàźŸàź© àźàźàŻàźžàŻàźȘàźżàź°àźžàźżàź”àŻ àź€àŻàźźàŻ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àźàźŻàźČàŻàźȘàŻ àź”àźŁàŻàźŁ àź”àźżàź°àŻàźȘàŻàźȘàźźàŻ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àź”àźŁàŻàźŁ àź”àźżàź°àŻàźȘàŻàźȘàźźàŻ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àź”àŻàź±àŻ àźàźàźżàźàźŸàź° àźźàŻàźàźȘàŻàźȘàŻàź€àŻ àź€àŻàź°àŻàź”àŻàźàŻàźŻàŻàźŻ àźàźàź€àŻàźȘàźàŻàźàźźàŻ àźžàŻàź”àŻàźȘàŻ àźàŻàźŻàŻàźŻàź”àŻàźźàŻ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àź”àŻàź±àŻ àźàźàźżàźàźŸàź° àźźàŻàźàźȘàŻàźȘàŻàź€àŻ àź€àŻàź°àŻàź”àŻàźàŻàźŻàŻàźŻ àź”àźČàź€àŻàźȘàźàŻàźàźźàŻ àźžàŻàź”àŻàźȘàŻ àźàŻàźŻàŻàźŻàź”àŻàźźàŻ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àźȘàźżàź°àź€àŻàź€àźżàźŻàŻàźàźàŻ àźàźàźżàźàźŸàź° àźźàŻàźàźȘàŻàźȘàŻàźàźłàŻ"</string>
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index af8e688..13bc25a 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"à°
à°šà±à°à±à°Č à°à°Ąà°żà°Żà°Ÿà°°à°"</string>
<string name="clock_description" msgid="3563839327378948">"à°
à°šà±à°à±à°Č à°à°Ąà°żà°Żà°Ÿà°°à°Ÿà°šà±à°šà°ż à°à°à°à±à°à±à°à°Ąà°ż"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"à°
à°šà±à°à±à°Č à°à°Ąà°żà°Żà°Ÿà°°à°Ÿà°šà±à°šà°ż à°źà°Ÿà°°à±à°à°à°Ąà°ż"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"à°à°Ąà°żà°Żà°Ÿà°°à° à°žà±à°à±à°à°żà°à°à±à°Čà±"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"à°à°Ąà°żà°Żà°Ÿà°°à° à°«à±à°žà± à°à°Șà±à°·à°šà± <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"à°à°Ąà°żà°Żà°Ÿà°°à° à°°à°à°à± & à°žà±à°à±"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"à°à°Ąà°żà°Żà°Ÿà°°à° à°°à°à°à± & à°žà±à°à±"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"à°°à°à°à±"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"à°Čà°Ÿà°à± à°žà±à°à±à°°à±à°šà± à°à°à°à±à°à°à± à°Șà±à°°à°à°Ÿà°°à° à°à°Ąà°żà°Żà°Ÿà°°à° à°žà±à°à± à°źà°Ÿà°°à±à°€à±à°à°Šà°ż"</string>
<string name="clock_size_large" msgid="3143248715744138979">"à°Șà±à°Šà±à°Šà°Šà°ż"</string>
<string name="clock_size_small" msgid="2280449912094164133">"à°à°żà°šà±à°šà°Šà°ż"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"à°źà± à°žà±à°à±à°°à±à°šà± à°źà±à°Čà°š à°à° à°à°żà°šà±à°š à°à°Ąà°żà°Żà°Ÿà°°à° à°à°šà°żà°Șà°żà°žà±à°€à±à°à°Šà°ż"</string>
<string name="grid_title" msgid="1688173478777254123">"à°Żà°Ÿà°Șà± à°à±à°°à°żà°Ąà±"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ఔరà±à°€à°żà°à°Șà°à±à°Żà°ż"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"à°à°Ąà°żà°à± à°à±à°Żà°Ąà°Ÿà°šà°żà°à°ż à°šà±à°à±à°à°à°Ąà°ż"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"à°Șà±à°°à°€à°ż à°žà±à°à±à°°à±à°šà±à°à± à°źà±à°à± à°à°·à±à°à°źà±à°š à°«à°Ÿà°à°à±à°Čà°šà± à°à±à°Ąà°żà°à°à°à°Ąà°ż"</string>
<string name="grid_options_title" msgid="7071930966989877023">"à°à° à°à±à°°à°żà°Ąà± à°žà±à°à±à°šà± à°à°à°à±à°à±à°à°Ąà°ż"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"à°à±à°°à°żà°Ąà± à°žà±à°à±à°šà± à°źà°Ÿà°°à±à°à°Ąà° à°”à°Čà°š ఔరà±à°à± à°žà±à°Șà±à°žà± à°°à±à°Čà±à°Ąà± à°
à°”à±à°€à±à°à°Šà°ż, à°Šà°Ÿà°šà°żà°à°ż à°à±à°šà±à°šà°ż à°žà±à°à°šà±à°Čà± à°Șà°à±à°à°”à°à±à°à±."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s à°à±à°°à°żà°Ąà±à°€à± ఔరà±à°à± à°žà±à°Șà±à°žà±à°šà± à°°à±à°Čà±à°Ąà± à°à±à°žà±à°€à±à°à°Šà°ż"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s à°à±à°°à°żà°Ąà±à°€à± ఔరà±à°à± à°žà±à°Șà±à°žà±à°šà± à°°à±à°Čà±à°Ąà± à°à±à°Żà°Ąà° à°”à°żà°«à°Čà°źà±à°à°Šà°ż"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"à°žà±à°à±à°Čà± à°”à°żà°à°Żà°”à°à°€à°à°à°Ÿ à°žà±à°à± à°à±à°Żà°Źà°Ąà°żà°à°Šà°ż"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"à°à°Ąà°żà°Żà°Ÿà°°à° à°”à°żà°à°Żà°”à°à°€à°à°à°Ÿ à°žà±à°à± à°à±à°Żà°Źà°Ąà°żà°à°Šà°ż"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"à°à±à°°à°żà°Ąà± à°”à°żà°à°Żà°”à°à°€à°à°à°Ÿ à°žà±à°à± à°à±à°Żà°Źà°Ąà°żà°à°Šà°ż"</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"ఔటà°Čà±à°Șà±à°Șà°°à± à°°à°à°à±"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"à°Șà±à°°à°Ÿà°„à°źà°żà° à°°à°à°à±à°Čà±"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"à°à°€à°° à°°à°à°à±à°Čà±"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"à°źà± à°à°żà°čà±à°šà°Ÿà°Čà±, à°à°Ąà°żà°Żà°Ÿà°°à°, à°
à°Čà°Ÿà°à± à°źà°°à°żà°šà±à°šà°żà°à°à°ż à°à±à°žà° à°à°Šà±à°šà°Ÿ à°°à°à°à±à°šà± à°à°à°à±à°à±à°à°Ąà°ż"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"à°źà± à°à°żà°čà±à°šà°Ÿà°Čà±, à°à°Ąà°żà°Żà°Ÿà°°à°, à°źà°°à°żà°šà±à°šà°żà°à°à°ż à°à±à°žà° à°°à°à°à±à°šà± à°à°à°à±à°à±à°à°Ąà°ż"</string>
<string name="color_changed" msgid="7029571720331641235">"à°°à°à°à± à°źà°Ÿà°°à±à°à°Źà°Ąà°żà°à°Šà°ż"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"à°Ąà±à°šà°źà°żà°à±"</string>
<string name="color_picker_title" msgid="6666830057938082864">"à°žà°żà°žà±à°à°źà± à°°à°à°à±à°Čà±"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"à°à°Ąà°ź à°·à°Ÿà°°à±à°à±à°à°à±"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"à°à±à°Ąà°ż à°·à°Ÿà°°à±à°à±à°à°à±"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"à°à°Šà± à°Čà±à°Šà±"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` à°Żà°Ÿà°Șà±à°šà± à°à°à°à±à°à±à°”à°Ąà°Ÿà°šà°żà°à°ż à°Šà°żà°à±à°” à°à°šà±à°š à°žà±à°à°šà°Čà°šà± à°à±à°Ąà°à°Ąà°ż."</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"à°·à°Ÿà°°à±à°à±à°à°à±à°šà± à°à±à°Ąà°żà°à°à°Ąà° à°žà°Ÿà°§à±à°Żà°Șà°Ąà°Šà±"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g>à°šà± à°€à±à°°à°”à°à°Ąà°ż"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> à°Żà°Ÿà°Șà±à°šà± à°·à°Ÿà°°à±à°à±à°à°à±à°à°Ÿ à°à±à°Ąà°żà°à°à°Ąà°Ÿà°šà°żà°à°ż, à°”à±à°à°żà°šà°ż à°šà°żà°°à±à°§à°Ÿà°°à°żà°à°à±à°à±à°à°Ąà°ż"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"à°Șà±à°°à±à°€à°Żà°żà°à°Šà°ż"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"à°à°Šà± à°à°à°à±à°à±à°Čà±à°Šà±"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"à°Čà°Ÿà°à± à°žà±à°à±à°°à±à°šà±à°Čà± à°šà±à°à°żà°«à°żà°à±à°·à°šà±à°Čà°šà± à°à±à°Șà°à°Ąà°ż"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"à°Čà°Ÿà°à± à°žà±à°à±à°°à±à°šà±à°Čà± à°šà±à°à°żà°«à°żà°à±à°·à°šà±à°Čà°šà± à°Šà°Ÿà°à°à°Ąà°ż"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"à°źà°°à°żà°šà±à°šà°ż à°Čà°Ÿà°à± à°žà±à°à±à°°à±à°šà± à°à°Șà±à°·à°šà±à°Čà±"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"à°à±à°Șà±à°Żà°€, Now Playing, à°à°à°à°Ÿ à°źà°°à°żà°šà±à°šà°ż"</string>
<string name="more_colors" msgid="3191071655353004591">"à°źà°°à°żà°šà±à°šà°ż à°°à°à°à±à°Čà±"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"à°Șà±à°°à°Ÿà°„à°źà°żà° à°Ąà±à°šà°źà°żà°à± à°°à±à°Șà°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"à°Șà±à°°à°Ÿà°„à°źà°żà° à°šà±à°Żà±à°à±à°°à°Čà± à°°à±à°Șà°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"à°Șà±à°°à°Ÿà°„à°źà°żà° à°”à±à°Źà±à°°à±à°à°à± à°°à±à°Șà°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"à°Șà±à°°à°Ÿà°„à°źà°żà° à°à°à±à°žà±à°Șà±à°°à±à°·à°żà°Șà± à°°à±à°Șà°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"à°à°à±à°źà±à°à°żà°à± à°žà±à°à±à°à°żà°à°à± à°°à°à°à± à°à°Șà±à°·à°šà±"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"à°°à°à°à± à°à°Șà±à°·à°šà± <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"à°”à±à°°à±à° à°à°Ąà°żà°Żà°Ÿà°° à°źà±à°à°Ÿà°šà±à°šà°ż à°à°à°à±à°à±à°”à°Ąà°Ÿà°šà°żà°à°ż à°à°Ąà°ź à°”à±à°Șà±à°šà°à± à°žà±à°”à±à°Șà± à°à±à°Żà°à°Ąà°ż"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"à°”à±à°°à±à° à°à°Ąà°żà°Żà°Ÿà°° à°źà±à°à°Ÿà°šà±à°šà°ż à°à°à°à±à°à±à°”à°Ąà°Ÿà°šà°żà°à°ż à°à±à°Ąà°ż à°”à±à°Șà±à°šà°à± à°žà±à°”à±à°Șà± à°à±à°Żà°à°Ąà°ż"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"à°
à°šà±à°à±à°Č à°à°Ąà°żà°Żà°Ÿà°°à°Ÿà°Čà±"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index ff21f6d..91e1ff4 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"àžàžČàžŹàžŽàžàžČàžàž”àčàžàžłàž«àžàžàčàžàž"</string>
<string name="clock_description" msgid="3563839327378948">"àčàž„àž·àžàžàžàžČàžŹàžŽàžàžČàžàž”àčàžàžłàž«àžàžàčàžàž"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"àčàžàž„àž”àčàžąàžàžàžČàžŹàžŽàžàžČàžàž”àčàžàžłàž«àžàžàčàžàž"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"àžàž±àčàžàžàčàžČàžàžČàžŹàžŽàžàžČ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"àžàž±àž§àčàž„àž·àžàžàž«àžàčàžČàžàž±àžàžàžČàžŹàžŽàžàžČ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"àžȘàž”àčàž„àž°àžàžàžČàžàžàžČàžŹàžŽàžàžČ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"àžȘàž”àčàž„àž°àžàžàžČàžàžàžČàžŹàžŽàžàžČ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"àžȘàž”"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"àžàžàžČàžàžàžàžàžàžČàžŹàžŽàžàžČàžàž°àčàžàž„àž”àčàžąàžàžàžČàžĄàčàžàž·àčàžàž«àžČàčàžàž«àžàčàžČàžàžàž„àčàžàž"</string>
<string name="clock_size_large" msgid="3143248715744138979">"àčàž«àžàč"</string>
<string name="clock_size_small" msgid="2280449912094164133">"àčàž„àčàž"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"àžàžČàžŹàžŽàžàžČàžàžàžČàžàčàž„àčàžàžàž°àčàžȘàžàžàžàž”àčàžĄàžžàžĄàžàžàžàž«àžàčàžČàžàž"</string>
<string name="grid_title" msgid="1688173478777254123">"àžàžČàžŁàžČàžàžàžŁàžŽàžàčàžàž"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"àčàžàč"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"àčàžàž°àčàžàž·àčàžàčàžàčàčàž"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"àčàžàžŽàčàžĄàčàžàžàžàž±àžàž©àžŁàžàž”àčàžàžàžàčàžàžàžžàžàž«àžàčàžČàžàž"</string>
<string name="grid_options_title" msgid="7071930966989877023">"àčàž„àž·àžàžàžàžàžČàžàžàžČàžŁàžČàžàžàžŁàžŽàž"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"àžàžČàžŁàčàžàž„àž”àčàžąàžàžàžàžČàžàžàžČàžŁàžČàžàžàžŁàžŽàžàžàž°àčàž«àž„àžàžàž·àčàžàžàž”àčàžàžłàžàžČàžàžàčàžłàčàž„àž°àžàžČàžàčàžàčàčàž§àž„àžČàžȘàž±àžàžàžŁàžčàč"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"àžàžłàž„àž±àžàčàž«àž„àžàžàž·àčàžàžàž”àčàžàžłàžàžČàžàžàčàžłàžàčàž§àžąàžàžČàžŁàžČàžàžàžŁàžŽàž %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"àčàž«àž„àžàžàž·àčàžàžàž”àčàžàžłàžàžČàžàžàčàžłàžàčàž§àžąàžàžČàžŁàžČàž %1$s àčàžĄàčàžȘàžłàčàžŁàčàž"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"àžàž±àčàžàžàčàžČàžŁàžčàžàčàžàžàčàžŁàž”àžąàžàžŁàčàžàžąàčàž„àčàž§"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"àžàž±àčàžàžàžČàžŹàžŽàžàžČàčàžŁàž”àžąàžàžŁàčàžàžąàčàž„àčàž§"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"àžàž±àčàžàžàčàžČàžàžČàžŁàžČàžàžàžŁàžŽàžàčàžŁàž”àžąàžàžŁàčàžàžąàčàž„àčàž§"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"àžàžČàžàž„àž±àžàžàžČàžàžàčàžČàžą"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"àžàžČàžàž„àž±àžàžàžČàžàžàž§àžČ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"àčàžĄàčàžĄàž”"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"àž«àžČàžàžàčàžàžàžàžČàžŁàčàž„àž·àžàž \"<xliff:g id="APPNAME">%1$s</xliff:g>\" àčàžàžŁàžàžàžŁàž§àžàžȘàžàžàžŁàžČàžąàžàžČàžŁàžàčàžàčàžàžàž”àč"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"àčàžàžŽàčàžĄàžàžČàžàž„àž±àžàčàžĄàčàčàžàč"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"àčàžàžŽàž <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"àž«àžČàžàžàčàžàžàžàžČàžŁàčàžàžŽàčàžĄàčàžàž <xliff:g id="APPNAME">%1$s</xliff:g> àčàžàčàžàžàžČàžàž„àž±àž àčàžàžŁàžàžàžŁàž§àžàžȘàžàžàžàž±àžàžàčàžàčàžàžàž”àč"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"àčàžȘàžŁàčàžàžȘàžŽàčàž"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"àčàžĄàčàžĄàž”"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"àčàžȘàžàžàžàžČàžŁàčàžàčàžàčàžàž·àžàžàžàžàž«àžàčàžČàžàžàž„àčàžàž"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"àžàčàžàžàžàžČàžŁàčàžàčàžàčàžàž·àžàžàžàžàž«àžàčàžČàžàžàž„àčàžàž"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"àžàž±àž§àčàž„àž·àžàžàž«àžàčàžČàžàžàž„àčàžàžàčàžàžŽàčàžĄàčàžàžŽàžĄ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"àžàž§àžČàžĄàčàžàčàžàžȘàčàž§àžàžàž±àž§ àžàž”àčàžàžàžŁàč \"àžàžłàž„àž±àžàčàž„àčàž\" àčàž„àž°àžàž·àčàžàč"</string>
<string name="more_colors" msgid="3191071655353004591">"àžȘàž”àčàžàžŽàčàžĄàčàžàžŽàžĄ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"àžàž”àžĄàž«àž„àž±àžàčàžàžàčàžàžàžČàžĄàžŽàž"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"àžàž”àžĄàž«àž„àž±àžàčàžàžàčàžàčàžȘàž”àčàžàžàžàž„àžČàž"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"àžàž”àžĄàž«àž„àž±àžàčàžàžàžȘàž”àžȘàž±àžàžȘàžàčàžȘ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"àžàž”àžĄàž«àž„àž±àžàčàžàžàžàž±àžàčàžàž"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"àžàž±àž§àčàž„àž·àžàžàžȘàž”àčàžŁàžŽàčàžĄàžàčàž"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"àžàž±àž§àčàž„àž·àžàžàžȘàž” <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"àžàž±àžàžàčàžČàžąàčàžàž·àčàžàčàž„àž·àžàžàž«àžàčàžČàžàž±àžàčàžàžàžàčàžČàžàč"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"àžàž±àžàžàž§àžČàčàžàž·àčàžàčàž„àž·àžàžàž«àžàčàžČàžàž±àžàčàžàžàžàčàžČàžàč"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"àž«àžàčàžČàžàž±àžàčàžàžàžàžłàž«àžàžàčàžàž"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a477a1f..c6fd22d 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Custom na Orasan"</string>
<string name="clock_description" msgid="3563839327378948">"Pumili ng custom na orasan"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Magbago ng custom na orasan"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Clock Settings"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Opsyon sa clock face <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Kulay, laki ng clock"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Kulay, laki ng clock"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Kulay"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Mga pagbabago sa laki ng orasan ayon sa content ng lock screen"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Malaki"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Maliit"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"May makikitang maliit na orasan sa sulok ng iyong screen"</string>
<string name="grid_title" msgid="1688173478777254123">"Grid ng app"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Ilapat"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"I-tap para ma-edit"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Idagdag ang mga paborito mong font sa bawat screen"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Pumili ng laki ng grid"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Mare-reload ang workspace kapag binago ang grid size."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Nire-reload ang workspace na may %1$s grid"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Hindi na-reload ang workspace nang may %1$s grid"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Matagumpay na naitakda ang istilo"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Matagumpay na naitakda ang orasan"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Matagumpay na naitakda ang grid"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Kaliwang shortcut"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Kanang shortcut"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Wala"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para piliin ang `<xliff:g id="APPNAME">%1$s</xliff:g>,` tingnan ang sumusunod"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Hindi maidagdag ang shortcut"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Buksan ang <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para idagdag ang <xliff:g id="APPNAME">%1$s</xliff:g> app bilang shortcut, tiyaking"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Tapos na"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Wala"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ipakita ang mga notification sa lock screen"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Itago ang mga notification sa lock screen"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Higit pang opsyon sa lock screen"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Nagpe-play Ngayon, at higit pa"</string>
<string name="more_colors" msgid="3191071655353004591">"Higit Pang Kulay"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Pangunahing dynamic na tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Pangunahing neutral na tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Pangunahing matingkad na tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Pangunahing expressive na tema"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Default na opsyon sa kulay"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Opsyon sa kulay na <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Mag-swipe pakaliwa para pumili ng ibang clock face"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Mag-swipe pakanan para pumili ng ibang clock face"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Mga Custom na Orasan"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d560791..4797bbf 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Özel Saat"</string>
<string name="clock_description" msgid="3563839327378948">"Özel saat seçin"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Özel saati deÄiĆtirin"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Saat Ayarları"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Kadran seçeneÄi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Saat rengi ve boyutu"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Saat rengi ve boyutu"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Renk"</string>
@@ -34,12 +35,13 @@
<string name="clock_color_indigo" msgid="8910855386698452917">"Çivit mavisi"</string>
<string name="clock_color_violet" msgid="3454503847169375826">"Mor"</string>
<string name="clock_color_gray" msgid="9221530636948859231">"Gri"</string>
- <string name="clock_color_teal" msgid="7499223425741344251">"Turkuaz"</string>
+ <string name="clock_color_teal" msgid="7499223425741344251">"Deniz mavisi"</string>
<string name="clock_size" msgid="5028923902364418263">"Boyut"</string>
<string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamik"</string>
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Saat boyutu, kilit ekranındaki içeriklere göre deÄiĆir"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Büyük"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Küçük"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ekranınızın köĆesinde küçük bir saat görünür"</string>
<string name="grid_title" msgid="1688173478777254123">"Uygulama tablosu"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Uygula"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Düzenlemek için dokunun"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"En sevdiÄiniz yazı tiplerini her ekrana ekleyin"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Izgara boyutu seçin"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Izgara boyutu deÄiĆtirilirse çalıĆma alanı yeniden yüklenir. Bu iĆlem birkaç saniye sürebilir."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ÇalıĆma alanı, %1$s ızgarasıyla yeniden yükleniyor"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ÇalıĆma alanı, %1$s ızgarasıyla yeniden yüklenemedi"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Stil baĆarıyla ayarlandı"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Saat baĆarıyla ayarlandı"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Izgara baĆarıyla ayarlandı"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Sol kısayol"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"SaÄ kısayol"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Yok"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" uygulamasını seçmek için Ćunları kontrol edin"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Kısayol eklenemiyor"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> uygulamasını aç"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> uygulamasını kısayol olarak ekleyebilmeniz için gerekenler"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Bitti"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Yok"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kilit ekranında bildirimleri göster"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Kilit ekranında bildirimleri gizle"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"DiÄer kilit ekranı seçenekleri"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Gizlilik, Ne Çalıyor? ve daha fazlası"</string>
<string name="more_colors" msgid="3191071655353004591">"DiÄer Renkler"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Birincil dinamik tema"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Birincil nötr tema"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Birincil canlı tema"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Birincil ifade teması"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Varsayılan renk seçeneÄi"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> renk seçeneÄi"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Farklı bir kadran seçmek için sola kaydırın"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Farklı bir kadran seçmek için saÄa kaydırın"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Özel Saatler"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index b87d4f7..f6b7c36 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"ĐĄĐČŃĐč ŃĐžŃĐ”ŃблаŃ"</string>
<string name="clock_description" msgid="3563839327378948">"ĐОбДŃŃŃŃ ŃĐČŃĐč ŃĐžŃĐ”ŃблаŃ"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ĐĐŒŃĐœŃŃŃ ŃĐČŃĐč ŃĐžŃĐ”ŃблаŃ"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ĐалаŃŃŃĐČĐ°ĐœĐœŃ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ĐаŃŃĐ°ĐœŃ ŃĐžŃĐ”ŃблаŃа: \"<xliff:g id="ID_1">%1$s</xliff:g>\""</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ĐĐŸĐ»ŃŃ Ń ŃĐŸĐ·ĐŒŃŃ ĐłĐŸĐŽ."</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ĐĐŸĐ»ŃŃ Ń ŃĐŸĐ·ĐŒŃŃ ĐłĐŸĐŽĐžĐœĐœĐžĐșа"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"ĐĐŸĐ»ŃŃ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Đ ĐŸĐ·ĐŒŃŃ ĐłĐŸĐŽĐžĐœĐœĐžĐșа Đ·ĐŒŃĐœŃŃŃŃŃŃ ĐČŃĐŽĐżĐŸĐČŃĐŽĐœĐŸ ĐŽĐŸ ĐČĐŒŃŃŃŃ Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸĐłĐŸ Đ”ĐșŃĐ°ĐœĐ°"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ĐДлОĐșĐžĐč"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ĐалОĐč"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ĐŁ ĐșŃŃŃ Đ”ĐșŃĐ°ĐœĐ° ĐČŃĐŽĐŸĐ±ŃажаŃŃŃŃŃ ĐŒĐ°Đ»Đ”ĐœŃĐșĐžĐč ĐłĐŸĐŽĐžĐœĐœĐžĐș"</string>
<string name="grid_title" msgid="1688173478777254123">"ĐĄŃŃĐșа ĐŽĐŸĐŽĐ°ŃĐșŃĐČ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ĐаŃŃĐŸŃŃĐČаŃĐž"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ĐąĐŸŃĐșĐœŃŃŃŃŃ, ŃĐŸĐ± Đ·ĐŒŃĐœĐžŃĐž"</string>
@@ -55,7 +57,7 @@
<string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g> (ĐČŃĐŽĐŸĐ±ŃажаŃŃŃŃŃ Đ·Đ°Ńаз)"</string>
<string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, Đ·ĐŒŃĐœĐžŃĐž Đ”Đ»Đ”ĐŒĐ”ĐœŃ, ŃĐșĐžĐč ĐČĐž ĐČОбŃалО Đč пДŃДглŃЎаŃŃĐ”"</string>
<string name="theme_description" msgid="3697012391785254635">"ĐšŃĐžŃŃ: <xliff:g id="ID_1">%1$s</xliff:g>; Đ·ĐœĐ°ŃĐșĐž: <xliff:g id="ID_2">%2$s</xliff:g>; ŃĐŸŃĐŒĐ°: <xliff:g id="ID_3">%3$s</xliff:g>; ĐșĐŸĐ»ŃŃ: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
- <string name="default_theme_title" msgid="2555741736622366797">"Đа ŃĐŒĐŸĐČŃĐ°ĐœĐœŃĐŒ"</string>
+ <string name="default_theme_title" msgid="2555741736622366797">"ĐĄŃĐ°ĐœĐŽĐ°ŃŃ"</string>
<string name="preview_name_font" msgid="4465423899630037038">"ĐšŃĐžŃŃ"</string>
<string name="preview_name_icon" msgid="6818927315316316440">"ĐĐœĐ°ŃĐŸĐș"</string>
<string name="preview_name_color" msgid="8776203144994416172">"ĐĐŸĐ»ŃŃ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ĐĐŸĐŽĐ°ĐčŃĐ” ĐČОбŃĐ°ĐœŃ ŃŃĐžŃŃĐž ĐŽĐŸ ĐșĐŸĐ¶ĐœĐŸĐłĐŸ Đ”ĐșŃĐ°ĐœĐ°"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ĐОбДŃŃŃŃ ŃĐŸĐ·ĐŒŃŃ ŃŃŃĐșĐž"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ĐŻĐșŃĐŸ Đ·ĐŒŃĐœĐžŃĐž ŃĐŸĐ·ĐŒŃŃ ŃŃŃĐșĐž, ŃĐŸĐ±ĐŸŃа ĐŸĐ±Đ»Đ°ŃŃŃ ĐżĐ”ŃДзаĐČĐ°ĐœŃажОŃŃŃŃ. ĐŠĐ” ĐŒĐŸĐ¶Đ” заĐčĐœŃŃĐž ĐșŃĐ»ŃĐșа ŃĐ”ĐșŃĐœĐŽ."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"ĐĐ”ŃДзаĐČĐ°ĐœŃĐ°Đ¶Đ”ĐœĐœŃ ŃĐŸĐ±ĐŸŃĐŸŃ ĐŸĐ±Đ»Đ°ŃŃŃ ŃĐ· ŃŃŃĐșĐŸŃ %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"ĐĐ” ĐČĐŽĐ°Đ»ĐŸŃŃ ĐżĐ”ŃДзаĐČĐ°ĐœŃажОŃĐž ŃĐŸĐ±ĐŸŃŃ ĐŸĐ±Đ»Đ°ŃŃŃ ŃĐ· ŃŃŃĐșĐŸŃ %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ĐąĐ”ĐŒŃ ĐœĐ°Đ»Đ°ŃŃĐŸĐČĐ°ĐœĐŸ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ĐĐŸĐŽĐžĐœĐœĐžĐș ĐœĐ°Đ»Đ°ŃŃĐŸĐČĐ°ĐœĐŸ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ĐĄŃŃĐșŃ ĐœĐ°Đ»Đ°ŃŃĐŸĐČĐ°ĐœĐŸ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ĐŻŃлОĐș Đ»ŃĐČĐŸŃŃŃ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ĐŻŃлОĐș ĐżŃаĐČĐŸŃŃŃ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ĐĐ”ĐŒĐ°Ń"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Đ©ĐŸĐ± ĐČОбŃаŃĐž ĐŽĐŸĐŽĐ°ŃĐŸĐș <xliff:g id="APPNAME">%1$s</xliff:g>, ĐČĐžĐșĐŸĐœĐ°ĐčŃĐ” ĐœĐ°ĐČĐ”ĐŽĐ”ĐœŃ ĐœĐžĐ¶ŃĐ” ĐŽŃŃ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ĐĐ” ĐČЎаŃŃŃŃŃ ĐŽĐŸĐŽĐ°ŃĐž ŃŃлОĐș"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"ĐŃĐŽĐșŃĐžŃĐž <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Đ©ĐŸĐ± ĐŽĐŸĐŽĐ°ŃĐž ĐŒĐŸĐ¶Đ»ĐžĐČŃŃŃŃ ŃĐČОЎĐșĐŸĐłĐŸ ĐČĐČŃĐŒĐșĐœĐ”ĐœĐœŃ ĐŽĐŸĐŽĐ°ŃĐșа <xliff:g id="APPNAME">%1$s</xliff:g>, пДŃĐ”ĐșĐŸĐœĐ°ĐčŃĐ”ŃŃ, ŃĐŸ ĐČĐžĐșĐŸĐœĐ°ĐœĐŸ ĐČĐžĐŒĐŸĐłĐž ĐœĐžĐ¶ŃĐ”."</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ĐĐŸŃĐŸĐČĐŸ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ĐĐ”ĐŒĐ°Ń"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ĐĐŸĐșазŃĐČаŃĐž ŃĐżĐŸĐČŃŃĐ”ĐœĐœŃ ĐœĐ° Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸĐŒŃ Đ”ĐșŃĐ°ĐœŃ"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ĐŃĐžŃ
ĐŸĐČŃĐČаŃĐž ŃĐżĐŸĐČŃŃĐ”ĐœĐœŃ ĐœĐ° Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸĐŒŃ Đ”ĐșŃĐ°ĐœŃ"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"ĐĐœŃŃ ĐżĐ°ŃĐ°ĐŒĐ”ŃŃĐž Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČ. Đ”ĐșŃĐ°ĐœĐ°"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ĐĐŸĐœŃŃĐŽĐ”ĐœŃŃĐčĐœŃŃŃŃ, ŃŃĐœĐșŃŃŃ \"ĐаŃаз ĐłŃаŃ\" ŃĐŸŃĐŸ"</string>
<string name="more_colors" msgid="3191071655353004591">"ĐŃĐ»ŃŃĐ” ĐșĐŸĐ»ŃĐŸŃŃĐČ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ĐĐžĐœĐ°ĐŒŃŃĐœĐ° ĐŸŃĐœĐŸĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ĐĐ”ĐčŃŃалŃĐœĐ° ĐŸŃĐœĐŸĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ĐаŃĐžŃĐ”ĐœĐ° ĐŸŃĐœĐŸĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ĐĐžŃĐ°Đ·ĐœĐ° ĐŸŃĐœĐŸĐČĐœĐ° ŃĐ”ĐŒĐ°"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"ĐĐŸĐ»ŃŃ Đ·Đ° ŃĐŒĐŸĐČŃĐ°ĐœĐœŃĐŒ"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"ĐĐŸĐ»ŃŃ \"<xliff:g id="ID_1">%1$d</xliff:g>\""</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ĐŃĐŸĐČДЎŃŃŃ Đ»ŃĐČĐŸŃŃŃ, ŃĐŸĐ± ĐČОбŃаŃĐž ŃĐœŃĐžĐč ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ĐŃĐŸĐČДЎŃŃŃ ĐżŃаĐČĐŸŃŃŃ, ŃĐŸĐ± ĐČОбŃаŃĐž ŃĐœŃĐžĐč ŃĐžŃĐ”ŃблаŃ"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"ĐлаŃĐœŃ ŃĐžŃĐ”ŃблаŃĐž"</string>
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index c642bb9..d3b607a 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Ű۳ۚ ۶۱Ù۱ŰȘ ÚŻÚŸÚÛ"</string>
<string name="clock_description" msgid="3563839327378948">"Ű۳ۚ ۶۱Ù۱ŰȘ ÚŻÚŸÚÛ ÚÙÛÚș"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ű۳ۚ ۶۱Ù۱ŰȘ ÚŻÚŸÚÛ Ú©Ù ŰȘۚۯÛÙ Ú©Ű±ÛÚș"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"ÚŻÚŸÚÛ Ú©Û ŰȘ۱ŰȘÛۚۧŰȘ"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"ÚŻÚŸÚÛ Ú©Û Ű±Űź کۧ ۧ۟ŰȘÛۧ۱ <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"ÚŻÚŸÚÛ Ú©Ű§ ۱ÙÚŻ Ù ŰłŰ§ŰŠŰČ"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"ÚŻÚŸÚÛ Ú©Ű§ ۱ÙÚŻ ۧÙ۱ ۳ۧۊŰČ"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>Ű <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"۱ÙÚŻ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Ù
ÙÙÙ Ű§ŰłÚ©Ű±ÛÙ Ú©Û Ù
Ùۧۯ Ú©Û Ù
Ű·Ű§ŰšÙ ÚŻÚŸÚÛ Ú©Ű§ ۳ۧۊŰČ ŰȘۚۯÛÙ ÛÙŰȘۧ ÛÛ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"ŰšÚۧ"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ÚÚŸÙÙčۧ"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ŰąÙŸ Ú©Û Ű§ŰłÚ©Ű±ÛÙ Ú©Û Ú©ÙÙÛ Ù
ÛÚș ۧÛÚ© ÚÚŸÙÙčÛ ÚŻÚŸÚÛ ŰŻÚ©ÚŸŰ§ŰŠÛ ŰŻÛŰȘÛ ÛÛ"</string>
<string name="grid_title" msgid="1688173478777254123">"ۧÛÙŸ گ۱Ú"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ÙŰ§ÚŻÙ Ú©Ű±ÛÚș"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ŰȘ۱Ù
ÛÙ
ک۱ÙÛ Ú©Û ÙÛÛ ŰȘÚŸÙŸŰȘÚŸÙŸŰ§ŰŠÙÚș"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Û۱ ۧ۳ک۱ÛÙ Ù
ÛÚș Ű§ÙŸÙÛ ÙŸŰłÙŰŻÛŰŻÛ ÙÙÙÙčŰł ێۧÙ
Ù Ú©Ű±ÛÚș"</string>
<string name="grid_options_title" msgid="7071930966989877023">"ÚŻŰ±Ú Ú©Ű§ ۳ۧۊŰČ Ù
ÙŰȘ۟ۚ ک۱ÛÚș"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"GRid کۧ ۳ۧۊŰČ ŰȘۚۯÛÙ Ú©Ű±ÙÛ ŰłÛ Ù۱ک Ű§ŰłÙŸÛŰł ŰŻÙŰšŰ§Ű±Û ÙÙÚ ÛÙ ŰŹŰ§ŰŠÛ ÚŻŰ§ ۧÙ۱ ۧ۳ Ù
ÛÚș ÚÙŰŻ ŰłÛÚ©ÙÚ ÙÚŻ ŰłÚ©ŰȘÛ ÛÛÚșÛ"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"%1$s GRid Ú©Û ŰłŰ§ŰȘÚŸ Ù۱ک Ű§ŰłÙŸÛŰł Ú©Ù ŰŻÙŰšŰ§Ű±Û ÙÙÚ Ú©Ű±Ùۧ"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"%1$s GRid Ú©Û ŰłŰ§ŰȘÚŸ Ù۱ک Ű§ŰłÙŸÛŰł Ú©Ù ŰŻÙŰšŰ§Ű±Û ÙÙÚ Ú©Ű±ÙÛ Ù
ÛÚș ÙۧکۧÙ
"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"۷۱ŰČ Ú©Ű§Ù
ÛŰ§ŰšÛ Ú©Û ŰłŰ§ŰȘÚŸ ŰłÛÙč ÛÙ ÚŻÛۧ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ÚŻÚŸÚÛ Ú©Ű§Ù
ÛŰ§ŰšÛ Ú©Û ŰłŰ§ŰȘÚŸ ŰłÛÙč ÛÙ ÚŻŰŠÛ"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ÚŻŰ±Ú Ú©Ű§Ù
ÛŰ§ŰšÛ Ú©Û ŰłŰ§ŰȘÚŸ ŰłÛÙč ÛÙ ÚŻÛۧ"</string>
@@ -105,7 +110,7 @@
<string name="beta_title" msgid="8703819523760746458">"ŰšÛ Ùčۧ"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ۧÛÙŸ ÚŻŰ±Ú ŰȘۚۯÛÙ Ú©Ű±ÛÚș"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"ÙŰ§Ù ÙŸÛÙŸŰ± Ú©Û Ű±ÙÚŻ"</string>
- <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ŰąÙŸ Ú©Û ÙŰ§Ù ÙŸÛÙŸŰ± Ù
ÙŰŹÙŰŻ ۹ۊÛÚ©ÙŰČŰ ÙčÛÚ©ŰłÙč ۧÙ۱ Ù
ŰČÛŰŻ Ù
Ù
Ű§Ű«Ù Ű±ÙÚŻ"</string>
+ <string name="wallpaper_color_subheader" msgid="4044464573669965670">"۹ۊÛÚ©ÙŰČŰ ÙčÛÚ©ŰłÙč ۧÙ۱ Ù
ŰČÛŰŻ ŰąÙŸ Ú©Û ÙŰ§Ù ÙŸÛÙŸŰ± ŰłÛ Ù
Ù
Ű§Ű«Ù Ű±ÙÚŻ"</string>
<string name="wallpaper_color_title" msgid="5687965239180986458">"ÙŰ§Ù ÙŸÛÙŸŰ± کۧ ۱ÙÚŻ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"ŰšÙÛŰ§ŰŻÛ Ű±ÙÚŻ"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ŰŻÛگ۱ ۱ÙÚŻ"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ۯۧۊÛÚș ۏۧÙŰš کۧ ێۧ۱Ùč Ú©Ùč"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ۚۧۊÛÚș ۏۧÙŰš کۧ ێۧ۱Ùč Ú©Ùč"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ú©ÙŰŠÛ ÙÛÛÚș"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"`<xliff:g id="APPNAME">%1$s</xliff:g>` Ú©Ù Ù
ÙŰȘ۟ۚ ک۱ÙÛ Ú©Û ÙÛÛ ŰŻŰ±ŰŹ ۰ÛÙ Ú©Ù ÚÛÚ© ک۱ÛÚș"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"ێۧ۱Ùč Ú©Ùč ێۧÙ
Ù ÙÛÛÚș Ú©Ûۧ ۏۧ ŰłÚ©ŰȘۧ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> Ú©ÚŸÙÙÛÚș"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ۧÛÙŸ Ú©Ù ŰŽŰ§Ű±Ùč Ú©Ùč Ú©Û Ű·Ù۱ ÙŸŰ± ێۧÙ
Ù Ú©Ű±ÙÛ Ú©Û ÙÛÛ ŰŻŰ±ŰŹ ۰ÛÙ Ú©Ù ÛÙÛÙÛ ŰšÙۧۊÛÚș"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ÛÙ ÚŻÛۧ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>Ű <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ú©ÙŰŠÛ ÙÛÛÚș"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ù
ÙÙÙ Ű§ŰłÚ©Ű±ÛÙ ÙŸŰ± ۧ۷ÙۧŰčۧŰȘ ŰŻÚ©ÚŸŰ§ŰŠÛÚș"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ù
ÙÙÙ Ű§ŰłÚ©Ű±ÛÙ ÙŸŰ± ۧ۷ÙۧŰčۧŰȘ ÚÚŸÙŸŰ§ŰŠÛÚș"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Ù
ÙÙÙ Ű§ŰłÚ©Ű±ÛÙ Ú©Û Ù
ŰČÛŰŻ ۧ۟ŰȘÛۧ۱ۧŰȘ"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"۱ۧŰČۯۧ۱ÛŰ Now Playing ۧÙ۱ Ù
ŰČÛŰŻ"</string>
<string name="more_colors" msgid="3191071655353004591">"Ù
ŰČÛŰŻ ۱ÙÚŻ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ŰšÙÛŰ§ŰŻÛ ÚۧۊÙÛÙ
Ú© ŰȘÚŸÛÙ
"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"ŰšÙÛŰ§ŰŻÛ ÙÛÙÙčŰ±Ù ŰȘÚŸÛÙ
"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"ŰšÙÛŰ§ŰŻÛ Ùۧۊۚ۱ÙÙč ŰȘÚŸÛÙ
"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ŰšÙÛŰ§ŰŻÛ Ù
ŰčÙÛ ŰźÛŰČ ŰȘÚŸÛÙ
"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"۱ÙÚŻ کۧ ÚÛÙۧÙÙč ۧ۟ŰȘÛۧ۱"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> ۱ÙÚŻ کۧ ۧ۟ŰȘÛۧ۱"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ÚŻÚŸÚÛ Ú©Ű§ Ù
ŰźŰȘÙÙ ÚÛŰ±Û Ù
ÙŰȘ۟ۚ ک۱ÙÛ Ú©Û ÙÛÛ ŰŻŰ§ŰŠÛÚș Ű·Ű±Ù ŰłÙŰ§ŰŠÙŸ ک۱ÛÚș"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ÚŻÚŸÚÛ Ú©Ű§ Ù
ŰźŰȘÙÙ ÚÛŰ±Û Ù
ÙŰȘ۟ۚ ک۱ÙÛ Ú©Û ÙÛÛ ŰšŰ§ŰŠÛÚș Ű·Ű±Ù ŰłÙŰ§ŰŠÙŸ ک۱ÛÚș"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Ű۳ۚ ۶۱Ù۱ŰȘ ÚŻÚŸÚÛ Ú©Û ÚÛ۱Û"</string>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 4520ec3..8b8a002 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Maxsus soat"</string>
<string name="clock_description" msgid="3563839327378948">"Maxsus soat tanlash"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Maxsus soatni almashtirish"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Soat sozlamalari"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Soat yuzi varianti: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Soat rangi va hajmi"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Soat rangi va hajmi"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Rang"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Soat hajmi ekran qulfidagi kontent asosida oʻzgaradi"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Yirik"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Kichik"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Ekran chekkasida kichik soat chiqishi"</string>
<string name="grid_title" msgid="1688173478777254123">"Ilovalar jadvali"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Tatbiq etish"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tahrirlash uchun tegining"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Sevimli shriftlarni har bir ekranga kiriting"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Kataklar hajmini tanlang"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Kataklar hajmi tanlansa, ishchi maydon bir necha soniyada qayta yuklanadi."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ishchi maydon %1$s hajmida qayta yuklanmoqda"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Ishchi maydon %1$s hajmida qayta yuklanmadi"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Dizayn sozlandi"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Soat sozlandi"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Kataklar sozlandi"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Chap yorliq"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Oʻng yorliq"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Hech biri"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"“<xliff:g id="APPNAME">%1$s</xliff:g>” ilovasini tanlash uchun quyidagilarni bajaring:"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Yorliq kiritilmadi"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ochish: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"<xliff:g id="APPNAME">%1$s</xliff:g> ilovasini yorliq sifatida qoʻshish uchun"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Tayyor"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Hech qanday"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ekran qulfida bildirishnomalarni chiqarish"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ekran qulfida bildirishnomalarni berkitish"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Boshqa ekran qulfi sozlamalari"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Maxfiylik, Bu qaysi musiqa va boshqalar"</string>
<string name="more_colors" msgid="3191071655353004591">"Boshqa ranglar"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Asosiy dinamik mavzu"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Asosiy neytral mavzu"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Asosiy yorqin mavzu"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Asosiy ifodali mavzu"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Asosiy rang varianti"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> rangi varianti"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Boshqa soat yuzini tanlash uhcun chapga suring"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Boshqa soat yuzini tanlash uhcun oʻngga suring"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Maxsus soatlar"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7ed6b59..29755c5 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Äá»ng há» tuỳ chá»nh"</string>
<string name="clock_description" msgid="3563839327378948">"Chá»n Äá»ng há» tuỳ chá»nh"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Thay Äá»i Äá»ng há» tuỳ chá»nh"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Cài Äáș·t Äá»ng há»"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Lá»±a chá»n vá» máș·t Äá»ng há» <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Màu và kích thưá»c Äá»ng há»"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Màu và kích thưá»c Äá»ng há»"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Màu"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Kích thưá»c Äá»ng há» thay Äá»i theo ná»i dung trên màn hình khoá"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Lá»n"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Nhá»"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Má»t chiáșżc Äá»ng há» nhá» hiá»n thá» á» góc màn hình"</string>
<string name="grid_title" msgid="1688173478777254123">"Lưá»i ứng dỄng"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Áp dỄng"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Nháș„n Äá» chá»nh sá»a"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Thêm phông chữ báșĄn yêu thích vào má»i màn hình"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Chá»n kích thưá»c lưá»i"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Không gian làm viá»c sáșœ táșŁi láșĄi náșżu báșĄn thay Äá»i kích thưá»c lưá»i (có thá» máș„t vài giây)."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Äang táșŁi láșĄi không gian làm viá»c Äá» áp dỄng lưá»i %1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Không táșŁi láșĄi ÄÆ°á»Łc không gian làm viá»c Äá» áp dỄng lưá»i %1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Äã Äáș·t kiá»u thành công"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Äã Äáș·t Äá»ng há» thành công"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"Äã Äáș·t lưá»i thành công"</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"Màu hình ná»n"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"Màu cÆĄ báșŁn"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"Màu khác"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"Chá»n màu báș„t kỳ cho biá»u tÆ°á»Łng, Äá»ng há» cá»§a báșĄn, v.v."</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"Chá»n màu cho các biá»u tÆ°á»Łng, Äá»ng há», v.v."</string>
<string name="color_changed" msgid="7029571720331641235">"Äã thay Äá»i màu"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Äá»ng"</string>
<string name="color_picker_title" msgid="6666830057938082864">"Màu há» thá»ng"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Lá»i táșŻt bên trái"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Lá»i táșŻt bên pháșŁi"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Không có"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Äá» chá»n \"<xliff:g id="APPNAME">%1$s</xliff:g>\", hãy làm theo hưá»ng dáș«n sau Äây"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Không thêm ÄÆ°á»Łc lá»i táșŻt"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Má» <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Äá» táșĄo lá»i táșŻt cho ứng dỄng <xliff:g id="APPNAME">%1$s</xliff:g>, hãy ÄáșŁm báșŁo"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Xong"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Không có"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Hiá»n thá» thông báo trên màn hình khoá"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"áșšn thông báo trên màn hình khoá"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"Tuỳ chá»n khác trên màn hình khoá"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"Quyá»n riêng tư, Phát hiá»n nháșĄc, v.v."</string>
<string name="more_colors" msgid="3191071655353004591">"Màu khác"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Giao diá»n Äá»ng chính"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Giao diá»n trung tính chính"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Giao diá»n rá»±c rụ chính"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Giao diá»n biá»u ÄáșĄt chính"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Tuỳ chá»n màu máș·c Äá»nh"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Tuỳ chá»n màu <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Vuá»t sang trái Äá» chá»n máș·t Äá»ng há» khác"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Vuá»t sang pháșŁi Äá» chá»n máș·t Äá»ng há» khác"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Äá»ng há» tuỳ chá»nh"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index b194ca1..c90773e 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -17,12 +17,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="1647136562008520313">"ćŁçșžćæ ·ćŒ"</string>
+ <string name="app_name" msgid="1647136562008520313">"ćŁçșžäžäžȘæ§ć"</string>
<string name="theme_title" msgid="2144932106319405101">"æ ·ćŒ"</string>
<string name="clock_title" msgid="1974314575211361352">"èȘćźäčééą"</string>
<string name="clock_description" msgid="3563839327378948">"éæ©èȘćźäčééą"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"æŽæčèȘćźäčééą"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"èĄšçèźŸçœź"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"èĄšçééĄč <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"æ¶ééąèČćć°ș毞"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"æ¶ééąèČćć°ș毞"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>ă<xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"éąèČ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"æ¶é性ć°äŒäŸæźéćźć±ćčäžçć
ćźčèćć"</string>
<string name="clock_size_large" msgid="3143248715744138979">"性"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ć°"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"äžäžȘć°ćæ¶éæŸç€șćšçéąäžè§"</string>
<string name="grid_title" msgid="1688173478777254123">"ćșçšçœæ Œ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ćșçš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"çčæćłćŻäżźæč"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ć°æšćç±çćäœćșçšäșæŻäžȘć±ćčäžçæć"</string>
<string name="grid_options_title" msgid="7071930966989877023">"éæ©çœæ Œć€§ć°"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"æŽæčçœæ Œć€§ć°ć°äŒéæ°ć èœœć·„äœćșïŒèżćŻèœéèŠć ç§éçæ¶éŽă"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"æŁćšéæ°ć èœœçœæ Œć€§ć°äžș“%1$s”çć·„äœćș"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"æȘèœéæ°ć èœœçœæ Œć€§ć°äžș“%1$s”çć·„äœćș"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ć·ČæćèźŸçœźæ ·ćŒ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ć·ČæćèźŸçœźæ¶é"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ć·ČæćèźŸçœźçœæ Œ"</string>
@@ -101,7 +106,7 @@
<string name="mode_title" msgid="2394873501427436055">"æ·±èČäž»éą"</string>
<string name="mode_disabled_msg" msgid="9196245518435936512">"ć çç”æšĄćŒć·ČćŒćŻïŒèŻ„ćèœè૿æ¶ćçšäș"</string>
<string name="mode_changed" msgid="2243581369395418584">"äž»éąć·ČæŽæč"</string>
- <string name="themed_icon_title" msgid="7312460430471956558">"枊䞻éąçćŸæ "</string>
+ <string name="themed_icon_title" msgid="7312460430471956558">"äž»éąćŸæ "</string>
<string name="beta_title" msgid="8703819523760746458">"Beta ç"</string>
<string name="gird_picker_entry_content_description" msgid="9087651470212293439">"æŽæčćșçšçœæ Œ"</string>
<string name="wallpaper_color_tab" msgid="1447926591721403840">"ćŁçșžéąèČ"</string>
@@ -113,10 +118,10 @@
<string name="color_changed" msgid="7029571720331641235">"éąèČć·ČæŽæč"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ćšæ"</string>
<string name="color_picker_title" msgid="6666830057938082864">"çł»ç»éąèČ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ćć·Šćż«æ·æčćŒ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ććłćż«æ·æčćŒ"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ć·ŠäŸ§ćż«æ·æčćŒ"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ćłäŸ§ćż«æ·æčćŒ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"æ "</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"è„èŠéæ©“<xliff:g id="APPNAME">%1$s</xliff:g>”ïŒèŻ·çĄźèź€æ»Ąè¶łć·Čä»„äžæĄä»¶ïŒ"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"æ æłæ·»ć ćż«æ·æčćŒ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"æćŒ<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"è„èŠć°<xliff:g id="APPNAME">%1$s</xliff:g>ćșçšæ·»ć äžșćż«æ·æčćŒïŒèŻ·çĄźäżïŒ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ćźæ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>ă<xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"æ "</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ćšéćźçć±ćčäžæŸç€șéç„"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ćšéćźçć±ćčäžäžæŸç€șéç„"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"æŽć€éć±ééĄč"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"éç§èźŸçœźă黿Čç„éłç"</string>
<string name="more_colors" msgid="3191071655353004591">"æŽć€éąèČ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"äž»èŠćšæäž»éą"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"äž»èŠäžæ§äž»éą"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"äž»èŠéČèłäž»éą"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"äž»èŠç«ćœ©äž»éą"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"é»èź€éąèČééĄč"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"éąèČééĄč <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ćć·Šæ»ćšïŒéæ©ćŠäžäžȘèĄšç"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ććłæ»ćšïŒéæ©ćŠäžäžȘèĄšç"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"èȘćźäčèĄšç"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 3c0c8c6..1f1c1f3 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"èȘèšæé"</string>
<string name="clock_description" msgid="3563839327378948">"æéžèȘèšæé"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"èźæŽèȘèšæé"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"æéèšćź"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"é¶éąéžé
<xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"æééĄèČć性ć°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"æééĄèČć性ć°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>ïŒ<xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"éĄèČ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"æéæäžéç«éąć
§ćźčèźæŽć€§ć°"</string>
<string name="clock_size_large" msgid="3143248715744138979">"性"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ć°"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ćšèąćčè§èœéĄŻç€șć°æé"</string>
<string name="grid_title" msgid="1688173478777254123">"æçšçšćŒç¶Čæ Œ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ć„çš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"èŒæćłćŻç·šèŒŻ"</string>
@@ -62,9 +64,12 @@
<string name="preview_name_shape" msgid="5676971146080968721">"ćœąç"</string>
<string name="preview_name_wallpaper" msgid="1738652462949531828">"æĄćž"</string>
<string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
- <string name="font_card_body" msgid="6790525594503904468">"èźæŻćç«éąéĄŻç€șæšćæçćć"</string>
+ <string name="font_card_body" msgid="6790525594503904468">"èźæŻćç«éąéĄŻç€șäœ ćæçćć"</string>
<string name="grid_options_title" msgid="7071930966989877023">"è«éžæç¶Čæ Œć€§ć°"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ćŠæèźæŽç¶Čæ Œć€§ć°ïŒçł»ç”±æéæ°èŒć
„ć·„äœćïŒéçšćŻèœéææžç§ă"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"æŁćšéæ°èŒć
„ç¶Čæ Œć€§ć°çșă%1$săçć·„äœć"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"çĄæłéæ°èŒć
„ç¶Čæ Œć€§ć°çșă%1$săçć·„äœć"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"æćèšćźæšŁćŒ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"æćèšćźæé"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"æćèšćźç¶Čæ Œ"</string>
@@ -109,14 +114,14 @@
<string name="wallpaper_color_title" msgid="5687965239180986458">"æĄćžéĄèČ"</string>
<string name="preset_color_tab" msgid="3133391839341329314">"ćșæŹéĄèČ"</string>
<string name="preset_color_tab_2" msgid="1444107326712562538">"ć
¶ä»éĄèČ"</string>
- <string name="preset_color_subheader" msgid="8230588536141279371">"çșćç€șăæéçéžæä»»äœéĄèČ"</string>
+ <string name="preset_color_subheader" msgid="8230588536141279371">"çșćç€șăæéçéžæéĄèČ"</string>
<string name="color_changed" msgid="7029571720331641235">"ć·Čç¶èźćéĄèČ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ćæ
"</string>
<string name="color_picker_title" msgid="6666830057938082864">"系由éĄèČ"</string>
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ćć·Šæ·ćŸ"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ććłæ·ćŸ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"çĄ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"è«ćŸéžä»„äžéžé
仄éžćă<xliff:g id="APPNAME">%1$s</xliff:g>ă"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"çĄæłæ°ćąæ·ćŸ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"éćă<xliff:g id="APPNAME">%1$s</xliff:g>ă"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ćŠèŠæ°ćąă<xliff:g id="APPNAME">%1$s</xliff:g>ăæçšçšćŒçșćż«éé”ïŒè«çąșäżïŒ"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ćźæ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>ïŒ<xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"çĄ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ćšäžéç«éąéĄŻç€șéç„"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ćšäžéç«éąé±èéç„"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"æŽć€äžéç«éąéžé
"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"ç§é±ăææČèć„ćć
¶ä»èšćź"</string>
<string name="more_colors" msgid="3191071655353004591">"æŽć€éĄèČ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"ćæ
äž»èŠäž»éĄ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"äžæ§äž»èŠäž»éĄ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"éźźè·äž»èŠäž»éĄ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"ç±æ
äž»èŠäž»éĄ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"é èšéĄèČéžé
"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"éĄèČéžé
ïŒ<xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ćć·Šæ»ććłćŻéžæć
¶ä»é¶éą"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ććłæ»ććłćŻéžæć
¶ä»é¶éą"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"èȘèšæé"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 72a137b..9a37b39 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"èȘèšæé"</string>
<string name="clock_description" msgid="3563839327378948">"éžæèȘèšæé"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"èźæŽèȘèšæé"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"æéèšćź"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"é¶éąéžé
<xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"æééĄèČè性ć°"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"æééĄèČè性ć°"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_2">%2$s</xliff:g>ïŒ<xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"éĄèČ"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"æé〧㰿äŸèąćčéćźç«éąäžçć
§ćźčèȘżæŽ"</string>
<string name="clock_size_large" msgid="3143248715744138979">"性"</string>
<string name="clock_size_small" msgid="2280449912094164133">"ć°"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"ćšç«éąè§èœéĄŻç€șć°ćæé"</string>
<string name="grid_title" msgid="1688173478777254123">"æçšçšćŒæ Œç·"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ć„çš"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"èŒè§žéèŁĄćłćŻç·šèŒŻ"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"ć°äœ ćæçććć„çšć°æŻćç«éą"</string>
<string name="grid_options_title" msgid="7071930966989877023">"éžæç¶Čæ Œć€§ć°"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"ćŠæèźæŽç¶Čæ Œć€§ć°ïŒçł»ç”±æéæ°èŒć
„ć·„äœćïŒäžéèŠćčŸç§éçæéæèœćźæă"</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"æŁćšéæ°èŒć
„ç¶Čæ Œć€§ć°çșă%1$săçć·„äœć"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"çĄæłéæ°èŒć
„ç¶Čæ Œć€§ć°çșă%1$săçć·„äœć"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"ć·ČæćèšćźæšŁćŒ"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"ć·Čæćèšćźæé"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"ć·Čæćèšćźç¶Čæ Œ"</string>
@@ -113,10 +118,10 @@
<string name="color_changed" msgid="7029571720331641235">"éĄèČć·ČèźæŽ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ćæ
"</string>
<string name="color_picker_title" msgid="6666830057938082864">"系由é
èČ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ćć·Šćż«éé”"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ććłćż«éé”"</string>
+ <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"ć·ŠćŽæ·ćŸ"</string>
+ <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"ćłćŽæ·ćŸ"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"çĄ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"ćż
é ćźæä»„äžäșé
æèœéžćă<xliff:g id="APPNAME">%1$s</xliff:g>ă"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"çĄæłæ°ćąæ·ćŸ"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"éćă<xliff:g id="APPNAME">%1$s</xliff:g>ă"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"ćŠèŠć°ă<xliff:g id="APPNAME">%1$s</xliff:g>ăæçšçšćŒæ°ćąçșæ·ćŸïŒćż
é æ»żè¶łä»„äžæąä»¶"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"ćźæ"</string>
@@ -125,12 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>ă<xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"çĄ"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ćšèąćčéćźç«éąäžéĄŻç€șéç„"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ćšèąćčéćźç«éąäžé±èéç„"</string>
- <!-- no translation found for more_settings_section_title (1331425454775815958) -->
- <skip />
- <!-- no translation found for more_settings_section_description (1860115709122398325) -->
- <skip />
+ <string name="more_settings_section_title" msgid="1331425454775815958">"æŽć€èąćčéćźéžé
"</string>
+ <string name="more_settings_section_description" msgid="1860115709122398325">"é±ç§æŹăèœèČ蟚æČćć
¶ä»èšćź"</string>
<string name="more_colors" msgid="3191071655353004591">"æŽć€éĄèČ"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"äž»èŠćæ
äž»éĄ"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"äž»èŠèȘç¶äž»éĄ"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"äž»èŠéźźè±äž»éĄ"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"äž»èŠèĄšçŸäž»éĄ"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"é èšéĄèČéžé
"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"éĄèČéžé
<xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"ćć·Šæ»ććŻéžæć
¶ä»é¶éą"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"ććłæ»ććŻéžæć
¶ä»é¶éą"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"èȘèšé¶éą"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index def5d0a..efd40c2 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -22,7 +22,8 @@
<string name="clock_title" msgid="1974314575211361352">"Iwashi Elingokomuntu Ngamunye"</string>
<string name="clock_description" msgid="3563839327378948">"Khetha iwashi elingokomuntu ngamunye"</string>
<string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Shintsha iwashi elingokomuntu ngamunye"</string>
- <string name="clock_settings_title" msgid="2940654205471453913">"Amasethingi Ewashi"</string>
+ <string name="select_clock_action_description" msgid="5025888763471843648">"Okukhethwa kukho kobuso bewashi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="clock_settings_title" msgid="2050906379377120431">"Umbala wewashi nosayizi"</string>
<string name="clock_color_and_size_title" msgid="7146791234905111351">"Umbala wewashi nosayizi"</string>
<string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="clock_color" msgid="8081608867289156163">"Umbala"</string>
@@ -40,6 +41,7 @@
<string name="clock_size_dynamic_description" msgid="2776620745774561662">"Usayizi wewashi uyashintsha ngokuya ngokuqukethwe kokukhiya isikrini"</string>
<string name="clock_size_large" msgid="3143248715744138979">"Obukhulu"</string>
<string name="clock_size_small" msgid="2280449912094164133">"Esincane"</string>
+ <string name="clock_size_small_description" msgid="4089511196955732480">"Iwashi elincane livela ekhoneni lesikrini sakho"</string>
<string name="grid_title" msgid="1688173478777254123">"Igridi ye-app"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Faka"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Thepha ukuze uhlele"</string>
@@ -65,6 +67,9 @@
<string name="font_card_body" msgid="6790525594503904468">"Engeza amafonti akho owathandayo kuso sonke isikrini"</string>
<string name="grid_options_title" msgid="7071930966989877023">"Khetha usayizi we-grid"</string>
<string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+ <string name="apply_grid_btn_note" msgid="2966021967355139181">"Ukushintsha usayizi wegridi kuzolayisha kabusha indawo yokusebenza futhi kungase kuthathe imizuzwana embalwa."</string>
+ <string name="toast_of_changing_grid" msgid="3515633981312731121">"Ilayisha kabusha indawo yokusebenza ngegridi engu-%1$s"</string>
+ <string name="toast_of_failure_to_change_grid" msgid="1349622908271736044">"Yehlulekile ukulayisha kabusha indawo yokusebenza ngegridi engu-%1$s"</string>
<string name="applied_theme_msg" msgid="3749018706366796244">"Isitayela sisethwe ngokuphumelelayo"</string>
<string name="applied_clock_msg" msgid="1303338016701443767">"Iwashi lisethwe ngokuphumelelayo"</string>
<string name="applied_grid_msg" msgid="3250499654436933034">"I-Grid isethwe ngempumelelo"</string>
@@ -116,7 +121,7 @@
<string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Isinqamuleli sangakwesokunxele"</string>
<string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Isinqamuleli sangakwesokudla"</string>
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Lutho"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Ukukhetha i-`<xliff:g id="APPNAME">%1$s</xliff:g>` maka okulandelayo"</string>
+ <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Ayikwazi ukwengeza isinqamuleli"</string>
<string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Vula i-<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Ukwengeza i-app ye-<xliff:g id="APPNAME">%1$s</xliff:g> njengesinqamuleli, qinisekisa"</string>
<string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Kwenziwe"</string>
@@ -125,10 +130,16 @@
<string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
<string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Lutho"</string>
<string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Bonisa izaziso esikrinini sokukhiya"</string>
- <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fihla izaziso esikrinini sokukhiya"</string>
<string name="more_settings_section_title" msgid="1331425454775815958">"Okukhethwa kukho kokukhiya isikrini okuningi"</string>
<string name="more_settings_section_description" msgid="1860115709122398325">"Ubumfihlo, Okudlala Manje, nokuningi"</string>
<string name="more_colors" msgid="3191071655353004591">"Imibala Eyengeziwe"</string>
+ <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Itimu eshintshayo eyinhloko"</string>
+ <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Itimu emaphakathi eyinhloko"</string>
+ <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Itimu edlidlizayo eyinhloko"</string>
+ <string name="content_description_expressive_color_option" msgid="6081295313456341282">"Itimu ebizayo eyinhloko"</string>
<string name="content_description_default_color_option" msgid="7011899327541080695">"Okukhethwa kukho kombala okuzenzakalelayo"</string>
<string name="content_description_color_option" msgid="4169813692012119578">"Okukhethwa kukho kombala kwe-<xliff:g id="ID_1">%1$d</xliff:g>"</string>
+ <string name="scroll_forward_and_select" msgid="6156132388656395769">"Swayiphela kwesokunxele ukuze ukhethe ubuso bewashi obuhlukile"</string>
+ <string name="scroll_backward_and_select" msgid="5472202348434803757">"Swayiphela kwesokudla ukuze ukhethe ubuso bewashi obuhlukile"</string>
+ <string name="custom_clocks_label" msgid="8168419717593569347">"Amawashi Angokwezifiso"</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9b55965..b06bbba 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -436,15 +436,6 @@
<string name="show_notifications_on_lock_screen">Show notifications on the lock screen</string>
<!--
- Summary for a setting that lets the user toggle between showing or hiding notifications on their
- device's lock screen. This one is shown when the user is not allowing notifications to show on
- their device's lock screen.
-
- [CHAR LIMIT=64].
- -->
- <string name="hide_notifications_on_lock_screen">Hide notifications on the lock screen</string>
-
- <!--
Title for a section in a list of sections in the settings app that allows the user to access
additional settings related to lock screen behaviour.
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b2cd71d..c2710f6 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -75,7 +75,9 @@
</style>
<!-- Common components and widgets -->
- <style name="TitleTextAppearance" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"/>
+ <style name="TitleTextAppearance" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
+ <item name="android:textSize">14sp</item>
+ </style>
<style name="ActionPrimaryButton" parent="android:Widget.DeviceDefault.Button.Colored"/>
diff --git a/src/com/android/customization/model/color/ColorBundle.java b/src/com/android/customization/model/color/ColorBundle.java
deleted file mode 100644
index d34f3fc..0000000
--- a/src/com/android/customization/model/color/ColorBundle.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-package com.android.customization.model.color;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.view.View;
-import android.widget.ImageView;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.Dimension;
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.systemui.monet.Style;
-import com.android.wallpaper.R;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Represents a preset color available for the user to chose as their theming option.
- */
-public class ColorBundle extends ColorOption {
-
- private final PreviewInfo mPreviewInfo;
-
- @VisibleForTesting ColorBundle(String title,
- Map<String, String> overlayPackages, boolean isDefault, Style style, int index,
- PreviewInfo previewInfo) {
- super(title, overlayPackages, isDefault, style, index);
- mPreviewInfo = previewInfo;
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- Resources res = view.getContext().getResources();
- int primaryColor = mPreviewInfo.resolvePrimaryColor(res);
- int secondaryColor = mPreviewInfo.resolveSecondaryColor(res);
-
- for (int i = 0; i < mPreviewColorIds.length; i++) {
- ImageView colorPreviewImageView = view.findViewById(mPreviewColorIds[i]);
- int color = i % 2 == 0 ? primaryColor : secondaryColor;
- colorPreviewImageView.getDrawable().setColorFilter(color, PorterDuff.Mode.SRC);
- }
- view.setContentDescription(getContentDescription(view.getContext()));
- }
-
- @Override
- public PreviewInfo getPreviewInfo() {
- return mPreviewInfo;
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.color_option;
- }
-
- @Override
- public String getSource() {
- return ColorOptionsProvider.COLOR_SOURCE_PRESET;
- }
-
- /**
- * The preview information of {@link ColorBundle}
- */
- public static class PreviewInfo implements ColorOption.PreviewInfo {
- @ColorInt
- public final int secondaryColorLight;
- @ColorInt public final int secondaryColorDark;
- // Monet system palette and accent colors
- @ColorInt public final int primaryColorLight;
- @ColorInt public final int primaryColorDark;
- @Dimension
- public final int bottomSheetCornerRadius;
-
- @ColorInt private int mOverrideSecondaryColorLight = Color.TRANSPARENT;
- @ColorInt private int mOverrideSecondaryColorDark = Color.TRANSPARENT;
- @ColorInt private int mOverridePrimaryColorLight = Color.TRANSPARENT;
- @ColorInt private int mOverridePrimaryColorDark = Color.TRANSPARENT;
-
- private PreviewInfo(
- int secondaryColorLight, int secondaryColorDark, int colorSystemPaletteLight,
- int primaryColorDark, @Dimension int cornerRadius) {
- this.secondaryColorLight = secondaryColorLight;
- this.secondaryColorDark = secondaryColorDark;
- this.primaryColorLight = colorSystemPaletteLight;
- this.primaryColorDark = primaryColorDark;
- this.bottomSheetCornerRadius = cornerRadius;
- }
-
- /**
- * Returns the accent color to be applied corresponding with the current configuration's
- * UI mode.
- * @return one of {@link #secondaryColorDark} or {@link #secondaryColorLight}
- */
- @ColorInt
- public int resolveSecondaryColor(Resources res) {
- boolean night = (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES;
- if (mOverrideSecondaryColorDark != Color.TRANSPARENT
- || mOverrideSecondaryColorLight != Color.TRANSPARENT) {
- return night ? mOverrideSecondaryColorDark : mOverrideSecondaryColorLight;
- }
- return night ? secondaryColorDark : secondaryColorLight;
- }
-
- /**
- * Returns the palette (main) color to be applied corresponding with the current
- * configuration's UI mode.
- * @return one of {@link #secondaryColorDark} or {@link #secondaryColorLight}
- */
- @ColorInt
- public int resolvePrimaryColor(Resources res) {
- boolean night = (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES;
- if (mOverridePrimaryColorDark != Color.TRANSPARENT
- || mOverridePrimaryColorLight != Color.TRANSPARENT) {
- return night ? mOverridePrimaryColorDark : mOverridePrimaryColorLight;
- }
- return night ? primaryColorDark
- : primaryColorLight;
- }
-
- /**
- * Sets accent colors to override the ones in this bundle
- */
- public void setOverrideAccentColors(int overrideColorAccentLight,
- int overrideColorAccentDark) {
- mOverrideSecondaryColorLight = overrideColorAccentLight;
- mOverrideSecondaryColorDark = overrideColorAccentDark;
- }
-
- /**
- * Sets palette colors to override the ones in this bundle
- */
- public void setOverridePaletteColors(int overrideColorPaletteLight,
- int overrideColorPaletteDark) {
- mOverridePrimaryColorLight = overrideColorPaletteLight;
- mOverridePrimaryColorDark = overrideColorPaletteDark;
- }
- }
-
- /**
- * The builder of ColorBundle
- */
- public static class Builder {
- protected String mTitle;
- @ColorInt private int mSecondaryColorLight = Color.TRANSPARENT;
- @ColorInt private int mSecondaryColorDark = Color.TRANSPARENT;
- // System and Monet colors
- @ColorInt private int mPrimaryColorLight = Color.TRANSPARENT;
- @ColorInt private int mPrimaryColorDark = Color.TRANSPARENT;
- private boolean mIsDefault;
- private Style mStyle = Style.TONAL_SPOT;
- private int mIndex;
- protected Map<String, String> mPackages = new HashMap<>();
-
- /**
- * Builds the ColorBundle
- * @param context {@link Context}
- * @return new {@link ColorBundle} object
- */
- public ColorBundle build(Context context) {
- if (mTitle == null) {
- mTitle = context.getString(R.string.adaptive_color_title);
- }
- return new ColorBundle(mTitle, mPackages, mIsDefault, mStyle, mIndex,
- createPreviewInfo(context));
- }
-
- /**
- * Creates preview information
- * @param context the {@link Context}
- * @return the {@link PreviewInfo} object
- */
- public PreviewInfo createPreviewInfo(@NonNull Context context) {
- Resources system = context.getResources().getSystem();
- return new PreviewInfo(mSecondaryColorLight,
- mSecondaryColorDark, mPrimaryColorLight, mPrimaryColorDark,
- system.getDimensionPixelOffset(
- system.getIdentifier(ResourceConstants.CONFIG_CORNERRADIUS, "dimen",
- ResourceConstants.ANDROID_PACKAGE)));
- }
-
- public Map<String, String> getPackages() {
- return Collections.unmodifiableMap(mPackages);
- }
-
- /**
- * Gets title of this {@link ColorBundle} object
- * @return title string
- */
- public String getTitle() {
- return mTitle;
- }
-
- /**
- * Sets title of bundle
- * @param title specified title
- * @return this of {@link Builder}
- */
- public Builder setTitle(String title) {
- mTitle = title;
- return this;
- }
-
- /**
- * Sets color accent (light)
- * @param colorSecondaryLight color accent light in {@link ColorInt}
- * @return this of {@link Builder}
- */
- public Builder setColorSecondaryLight(@ColorInt int colorSecondaryLight) {
- mSecondaryColorLight = colorSecondaryLight;
- return this;
- }
-
- /**
- * Sets color accent (dark)
- * @param colorSecondaryDark color accent dark in {@link ColorInt}
- * @return this of {@link Builder}
- */
- public Builder setColorSecondaryDark(@ColorInt int colorSecondaryDark) {
- mSecondaryColorDark = colorSecondaryDark;
- return this;
- }
-
- /**
- * Sets color system palette (light)
- * @param colorPrimaryLight color system palette in {@link ColorInt}
- * @return this of {@link Builder}
- */
- public Builder setColorPrimaryLight(@ColorInt int colorPrimaryLight) {
- mPrimaryColorLight = colorPrimaryLight;
- return this;
- }
-
- /**
- * Sets color system palette (dark)
- * @param colorPrimaryDark color system palette in {@link ColorInt}
- * @return this of {@link Builder}
- */
- public Builder setColorPrimaryDark(@ColorInt int colorPrimaryDark) {
- mPrimaryColorDark = colorPrimaryDark;
- return this;
- }
-
- /**
- * Sets overlay package for bundle
- * @param category the category of bundle
- * @param packageName tha name of package in the category
- * @return this of {@link Builder}
- */
- public Builder addOverlayPackage(String category, String packageName) {
- mPackages.put(category, packageName);
- return this;
- }
-
- /**
- * Sets the style of this color seed
- * @param style color style of {@link Style}
- * @return this of {@link Builder}
- */
- public Builder setStyle(Style style) {
- mStyle = style;
- return this;
- }
-
- /**
- * Sets color option index of bundle
- * @param index color option index
- * @return this of {@link Builder}
- */
- public Builder setIndex(int index) {
- mIndex = index;
- return this;
- }
-
- /**
- * Sets as default bundle
- * @return this of {@link Builder}
- */
- public Builder asDefault() {
- mIsDefault = true;
- return this;
- }
- }
-}
diff --git a/src/com/android/customization/model/color/ColorBundlePreviewExtractor.java b/src/com/android/customization/model/color/ColorBundlePreviewExtractor.java
deleted file mode 100644
index 55b637f..0000000
--- a/src/com/android/customization/model/color/ColorBundlePreviewExtractor.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Copyright (C) 2022 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.
- */
-package com.android.customization.model.color;
-
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SYSTEM_PALETTE;
-import static com.android.customization.model.color.ColorUtils.toColorString;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.ColorInt;
-
-import com.android.systemui.monet.ColorScheme;
-import com.android.systemui.monet.Style;
-
-/**
- * Utility class to read all the details of a color bundle for previewing it
- * (eg, actual color values)
- */
-class ColorBundlePreviewExtractor {
-
- private static final String TAG = "ColorBundlePreviewExtractor";
-
- private final PackageManager mPackageManager;
-
- ColorBundlePreviewExtractor(Context context) {
- mPackageManager = context.getPackageManager();
- }
-
- void addSecondaryColor(ColorBundle.Builder builder, @ColorInt int color) {
- ColorScheme darkColorScheme = new ColorScheme(color, true);
- ColorScheme lightColorScheme = new ColorScheme(color, false);
- int lightSecondary = lightColorScheme.getAccentColor();
- int darkSecondary = darkColorScheme.getAccentColor();
- builder.addOverlayPackage(OVERLAY_CATEGORY_COLOR, toColorString(color))
- .setColorSecondaryLight(lightSecondary)
- .setColorSecondaryDark(darkSecondary);
- }
-
- void addPrimaryColor(ColorBundle.Builder builder, @ColorInt int color) {
- ColorScheme darkColorScheme = new ColorScheme(color, true);
- ColorScheme lightColorScheme = new ColorScheme(color, false);
- int lightPrimary = lightColorScheme.getAccentColor();
- int darkPrimary = darkColorScheme.getAccentColor();
- builder.addOverlayPackage(OVERLAY_CATEGORY_SYSTEM_PALETTE, toColorString(color))
- .setColorPrimaryLight(lightPrimary)
- .setColorPrimaryDark(darkPrimary);
- }
-
- void addColorStyle(ColorBundle.Builder builder, String styleName) {
- Style s = Style.TONAL_SPOT;
- if (!TextUtils.isEmpty(styleName)) {
- try {
- s = Style.valueOf(styleName);
- } catch (IllegalArgumentException e) {
- Log.i(TAG, "Unknown style : " + styleName + ". Will default to TONAL_SPOT.");
- }
- }
- builder.setStyle(s);
- }
-}
diff --git a/src/com/android/customization/model/color/ColorCustomizationManager.java b/src/com/android/customization/model/color/ColorCustomizationManager.java
index 790c86f..0f87a7b 100644
--- a/src/com/android/customization/model/color/ColorCustomizationManager.java
+++ b/src/com/android/customization/model/color/ColorCustomizationManager.java
@@ -182,22 +182,7 @@
lockWallpaperColors = null;
}
mProvider.fetch(callback, reload, mHomeWallpaperColors,
- lockWallpaperColors, /* shouldUseRevampedUi= */ false);
- }
-
- /**
- * Fetch options function for the customization hub revamped UI
- *
- * TODO (b/276417460): refactor to reduce code repetition with the other fetch options function
- */
- public void fetchRevampedUIOptions(OptionsFetchedListener<ColorOption> callback,
- boolean reload) {
- WallpaperColors lockWallpaperColors = mLockWallpaperColors;
- if (lockWallpaperColors != null && mLockWallpaperColors.equals(mHomeWallpaperColors)) {
- lockWallpaperColors = null;
- }
- mProvider.fetch(callback, reload, mHomeWallpaperColors,
- lockWallpaperColors, /* shouldUseRevampedUi= */ true);
+ lockWallpaperColors);
}
/**
diff --git a/src/com/android/customization/model/color/ColorOption.java b/src/com/android/customization/model/color/ColorOption.java
index 216bb9b..5d2e995 100644
--- a/src/com/android/customization/model/color/ColorOption.java
+++ b/src/com/android/customization/model/color/ColorOption.java
@@ -52,8 +52,6 @@
static final String TIMESTAMP_FIELD = "_applied_timestamp";
protected final Map<String, String> mPackagesByCategory;
- protected final int[] mPreviewColorIds = {R.id.color_preview_0, R.id.color_preview_1,
- R.id.color_preview_2, R.id.color_preview_3};
private final String mTitle;
private final boolean mIsDefault;
private final Style mStyle;
@@ -86,6 +84,9 @@
if (mIsDefault) {
String serializedOverlays = colorManager.getStoredOverlays();
+ // a default color option is active if the manager has no stored overlays or current
+ // overlays, or the stored overlay does not contain either category system palette or
+ // category color
return (TextUtils.isEmpty(serializedOverlays) || EMPTY_JSON.equals(serializedOverlays)
|| colorManager.getCurrentOverlays().isEmpty() || !(serializedOverlays.contains(
OVERLAY_CATEGORY_SYSTEM_PALETTE) || serializedOverlays.contains(
diff --git a/src/com/android/customization/model/color/ColorOptionsProvider.java b/src/com/android/customization/model/color/ColorOptionsProvider.java
index 166b4da..9703907 100644
--- a/src/com/android/customization/model/color/ColorOptionsProvider.java
+++ b/src/com/android/customization/model/color/ColorOptionsProvider.java
@@ -70,12 +70,9 @@
* @param homeWallpaperColors to get seed colors from
* @param lockWallpaperColors WallpaperColors from the lockscreen wallpaper to get seeds from,
* if different than homeWallpaperColors
- * @param shouldUseRevampedUi fetches color options with new preview mappings for the revamped
- * UI if set to true
*/
void fetch(OptionsFetchedListener<ColorOption> callback, boolean reload,
@Nullable WallpaperColors homeWallpaperColors,
- @Nullable WallpaperColors lockWallpaperColors,
- boolean shouldUseRevampedUi
+ @Nullable WallpaperColors lockWallpaperColors
);
}
diff --git a/src/com/android/customization/model/color/ColorProvider.kt b/src/com/android/customization/model/color/ColorProvider.kt
index 74a4051..339e558 100644
--- a/src/com/android/customization/model/color/ColorProvider.kt
+++ b/src/com/android/customization/model/color/ColorProvider.kt
@@ -93,7 +93,6 @@
reload: Boolean,
homeWallpaperColors: WallpaperColors?,
lockWallpaperColors: WallpaperColors?,
- shouldUseRevampedUi: Boolean
) {
val wallpaperColorsChanged =
this.homeWallpaperColors != homeWallpaperColors ||
@@ -106,13 +105,12 @@
scope.launch {
try {
if (colorBundles == null || reload) {
- loadPreset(shouldUseRevampedUi)
+ loadPreset()
}
if (wallpaperColorsChanged || reload) {
loadSeedColors(
homeWallpaperColors,
lockWallpaperColors,
- shouldUseRevampedUi
)
}
} catch (e: Throwable) {
@@ -138,7 +136,6 @@
private fun loadSeedColors(
homeWallpaperColors: WallpaperColors?,
lockWallpaperColors: WallpaperColors?,
- shouldUseRevampedUi: Boolean,
) {
if (homeWallpaperColors == null) return
@@ -159,7 +156,6 @@
if (shouldLockColorsGoFirst) COLOR_SOURCE_LOCK else COLOR_SOURCE_HOME,
true,
bundles,
- shouldUseRevampedUi
)
// Second half of the colors
buildColorSeeds(
@@ -168,7 +164,6 @@
if (shouldLockColorsGoFirst) COLOR_SOURCE_HOME else COLOR_SOURCE_LOCK,
false,
bundles,
- shouldUseRevampedUi
)
} else {
buildColorSeeds(
@@ -177,35 +172,20 @@
COLOR_SOURCE_HOME,
true,
bundles,
- shouldUseRevampedUi
)
}
- if (shouldUseRevampedUi) {
- // Insert monochrome in the second position if it is enabled and included in preset
- // colors
- if (monochromeEnabled) {
- monochromeBundleName?.let {
- bundles.add(
- 1,
- buildRevampedUIPreset(
- it,
- -1,
- Style.MONOCHROMATIC,
- ColorType.WALLPAPER_COLOR
- )
- )
- }
+ // Insert monochrome in the second position if it is enabled and included in preset
+ // colors
+ if (monochromeEnabled) {
+ monochromeBundleName?.let {
+ bundles.add(1, buildPreset(it, -1, Style.MONOCHROMATIC, ColorType.WALLPAPER_COLOR))
}
- bundles.addAll(
- colorBundles?.filterNot {
- (it as ColorOptionImpl).type == ColorType.WALLPAPER_COLOR
- }
- ?: emptyList()
- )
- } else {
- bundles.addAll(colorBundles?.filterNot { it is ColorSeedOption } ?: emptyList())
}
+ bundles.addAll(
+ colorBundles?.filterNot { (it as ColorOptionImpl).type == ColorType.WALLPAPER_COLOR }
+ ?: emptyList()
+ )
colorBundles = bundles
}
@@ -215,13 +195,12 @@
source: String,
containsDefault: Boolean,
bundles: MutableList<ColorOption>,
- shouldUseRevampedUi: Boolean,
) {
val seedColors = ColorScheme.getSeedColors(wallpaperColors)
val defaultSeed = seedColors.first()
- buildBundle(defaultSeed, 0, containsDefault, source, bundles, shouldUseRevampedUi)
+ buildBundle(defaultSeed, 0, containsDefault, source, bundles)
for ((i, colorInt) in seedColors.drop(1).take(maxColors - 1).withIndex()) {
- buildBundle(colorInt, i + 1, false, source, bundles, shouldUseRevampedUi)
+ buildBundle(colorInt, i + 1, false, source, bundles)
}
}
@@ -231,102 +210,41 @@
isDefault: Boolean,
source: String,
bundles: MutableList<ColorOption>,
- shouldUseRevampedUi: Boolean,
) {
// TODO(b/202145216): Measure time cost in the loop.
- if (shouldUseRevampedUi) {
- for (style in styleList) {
- val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
- val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
- val builder = ColorOptionImpl.Builder()
- builder.lightColors = getRevampedUILightColorPreview(lightColorScheme)
- builder.darkColors = getRevampedUIDarkColorPreview(darkColorScheme)
- builder.addOverlayPackage(
- OVERLAY_CATEGORY_SYSTEM_PALETTE,
- if (isDefault) "" else toColorString(colorInt)
- )
- builder.title =
- when (style) {
- Style.TONAL_SPOT ->
- context.getString(R.string.content_description_dynamic_color_option)
- Style.SPRITZ ->
- context.getString(R.string.content_description_neutral_color_option)
- Style.VIBRANT ->
- context.getString(R.string.content_description_vibrant_color_option)
- Style.EXPRESSIVE ->
- context.getString(R.string.content_description_expressive_color_option)
- else -> context.getString(R.string.content_description_dynamic_color_option)
- }
- builder.source = source
- builder.style = style
- // Color option index value starts from 1.
- builder.index = i + 1
- builder.isDefault = isDefault
- builder.type = ColorType.WALLPAPER_COLOR
- bundles.add(builder.build())
- }
- } else {
- for (style in styleList) {
- val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
- val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
- val builder = ColorSeedOption.Builder()
- builder
- .setLightColors(lightColorScheme.getLightColorPreview())
- .setDarkColors(darkColorScheme.getDarkColorPreview())
- .addOverlayPackage(
- OVERLAY_CATEGORY_SYSTEM_PALETTE,
- if (isDefault) "" else toColorString(colorInt)
- )
- .addOverlayPackage(
- OVERLAY_CATEGORY_COLOR,
- if (isDefault) "" else toColorString(colorInt)
- )
- .setSource(source)
- .setStyle(style)
- // Color option index value starts from 1.
- .setIndex(i + 1)
-
- if (isDefault) builder.asDefault()
-
- bundles.add(builder.build())
- }
+ for (style in styleList) {
+ val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
+ val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
+ val builder = ColorOptionImpl.Builder()
+ builder.lightColors = getLightColorPreview(lightColorScheme)
+ builder.darkColors = getDarkColorPreview(darkColorScheme)
+ builder.addOverlayPackage(
+ OVERLAY_CATEGORY_SYSTEM_PALETTE,
+ if (isDefault) "" else toColorString(colorInt)
+ )
+ builder.title =
+ when (style) {
+ Style.TONAL_SPOT ->
+ context.getString(R.string.content_description_dynamic_color_option)
+ Style.SPRITZ ->
+ context.getString(R.string.content_description_neutral_color_option)
+ Style.VIBRANT ->
+ context.getString(R.string.content_description_vibrant_color_option)
+ Style.EXPRESSIVE ->
+ context.getString(R.string.content_description_expressive_color_option)
+ else -> context.getString(R.string.content_description_dynamic_color_option)
+ }
+ builder.source = source
+ builder.style = style
+ // Color option index value starts from 1.
+ builder.index = i + 1
+ builder.isDefault = isDefault
+ builder.type = ColorType.WALLPAPER_COLOR
+ bundles.add(builder.build())
}
}
/**
- * Returns the colors for the light theme version of the preview of a ColorScheme based on this
- * order: top left, top right, bottom left, bottom right
- */
- @ColorInt
- private fun ColorScheme.getLightColorPreview(): IntArray {
- return when (this.style) {
- Style.EXPRESSIVE ->
- intArrayOf(
- setAlphaComponent(this.accent1.s100, ALPHA_MASK),
- setAlphaComponent(this.accent1.s100, ALPHA_MASK),
- ColorStateList.valueOf(this.neutral2.s500).withLStar(80f).colors[0],
- setAlphaComponent(this.accent2.s500, ALPHA_MASK)
- )
- else ->
- intArrayOf(
- setAlphaComponent(this.accent1.s100, ALPHA_MASK),
- setAlphaComponent(this.accent1.s100, ALPHA_MASK),
- ColorStateList.valueOf(this.accent3.s500).withLStar(85f).colors[0],
- setAlphaComponent(this.accent1.s500, ALPHA_MASK)
- )
- }
- }
-
- /**
- * Returns the color for the dark theme version of the preview of a ColorScheme based on this
- * order: top left, top right, bottom left, bottom right
- */
- @ColorInt
- private fun ColorScheme.getDarkColorPreview(): IntArray {
- return getLightColorPreview()
- }
-
- /**
* Returns the light theme version of the Revamped UI preview of a ColorScheme based on this
* order: top left, top right, bottom left, bottom right
*
@@ -334,7 +252,7 @@
* LStar 85, and Tertiary LStar 70
*/
@ColorInt
- private fun getRevampedUILightColorPreview(colorScheme: ColorScheme): IntArray {
+ private fun getLightColorPreview(colorScheme: ColorScheme): IntArray {
return intArrayOf(
setAlphaComponent(colorScheme.accent1.s600, ALPHA_MASK),
setAlphaComponent(colorScheme.accent1.s600, ALPHA_MASK),
@@ -351,7 +269,7 @@
* 35, and Tertiary LStar 70
*/
@ColorInt
- private fun getRevampedUIDarkColorPreview(colorScheme: ColorScheme): IntArray {
+ private fun getDarkColorPreview(colorScheme: ColorScheme): IntArray {
return intArrayOf(
setAlphaComponent(colorScheme.accent1.s200, ALPHA_MASK),
setAlphaComponent(colorScheme.accent1.s200, ALPHA_MASK),
@@ -368,7 +286,7 @@
* LStar 85, and Tertiary LStar 70
*/
@ColorInt
- private fun getRevampedUILightMonochromePreview(colorScheme: ColorScheme): IntArray {
+ private fun getLightMonochromePreview(colorScheme: ColorScheme): IntArray {
return intArrayOf(
setAlphaComponent(colorScheme.accent1.s1000, ALPHA_MASK),
setAlphaComponent(colorScheme.accent1.s1000, ALPHA_MASK),
@@ -385,7 +303,7 @@
* LStar 35, and Tertiary LStar 70
*/
@ColorInt
- private fun getRevampedUIDarkMonochromePreview(colorScheme: ColorScheme): IntArray {
+ private fun getDarkMonochromePreview(colorScheme: ColorScheme): IntArray {
return intArrayOf(
setAlphaComponent(colorScheme.accent1.s10, ALPHA_MASK),
setAlphaComponent(colorScheme.accent1.s10, ALPHA_MASK),
@@ -398,7 +316,7 @@
* Returns the Revamped UI preview of a preset ColorScheme based on this order: top left, top
* right, bottom left, bottom right
*/
- private fun getRevampedUIPresetColorPreview(colorScheme: ColorScheme, seed: Int): IntArray {
+ private fun getPresetColorPreview(colorScheme: ColorScheme, seed: Int): IntArray {
val colors =
when (colorScheme.style) {
Style.FRUIT_SALAD -> intArrayOf(seed, colorScheme.accent1.s200)
@@ -414,22 +332,8 @@
)
}
- private fun ColorScheme.getPresetColorPreview(seed: Int): IntArray {
- return when (this.style) {
- Style.FRUIT_SALAD -> intArrayOf(seed, this.accent1.s100)
- Style.TONAL_SPOT -> intArrayOf(this.accentColor, this.accentColor)
- Style.MONOCHROMATIC ->
- intArrayOf(
- setAlphaComponent(0x000000, 255),
- setAlphaComponent(0xFFFFFF, 255),
- )
- else -> intArrayOf(this.accent1.s100, this.accent1.s100)
- }
- }
-
- private suspend fun loadPreset(shouldUseRevampedUi: Boolean) =
+ private suspend fun loadPreset() =
withContext(Dispatchers.IO) {
- val extractor = ColorBundlePreviewExtractor(mContext)
val bundles: MutableList<ColorOption> = ArrayList()
val bundleNames =
@@ -438,95 +342,46 @@
var index = 1
val maxPresetColors = if (themeStyleEnabled) bundleNames.size else MAX_PRESET_COLORS
- if (shouldUseRevampedUi) {
- // keep track of whether monochrome is included in preset colors to determine
- // inclusion in wallpaper colors
- var hasMonochrome = false
- for (bundleName in bundleNames.take(maxPresetColors)) {
- if (themeStyleEnabled) {
- val styleName =
- try {
- getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
- } catch (e: Resources.NotFoundException) {
- null
- }
- val style =
- try {
- if (styleName != null) Style.valueOf(styleName)
- else Style.TONAL_SPOT
- } catch (e: IllegalArgumentException) {
- Style.TONAL_SPOT
- }
-
- if (style == Style.MONOCHROMATIC) {
- if (!monochromeEnabled) {
- continue
- }
- hasMonochrome = true
- monochromeBundleName = bundleName
+ // keep track of whether monochrome is included in preset colors to determine
+ // inclusion in wallpaper colors
+ var hasMonochrome = false
+ for (bundleName in bundleNames.take(maxPresetColors)) {
+ if (themeStyleEnabled) {
+ val styleName =
+ try {
+ getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
+ } catch (e: Resources.NotFoundException) {
+ null
}
- bundles.add(buildRevampedUIPreset(bundleName, index, style))
- } else {
- bundles.add(buildRevampedUIPreset(bundleName, index, null))
- }
+ val style =
+ try {
+ if (styleName != null) Style.valueOf(styleName) else Style.TONAL_SPOT
+ } catch (e: IllegalArgumentException) {
+ Style.TONAL_SPOT
+ }
- index++
- }
- if (!hasMonochrome) {
- monochromeBundleName = null
- }
- } else {
- for (bundleName in bundleNames.take(maxPresetColors)) {
- val builder = ColorBundle.Builder()
- builder.title = getItemStringFromStub(COLOR_BUNDLE_NAME_PREFIX, bundleName)
- builder.setIndex(index)
- val colorFromStub =
- getItemColorFromStub(COLOR_BUNDLE_MAIN_COLOR_PREFIX, bundleName)
- extractor.addPrimaryColor(builder, colorFromStub)
- extractor.addSecondaryColor(builder, colorFromStub)
- if (themeStyleEnabled) {
- val styleName =
- try {
- getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
- } catch (e: Resources.NotFoundException) {
- null
- }
- extractor.addColorStyle(builder, styleName)
- val style =
- try {
- if (styleName != null) Style.valueOf(styleName)
- else Style.TONAL_SPOT
- } catch (e: IllegalArgumentException) {
- Style.TONAL_SPOT
- }
-
- if (style == Style.MONOCHROMATIC && !monochromeEnabled) {
+ if (style == Style.MONOCHROMATIC) {
+ if (!monochromeEnabled) {
continue
}
-
- val darkColors =
- ColorScheme(colorFromStub, /* darkTheme= */ true, style)
- .getPresetColorPreview(colorFromStub)
- val lightColors =
- ColorScheme(colorFromStub, /* darkTheme= */ false, style)
- .getPresetColorPreview(colorFromStub)
- builder
- .setColorPrimaryDark(darkColors[0])
- .setColorSecondaryDark(darkColors[1])
- builder
- .setColorPrimaryLight(lightColors[0])
- .setColorSecondaryLight(lightColors[1])
+ hasMonochrome = true
+ monochromeBundleName = bundleName
}
-
- bundles.add(builder.build(mContext))
- index++
+ bundles.add(buildPreset(bundleName, index, style))
+ } else {
+ bundles.add(buildPreset(bundleName, index, null))
}
+
+ index++
+ }
+ if (!hasMonochrome) {
+ monochromeBundleName = null
}
colorBundles = bundles
}
- private fun buildRevampedUIPreset(
+ private fun buildPreset(
bundleName: String,
index: Int,
style: Style? = null,
@@ -554,12 +409,12 @@
when (style) {
Style.MONOCHROMATIC -> {
- darkColors = getRevampedUIDarkMonochromePreview(darkColorScheme)
- lightColors = getRevampedUILightMonochromePreview(lightColorScheme)
+ darkColors = getDarkMonochromePreview(darkColorScheme)
+ lightColors = getLightMonochromePreview(lightColorScheme)
}
else -> {
- darkColors = getRevampedUIPresetColorPreview(darkColorScheme, colorFromStub)
- lightColors = getRevampedUIPresetColorPreview(lightColorScheme, colorFromStub)
+ darkColors = getPresetColorPreview(darkColorScheme, colorFromStub)
+ lightColors = getPresetColorPreview(lightColorScheme, colorFromStub)
}
}
}
diff --git a/src/com/android/customization/model/color/ColorSeedOption.java b/src/com/android/customization/model/color/ColorSeedOption.java
deleted file mode 100644
index ed38049..0000000
--- a/src/com/android/customization/model/color/ColorSeedOption.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-package com.android.customization.model.color;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.PorterDuff.Mode;
-import android.view.View;
-import android.widget.ImageView;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.VisibleForTesting;
-
-import com.android.customization.model.color.ColorOptionsProvider.ColorSource;
-import com.android.systemui.monet.Style;
-import com.android.wallpaper.R;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Represents a seed color obtained from WallpaperColors, for the user to chose as their theming
- * option.
- */
-public class ColorSeedOption extends ColorOption {
-
- private final PreviewInfo mPreviewInfo;
- @ColorSource
- private final String mSource;
-
- @VisibleForTesting
- ColorSeedOption(String title, Map<String, String> overlayPackages, boolean isDefault,
- @ColorSource String source, Style style, int index, PreviewInfo previewInfo) {
- super(title, overlayPackages, isDefault, style, index);
- mSource = source;
- mPreviewInfo = previewInfo;
- }
-
- @Override
- public PreviewInfo getPreviewInfo() {
- return mPreviewInfo;
- }
-
- @Override
- public String getSource() {
- return mSource;
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.color_option;
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- Resources res = view.getContext().getResources();
- @ColorInt int[] colors = mPreviewInfo.resolveColors(res);
-
- for (int i = 0; i < mPreviewColorIds.length; i++) {
- ImageView colorPreviewImageView = view.findViewById(mPreviewColorIds[i]);
- colorPreviewImageView.getDrawable().setColorFilter(colors[i], Mode.SRC);
- }
-
- view.setContentDescription(getContentDescription(view.getContext()));
- }
-
- @Override
- public CharSequence getContentDescription(Context context) {
- // Override because we want all options with the same description.
- return context.getString(R.string.wallpaper_color_title);
- }
-
- /**
- * The preview information of {@link ColorOption}
- */
- public static class PreviewInfo implements ColorOption.PreviewInfo {
- @ColorInt public int[] lightColors;
- @ColorInt public int[] darkColors;
-
- private PreviewInfo(@ColorInt int[] lightColors, @ColorInt int[] darkColors) {
- this.lightColors = lightColors;
- this.darkColors = darkColors;
- }
-
- /**
- * Returns the colors to be applied corresponding with the current
- * configuration's UI mode.
- * @param res resources to read to the UI mode configuration from
- * @return one of {@link #lightColors} or {@link #darkColors}
- */
- @ColorInt
- public int[] resolveColors(Resources res) {
- boolean night = (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES;
- return night ? darkColors : lightColors;
- }
-
- /**
- * Returns the preview colors based on whether dark theme or light theme colors are
- * requested.
- * @param darkTheme if true, returns dark theme colors, otherwise returns light theme colors
- * @return one of {@link #lightColors} or {@link #darkColors}
- */
- @ColorInt
- public int[] resolveColors(boolean darkTheme) {
- return darkTheme ? darkColors : lightColors;
- }
- }
-
- /**
- * The builder of ColorSeedOption
- */
- public static class Builder {
- protected String mTitle;
- @ColorInt
- private int[] mLightColors;
- @ColorInt
- private int[] mDarkColors;
- @ColorSource
- private String mSource;
- private boolean mIsDefault;
- private Style mStyle = Style.TONAL_SPOT;
- private int mIndex;
- protected Map<String, String> mPackages = new HashMap<>();
-
- /**
- * Builds the ColorSeedOption
- * @return new {@link ColorOption} object
- */
- public ColorSeedOption build() {
- return new ColorSeedOption(mTitle, mPackages, mIsDefault, mSource, mStyle, mIndex,
- createPreviewInfo());
- }
-
- /**
- * Creates preview information
- * @return the {@link PreviewInfo} object
- */
- public PreviewInfo createPreviewInfo() {
- return new PreviewInfo(mLightColors, mDarkColors);
- }
-
- public Map<String, String> getPackages() {
- return Collections.unmodifiableMap(mPackages);
- }
-
- /**
- * Gets title of {@link ColorOption} object
- * @return title string
- */
- public String getTitle() {
- return mTitle;
- }
-
- /**
- * Sets title of bundle
- * @param title specified title
- * @return this of {@link ColorBundle.Builder}
- */
- public Builder setTitle(String title) {
- mTitle = title;
- return this;
- }
-
- /**
- * Sets the colors for preview in light mode
- * @param lightColors {@link ColorInt} colors for light mode
- * @return this of {@link Builder}
- */
- public Builder setLightColors(@ColorInt int[] lightColors) {
- mLightColors = lightColors;
- return this;
- }
-
- /**
- * Sets the colors for preview in light mode
- * @param darkColors {@link ColorInt} colors for light mode
- * @return this of {@link Builder}
- */
- public Builder setDarkColors(@ColorInt int[] darkColors) {
- mDarkColors = darkColors;
- return this;
- }
-
-
- /**
- * Sets overlay package for bundle
- * @param category the category of bundle
- * @param packageName tha name of package in the category
- * @return this of {@link Builder}
- */
- public Builder addOverlayPackage(String category, String packageName) {
- mPackages.put(category, packageName);
- return this;
- }
-
- /**
- * Sets the source of this color seed
- * @param source typically either {@link ColorOptionsProvider#COLOR_SOURCE_HOME} or
- * {@link ColorOptionsProvider#COLOR_SOURCE_LOCK}
- * @return this of {@link Builder}
- */
- public Builder setSource(@ColorSource String source) {
- mSource = source;
- return this;
- }
-
- /**
- * Sets the source of this color seed
- * @param style color style of {@link Style}
- * @return this of {@link Builder}
- */
- public Builder setStyle(Style style) {
- mStyle = style;
- return this;
- }
-
- /**
- * Sets color option index of seed
- * @param index color option index
- * @return this of {@link ColorBundle.Builder}
- */
- public Builder setIndex(int index) {
- mIndex = index;
- return this;
- }
-
- /**
- * Sets as default bundle
- * @return this of {@link Builder}
- */
- public Builder asDefault() {
- mIsDefault = true;
- return this;
- }
- }
-}
diff --git a/src/com/android/customization/model/grid/GridOption.java b/src/com/android/customization/model/grid/GridOption.java
index a5307c9..347929c 100644
--- a/src/com/android/customization/model/grid/GridOption.java
+++ b/src/com/android/customization/model/grid/GridOption.java
@@ -15,14 +15,11 @@
*/
package com.android.customization.model.grid;
-import android.content.Context;
-import android.graphics.PorterDuff.Mode;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.view.View;
-import android.widget.ImageView;
import androidx.annotation.Nullable;
@@ -30,7 +27,6 @@
import com.android.customization.model.CustomizationOption;
import com.android.customization.widget.GridTileDrawable;
import com.android.wallpaper.R;
-import com.android.wallpaper.util.ResourceUtils;
/**
* Represents a grid layout option available in the current launcher.
@@ -94,21 +90,7 @@
@Override
public void bindThumbnailTile(View view) {
- Context context = view.getContext();
-
- int colorFilter = ResourceUtils.getColorAttr(context,
- view.isActivated()
- ? (mIsCurrent
- ? android.R.attr.textColorPrimary
- : android.R.attr.textColorPrimaryInverse)
- : android.R.attr.textColorTertiary);
- mTileDrawable.setColorFilter(colorFilter, Mode.SRC_ATOP);
- ((ImageView) view.findViewById(R.id.grid_option_thumbnail))
- .setImageDrawable(mTileDrawable);
-
- int backgroundResource = view.isActivated() && !mIsCurrent
- ? R.drawable.option_border_new_selection : R.drawable.option_border;
- view.findViewById(R.id.option_tile).setBackgroundResource(backgroundResource);
+ // Do nothing. This function will no longer be used in the Revamped UI
}
@Override
diff --git a/src/com/android/customization/model/grid/GridOptionViewModel.java b/src/com/android/customization/model/grid/GridOptionViewModel.java
deleted file mode 100644
index 33fa8e179..0000000
--- a/src/com/android/customization/model/grid/GridOptionViewModel.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2021 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.
- */
-package com.android.customization.model.grid;
-
-import androidx.lifecycle.SavedStateHandle;
-import androidx.lifecycle.ViewModel;
-
-/** The class to store status of the grid fragment view. */
-public class GridOptionViewModel extends ViewModel {
- private static final String SELECTED_OPTION_KEY = "selected_option";
- private static final String BOTTOM_ACTION_BAR_VISIBLE_KEY = "bottom_action_bar_visible";
-
- private SavedStateHandle mState;
-
- public GridOptionViewModel(SavedStateHandle savedStateHandle) {
- mState = savedStateHandle;
- }
-
- /** Gets selected {@link GridOption} from {@link SavedStateHandle} */
- public GridOption getSelectedOption() {
- return mState.get(SELECTED_OPTION_KEY);
- }
-
- /** Sets selected {@link GridOption} to {@link SavedStateHandle} */
- public void setSelectedOption(GridOption selectedOption) {
- mState.set(SELECTED_OPTION_KEY, selectedOption);
- }
-
- /** Gets bottom action bar visible from {@link SavedStateHandle} */
- public boolean getBottomActionBarVisible() {
- return mState.contains(BOTTOM_ACTION_BAR_VISIBLE_KEY)
- ? mState.get(BOTTOM_ACTION_BAR_VISIBLE_KEY)
- : false;
- }
-
- /** Sets bottom action bar visible to {@link SavedStateHandle} */
- public void setBottomActionBarVisible(boolean bottomActionBarVisible) {
- mState.set(BOTTOM_ACTION_BAR_VISIBLE_KEY, bottomActionBarVisible);
- }
-}
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index 78dbb5b..bd24cf5 100644
--- a/src/com/android/customization/model/grid/GridOptionsManager.java
+++ b/src/com/android/customization/model/grid/GridOptionsManager.java
@@ -27,7 +27,7 @@
import com.android.customization.model.CustomizationManager;
import com.android.customization.module.CustomizationInjector;
-import com.android.customization.module.ThemesUserEventLogger;
+import com.android.customization.module.logging.ThemesUserEventLogger;
import com.android.wallpaper.R;
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.util.PreviewUtils;
diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
deleted file mode 100644
index 89067c6..0000000
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.ICONS_FOR_PREVIEW;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_LAUNCHER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SETTINGS;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SYSUI;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_THEMEPICKER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.SYSUI_PACKAGE;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.drawable.Drawable;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.ResourcesApkProvider;
-import com.android.customization.model.theme.ThemeBundle.Builder;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.customization.model.theme.custom.CustomTheme;
-import com.android.customization.module.CustomizationPreferences;
-import com.android.wallpaper.R;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Default implementation of {@link ThemeBundleProvider} that reads Themes' overlays from a stub APK.
- */
-public class DefaultThemeProvider extends ResourcesApkProvider implements ThemeBundleProvider {
-
- private static final String TAG = "DefaultThemeProvider";
-
- private static final String THEMES_ARRAY = "themes";
- private static final String TITLE_PREFIX = "theme_title_";
- private static final String FONT_PREFIX = "theme_overlay_font_";
- private static final String COLOR_PREFIX = "theme_overlay_color_";
- private static final String SHAPE_PREFIX = "theme_overlay_shape_";
- private static final String ICON_ANDROID_PREFIX = "theme_overlay_icon_android_";
- private static final String ICON_LAUNCHER_PREFIX = "theme_overlay_icon_launcher_";
- private static final String ICON_THEMEPICKER_PREFIX = "theme_overlay_icon_themepicker_";
- private static final String ICON_SETTINGS_PREFIX = "theme_overlay_icon_settings_";
- private static final String ICON_SYSUI_PREFIX = "theme_overlay_icon_sysui_";
-
- private static final String DEFAULT_THEME_NAME= "default";
- private static final String THEME_TITLE_FIELD = "_theme_title";
- private static final String THEME_ID_FIELD = "_theme_id";
-
- private final OverlayThemeExtractor mOverlayProvider;
- private List<ThemeBundle> mThemes;
- private final CustomizationPreferences mCustomizationPreferences;
-
- public DefaultThemeProvider(Context context, CustomizationPreferences customizationPrefs) {
- super(context, context.getString(R.string.themes_stub_package));
- mOverlayProvider = new OverlayThemeExtractor(context);
- mCustomizationPreferences = customizationPrefs;
- }
-
- @Override
- public void fetch(OptionsFetchedListener<ThemeBundle> callback, boolean reload) {
- if (mThemes == null || reload) {
- mThemes = new ArrayList<>();
- loadAll();
- }
-
- if(callback != null) {
- callback.onOptionsLoaded(mThemes);
- }
- }
-
- @Override
- public boolean isAvailable() {
- return mOverlayProvider.isAvailable() && super.isAvailable();
- }
-
- private void loadAll() {
- // Add "Custom" option at the beginning.
- mThemes.add(new CustomTheme.Builder()
- .setId(CustomTheme.newId())
- .setTitle(mContext.getString(R.string.custom_theme))
- .build(mContext));
-
- addDefaultTheme();
-
- String[] themeNames = getItemsFromStub(THEMES_ARRAY);
-
- for (String themeName : themeNames) {
- // Default theme needs special treatment (see #addDefaultTheme())
- if (DEFAULT_THEME_NAME.equals(themeName)) {
- continue;
- }
- ThemeBundle.Builder builder = new Builder();
- try {
- builder.setTitle(mStubApkResources.getString(
- mStubApkResources.getIdentifier(TITLE_PREFIX + themeName,
- "string", mStubPackageName)));
-
- String shapeOverlayPackage = getOverlayPackage(SHAPE_PREFIX, themeName);
- mOverlayProvider.addShapeOverlay(builder, shapeOverlayPackage);
-
- String fontOverlayPackage = getOverlayPackage(FONT_PREFIX, themeName);
- mOverlayProvider.addFontOverlay(builder, fontOverlayPackage);
-
- String colorOverlayPackage = getOverlayPackage(COLOR_PREFIX, themeName);
- mOverlayProvider.addColorOverlay(builder, colorOverlayPackage);
-
- String iconAndroidOverlayPackage = getOverlayPackage(ICON_ANDROID_PREFIX,
- themeName);
-
- mOverlayProvider.addAndroidIconOverlay(builder, iconAndroidOverlayPackage);
-
- String iconSysUiOverlayPackage = getOverlayPackage(ICON_SYSUI_PREFIX, themeName);
-
- mOverlayProvider.addSysUiIconOverlay(builder, iconSysUiOverlayPackage);
-
- String iconLauncherOverlayPackage = getOverlayPackage(ICON_LAUNCHER_PREFIX,
- themeName);
- mOverlayProvider.addNoPreviewIconOverlay(builder, iconLauncherOverlayPackage);
-
- String iconThemePickerOverlayPackage = getOverlayPackage(ICON_THEMEPICKER_PREFIX,
- themeName);
- mOverlayProvider.addNoPreviewIconOverlay(builder,
- iconThemePickerOverlayPackage);
-
- String iconSettingsOverlayPackage = getOverlayPackage(ICON_SETTINGS_PREFIX,
- themeName);
-
- mOverlayProvider.addNoPreviewIconOverlay(builder, iconSettingsOverlayPackage);
-
- mThemes.add(builder.build(mContext));
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, String.format("Couldn't load part of theme %s, will skip it", themeName),
- e);
- }
- }
-
- addCustomThemes();
- }
-
- /**
- * Default theme requires different treatment: if there are overlay packages specified in the
- * stub apk, we'll use those, otherwise we'll get the System default values. But we cannot skip
- * the default theme.
- */
- private void addDefaultTheme() {
- ThemeBundle.Builder builder = new Builder().asDefault();
-
- int titleId = mStubApkResources.getIdentifier(TITLE_PREFIX + DEFAULT_THEME_NAME,
- "string", mStubPackageName);
- if (titleId > 0) {
- builder.setTitle(mStubApkResources.getString(titleId));
- } else {
- builder.setTitle(mContext.getString(R.string.default_theme_title));
- }
-
- try {
- String colorOverlayPackage = getOverlayPackage(COLOR_PREFIX, DEFAULT_THEME_NAME);
- mOverlayProvider.addColorOverlay(builder, colorOverlayPackage);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.d(TAG, "Didn't find color overlay for default theme, will use system default");
- mOverlayProvider.addSystemDefaultColor(builder);
- }
-
- try {
- String fontOverlayPackage = getOverlayPackage(FONT_PREFIX, DEFAULT_THEME_NAME);
- mOverlayProvider.addFontOverlay(builder, fontOverlayPackage);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.d(TAG, "Didn't find font overlay for default theme, will use system default");
- mOverlayProvider.addSystemDefaultFont(builder);
- }
-
- try {
- String shapeOverlayPackage = getOverlayPackage(SHAPE_PREFIX, DEFAULT_THEME_NAME);
- mOverlayProvider.addShapeOverlay(builder ,shapeOverlayPackage, false);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.d(TAG, "Didn't find shape overlay for default theme, will use system default");
- mOverlayProvider.addSystemDefaultShape(builder);
- }
-
- List<ShapeAppIcon> icons = new ArrayList<>();
- for (String packageName : mOverlayProvider.getShapePreviewIconPackages()) {
- Drawable icon = null;
- CharSequence name = null;
- try {
- icon = mContext.getPackageManager().getApplicationIcon(packageName);
- ApplicationInfo appInfo = mContext.getPackageManager()
- .getApplicationInfo(packageName, /* flag= */ 0);
- name = mContext.getPackageManager().getApplicationLabel(appInfo);
- } catch (NameNotFoundException e) {
- Log.d(TAG, "Couldn't find app " + packageName + ", won't use it for icon shape"
- + "preview");
- } finally {
- if (icon != null && !TextUtils.isEmpty(name)) {
- icons.add(new ShapeAppIcon(icon, name));
- }
- }
- }
- builder.setShapePreviewIcons(icons);
-
- try {
- String iconAndroidOverlayPackage = getOverlayPackage(ICON_ANDROID_PREFIX,
- DEFAULT_THEME_NAME);
- mOverlayProvider.addAndroidIconOverlay(builder, iconAndroidOverlayPackage);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.d(TAG, "Didn't find Android icons overlay for default theme, using system default");
- mOverlayProvider.addSystemDefaultIcons(builder, ANDROID_PACKAGE, ICONS_FOR_PREVIEW);
- }
-
- try {
- String iconSysUiOverlayPackage = getOverlayPackage(ICON_SYSUI_PREFIX,
- DEFAULT_THEME_NAME);
- mOverlayProvider.addSysUiIconOverlay(builder, iconSysUiOverlayPackage);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.d(TAG,
- "Didn't find SystemUi icons overlay for default theme, using system default");
- mOverlayProvider.addSystemDefaultIcons(builder, SYSUI_PACKAGE, ICONS_FOR_PREVIEW);
- }
-
- mThemes.add(builder.build(mContext));
- }
-
- @Override
- public void storeCustomTheme(CustomTheme theme) {
- if (mThemes == null) {
- fetch(options -> {
- addCustomThemeAndStore(theme);
- }, false);
- } else {
- addCustomThemeAndStore(theme);
- }
- }
-
- private void addCustomThemeAndStore(CustomTheme theme) {
- if (!mThemes.contains(theme)) {
- mThemes.add(theme);
- } else {
- mThemes.replaceAll(t -> theme.equals(t) ? theme : t);
- }
- JSONArray themesArray = new JSONArray();
- mThemes.stream()
- .filter(themeBundle -> themeBundle instanceof CustomTheme
- && !themeBundle.getPackagesByCategory().isEmpty())
- .forEachOrdered(themeBundle -> addThemeBundleToArray(themesArray, themeBundle));
- mCustomizationPreferences.storeCustomThemes(themesArray.toString());
- }
-
- private void addThemeBundleToArray(JSONArray themesArray, ThemeBundle themeBundle) {
- JSONObject jsonPackages = themeBundle.getJsonPackages(false);
- try {
- jsonPackages.put(THEME_TITLE_FIELD, themeBundle.getTitle());
- if (themeBundle instanceof CustomTheme) {
- jsonPackages.put(THEME_ID_FIELD, ((CustomTheme)themeBundle).getId());
- }
- } catch (JSONException e) {
- Log.w("Exception saving theme's title", e);
- }
- themesArray.put(jsonPackages);
- }
-
- @Override
- public void removeCustomTheme(CustomTheme theme) {
- JSONArray themesArray = new JSONArray();
- mThemes.stream()
- .filter(themeBundle -> themeBundle instanceof CustomTheme
- && ((CustomTheme) themeBundle).isDefined())
- .forEachOrdered(customTheme -> {
- if (!customTheme.equals(theme)) {
- addThemeBundleToArray(themesArray, customTheme);
- }
- });
- mCustomizationPreferences.storeCustomThemes(themesArray.toString());
- }
-
- private void addCustomThemes() {
- String serializedThemes = mCustomizationPreferences.getSerializedCustomThemes();
- int customThemesCount = 0;
- if (!TextUtils.isEmpty(serializedThemes)) {
- try {
- JSONArray customThemes = new JSONArray(serializedThemes);
- for (int i = 0; i < customThemes.length(); i++) {
- JSONObject jsonTheme = customThemes.getJSONObject(i);
- CustomTheme.Builder builder = new CustomTheme.Builder();
- try {
- convertJsonToBuilder(jsonTheme, builder);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.i(TAG, "Couldn't parse serialized custom theme", e);
- builder = null;
- }
- if (builder != null) {
- if (TextUtils.isEmpty(builder.getTitle())) {
- builder.setTitle(mContext.getString(R.string.custom_theme_title,
- customThemesCount + 1));
- }
- mThemes.add(builder.build(mContext));
- } else {
- Log.w(TAG, "Couldn't read stored custom theme, resetting");
- mThemes.add(new CustomTheme.Builder()
- .setId(CustomTheme.newId())
- .setTitle(mContext.getString(
- R.string.custom_theme_title, customThemesCount + 1))
- .build(mContext));
- }
- customThemesCount++;
- }
- } catch (JSONException e) {
- Log.w(TAG, "Couldn't read stored custom theme, resetting", e);
- mThemes.add(new CustomTheme.Builder()
- .setId(CustomTheme.newId())
- .setTitle(mContext.getString(
- R.string.custom_theme_title, customThemesCount + 1))
- .build(mContext));
- }
- }
- }
-
- @Nullable
- @Override
- public ThemeBundle.Builder parseThemeBundle(String serializedTheme) throws JSONException {
- JSONObject theme = new JSONObject(serializedTheme);
- try {
- ThemeBundle.Builder builder = new ThemeBundle.Builder();
- convertJsonToBuilder(theme, builder);
- return builder;
- } catch (NameNotFoundException | NotFoundException e) {
- Log.i(TAG, "Couldn't parse serialized custom theme", e);
- return null;
- }
- }
-
- @Nullable
- @Override
- public CustomTheme.Builder parseCustomTheme(String serializedTheme) throws JSONException {
- JSONObject theme = new JSONObject(serializedTheme);
- try {
- CustomTheme.Builder builder = new CustomTheme.Builder();
- convertJsonToBuilder(theme, builder);
- return builder;
- } catch (NameNotFoundException | NotFoundException e) {
- Log.i(TAG, "Couldn't parse serialized custom theme", e);
- return null;
- }
- }
-
- private void convertJsonToBuilder(JSONObject theme, ThemeBundle.Builder builder)
- throws JSONException, NameNotFoundException, NotFoundException {
- Map<String, String> customPackages = new HashMap<>();
- Iterator<String> keysIterator = theme.keys();
-
- while (keysIterator.hasNext()) {
- String category = keysIterator.next();
- customPackages.put(category, theme.getString(category));
- }
- mOverlayProvider.addShapeOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_SHAPE));
- mOverlayProvider.addFontOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_FONT));
- mOverlayProvider.addColorOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_COLOR));
- mOverlayProvider.addAndroidIconOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_ICON_ANDROID));
- mOverlayProvider.addSysUiIconOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_ICON_SYSUI));
- mOverlayProvider.addNoPreviewIconOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_ICON_SETTINGS));
- mOverlayProvider.addNoPreviewIconOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_ICON_LAUNCHER));
- mOverlayProvider.addNoPreviewIconOverlay(builder,
- customPackages.get(OVERLAY_CATEGORY_ICON_THEMEPICKER));
- if (theme.has(THEME_TITLE_FIELD)) {
- builder.setTitle(theme.getString(THEME_TITLE_FIELD));
- }
- if (builder instanceof CustomTheme.Builder && theme.has(THEME_ID_FIELD)) {
- ((CustomTheme.Builder) builder).setId(theme.getString(THEME_ID_FIELD));
- }
- }
-
- @Override
- public ThemeBundle findEquivalent(ThemeBundle other) {
- if (mThemes == null) {
- return null;
- }
- for (ThemeBundle theme : mThemes) {
- if (theme.isEquivalent(other)) {
- return theme;
- }
- }
- return null;
- }
-
- private String getOverlayPackage(String prefix, String themeName) {
- return getItemStringFromStub(prefix, themeName);
- }
-}
diff --git a/src/com/android/customization/model/theme/OverlayThemeExtractor.java b/src/com/android/customization/model/theme/OverlayThemeExtractor.java
deleted file mode 100644
index 816176e..0000000
--- a/src/com/android/customization/model/theme/OverlayThemeExtractor.java
+++ /dev/null
@@ -1,293 +0,0 @@
-package com.android.customization.model.theme;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.ICONS_FOR_PREVIEW;
-import static com.android.customization.model.ResourceConstants.SETTINGS_PACKAGE;
-import static com.android.customization.model.ResourceConstants.SYSUI_PACKAGE;
-
-import android.content.Context;
-import android.content.om.OverlayInfo;
-import android.content.om.OverlayManager;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Dimension;
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.ThemeBundle.Builder;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.wallpaper.R;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-
-class OverlayThemeExtractor {
-
- private static final String TAG = "OverlayThemeExtractor";
-
- private final Context mContext;
- private final Map<String, OverlayInfo> mOverlayInfos = new HashMap<>();
- // List of packages
- private final String[] mShapePreviewIconPackages;
-
- OverlayThemeExtractor(Context context) {
- mContext = context;
- OverlayManager om = context.getSystemService(OverlayManager.class);
- if (om != null) {
- Consumer<OverlayInfo> addToMap = overlayInfo -> mOverlayInfos.put(
- overlayInfo.getPackageName(), overlayInfo);
-
- UserHandle user = UserHandle.of(UserHandle.myUserId());
- om.getOverlayInfosForTarget(ANDROID_PACKAGE, user).forEach(addToMap);
- om.getOverlayInfosForTarget(SYSUI_PACKAGE, user).forEach(addToMap);
- om.getOverlayInfosForTarget(SETTINGS_PACKAGE, user).forEach(addToMap);
- om.getOverlayInfosForTarget(ResourceConstants.getLauncherPackage(context), user)
- .forEach(addToMap);
- om.getOverlayInfosForTarget(context.getPackageName(), user).forEach(addToMap);
- }
- mShapePreviewIconPackages = context.getResources().getStringArray(
- R.array.icon_shape_preview_packages);
- }
-
- boolean isAvailable() {
- return !mOverlayInfos.isEmpty();
- }
-
- void addColorOverlay(Builder builder, String colorOverlayPackage)
- throws NameNotFoundException {
- if (!TextUtils.isEmpty(colorOverlayPackage)) {
- builder.addOverlayPackage(getOverlayCategory(colorOverlayPackage),
- colorOverlayPackage)
- .setColorAccentLight(loadColor(ResourceConstants.ACCENT_COLOR_LIGHT_NAME,
- colorOverlayPackage))
- .setColorAccentDark(loadColor(ResourceConstants.ACCENT_COLOR_DARK_NAME,
- colorOverlayPackage));
- } else {
- addSystemDefaultColor(builder);
- }
- }
-
- void addShapeOverlay(Builder builder, String shapeOverlayPackage)
- throws NameNotFoundException {
- addShapeOverlay(builder, shapeOverlayPackage, true);
- }
-
- void addShapeOverlay(Builder builder, String shapeOverlayPackage, boolean addPreview)
- throws NameNotFoundException {
- if (!TextUtils.isEmpty(shapeOverlayPackage)) {
- builder.addOverlayPackage(getOverlayCategory(shapeOverlayPackage),
- shapeOverlayPackage)
- .setShapePath(
- loadString(ResourceConstants.CONFIG_ICON_MASK, shapeOverlayPackage))
- .setBottomSheetCornerRadius(
- loadDimen(ResourceConstants.CONFIG_CORNERRADIUS, shapeOverlayPackage));
- } else {
- addSystemDefaultShape(builder);
- }
- if (addPreview) {
- addShapePreviewIcons(builder);
- }
- }
-
- private void addShapePreviewIcons(Builder builder) {
- List<ShapeAppIcon> icons = new ArrayList<>();
- for (String packageName : mShapePreviewIconPackages) {
- Drawable icon = null;
- CharSequence name = null;
- try {
- icon = mContext.getPackageManager().getApplicationIcon(packageName);
- // Add the shape icon app name.
- ApplicationInfo appInfo = mContext.getPackageManager()
- .getApplicationInfo(packageName, /* flag= */ 0);
- name = mContext.getPackageManager().getApplicationLabel(appInfo);
- } catch (NameNotFoundException e) {
- Log.d(TAG, "Couldn't find app " + packageName
- + ", won't use it for icon shape preview");
- } finally {
- if (icon != null && !TextUtils.isEmpty(name)) {
- icons.add(new ShapeAppIcon(icon, name));
- }
- }
- }
- builder.setShapePreviewIcons(icons);
- }
-
- void addNoPreviewIconOverlay(Builder builder, String overlayPackage) {
- if (!TextUtils.isEmpty(overlayPackage)) {
- builder.addOverlayPackage(getOverlayCategory(overlayPackage),
- overlayPackage);
- }
- }
-
- void addSysUiIconOverlay(Builder builder, String iconSysUiOverlayPackage)
- throws NameNotFoundException {
- if (!TextUtils.isEmpty(iconSysUiOverlayPackage)) {
- addIconOverlay(builder, iconSysUiOverlayPackage);
- }
- }
-
- void addAndroidIconOverlay(Builder builder, String iconAndroidOverlayPackage)
- throws NameNotFoundException {
- if (!TextUtils.isEmpty(iconAndroidOverlayPackage)) {
- addIconOverlay(builder, iconAndroidOverlayPackage, ICONS_FOR_PREVIEW);
- } else {
- addSystemDefaultIcons(builder, ANDROID_PACKAGE, ICONS_FOR_PREVIEW);
- }
- }
-
- void addIconOverlay(Builder builder, String packageName, String... previewIcons)
- throws NameNotFoundException {
- builder.addOverlayPackage(getOverlayCategory(packageName), packageName);
- for (String iconName : previewIcons) {
- builder.addIcon(loadIconPreviewDrawable(iconName, packageName, false));
- }
- }
-
- void addFontOverlay(Builder builder, String fontOverlayPackage)
- throws NameNotFoundException {
- if (!TextUtils.isEmpty(fontOverlayPackage)) {
- builder.addOverlayPackage(getOverlayCategory(fontOverlayPackage),
- fontOverlayPackage)
- .setBodyFontFamily(loadTypeface(
- ResourceConstants.CONFIG_BODY_FONT_FAMILY,
- fontOverlayPackage))
- .setHeadlineFontFamily(loadTypeface(
- ResourceConstants.CONFIG_HEADLINE_FONT_FAMILY,
- fontOverlayPackage));
- } else {
- addSystemDefaultFont(builder);
- }
- }
-
- void addSystemDefaultIcons(Builder builder, String packageName,
- String... previewIcons) {
- try {
- for (String iconName : previewIcons) {
- builder.addIcon(loadIconPreviewDrawable(iconName, packageName, true));
- }
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, "Didn't find android package icons, will skip preview", e);
- }
- }
-
- void addSystemDefaultShape(Builder builder) {
- Resources system = Resources.getSystem();
- String iconMaskPath = system.getString(
- system.getIdentifier(ResourceConstants.CONFIG_ICON_MASK,
- "string", ResourceConstants.ANDROID_PACKAGE));
- builder.setShapePath(iconMaskPath)
- .setBottomSheetCornerRadius(
- system.getDimensionPixelOffset(
- system.getIdentifier(ResourceConstants.CONFIG_CORNERRADIUS,
- "dimen", ResourceConstants.ANDROID_PACKAGE)));
- }
-
- void addSystemDefaultColor(Builder builder) {
- Resources system = Resources.getSystem();
- int colorAccentLight = system.getColor(
- system.getIdentifier(ResourceConstants.ACCENT_COLOR_LIGHT_NAME, "color",
- ResourceConstants.ANDROID_PACKAGE), null);
- builder.setColorAccentLight(colorAccentLight);
-
- int colorAccentDark = system.getColor(
- system.getIdentifier(ResourceConstants.ACCENT_COLOR_DARK_NAME, "color",
- ResourceConstants.ANDROID_PACKAGE), null);
- builder.setColorAccentDark(colorAccentDark);
- }
-
- void addSystemDefaultFont(Builder builder) {
- Resources system = Resources.getSystem();
- String headlineFontFamily = system.getString(system.getIdentifier(
- ResourceConstants.CONFIG_HEADLINE_FONT_FAMILY, "string",
- ResourceConstants.ANDROID_PACKAGE));
- String bodyFontFamily = system.getString(system.getIdentifier(
- ResourceConstants.CONFIG_BODY_FONT_FAMILY,
- "string", ResourceConstants.ANDROID_PACKAGE));
- builder.setHeadlineFontFamily(Typeface.create(headlineFontFamily, Typeface.NORMAL))
- .setBodyFontFamily(Typeface.create(bodyFontFamily, Typeface.NORMAL));
- }
-
- Typeface loadTypeface(String configName, String fontOverlayPackage)
- throws NameNotFoundException, NotFoundException {
-
- // TODO(santie): check for font being present in system
-
- Resources overlayRes = mContext.getPackageManager()
- .getResourcesForApplication(fontOverlayPackage);
-
- String fontFamily = overlayRes.getString(overlayRes.getIdentifier(configName,
- "string", fontOverlayPackage));
- return Typeface.create(fontFamily, Typeface.NORMAL);
- }
-
- int loadColor(String colorName, String colorPackage)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes = mContext.getPackageManager()
- .getResourcesForApplication(colorPackage);
- return overlayRes.getColor(overlayRes.getIdentifier(colorName, "color", colorPackage),
- null);
- }
-
- String loadString(String stringName, String packageName)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes =
- mContext.getPackageManager().getResourcesForApplication(
- packageName);
- return overlayRes.getString(overlayRes.getIdentifier(stringName, "string", packageName));
- }
-
- @Dimension
- int loadDimen(String dimenName, String packageName)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes =
- mContext.getPackageManager().getResourcesForApplication(
- packageName);
- return overlayRes.getDimensionPixelOffset(overlayRes.getIdentifier(
- dimenName, "dimen", packageName));
- }
-
- boolean loadBoolean(String booleanName, String packageName)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes =
- mContext.getPackageManager().getResourcesForApplication(
- packageName);
- return overlayRes.getBoolean(overlayRes.getIdentifier(
- booleanName, "boolean", packageName));
- }
-
- Drawable loadIconPreviewDrawable(String drawableName, String packageName,
- boolean fromSystem) throws NameNotFoundException, NotFoundException {
-
- Resources packageRes =
- mContext.getPackageManager().getResourcesForApplication(
- packageName);
- Resources res = fromSystem ? Resources.getSystem() : packageRes;
- return res.getDrawable(
- packageRes.getIdentifier(drawableName, "drawable", packageName), null);
- }
-
- @Nullable
- String getOverlayCategory(String packageName) {
- OverlayInfo info = mOverlayInfos.get(packageName);
- return info != null ? info.getCategory() : null;
- }
-
- String[] getShapePreviewIconPackages() {
- return mShapePreviewIconPackages;
- }
-}
\ No newline at end of file
diff --git a/src/com/android/customization/model/theme/ThemeBundle.java b/src/com/android/customization/model/theme/ThemeBundle.java
deleted file mode 100644
index 3a32f25..0000000
--- a/src/com/android/customization/model/theme/ThemeBundle.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.PATH_SIZE;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Path;
-import android.graphics.Typeface;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.shapes.PathShape;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.Dimension;
-import androidx.annotation.Nullable;
-import androidx.core.graphics.PathParser;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.customization.widget.DynamicAdaptiveIconDrawable;
-import com.android.wallpaper.R;
-import com.android.wallpaper.asset.Asset;
-import com.android.wallpaper.asset.BitmapCachingAsset;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.util.ResourceUtils;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Represents a Theme component available in the system as a "persona" bundle.
- * Note that in this context a Theme is not related to Android's Styles, but it's rather an
- * abstraction representing a series of overlays to be applied to the system.
- */
-public class ThemeBundle implements CustomizationOption<ThemeBundle> {
-
- private static final String TAG = "ThemeBundle";
- private final static String EMPTY_JSON = "{}";
- private final static String TIMESTAMP_FIELD = "_applied_timestamp";
-
- private final String mTitle;
- private final PreviewInfo mPreviewInfo;
- private final boolean mIsDefault;
- protected final Map<String, String> mPackagesByCategory;
- private WallpaperInfo mOverrideWallpaper;
- private Asset mOverrideWallpaperAsset;
- private CharSequence mContentDescription;
-
- protected ThemeBundle(String title, Map<String, String> overlayPackages,
- boolean isDefault, PreviewInfo previewInfo) {
- mTitle = title;
- mIsDefault = isDefault;
- mPreviewInfo = previewInfo;
- mPackagesByCategory = Collections.unmodifiableMap(removeNullValues(overlayPackages));
- }
-
- @Override
- public String getTitle() {
- return mTitle;
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- Resources res = view.getContext().getResources();
-
- ((TextView) view.findViewById(R.id.theme_option_font)).setTypeface(
- mPreviewInfo.headlineFontFamily);
- if (mPreviewInfo.shapeDrawable != null) {
- ((ShapeDrawable) mPreviewInfo.shapeDrawable).getPaint().setColor(
- mPreviewInfo.resolveAccentColor(res));
- ((ImageView) view.findViewById(R.id.theme_option_shape)).setImageDrawable(
- mPreviewInfo.shapeDrawable);
- }
- if (!mPreviewInfo.icons.isEmpty()) {
- Drawable icon = mPreviewInfo.icons.get(0).getConstantState().newDrawable().mutate();
- icon.setTint(ResourceUtils.getColorAttr(
- view.getContext(), android.R.attr.textColorSecondary));
- ((ImageView) view.findViewById(R.id.theme_option_icon)).setImageDrawable(
- icon);
- }
- view.setContentDescription(getContentDescription(view.getContext()));
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeBundle> manager) {
- ThemeManager themeManager = (ThemeManager) manager;
-
- if (mIsDefault) {
- String serializedOverlays = themeManager.getStoredOverlays();
- return TextUtils.isEmpty(serializedOverlays) || EMPTY_JSON.equals(serializedOverlays);
- } else {
- Map<String, String> currentOverlays = themeManager.getCurrentOverlays();
- return mPackagesByCategory.equals(currentOverlays);
- }
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.theme_option;
- }
-
- /**
- * This is similar to #equals() but it only compares this theme's packages with the other, that
- * is, it will return true if applying this theme has the same effect of applying the given one.
- */
- public boolean isEquivalent(ThemeBundle other) {
- if (other == null) {
- return false;
- }
- if (mIsDefault) {
- return other.isDefault() || TextUtils.isEmpty(other.getSerializedPackages())
- || EMPTY_JSON.equals(other.getSerializedPackages());
- }
- // Map#equals ensures keys and values are compared.
- return mPackagesByCategory.equals(other.mPackagesByCategory);
- }
-
- public PreviewInfo getPreviewInfo() {
- return mPreviewInfo;
- }
-
- public void setOverrideThemeWallpaper(WallpaperInfo homeWallpaper) {
- mOverrideWallpaper = homeWallpaper;
- mOverrideWallpaperAsset = null;
- }
-
- private Asset getOverrideWallpaperAsset(Context context) {
- if (mOverrideWallpaperAsset == null) {
- mOverrideWallpaperAsset = new BitmapCachingAsset(context,
- mOverrideWallpaper.getThumbAsset(context));
- }
- return mOverrideWallpaperAsset;
- }
-
- boolean isDefault() {
- return mIsDefault;
- }
-
- public Map<String, String> getPackagesByCategory() {
- return mPackagesByCategory;
- }
-
- public String getSerializedPackages() {
- return getJsonPackages(false).toString();
- }
-
- public String getSerializedPackagesWithTimestamp() {
- return getJsonPackages(true).toString();
- }
-
- JSONObject getJsonPackages(boolean insertTimestamp) {
- if (isDefault()) {
- return new JSONObject();
- }
- JSONObject json = new JSONObject(mPackagesByCategory);
- // Remove items with null values to avoid deserialization issues.
- removeNullValues(json);
- if (insertTimestamp) {
- try {
- json.put(TIMESTAMP_FIELD, System.currentTimeMillis());
- } catch (JSONException e) {
- Log.e(TAG, "Couldn't add timestamp to serialized themebundle");
- }
- }
- return json;
- }
-
- private void removeNullValues(JSONObject json) {
- Iterator<String> keys = json.keys();
- Set<String> keysToRemove = new HashSet<>();
- while(keys.hasNext()) {
- String key = keys.next();
- if (json.isNull(key)) {
- keysToRemove.add(key);
- }
- }
- for (String key : keysToRemove) {
- json.remove(key);
- }
- }
-
- private Map<String, String> removeNullValues(Map<String, String> map) {
- return map.entrySet()
- .stream()
- .filter(entry -> entry.getValue() != null)
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
- }
-
- protected CharSequence getContentDescription(Context context) {
- if (mContentDescription == null) {
- CharSequence defaultName = context.getString(R.string.default_theme_title);
- if (isDefault()) {
- mContentDescription = defaultName;
- } else {
- PackageManager pm = context.getPackageManager();
- CharSequence fontName = getOverlayName(pm, OVERLAY_CATEGORY_FONT);
- CharSequence iconName = getOverlayName(pm, OVERLAY_CATEGORY_ICON_ANDROID);
- CharSequence shapeName = getOverlayName(pm, OVERLAY_CATEGORY_SHAPE);
- CharSequence colorName = getOverlayName(pm, OVERLAY_CATEGORY_COLOR);
- mContentDescription = context.getString(R.string.theme_description,
- TextUtils.isEmpty(fontName) ? defaultName : fontName,
- TextUtils.isEmpty(iconName) ? defaultName : iconName,
- TextUtils.isEmpty(shapeName) ? defaultName : shapeName,
- TextUtils.isEmpty(colorName) ? defaultName : colorName);
- }
- }
- return mContentDescription;
- }
-
- private CharSequence getOverlayName(PackageManager pm, String overlayCategoryFont) {
- try {
- return pm.getApplicationInfo(
- mPackagesByCategory.get(overlayCategoryFont), 0).loadLabel(pm);
- } catch (PackageManager.NameNotFoundException e) {
- return "";
- }
- }
-
- public static class PreviewInfo {
- public final Typeface bodyFontFamily;
- public final Typeface headlineFontFamily;
- @ColorInt public final int colorAccentLight;
- @ColorInt public final int colorAccentDark;
- public final List<Drawable> icons;
- public final Drawable shapeDrawable;
- public final List<ShapeAppIcon> shapeAppIcons;
- @Dimension public final int bottomSheeetCornerRadius;
-
- /** A class to represent an App icon and its name. */
- public static class ShapeAppIcon {
- private Drawable mIconDrawable;
- private CharSequence mAppName;
-
- public ShapeAppIcon(Drawable icon, CharSequence appName) {
- mIconDrawable = icon;
- mAppName = appName;
- }
-
- /** Returns a copy of app icon drawable. */
- public Drawable getDrawableCopy() {
- return mIconDrawable.getConstantState().newDrawable().mutate();
- }
-
- /** Returns the app name. */
- public CharSequence getAppName() {
- return mAppName;
- }
- }
-
- private PreviewInfo(Context context, Typeface bodyFontFamily, Typeface headlineFontFamily,
- int colorAccentLight, int colorAccentDark, List<Drawable> icons,
- Drawable shapeDrawable, @Dimension int cornerRadius,
- List<ShapeAppIcon> shapeAppIcons) {
- this.bodyFontFamily = bodyFontFamily;
- this.headlineFontFamily = headlineFontFamily;
- this.colorAccentLight = colorAccentLight;
- this.colorAccentDark = colorAccentDark;
- this.icons = icons;
- this.shapeDrawable = shapeDrawable;
- this.bottomSheeetCornerRadius = cornerRadius;
- this.shapeAppIcons = shapeAppIcons;
- }
-
- /**
- * Returns the accent color to be applied corresponding with the current configuration's
- * UI mode.
- * @return one of {@link #colorAccentDark} or {@link #colorAccentLight}
- */
- @ColorInt
- public int resolveAccentColor(Resources res) {
- return (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES ? colorAccentDark : colorAccentLight;
- }
- }
-
- public static class Builder {
- protected String mTitle;
- private Typeface mBodyFontFamily;
- private Typeface mHeadlineFontFamily;
- @ColorInt private int mColorAccentLight = -1;
- @ColorInt private int mColorAccentDark = -1;
- private List<Drawable> mIcons = new ArrayList<>();
- private String mPathString;
- private Path mShapePath;
- private boolean mIsDefault;
- @Dimension private int mCornerRadius;
- protected Map<String, String> mPackages = new HashMap<>();
- private List<ShapeAppIcon> mAppIcons = new ArrayList<>();
-
- public ThemeBundle build(Context context) {
- return new ThemeBundle(mTitle, mPackages, mIsDefault, createPreviewInfo(context));
- }
-
- public PreviewInfo createPreviewInfo(Context context) {
- ShapeDrawable shapeDrawable = null;
- List<ShapeAppIcon> shapeIcons = new ArrayList<>();
- Path path = mShapePath;
- if (!TextUtils.isEmpty(mPathString)) {
- path = PathParser.createPathFromPathData(mPathString);
- }
- if (path != null) {
- PathShape shape = new PathShape(path, PATH_SIZE, PATH_SIZE);
- shapeDrawable = new ShapeDrawable(shape);
- shapeDrawable.setIntrinsicHeight((int) PATH_SIZE);
- shapeDrawable.setIntrinsicWidth((int) PATH_SIZE);
- for (ShapeAppIcon icon : mAppIcons) {
- Drawable drawable = icon.mIconDrawable;
- if (drawable instanceof AdaptiveIconDrawable) {
- AdaptiveIconDrawable adaptiveIcon = (AdaptiveIconDrawable) drawable;
- shapeIcons.add(new ShapeAppIcon(
- new DynamicAdaptiveIconDrawable(adaptiveIcon.getBackground(),
- adaptiveIcon.getForeground(), path),
- icon.getAppName()));
- } else if (drawable instanceof DynamicAdaptiveIconDrawable) {
- shapeIcons.add(icon);
- }
- // TODO: add iconloader library's legacy treatment helper methods for
- // non-adaptive icons
- }
- }
- return new PreviewInfo(context, mBodyFontFamily, mHeadlineFontFamily, mColorAccentLight,
- mColorAccentDark, mIcons, shapeDrawable, mCornerRadius, shapeIcons);
- }
-
- public Map<String, String> getPackages() {
- return Collections.unmodifiableMap(mPackages);
- }
-
- public String getTitle() {
- return mTitle;
- }
-
- public Builder setTitle(String title) {
- mTitle = title;
- return this;
- }
-
- public Builder setBodyFontFamily(@Nullable Typeface bodyFontFamily) {
- mBodyFontFamily = bodyFontFamily;
- return this;
- }
-
- public Builder setHeadlineFontFamily(@Nullable Typeface headlineFontFamily) {
- mHeadlineFontFamily = headlineFontFamily;
- return this;
- }
-
- public Builder setColorAccentLight(@ColorInt int colorAccentLight) {
- mColorAccentLight = colorAccentLight;
- return this;
- }
-
- public Builder setColorAccentDark(@ColorInt int colorAccentDark) {
- mColorAccentDark = colorAccentDark;
- return this;
- }
-
- public Builder addIcon(Drawable icon) {
- mIcons.add(icon);
- return this;
- }
-
- public Builder addOverlayPackage(String category, String packageName) {
- mPackages.put(category, packageName);
- return this;
- }
-
- public Builder setShapePath(String path) {
- mPathString = path;
- return this;
- }
-
- public Builder setShapePath(Path path) {
- mShapePath = path;
- return this;
- }
-
- public Builder asDefault() {
- mIsDefault = true;
- return this;
- }
-
- public Builder setShapePreviewIcons(List<ShapeAppIcon> appIcons) {
- mAppIcons.clear();
- mAppIcons.addAll(appIcons);
- return this;
- }
-
- public Builder setBottomSheetCornerRadius(@Dimension int radius) {
- mCornerRadius = radius;
- return this;
- }
- }
-}
diff --git a/src/com/android/customization/model/theme/ThemeBundleProvider.java b/src/com/android/customization/model/theme/ThemeBundleProvider.java
deleted file mode 100644
index 34342b3..0000000
--- a/src/com/android/customization/model/theme/ThemeBundleProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.theme.custom.CustomTheme;
-
-import org.json.JSONException;
-
-/**
- * Interface for a class that can retrieve Themes from the system.
- */
-public interface ThemeBundleProvider {
-
- /**
- * Returns whether themes are available in the current setup.
- */
- boolean isAvailable();
-
- /**
- * Retrieve the available themes.
- * @param callback called when the themes have been retrieved (or immediately if cached)
- * @param reload whether to reload themes if they're cached.
- */
- void fetch(OptionsFetchedListener<ThemeBundle> callback, boolean reload);
-
- void storeCustomTheme(CustomTheme theme);
-
- void removeCustomTheme(CustomTheme theme);
-
- @Nullable ThemeBundle.Builder parseThemeBundle(String serializedTheme) throws JSONException;
-
- @Nullable CustomTheme.Builder parseCustomTheme(String serializedTheme) throws JSONException;
-
- ThemeBundle findEquivalent(ThemeBundle other);
-}
diff --git a/src/com/android/customization/model/theme/ThemeBundledWallpaperInfo.java b/src/com/android/customization/model/theme/ThemeBundledWallpaperInfo.java
deleted file mode 100644
index 4f0cd6c..0000000
--- a/src/com/android/customization/model/theme/ThemeBundledWallpaperInfo.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import android.app.Activity;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.os.Parcel;
-import android.util.Log;
-
-import androidx.annotation.DrawableRes;
-import androidx.annotation.StringRes;
-
-import com.android.wallpaper.asset.Asset;
-import com.android.wallpaper.asset.ResourceAsset;
-import com.android.wallpaper.model.InlinePreviewIntentFactory;
-import com.android.wallpaper.model.WallpaperInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents a wallpaper coming from the resources of the theme bundle container APK.
- */
-public class ThemeBundledWallpaperInfo extends WallpaperInfo {
- public static final Creator<ThemeBundledWallpaperInfo> CREATOR =
- new Creator<ThemeBundledWallpaperInfo>() {
- @Override
- public ThemeBundledWallpaperInfo createFromParcel(Parcel in) {
- return new ThemeBundledWallpaperInfo(in);
- }
-
- @Override
- public ThemeBundledWallpaperInfo[] newArray(int size) {
- return new ThemeBundledWallpaperInfo[size];
- }
- };
-
- private static final String TAG = "ThemeBundledWallpaperInfo";
-
- private final String mPackageName;
- private final String mResName;
- private final String mCollectionId;
- @DrawableRes private final int mDrawableResId;
- @StringRes private final int mTitleResId;
- @StringRes private final int mAttributionResId;
- @StringRes private final int mActionUrlResId;
- private List<String> mAttributions;
- private String mActionUrl;
- private Resources mResources;
- private Asset mAsset;
-
- /**
- * Constructs a new theme-bundled static wallpaper model object.
- *
- * @param drawableResId Resource ID of the raw wallpaper image.
- * @param resName The unique name of the wallpaper resource, e.g. "z_wp001".
- * @param themeName Unique name of the collection this wallpaper belongs in; used for logging.
- * @param titleResId Resource ID of the string for the title attribution.
- * @param attributionResId Resource ID of the string for the first subtitle attribution.
- */
- public ThemeBundledWallpaperInfo(String packageName, String resName, String themeName,
- int drawableResId, int titleResId, int attributionResId, int actionUrlResId) {
- mPackageName = packageName;
- mResName = resName;
- mCollectionId = themeName;
- mDrawableResId = drawableResId;
- mTitleResId = titleResId;
- mAttributionResId = attributionResId;
- mActionUrlResId = actionUrlResId;
- }
-
- private ThemeBundledWallpaperInfo(Parcel in) {
- super(in);
- mPackageName = in.readString();
- mResName = in.readString();
- mCollectionId = in.readString();
- mDrawableResId = in.readInt();
- mTitleResId = in.readInt();
- mAttributionResId = in.readInt();
- mActionUrlResId = in.readInt();
- }
-
- @Override
- public List<String> getAttributions(Context context) {
- if (mAttributions == null) {
- Resources res = getPackageResources(context);
- mAttributions = new ArrayList<>();
- if (mTitleResId != 0) {
- mAttributions.add(res.getString(mTitleResId));
- }
- if (mAttributionResId != 0) {
- mAttributions.add(res.getString(mAttributionResId));
- }
- }
-
- return mAttributions;
- }
-
- @Override
- public String getActionUrl(Context context) {
- if (mActionUrl == null && mActionUrlResId != 0) {
- mActionUrl = getPackageResources(context).getString(mActionUrlResId);
- }
- return mActionUrl;
- }
-
- @Override
- public Asset getAsset(Context context) {
- if (mAsset == null) {
- Resources res = getPackageResources(context);
- mAsset = new ResourceAsset(res, mDrawableResId);
- }
-
- return mAsset;
- }
-
- @Override
- public Asset getThumbAsset(Context context) {
- return getAsset(context);
- }
-
- @Override
- public void showPreview(Activity srcActivity, InlinePreviewIntentFactory factory,
- int requestCode, boolean isAssetIdPresent) {
- try {
- srcActivity.startActivityForResult(factory.newIntent(srcActivity, this,
- isAssetIdPresent), requestCode);
- } catch (ActivityNotFoundException |SecurityException e) {
- Log.e(TAG, "App isn't installed or ThemePicker doesn't have permission to launch", e);
- }
- }
-
- @Override
- public String getCollectionId(Context unused) {
- return mCollectionId;
- }
-
- @Override
- public String getWallpaperId() {
- return mResName;
- }
-
- public String getResName() {
- return mResName;
- }
-
- /**
- * Returns the {@link Resources} instance for the theme bundles stub APK.
- */
- private Resources getPackageResources(Context context) {
- if (mResources != null) {
- return mResources;
- }
-
- try {
- mResources = context.getPackageManager().getResourcesForApplication(mPackageName);
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(TAG, "Could not get app resources for " + mPackageName);
- }
- return mResources;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- super.writeToParcel(dest, flags);
- dest.writeString(mPackageName);
- dest.writeString(mResName);
- dest.writeString(mCollectionId);
- dest.writeInt(mDrawableResId);
- dest.writeInt(mTitleResId);
- dest.writeInt(mAttributionResId);
- dest.writeInt(mActionUrlResId);
- }
-}
diff --git a/src/com/android/customization/model/theme/ThemeManager.java b/src/com/android/customization/model/theme/ThemeManager.java
deleted file mode 100644
index 85241c1..0000000
--- a/src/com/android/customization/model/theme/ThemeManager.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_LAUNCHER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SETTINGS;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SYSUI;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_THEMEPICKER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-
-import android.provider.Settings;
-import android.text.TextUtils;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.custom.CustomTheme;
-import com.android.customization.module.ThemesUserEventLogger;
-
-import org.json.JSONObject;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-public class ThemeManager implements CustomizationManager<ThemeBundle> {
-
- public static final Set<String> THEME_CATEGORIES = new HashSet<>();
- static {
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_COLOR);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_FONT);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_SHAPE);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_ICON_ANDROID);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_ICON_SETTINGS);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_ICON_SYSUI);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_ICON_LAUNCHER);
- THEME_CATEGORIES.add(OVERLAY_CATEGORY_ICON_THEMEPICKER);
- }
-
- private final ThemeBundleProvider mProvider;
- private final OverlayManagerCompat mOverlayManagerCompat;
-
- protected final FragmentActivity mActivity;
- private final ThemesUserEventLogger mEventLogger;
-
- private Map<String, String> mCurrentOverlays;
-
- public ThemeManager(ThemeBundleProvider provider, FragmentActivity activity,
- OverlayManagerCompat overlayManagerCompat,
- ThemesUserEventLogger logger) {
- mProvider = provider;
- mActivity = activity;
- mOverlayManagerCompat = overlayManagerCompat;
- mEventLogger = logger;
- }
-
- @Override
- public boolean isAvailable() {
- return mOverlayManagerCompat.isAvailable() && mProvider.isAvailable();
- }
-
- @Override
- public void apply(ThemeBundle theme, Callback callback) {
- applyOverlays(theme, callback);
- }
-
- private void applyOverlays(ThemeBundle theme, Callback callback) {
- boolean allApplied = Settings.Secure.putString(mActivity.getContentResolver(),
- ResourceConstants.THEME_SETTING, theme.getSerializedPackagesWithTimestamp());
- if (theme instanceof CustomTheme) {
- storeCustomTheme((CustomTheme) theme);
- }
- mCurrentOverlays = null;
- if (allApplied) {
- mEventLogger.logThemeApplied(theme, theme instanceof CustomTheme);
- callback.onSuccess();
- } else {
- callback.onError(null);
- }
- }
-
- private void storeCustomTheme(CustomTheme theme) {
- mProvider.storeCustomTheme(theme);
- }
-
- @Override
- public void fetchOptions(OptionsFetchedListener<ThemeBundle> callback, boolean reload) {
- mProvider.fetch(callback, reload);
- }
-
- public Map<String, String> getCurrentOverlays() {
- if (mCurrentOverlays == null) {
- mCurrentOverlays = mOverlayManagerCompat.getEnabledOverlaysForTargets(
- ResourceConstants.getPackagesToOverlay(mActivity));
- mCurrentOverlays.entrySet().removeIf(
- categoryAndPackage -> !THEME_CATEGORIES.contains(categoryAndPackage.getKey()));
- }
- return mCurrentOverlays;
- }
-
- public String getStoredOverlays() {
- return Settings.Secure.getString(mActivity.getContentResolver(),
- ResourceConstants.THEME_SETTING);
- }
-
- public void removeCustomTheme(CustomTheme theme) {
- mProvider.removeCustomTheme(theme);
- }
-
- /**
- * @return an existing ThemeBundle that matches the same packages as the given one, if one
- * exists, or {@code null} otherwise.
- */
- @Nullable
- public ThemeBundle findThemeByPackages(ThemeBundle other) {
- return mProvider.findEquivalent(other);
- }
-
- /**
- * Store empty theme if no theme has been set yet. This will prevent Settings from showing the
- * suggestion to select a theme
- */
- public void storeEmptyTheme() {
- String themeSetting = Settings.Secure.getString(mActivity.getContentResolver(),
- ResourceConstants.THEME_SETTING);
- if (TextUtils.isEmpty(themeSetting)) {
- Settings.Secure.putString(mActivity.getContentResolver(),
- ResourceConstants.THEME_SETTING, new JSONObject().toString());
- }
- }
-}
diff --git a/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java b/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java
deleted file mode 100644
index f3b950b..0000000
--- a/src/com/android/customization/model/theme/custom/ColorOptionsProvider.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import static com.android.customization.model.ResourceConstants.ACCENT_COLOR_DARK_NAME;
-import static com.android.customization.model.ResourceConstants.ACCENT_COLOR_LIGHT_NAME;
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.ICONS_FOR_PREVIEW;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ANDROID_THEME;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.PATH_SIZE;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.shapes.PathShape;
-import android.os.UserHandle;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.core.graphics.PathParser;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.custom.ThemeComponentOption.ColorOption;
-import com.android.wallpaper.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation of {@link ThemeComponentOptionProvider} that reads {@link ColorOption}s from
- * icon overlays.
- */
-public class ColorOptionsProvider extends ThemeComponentOptionProvider<ColorOption> {
-
- private static final String TAG = "ColorOptionsProvider";
- private final CustomThemeManager mCustomThemeManager;
- private final String mDefaultThemePackage;
-
- public ColorOptionsProvider(Context context, OverlayManagerCompat manager,
- CustomThemeManager customThemeManager) {
- super(context, manager, OVERLAY_CATEGORY_COLOR);
- mCustomThemeManager = customThemeManager;
- // System color is set with a static overlay for android.theme category, so let's try to
- // find that first, and if that's not present, we'll default to System resources.
- // (see #addDefault())
- List<String> themePackages = manager.getOverlayPackagesForCategory(
- OVERLAY_CATEGORY_ANDROID_THEME, UserHandle.myUserId(), ANDROID_PACKAGE);
- mDefaultThemePackage = themePackages.isEmpty() ? null : themePackages.get(0);
- }
-
- @Override
- protected void loadOptions() {
- List<Drawable> previewIcons = new ArrayList<>();
- String iconPackage =
- mCustomThemeManager.getOverlayPackages().get(OVERLAY_CATEGORY_ICON_ANDROID);
- if (TextUtils.isEmpty(iconPackage)) {
- iconPackage = ANDROID_PACKAGE;
- }
- for (String iconName : ICONS_FOR_PREVIEW) {
- try {
- 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",
- iconPackage), e);
- }
- }
- String shapePackage = mCustomThemeManager.getOverlayPackages().get(OVERLAY_CATEGORY_SHAPE);
- if (TextUtils.isEmpty(shapePackage)) {
- shapePackage = ANDROID_PACKAGE;
- }
- Drawable shape = loadShape(shapePackage);
- addDefault(previewIcons, shape);
- for (String overlayPackage : mOverlayPackages) {
- try {
- Resources overlayRes = getOverlayResources(overlayPackage);
- int lightColor = overlayRes.getColor(
- overlayRes.getIdentifier(ACCENT_COLOR_LIGHT_NAME, "color", overlayPackage),
- null);
- int darkColor = overlayRes.getColor(
- overlayRes.getIdentifier(ACCENT_COLOR_DARK_NAME, "color", overlayPackage),
- null);
- PackageManager pm = mContext.getPackageManager();
- String label = pm.getApplicationInfo(overlayPackage, 0).loadLabel(pm).toString();
- ColorOption option = new ColorOption(overlayPackage, label, lightColor, darkColor);
- option.setPreviewIcons(previewIcons);
- option.setShapeDrawable(shape);
- mOptions.add(option);
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, String.format("Couldn't load color overlay %s, will skip it",
- overlayPackage), e);
- }
- }
- }
-
- private void addDefault(List<Drawable> previewIcons, Drawable shape) {
- int lightColor, darkColor;
- Resources system = Resources.getSystem();
- try {
- Resources r = getOverlayResources(mDefaultThemePackage);
- lightColor = r.getColor(
- r.getIdentifier(ACCENT_COLOR_LIGHT_NAME, "color", mDefaultThemePackage),
- null);
- darkColor = r.getColor(
- r.getIdentifier(ACCENT_COLOR_DARK_NAME, "color", mDefaultThemePackage),
- null);
- } catch (NotFoundException | NameNotFoundException e) {
- Log.d(TAG, "Didn't find default color, will use system option", e);
-
- lightColor = system.getColor(
- system.getIdentifier(ACCENT_COLOR_LIGHT_NAME, "color", ANDROID_PACKAGE), null);
-
- darkColor = system.getColor(
- system.getIdentifier(ACCENT_COLOR_DARK_NAME, "color", ANDROID_PACKAGE), null);
- }
- ColorOption option = new ColorOption(null,
- mContext.getString(R.string.default_theme_title), lightColor, darkColor);
- option.setPreviewIcons(previewIcons);
- option.setShapeDrawable(shape);
- mOptions.add(option);
- }
-
- private Drawable loadIconPreviewDrawable(String drawableName, String packageName)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes = getOverlayResources(packageName);
- return overlayRes.getDrawable(
- overlayRes.getIdentifier(drawableName, "drawable", packageName), null);
- }
-
- private Drawable loadShape(String packageName) {
- String path = null;
- try {
- Resources r = getOverlayResources(packageName);
-
- path = ResourceConstants.getIconMask(r, packageName);
- } catch (NameNotFoundException e) {
- Log.d(TAG, String.format("Couldn't load shape icon for %s, skipping.", packageName), e);
- }
- ShapeDrawable shapeDrawable = null;
- if (!TextUtils.isEmpty(path)) {
- PathShape shape = new PathShape(PathParser.createPathFromPathData(path),
- PATH_SIZE, PATH_SIZE);
- shapeDrawable = new ShapeDrawable(shape);
- shapeDrawable.setIntrinsicHeight((int) PATH_SIZE);
- shapeDrawable.setIntrinsicWidth((int) PATH_SIZE);
- }
- return shapeDrawable;
- }
-
-}
diff --git a/src/com/android/customization/model/theme/custom/CustomTheme.java b/src/com/android/customization/model/theme/custom/CustomTheme.java
deleted file mode 100644
index a1ee106..0000000
--- a/src/com/android/customization/model/theme/custom/CustomTheme.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.wallpaper.R;
-
-import java.util.Map;
-import java.util.UUID;
-
-public class CustomTheme extends ThemeBundle {
-
- public static String newId() {
- return UUID.randomUUID().toString();
- }
-
- /**
- * Used to uniquely identify a custom theme since names can change.
- */
- private final String mId;
-
- private CustomTheme(@NonNull String id, String title, Map<String, String> overlayPackages,
- @Nullable PreviewInfo previewInfo) {
- super(title, overlayPackages, false, previewInfo);
- mId = id;
- }
-
- public String getId() {
- return mId;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof CustomTheme)) {
- return false;
- }
- CustomTheme other = (CustomTheme) obj;
- return mId.equals(other.mId);
- }
-
- @Override
- public int hashCode() {
- return mId.hashCode();
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- if (isDefined()) {
- super.bindThumbnailTile(view);
- }
- }
-
- @Override
- public int getLayoutResId() {
- return isDefined() ? R.layout.theme_option : R.layout.custom_theme_option;
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeBundle> manager) {
- return isDefined() && super.isActive(manager);
- }
-
- @Override
- public boolean isEquivalent(ThemeBundle other) {
- return isDefined() && super.isEquivalent(other);
- }
-
- public boolean isDefined() {
- return getPreviewInfo() != null;
- }
-
- public static class Builder extends ThemeBundle.Builder {
- private String mId;
-
- @Override
- public CustomTheme build(Context context) {
- return new CustomTheme(mId, mTitle, mPackages,
- mPackages.isEmpty() ? null : createPreviewInfo(context));
- }
-
- public Builder setId(String id) {
- mId = id;
- return this;
- }
- }
-}
diff --git a/src/com/android/customization/model/theme/custom/CustomThemeManager.java b/src/com/android/customization/model/theme/custom/CustomThemeManager.java
deleted file mode 100644
index 42d73e6..0000000
--- a/src/com/android/customization/model/theme/custom/CustomThemeManager.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
-import com.android.customization.model.theme.ThemeBundleProvider;
-import com.android.customization.model.theme.ThemeManager;
-import com.android.customization.model.theme.custom.CustomTheme.Builder;
-
-import org.json.JSONException;
-
-import java.util.Map;
-
-public class CustomThemeManager implements CustomizationManager<ThemeComponentOption> {
-
- private static final String TAG = "CustomThemeManager";
- private static final String KEY_STATE_CURRENT_SELECTION = "CustomThemeManager.currentSelection";
-
- private final CustomTheme mOriginalTheme;
- private CustomTheme.Builder mBuilder;
-
- private CustomThemeManager(Map<String, String> overlayPackages,
- @Nullable CustomTheme originalTheme) {
- mBuilder = new Builder();
- overlayPackages.forEach(mBuilder::addOverlayPackage);
- mOriginalTheme = originalTheme;
- }
-
- @Override
- public boolean isAvailable() {
- return true;
- }
-
- @Override
- public void apply(ThemeComponentOption option, @Nullable Callback callback) {
- option.buildStep(mBuilder);
- if (callback != null) {
- callback.onSuccess();
- }
- }
-
- public Map<String, String> getOverlayPackages() {
- return mBuilder.getPackages();
- }
-
- public CustomTheme buildPartialCustomTheme(Context context, String id, String title) {
- return ((CustomTheme.Builder)mBuilder.setId(id).setTitle(title)).build(context);
- }
-
- @Override
- public void fetchOptions(OptionsFetchedListener<ThemeComponentOption> callback, boolean reload) {
- //Unused
- }
-
- public CustomTheme getOriginalTheme() {
- return mOriginalTheme;
- }
-
- public PreviewInfo buildCustomThemePreviewInfo(Context context) {
- return mBuilder.createPreviewInfo(context);
- }
-
- /** Saves the custom theme selections while system config changes. */
- public void saveCustomTheme(Context context, Bundle savedInstanceState) {
- CustomTheme customTheme =
- buildPartialCustomTheme(context, /* id= */ null, /* title= */ null);
- savedInstanceState.putString(KEY_STATE_CURRENT_SELECTION,
- customTheme.getSerializedPackages());
- }
-
- /** Reads the saved custom theme after system config changed. */
- public void readCustomTheme(ThemeBundleProvider themeBundleProvider,
- Bundle savedInstanceState) {
- String packages = savedInstanceState.getString(KEY_STATE_CURRENT_SELECTION);
- if (!TextUtils.isEmpty(packages)) {
- try {
- mBuilder = themeBundleProvider.parseCustomTheme(packages);
- } catch (JSONException e) {
- Log.w(TAG, "Couldn't parse provided custom theme.");
- }
- } else {
- Log.w(TAG, "No custom theme being restored.");
- }
- }
-
- public static CustomThemeManager create(
- @Nullable CustomTheme customTheme, ThemeManager themeManager) {
- if (customTheme != null && customTheme.isDefined()) {
- return new CustomThemeManager(customTheme.getPackagesByCategory(), customTheme);
- }
- // Seed the first custom theme with the currently applied theme.
- return new CustomThemeManager(themeManager.getCurrentOverlays(), customTheme);
- }
-
-}
diff --git a/src/com/android/customization/model/theme/custom/FontOptionsProvider.java b/src/com/android/customization/model/theme/custom/FontOptionsProvider.java
deleted file mode 100644
index 53568c9..0000000
--- a/src/com/android/customization/model/theme/custom/FontOptionsProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.CONFIG_BODY_FONT_FAMILY;
-import static com.android.customization.model.ResourceConstants.CONFIG_HEADLINE_FONT_FAMILY;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.Typeface;
-import android.util.Log;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.custom.ThemeComponentOption.FontOption;
-import com.android.wallpaper.R;
-
-/**
- * Implementation of {@link ThemeComponentOptionProvider} that reads {@link FontOption}s from
- * font overlays.
- */
-public class FontOptionsProvider extends ThemeComponentOptionProvider<FontOption> {
-
- private static final String TAG = "FontOptionsProvider";
-
- public FontOptionsProvider(Context context, OverlayManagerCompat manager) {
- super(context, manager, OVERLAY_CATEGORY_FONT);
- }
-
- @Override
- protected void loadOptions() {
- addDefault();
- for (String overlayPackage : mOverlayPackages) {
- try {
- Resources overlayRes = getOverlayResources(overlayPackage);
- Typeface headlineFont = Typeface.create(
- getFontFamily(overlayPackage, overlayRes, CONFIG_HEADLINE_FONT_FAMILY),
- Typeface.NORMAL);
- Typeface bodyFont = Typeface.create(
- getFontFamily(overlayPackage, overlayRes, CONFIG_BODY_FONT_FAMILY),
- Typeface.NORMAL);
- PackageManager pm = mContext.getPackageManager();
- String label = pm.getApplicationInfo(overlayPackage, 0).loadLabel(pm).toString();
- mOptions.add(new FontOption(overlayPackage, label, headlineFont, bodyFont));
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, String.format("Couldn't load font overlay %s, will skip it",
- overlayPackage), e);
- }
- }
- }
-
- private void addDefault() {
- Resources system = Resources.getSystem();
- Typeface headlineFont = Typeface.create(system.getString(system.getIdentifier(
- ResourceConstants.CONFIG_HEADLINE_FONT_FAMILY,"string", ANDROID_PACKAGE)),
- Typeface.NORMAL);
- Typeface bodyFont = Typeface.create(system.getString(system.getIdentifier(
- ResourceConstants.CONFIG_BODY_FONT_FAMILY,
- "string", ANDROID_PACKAGE)),
- Typeface.NORMAL);
- mOptions.add(new FontOption(null, mContext.getString(R.string.default_theme_title),
- headlineFont, bodyFont));
- }
-
- private String getFontFamily(String overlayPackage, Resources overlayRes, String configName) {
- return overlayRes.getString(overlayRes.getIdentifier(configName, "string", overlayPackage));
- }
-}
diff --git a/src/com/android/customization/model/theme/custom/IconOptionsProvider.java b/src/com/android/customization/model/theme/custom/IconOptionsProvider.java
deleted file mode 100644
index f7b669b..0000000
--- a/src/com/android/customization/model/theme/custom/IconOptionsProvider.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.ICONS_FOR_PREVIEW;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_LAUNCHER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SETTINGS;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SYSUI;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_THEMEPICKER;
-
-import android.content.Context;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.util.Log;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.custom.ThemeComponentOption.IconOption;
-import com.android.wallpaper.R;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Implementation of {@link ThemeComponentOptionProvider} that reads {@link IconOption}s from
- * icon overlays.
- */
-public class IconOptionsProvider extends ThemeComponentOptionProvider<IconOption> {
-
- private static final String TAG = "IconOptionsProvider";
-
- private final List<String> mSysUiIconsOverlayPackages = new ArrayList<>();
- private final List<String> mSettingsIconsOverlayPackages = new ArrayList<>();
- private final List<String> mLauncherIconsOverlayPackages = new ArrayList<>();
- private final List<String> mThemePickerIconsOverlayPackages = new ArrayList<>();
-
- public IconOptionsProvider(Context context, OverlayManagerCompat manager) {
- super(context, manager, OVERLAY_CATEGORY_ICON_ANDROID);
- String[] targetPackages = ResourceConstants.getPackagesToOverlay(context);
- mSysUiIconsOverlayPackages.addAll(manager.getOverlayPackagesForCategory(
- OVERLAY_CATEGORY_ICON_SYSUI, UserHandle.myUserId(), targetPackages));
- mSettingsIconsOverlayPackages.addAll(manager.getOverlayPackagesForCategory(
- OVERLAY_CATEGORY_ICON_SETTINGS, UserHandle.myUserId(), targetPackages));
- mLauncherIconsOverlayPackages.addAll(manager.getOverlayPackagesForCategory(
- OVERLAY_CATEGORY_ICON_LAUNCHER, UserHandle.myUserId(), targetPackages));
- mThemePickerIconsOverlayPackages.addAll(manager.getOverlayPackagesForCategory(
- OVERLAY_CATEGORY_ICON_THEMEPICKER, UserHandle.myUserId(), targetPackages));
- }
-
- @Override
- protected void loadOptions() {
- addDefault();
-
- Map<String, IconOption> optionsByPrefix = new HashMap<>();
- for (String overlayPackage : mOverlayPackages) {
- IconOption option = addOrUpdateOption(optionsByPrefix, overlayPackage,
- OVERLAY_CATEGORY_ICON_ANDROID);
- try{
- for (String iconName : ICONS_FOR_PREVIEW) {
- option.addIcon(loadIconPreviewDrawable(iconName, overlayPackage));
- }
- } catch (NotFoundException | NameNotFoundException e) {
- Log.w(TAG, String.format("Couldn't load icon overlay details for %s, will skip it",
- overlayPackage), e);
- }
- }
-
- for (String overlayPackage : mSysUiIconsOverlayPackages) {
- addOrUpdateOption(optionsByPrefix, overlayPackage, OVERLAY_CATEGORY_ICON_SYSUI);
- }
-
- for (String overlayPackage : mSettingsIconsOverlayPackages) {
- addOrUpdateOption(optionsByPrefix, overlayPackage, OVERLAY_CATEGORY_ICON_SETTINGS);
- }
-
- for (String overlayPackage : mLauncherIconsOverlayPackages) {
- addOrUpdateOption(optionsByPrefix, overlayPackage, OVERLAY_CATEGORY_ICON_LAUNCHER);
- }
-
- for (String overlayPackage : mThemePickerIconsOverlayPackages) {
- addOrUpdateOption(optionsByPrefix, overlayPackage, OVERLAY_CATEGORY_ICON_THEMEPICKER);
- }
-
- for (IconOption option : optionsByPrefix.values()) {
- if (option.isValid(mContext)) {
- mOptions.add(option);
- option.setLabel(mContext.getString(R.string.icon_component_label, mOptions.size()));
- }
- }
- }
-
- private IconOption addOrUpdateOption(Map<String, IconOption> optionsByPrefix,
- String overlayPackage, String category) {
- String prefix = overlayPackage.substring(0, overlayPackage.lastIndexOf("."));
- IconOption option;
- if (!optionsByPrefix.containsKey(prefix)) {
- option = new IconOption();
- optionsByPrefix.put(prefix, option);
- } else {
- option = optionsByPrefix.get(prefix);
- }
- option.addOverlayPackage(category, overlayPackage);
- return option;
- }
-
- private Drawable loadIconPreviewDrawable(String drawableName, String packageName)
- throws NameNotFoundException, NotFoundException {
- final Resources resources = ANDROID_PACKAGE.equals(packageName)
- ? Resources.getSystem()
- : mContext.getPackageManager().getResourcesForApplication(packageName);
- return resources.getDrawable(
- resources.getIdentifier(drawableName, "drawable", packageName), null);
- }
-
- private void addDefault() {
- IconOption option = new IconOption();
- option.setLabel(mContext.getString(R.string.default_theme_title));
- try {
- for (String iconName : ICONS_FOR_PREVIEW) {
- option.addIcon(loadIconPreviewDrawable(iconName, ANDROID_PACKAGE));
- }
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, "Didn't find SystemUi package icons, will skip option", e);
- }
- option.addOverlayPackage(OVERLAY_CATEGORY_ICON_ANDROID, null);
- option.addOverlayPackage(OVERLAY_CATEGORY_ICON_SYSUI, null);
- option.addOverlayPackage(OVERLAY_CATEGORY_ICON_SETTINGS, null);
- option.addOverlayPackage(OVERLAY_CATEGORY_ICON_LAUNCHER, null);
- option.addOverlayPackage(OVERLAY_CATEGORY_ICON_THEMEPICKER, null);
- mOptions.add(option);
- }
-
-}
diff --git a/src/com/android/customization/model/theme/custom/ShapeOptionsProvider.java b/src/com/android/customization/model/theme/custom/ShapeOptionsProvider.java
deleted file mode 100644
index f93b892..0000000
--- a/src/com/android/customization/model/theme/custom/ShapeOptionsProvider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.CONFIG_CORNERRADIUS;
-import static com.android.customization.model.ResourceConstants.CONFIG_ICON_MASK;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.PATH_SIZE;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.graphics.Path;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.shapes.PathShape;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Dimension;
-import androidx.core.graphics.PathParser;
-
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.customization.model.theme.custom.ThemeComponentOption.ShapeOption;
-import com.android.customization.widget.DynamicAdaptiveIconDrawable;
-import com.android.wallpaper.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation of {@link ThemeComponentOptionProvider} that reads {@link ShapeOption}s from
- * icon overlays.
- */
-public class ShapeOptionsProvider extends ThemeComponentOptionProvider<ShapeOption> {
-
- private static final String TAG = "ShapeOptionsProvider";
- private final String[] mShapePreviewIconPackages;
- private int mThumbSize;
-
- public ShapeOptionsProvider(Context context, OverlayManagerCompat manager) {
- super(context, manager, OVERLAY_CATEGORY_SHAPE);
- mShapePreviewIconPackages = context.getResources().getStringArray(
- R.array.icon_shape_preview_packages);
- mThumbSize = mContext.getResources().getDimensionPixelSize(
- R.dimen.component_shape_thumb_size);
- }
-
- @Override
- protected void loadOptions() {
- addDefault();
- for (String overlayPackage : mOverlayPackages) {
- try {
- Path path = loadPath(mContext.getPackageManager()
- .getResourcesForApplication(overlayPackage), overlayPackage);
- PackageManager pm = mContext.getPackageManager();
- String label = pm.getApplicationInfo(overlayPackage, 0).loadLabel(pm).toString();
- mOptions.add(new ShapeOption(overlayPackage, label, path,
- loadCornerRadius(overlayPackage), createShapeDrawable(path),
- getShapedAppIcons(path)));
- } catch (NameNotFoundException | NotFoundException e) {
- Log.w(TAG, String.format("Couldn't load shape overlay %s, will skip it",
- overlayPackage), e);
- }
- }
- }
-
- private void addDefault() {
- Resources system = Resources.getSystem();
- Path path = loadPath(system, ANDROID_PACKAGE);
- mOptions.add(new ShapeOption(null, mContext.getString(R.string.default_theme_title), path,
- system.getDimensionPixelOffset(
- system.getIdentifier(ResourceConstants.CONFIG_CORNERRADIUS,
- "dimen", ResourceConstants.ANDROID_PACKAGE)),
- createShapeDrawable(path), getShapedAppIcons(path)));
- }
-
- private ShapeDrawable createShapeDrawable(Path path) {
- PathShape shape = new PathShape(path, PATH_SIZE, PATH_SIZE);
- ShapeDrawable shapeDrawable = new ShapeDrawable(shape);
- shapeDrawable.setIntrinsicHeight(mThumbSize);
- shapeDrawable.setIntrinsicWidth(mThumbSize);
- return shapeDrawable;
- }
-
- private List<ShapeAppIcon> getShapedAppIcons(Path path) {
- List<ShapeAppIcon> shapedAppIcons = new ArrayList<>();
- for (String packageName : mShapePreviewIconPackages) {
- Drawable icon = null;
- CharSequence name = null;
- try {
- Drawable appIcon = mContext.getPackageManager().getApplicationIcon(packageName);
- if (appIcon instanceof AdaptiveIconDrawable) {
- AdaptiveIconDrawable adaptiveIcon = (AdaptiveIconDrawable) appIcon;
- icon = new DynamicAdaptiveIconDrawable(adaptiveIcon.getBackground(),
- adaptiveIcon.getForeground(), path);
-
- ApplicationInfo appInfo = mContext.getPackageManager()
- .getApplicationInfo(packageName, /* flag= */ 0);
- name = mContext.getPackageManager().getApplicationLabel(appInfo);
- }
- } catch (NameNotFoundException e) {
- Log.d(TAG, "Couldn't find app " + packageName
- + ", won't use it for icon shape preview");
- } finally {
- if (icon != null && !TextUtils.isEmpty(name)) {
- shapedAppIcons.add(new ShapeAppIcon(icon, name));
- }
- }
- }
- return shapedAppIcons;
- }
-
- private Path loadPath(Resources overlayRes, String packageName) {
- String shape = overlayRes.getString(overlayRes.getIdentifier(CONFIG_ICON_MASK, "string",
- packageName));
-
- if (!TextUtils.isEmpty(shape)) {
- return PathParser.createPathFromPathData(shape);
- }
- return null;
- }
-
- @Dimension
- private int loadCornerRadius(String packageName)
- throws NameNotFoundException, NotFoundException {
-
- Resources overlayRes =
- mContext.getPackageManager().getResourcesForApplication(
- packageName);
- return overlayRes.getDimensionPixelOffset(overlayRes.getIdentifier(
- CONFIG_CORNERRADIUS, "dimen", packageName));
- }
-}
diff --git a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java b/src/com/android/customization/model/theme/custom/ThemeComponentOption.java
deleted file mode 100644
index 78be0fc..0000000
--- a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_LAUNCHER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SETTINGS;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SYSUI;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_THEMEPICKER;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.getLauncherPackage;
-
-import android.content.Context;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.ColorStateList;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.content.res.Resources.Theme;
-import android.content.res.TypedArray;
-import android.graphics.Path;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.StateListDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.CompoundButton;
-import android.widget.ImageView;
-import android.widget.SeekBar;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.Dimension;
-import androidx.annotation.DrawableRes;
-import androidx.annotation.Nullable;
-import androidx.annotation.StringRes;
-import androidx.core.graphics.ColorUtils;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.customization.model.theme.custom.CustomTheme.Builder;
-import com.android.wallpaper.R;
-import com.android.wallpaper.util.ResourceUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * Represents an option of a component of a custom Theme (for example, a possible color, or font,
- * shape, etc).
- * Extending classes correspond to each component's options and provide the structure to bind
- * preview and thumbnails.
- * // TODO (santie): refactor the logic to bind preview cards to reuse between ThemeFragment and
- * // here
- */
-public abstract class ThemeComponentOption implements CustomizationOption<ThemeComponentOption> {
-
- protected final Map<String, String> mOverlayPackageNames = new HashMap<>();
-
- protected void addOverlayPackage(String category, String packageName) {
- mOverlayPackageNames.put(category, packageName);
- }
-
- public Map<String, String> getOverlayPackages() {
- return mOverlayPackageNames;
- }
-
- @Override
- public String getTitle() {
- return null;
- }
-
- public abstract void bindPreview(ViewGroup container);
-
- public Builder buildStep(Builder builder) {
- getOverlayPackages().forEach(builder::addOverlayPackage);
- return builder;
- }
-
- public static class FontOption extends ThemeComponentOption {
-
- private final String mLabel;
- private final Typeface mHeadlineFont;
- private final Typeface mBodyFont;
-
- public FontOption(String packageName, String label, Typeface headlineFont,
- Typeface bodyFont) {
- addOverlayPackage(OVERLAY_CATEGORY_FONT, packageName);
- mLabel = label;
- mHeadlineFont = headlineFont;
- mBodyFont = bodyFont;
- }
-
- @Override
- public String getTitle() {
- return null;
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- ((TextView) view.findViewById(R.id.thumbnail_text)).setTypeface(
- mHeadlineFont);
- view.setContentDescription(mLabel);
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeComponentOption> manager) {
- CustomThemeManager customThemeManager = (CustomThemeManager) manager;
- return Objects.equals(getOverlayPackages().get(OVERLAY_CATEGORY_FONT),
- customThemeManager.getOverlayPackages().get(OVERLAY_CATEGORY_FONT));
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.theme_font_option;
- }
-
- @Override
- public void bindPreview(ViewGroup container) {
- container.setContentDescription(
- container.getContext().getString(R.string.font_preview_content_description));
-
- bindPreviewHeader(container, R.string.preview_name_font, R.drawable.ic_font, null);
-
- ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
- if (cardBody.getChildCount() == 0) {
- LayoutInflater.from(container.getContext()).inflate(
- R.layout.preview_card_font_content,
- cardBody, true);
- }
- TextView title = container.findViewById(R.id.font_card_title);
- title.setTypeface(mHeadlineFont);
- TextView bodyText = container.findViewById(R.id.font_card_body);
- bodyText.setTypeface(mBodyFont);
- container.findViewById(R.id.font_card_divider).setBackgroundColor(
- title.getCurrentTextColor());
- }
-
- @Override
- public Builder buildStep(Builder builder) {
- builder.setHeadlineFontFamily(mHeadlineFont).setBodyFontFamily(mBodyFont);
- return super.buildStep(builder);
- }
- }
-
- void bindPreviewHeader(ViewGroup container, @StringRes int headerTextResId,
- @DrawableRes int headerIcon, String drawableName) {
- TextView header = container.findViewById(R.id.theme_preview_card_header);
- header.setText(headerTextResId);
-
- Context context = container.getContext();
- Drawable icon;
- if (!TextUtils.isEmpty(drawableName)) {
- try {
- Resources resources = context.getPackageManager()
- .getResourcesForApplication(getLauncherPackage(context));
- icon = resources.getDrawable(resources.getIdentifier(
- drawableName, "drawable", getLauncherPackage(context)), null);
- } catch (NameNotFoundException | NotFoundException e) {
- icon = context.getResources().getDrawable(headerIcon, context.getTheme());
- }
- } else {
- icon = context.getResources().getDrawable(headerIcon, context.getTheme());
- }
- int size = context.getResources().getDimensionPixelSize(R.dimen.card_header_icon_size);
- icon.setBounds(0, 0, size, size);
-
- header.setCompoundDrawables(null, icon, null, null);
- header.setCompoundDrawableTintList(ColorStateList.valueOf(
- header.getCurrentTextColor()));
- }
-
- public static class IconOption extends ThemeComponentOption {
-
- public static final int THUMBNAIL_ICON_POSITION = 0;
- private static int[] mIconIds = {
- R.id.preview_icon_0, R.id.preview_icon_1, R.id.preview_icon_2, R.id.preview_icon_3,
- R.id.preview_icon_4, R.id.preview_icon_5
- };
-
- private List<Drawable> mIcons = new ArrayList<>();
- private String mLabel;
-
- @Override
- public void bindThumbnailTile(View view) {
- Resources res = view.getContext().getResources();
- Drawable icon = mIcons.get(THUMBNAIL_ICON_POSITION)
- .getConstantState().newDrawable().mutate();
- icon.setTint(ResourceUtils.getColorAttr(
- view.getContext(), android.R.attr.textColorSecondary));
- ((ImageView) view.findViewById(R.id.option_icon)).setImageDrawable(
- icon);
- view.setContentDescription(mLabel);
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeComponentOption> manager) {
- CustomThemeManager customThemeManager = (CustomThemeManager) manager;
- Map<String, String> themePackages = customThemeManager.getOverlayPackages();
- if (getOverlayPackages().isEmpty()) {
- return themePackages.get(OVERLAY_CATEGORY_ICON_SYSUI) == null &&
- themePackages.get(OVERLAY_CATEGORY_ICON_SETTINGS) == null &&
- themePackages.get(OVERLAY_CATEGORY_ICON_ANDROID) == null &&
- themePackages.get(OVERLAY_CATEGORY_ICON_LAUNCHER) == null &&
- themePackages.get(OVERLAY_CATEGORY_ICON_THEMEPICKER) == null;
- }
- for (Map.Entry<String, String> overlayEntry : getOverlayPackages().entrySet()) {
- if(!Objects.equals(overlayEntry.getValue(),
- themePackages.get(overlayEntry.getKey()))) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.theme_icon_option;
- }
-
- @Override
- public void bindPreview(ViewGroup container) {
- container.setContentDescription(
- container.getContext().getString(R.string.icon_preview_content_description));
-
- bindPreviewHeader(container, R.string.preview_name_icon, R.drawable.ic_widget,
- "ic_widget");
-
- ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
- if (cardBody.getChildCount() == 0) {
- LayoutInflater.from(container.getContext()).inflate(
- R.layout.preview_card_icon_content, cardBody, true);
- }
- for (int i = 0; i < mIconIds.length && i < mIcons.size(); i++) {
- ((ImageView) container.findViewById(mIconIds[i])).setImageDrawable(
- mIcons.get(i));
- }
- }
-
- public void addIcon(Drawable previewIcon) {
- mIcons.add(previewIcon);
- }
-
- /**
- * @return whether this icon option has overlays and previews for all the required packages
- */
- public boolean isValid(Context context) {
- return getOverlayPackages().keySet().size() ==
- ResourceConstants.getPackagesToOverlay(context).length;
- }
-
- public void setLabel(String label) {
- mLabel = label;
- }
-
- @Override
- public Builder buildStep(Builder builder) {
- for (Drawable icon : mIcons) {
- builder.addIcon(icon);
- }
- return super.buildStep(builder);
- }
- }
-
- public static class ColorOption extends ThemeComponentOption {
-
- /**
- * Ids of views used to represent quick setting tiles in the color preview screen
- */
- 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
- };
-
- /**
- * 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}
- };
-
- /**
- * Ids of views used to represent control buttons in the color preview screen
- */
- private static int[] COLOR_BUTTON_IDS = {
- R.id.preview_check_selected, R.id.preview_radio_selected,
- R.id.preview_toggle_selected
- };
-
- @ColorInt private int mColorAccentLight;
- @ColorInt private int mColorAccentDark;
- /**
- * Icons shown as example of QuickSettings tiles in the color preview screen.
- */
- private List<Drawable> mIcons = new ArrayList<>();
-
- /**
- * Drawable with the currently selected shape to be used as background of the sample
- * QuickSetting icons in the color preview screen.
- */
- private Drawable mShapeDrawable;
-
- private String mLabel;
-
- ColorOption(String packageName, String label, @ColorInt int lightColor,
- @ColorInt int darkColor) {
- addOverlayPackage(OVERLAY_CATEGORY_COLOR, packageName);
- mLabel = label;
- mColorAccentLight = lightColor;
- mColorAccentDark = darkColor;
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- @ColorInt int color = resolveColor(view.getResources());
- LayerDrawable selectedOption = (LayerDrawable) view.getResources().getDrawable(
- R.drawable.color_chip_hollow, view.getContext().getTheme());
- Drawable unselectedOption = view.getResources().getDrawable(
- R.drawable.color_chip_filled, view.getContext().getTheme());
-
- selectedOption.findDrawableByLayerId(R.id.center_fill).setTintList(
- ColorStateList.valueOf(color));
- unselectedOption.setTintList(ColorStateList.valueOf(color));
-
- StateListDrawable stateListDrawable = new StateListDrawable();
- stateListDrawable.addState(new int[] {android.R.attr.state_activated}, selectedOption);
- stateListDrawable.addState(
- new int[] {-android.R.attr.state_activated}, unselectedOption);
-
- ((ImageView) view.findViewById(R.id.option_tile)).setImageDrawable(stateListDrawable);
- view.setContentDescription(mLabel);
- }
-
- @ColorInt
- private int resolveColor(Resources res) {
- Configuration configuration = res.getConfiguration();
- return (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES ? mColorAccentDark : mColorAccentLight;
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeComponentOption> manager) {
- CustomThemeManager customThemeManager = (CustomThemeManager) manager;
- return Objects.equals(getOverlayPackages().get(OVERLAY_CATEGORY_COLOR),
- customThemeManager.getOverlayPackages().get(OVERLAY_CATEGORY_COLOR));
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.theme_color_option;
- }
-
- @Override
- public void bindPreview(ViewGroup container) {
- container.setContentDescription(
- container.getContext().getString(R.string.color_preview_content_description));
-
- bindPreviewHeader(container, R.string.preview_name_color, R.drawable.ic_colorize_24px,
- null);
-
- ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
- if (cardBody.getChildCount() == 0) {
- LayoutInflater.from(container.getContext()).inflate(
- R.layout.preview_card_color_content, cardBody, true);
- }
- Resources res = container.getResources();
- @ColorInt int accentColor = resolveColor(res);
- @ColorInt int controlGreyColor = ResourceUtils.getColorAttr(
- container.getContext(),
- android.R.attr.textColorTertiary);
- ColorStateList tintList = new ColorStateList(
- new int[][]{
- new int[]{android.R.attr.state_selected},
- new int[]{android.R.attr.state_checked},
- new int[]{-android.R.attr.state_enabled}
- },
- new int[] {
- accentColor,
- accentColor,
- controlGreyColor
- }
- );
-
- for (int i = 0; i < COLOR_BUTTON_IDS.length; i++) {
- CompoundButton button = container.findViewById(COLOR_BUTTON_IDS[i]);
- button.setButtonTintList(tintList);
- }
-
- Switch enabledSwitch = container.findViewById(R.id.preview_toggle_selected);
- enabledSwitch.setThumbTintList(tintList);
- enabledSwitch.setTrackTintList(tintList);
-
- ColorStateList seekbarTintList = ColorStateList.valueOf(accentColor);
- SeekBar seekbar = container.findViewById(R.id.preview_seekbar);
- seekbar.setThumbTintList(seekbarTintList);
- seekbar.setProgressTintList(seekbarTintList);
- seekbar.setProgressBackgroundTintList(seekbarTintList);
- // Disable seekbar
- seekbar.setOnTouchListener((view, motionEvent) -> true);
-
- int iconFgColor = ResourceUtils.getColorAttr(container.getContext(),
- android.R.attr.colorBackground);
- if (!mIcons.isEmpty() && mShapeDrawable != null) {
- for (int i = 0; i < COLOR_TILE_IDS.length; i++) {
- Drawable icon = mIcons.get(COLOR_TILES_ICON_IDS[i][1]).getConstantState()
- .newDrawable();
- icon.setTint(iconFgColor);
- //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][0]);
- fg.setImageDrawable(icon);
- }
- }
- }
-
- public void setPreviewIcons(List<Drawable> icons) {
- mIcons.addAll(icons);
- }
-
- public void setShapeDrawable(@Nullable Drawable shapeDrawable) {
- mShapeDrawable = shapeDrawable;
- }
-
- @Override
- public Builder buildStep(Builder builder) {
- builder.setColorAccentDark(mColorAccentDark).setColorAccentLight(mColorAccentLight);
- return super.buildStep(builder);
- }
- }
-
- public static class ShapeOption extends ThemeComponentOption {
-
- private final LayerDrawable mShape;
- private final List<ShapeAppIcon> mAppIcons;
- private final String mLabel;
- private final Path mPath;
- private final int mCornerRadius;
- private int[] mShapeIconIds = {
- R.id.shape_preview_icon_0, R.id.shape_preview_icon_1, R.id.shape_preview_icon_2,
- R.id.shape_preview_icon_3, R.id.shape_preview_icon_4, R.id.shape_preview_icon_5
- };
-
- ShapeOption(String packageName, String label, Path path,
- @Dimension int cornerRadius, Drawable shapeDrawable,
- List<ShapeAppIcon> appIcons) {
- addOverlayPackage(OVERLAY_CATEGORY_SHAPE, packageName);
- mLabel = label;
- mAppIcons = appIcons;
- mPath = path;
- mCornerRadius = cornerRadius;
- Drawable background = shapeDrawable.getConstantState().newDrawable();
- Drawable foreground = shapeDrawable.getConstantState().newDrawable();
- mShape = new LayerDrawable(new Drawable[]{background, foreground});
- mShape.setLayerGravity(0, Gravity.CENTER);
- mShape.setLayerGravity(1, Gravity.CENTER);
- }
-
- @Override
- public void bindThumbnailTile(View view) {
- ImageView thumb = view.findViewById(R.id.shape_thumbnail);
- Resources res = view.getResources();
- Theme theme = view.getContext().getTheme();
- int borderWidth = 2 * res.getDimensionPixelSize(R.dimen.option_border_width);
-
- Drawable background = mShape.getDrawable(0);
- background.setTintList(res.getColorStateList(R.color.option_border_color, theme));
-
- ShapeDrawable foreground = (ShapeDrawable) mShape.getDrawable(1);
-
- foreground.setIntrinsicHeight(background.getIntrinsicHeight() - borderWidth);
- foreground.setIntrinsicWidth(background.getIntrinsicWidth() - borderWidth);
- TypedArray ta = view.getContext().obtainStyledAttributes(
- new int[]{android.R.attr.colorPrimary});
- int primaryColor = ta.getColor(0, 0);
- ta.recycle();
- int foregroundColor =
- ResourceUtils.getColorAttr(view.getContext(), android.R.attr.textColorPrimary);
-
- foreground.setTint(ColorUtils.blendARGB(primaryColor, foregroundColor, .05f));
-
- thumb.setImageDrawable(mShape);
- view.setContentDescription(mLabel);
- }
-
- @Override
- public boolean isActive(CustomizationManager<ThemeComponentOption> manager) {
- CustomThemeManager customThemeManager = (CustomThemeManager) manager;
- return Objects.equals(getOverlayPackages().get(OVERLAY_CATEGORY_SHAPE),
- customThemeManager.getOverlayPackages().get(OVERLAY_CATEGORY_SHAPE));
- }
-
- @Override
- public int getLayoutResId() {
- return R.layout.theme_shape_option;
- }
-
- @Override
- public void bindPreview(ViewGroup container) {
- container.setContentDescription(
- container.getContext().getString(R.string.shape_preview_content_description));
-
- bindPreviewHeader(container, R.string.preview_name_shape, R.drawable.ic_shapes_24px,
- null);
-
- ViewGroup cardBody = container.findViewById(R.id.theme_preview_card_body_container);
- if (cardBody.getChildCount() == 0) {
- LayoutInflater.from(container.getContext()).inflate(
- R.layout.preview_card_shape_content, cardBody, true);
- }
- for (int i = 0; i < mShapeIconIds.length && i < mAppIcons.size(); i++) {
- ImageView iconView = cardBody.findViewById(mShapeIconIds[i]);
- iconView.setBackground(mAppIcons.get(i).getDrawableCopy());
- }
- }
-
- @Override
- public Builder buildStep(Builder builder) {
- builder.setShapePath(mPath)
- .setBottomSheetCornerRadius(mCornerRadius)
- .setShapePreviewIcons(mAppIcons);
- return super.buildStep(builder);
- }
- }
-}
diff --git a/src/com/android/customization/model/theme/custom/ThemeComponentOptionProvider.java b/src/com/android/customization/model/theme/custom/ThemeComponentOptionProvider.java
deleted file mode 100644
index 992c47c..0000000
--- a/src/com/android/customization/model/theme/custom/ThemeComponentOptionProvider.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme.custom;
-
-import android.content.Context;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.os.UserHandle;
-
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.ResourceConstants;
-import com.android.customization.model.theme.OverlayManagerCompat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Base class used to retrieve Custom Theme Component options (eg, different fonts)
- * from the system.
- */
-public abstract class ThemeComponentOptionProvider<T extends ThemeComponentOption> {
-
- protected final Context mContext;
- protected final List<String> mOverlayPackages;
- protected List<T> mOptions;
-
- public ThemeComponentOptionProvider(Context context, OverlayManagerCompat manager,
- String... categories) {
- mContext = context;
- mOverlayPackages = new ArrayList<>();
- for (String category : categories) {
- mOverlayPackages.addAll(manager.getOverlayPackagesForCategory(category,
- UserHandle.myUserId(), ResourceConstants.getPackagesToOverlay(mContext)));
- }
- }
-
- /**
- * Returns whether there are options for this component available in the current setup.
- */
- public boolean isAvailable() {
- return !mOverlayPackages.isEmpty();
- }
-
- /**
- * Retrieve the available options for this component.
- * @param callback called when the themes have been retrieved (or immediately if cached)
- * @param reload whether to reload themes if they're cached.
- */
- public void fetch(OptionsFetchedListener<T> callback, boolean reload) {
- if (mOptions == null || reload) {
- mOptions = new ArrayList<>();
- loadOptions();
- }
-
- if(callback != null) {
- callback.onOptionsLoaded(mOptions);
- }
- }
-
- protected abstract void loadOptions();
-
- protected Resources getOverlayResources(String overlayPackage) throws NameNotFoundException {
- return mContext.getPackageManager().getResourcesForApplication(overlayPackage);
- }
-}
diff --git a/src/com/android/customization/module/CustomizationInjector.kt b/src/com/android/customization/module/CustomizationInjector.kt
index 8fd3768..4bb2b72 100644
--- a/src/com/android/customization/module/CustomizationInjector.kt
+++ b/src/com/android/customization/module/CustomizationInjector.kt
@@ -18,33 +18,21 @@
import android.content.Context
import android.content.res.Resources
import androidx.activity.ComponentActivity
-import androidx.fragment.app.FragmentActivity
-import com.android.customization.model.theme.OverlayManagerCompat
-import com.android.customization.model.theme.ThemeBundleProvider
-import com.android.customization.model.theme.ThemeManager
import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
-import com.android.customization.picker.clock.utils.ClockDescriptionUtils
import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.module.Injector
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
interface CustomizationInjector : Injector {
fun getCustomizationPreferences(context: Context): CustomizationPreferences
- fun getThemeManager(
- provider: ThemeBundleProvider,
- activity: FragmentActivity,
- overlayManagerCompat: OverlayManagerCompat,
- logger: ThemesUserEventLogger,
- ): ThemeManager
-
fun getKeyguardQuickAffordancePickerInteractor(
context: Context,
): KeyguardQuickAffordancePickerInteractor
@@ -59,25 +47,25 @@
fun getColorPickerInteractor(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
): ColorPickerInteractor
fun getColorPickerViewModelFactory(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
): ColorPickerViewModel.Factory
fun getClockCarouselViewModelFactory(
interactor: ClockPickerInteractor,
+ clockViewFactory: ClockViewFactory,
+ resources: Resources,
): ClockCarouselViewModel.Factory
fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory
fun getClockSettingsViewModelFactory(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
clockViewFactory: ClockViewFactory,
): ClockSettingsViewModel.Factory
-
- fun getClockDescriptionUtils(resources: Resources): ClockDescriptionUtils
}
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index bbe6bef..a0aef2c 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -9,7 +9,6 @@
import androidx.lifecycle.ViewModelProvider;
import com.android.customization.model.grid.GridOptionsManager;
-import com.android.customization.model.grid.GridSectionController;
import com.android.customization.model.mode.DarkModeSnapshotRestorer;
import com.android.customization.model.themedicon.ThemedIconSectionController;
import com.android.customization.model.themedicon.ThemedIconSwitchProvider;
@@ -18,8 +17,9 @@
import com.android.customization.picker.clock.ui.view.ClockViewFactory;
import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel;
import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor;
-import com.android.customization.picker.color.ui.section.ColorSectionController2;
+import com.android.customization.picker.color.ui.section.ColorSectionController;
import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel;
+import com.android.customization.picker.grid.ui.section.GridSectionController;
import com.android.customization.picker.notifications.ui.section.NotificationSectionController;
import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel;
import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController;
@@ -32,10 +32,10 @@
import com.android.wallpaper.model.CustomizationSectionController;
import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController;
import com.android.wallpaper.model.PermissionRequester;
-import com.android.wallpaper.model.WallpaperColorsViewModel;
import com.android.wallpaper.model.WallpaperPreviewNavigator;
import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
import com.android.wallpaper.module.CustomizationSections;
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository;
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor;
import com.android.wallpaper.picker.customization.ui.section.ConnectedSectionController;
import com.android.wallpaper.picker.customization.ui.section.WallpaperQuickSwitchSectionController;
@@ -93,7 +93,7 @@
Screen screen,
FragmentActivity activity,
LifecycleOwner lifecycleOwner,
- WallpaperColorsViewModel wallpaperColorsViewModel,
+ WallpaperColorsRepository wallpaperColorsRepository,
PermissionRequester permissionRequester,
WallpaperPreviewNavigator wallpaperPreviewNavigator,
CustomizationSectionNavigationController sectionNavigationController,
@@ -114,7 +114,7 @@
lifecycleOwner,
screen,
wallpaperInfoFactory,
- wallpaperColorsViewModel,
+ wallpaperColorsRepository,
displayUtils,
mClockCarouselViewModelFactory,
mClockViewFactory,
@@ -131,7 +131,7 @@
lifecycleOwner,
screen,
wallpaperInfoFactory,
- wallpaperColorsViewModel,
+ wallpaperColorsRepository,
displayUtils,
wallpaperPreviewNavigator,
wallpaperInteractor,
@@ -144,7 +144,7 @@
sectionControllers.add(
new ConnectedSectionController(
// Theme color section.
- new ColorSectionController2(
+ new ColorSectionController(
sectionNavigationController,
new ViewModelProvider(
activity,
diff --git a/src/com/android/customization/module/StatsLogUserEventLogger.java b/src/com/android/customization/module/StatsLogUserEventLogger.java
deleted file mode 100644
index 647cdc9..0000000
--- a/src/com/android/customization/module/StatsLogUserEventLogger.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.module;
-
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__ACTION__APP_LAUNCHED;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_CROP_AND_SET_ACTION;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_DEEP_LINK;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCHER;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCH_ICON;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS_SEARCH;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SUW;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_TIPS;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SETTINGS_SEARCH;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_DEEP_LINK;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_LAUNCHER;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_SETTINGS;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_SUW;
-import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_TIPS;
-import static com.android.wallpaper.util.LaunchSourceUtils.WALLPAPER_LAUNCH_SOURCE;
-
-import android.app.WallpaperManager;
-import android.content.Intent;
-import android.stats.style.StyleEnums;
-import android.text.TextUtils;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.color.ColorOption;
-import com.android.customization.model.grid.GridOption;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.wallpaper.module.NoOpUserEventLogger;
-import com.android.wallpaper.module.WallpaperPreferences;
-import com.android.wallpaper.module.WallpaperStatusChecker;
-
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * StatsLog-backed implementation of {@link ThemesUserEventLogger}.
- */
-public class StatsLogUserEventLogger extends NoOpUserEventLogger implements ThemesUserEventLogger {
-
- private final WallpaperPreferences mPreferences;
- private final WallpaperStatusChecker mWallpaperStatusChecker;
-
- public StatsLogUserEventLogger(
- WallpaperPreferences preferences,
- WallpaperStatusChecker wallpaperStatusChecker) {
- mPreferences = preferences;
- mWallpaperStatusChecker = wallpaperStatusChecker;
- }
-
- @Override
- public void logAppLaunched(Intent launchSource) {
- new SysUiStatsLogger(STYLE_UICHANGED__ACTION__APP_LAUNCHED)
- .setLaunchedPreference(getAppLaunchSource(launchSource))
- .log();
- }
-
- @Override
- public void logResumed(boolean provisioned, boolean wallpaper) {
- new SysUiStatsLogger(StyleEnums.ONRESUME)
- .log();
- }
-
- @Override
- public void logStopped() {
- new SysUiStatsLogger(StyleEnums.ONSTOP)
- .log();
- }
-
- @Override
- public void logActionClicked(String collectionId, int actionLabelResId) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_EXPLORE)
- .setWallpaperCategoryHash(getIdHashCode(collectionId))
- .log();
- }
-
- @Override
- public void logIndividualWallpaperSelected(String collectionId) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_SELECT)
- .setWallpaperCategoryHash(getIdHashCode(collectionId))
- .log();
- }
-
- @Override
- public void logCategorySelected(String collectionId) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_OPEN_CATEGORY)
- .setWallpaperCategoryHash(getIdHashCode(collectionId))
- .log();
- }
-
- @Override
- public void logSnapshot() {
- final boolean isLockWallpaperSet = mWallpaperStatusChecker.isLockWallpaperSet();
- final String homeCollectionId = mPreferences.getHomeWallpaperCollectionId();
- final String homeRemoteId = mPreferences.getHomeWallpaperRemoteId();
- final String effects = mPreferences.getHomeWallpaperEffects();
- String homeWallpaperId = TextUtils.isEmpty(homeRemoteId)
- ? mPreferences.getHomeWallpaperServiceName() : homeRemoteId;
- String lockCollectionId = isLockWallpaperSet ? mPreferences.getLockWallpaperCollectionId()
- : homeCollectionId;
- String lockWallpaperId = isLockWallpaperSet ? mPreferences.getLockWallpaperRemoteId()
- : homeWallpaperId;
-
- new SysUiStatsLogger(StyleEnums.SNAPSHOT)
- .setWallpaperCategoryHash(getIdHashCode(homeCollectionId))
- .setWallpaperIdHash(getIdHashCode(homeWallpaperId))
- .setLockWallpaperCategoryHash(getIdHashCode(lockCollectionId))
- .setLockWallpaperIdHash(getIdHashCode(lockWallpaperId))
- .setFirstLaunchDateSinceSetup(mPreferences.getFirstLaunchDateSinceSetup())
- .setFirstWallpaperApplyDateSinceSetup(
- mPreferences.getFirstWallpaperApplyDateSinceSetup())
- .setAppLaunchCount(mPreferences.getAppLaunchCount())
- .setEffectIdHash(getIdHashCode(effects))
- .log();
- }
-
- @Override
- public void logWallpaperSet(String collectionId, @Nullable String wallpaperId,
- @Nullable String effects) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_APPLIED)
- .setWallpaperCategoryHash(getIdHashCode(collectionId))
- .setWallpaperIdHash(getIdHashCode(wallpaperId))
- .setEffectIdHash(getIdHashCode(effects))
- .log();
- }
-
- @Override
- public void logEffectApply(String effect, @EffectStatus int status, long timeElapsedMillis,
- int resultCode) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_APPLIED)
- .setEffectPreference(status)
- .setEffectIdHash(getIdHashCode(effect))
- .setTimeElapsed(timeElapsedMillis)
- .setEffectResultCode(resultCode)
- .log();
- }
-
- @Override
- public void logEffectProbe(String effect, @EffectStatus int status) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_PROBE)
- .setEffectPreference(status)
- .setEffectIdHash(getIdHashCode(effect))
- .log();
- }
-
- @Override
- public void logEffectForegroundDownload(String effect, @EffectStatus int status,
- long timeElapsedMillis) {
- new SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_FG_DOWNLOAD)
- .setEffectPreference(status)
- .setEffectIdHash(getIdHashCode(effect))
- .setTimeElapsed(timeElapsedMillis)
- .log();
- }
-
- @Nullable
- private String getThemePackage(ThemeBundle theme, String category) {
- Map<String, String> packages = theme.getPackagesByCategory();
- return packages.get(category);
- }
-
- @Override
- public void logThemeSelected(ThemeBundle theme, boolean isCustomTheme) {
- new SysUiStatsLogger(StyleEnums.PICKER_SELECT)
- .setColorPackageHash(
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)))
- .setFontPackageHash(Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_FONT)))
- .setShapePackageHash(
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)))
- .log();
- }
-
- @Override
- public void logThemeApplied(ThemeBundle theme, boolean isCustomTheme) {
- new SysUiStatsLogger(StyleEnums.PICKER_APPLIED)
- .setColorPackageHash(
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)))
- .setFontPackageHash(Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_FONT)))
- .setShapePackageHash(
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)))
- .log();
- }
-
- @Override
- public void logColorApplied(int action, ColorOption colorOption) {
- new SysUiStatsLogger(action)
- .setColorPreference(colorOption.getIndex())
- .setColorVariant(colorOption.getStyle().ordinal() + 1)
- .log();
- }
-
- @Override
- public void logGridSelected(GridOption grid) {
- new SysUiStatsLogger(StyleEnums.PICKER_SELECT)
- .setLauncherGrid(grid.cols)
- .log();
- }
-
- @Override
- public void logGridApplied(GridOption grid) {
- new SysUiStatsLogger(StyleEnums.PICKER_APPLIED)
- .setLauncherGrid(grid.cols)
- .log();
- }
-
- private int getAppLaunchSource(Intent launchSource) {
- if (launchSource.hasExtra(WALLPAPER_LAUNCH_SOURCE)) {
- switch (launchSource.getStringExtra(WALLPAPER_LAUNCH_SOURCE)) {
- case LAUNCH_SOURCE_LAUNCHER:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCHER;
- case LAUNCH_SOURCE_SETTINGS:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS;
- case LAUNCH_SOURCE_SUW:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SUW;
- case LAUNCH_SOURCE_TIPS:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_TIPS;
- case LAUNCH_SOURCE_DEEP_LINK:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_DEEP_LINK;
- default:
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED;
- }
- } else if (launchSource.hasExtra(LAUNCH_SETTINGS_SEARCH)) {
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS_SEARCH;
- } else if (launchSource.getAction() != null && launchSource.getAction().equals(
- WallpaperManager.ACTION_CROP_AND_SET_WALLPAPER)) {
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_CROP_AND_SET_ACTION;
- } else if (launchSource.getCategories() != null
- && launchSource.getCategories().contains(Intent.CATEGORY_LAUNCHER)) {
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCH_ICON;
- } else {
- return STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED;
- }
- }
-
- private int getIdHashCode(String id) {
- return id != null ? id.hashCode() : 0;
- }
-}
diff --git a/src/com/android/customization/module/SysUiStatsLogger.kt b/src/com/android/customization/module/SysUiStatsLogger.kt
deleted file mode 100644
index 8e97b0b..0000000
--- a/src/com/android/customization/module/SysUiStatsLogger.kt
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-package com.android.customization.module
-
-import android.stats.style.StyleEnums
-import com.android.systemui.shared.system.SysUiStatsLog
-import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UI_CHANGED
-
-/** The builder for [SysUiStatsLog]. */
-class SysUiStatsLogger(val action: Int) {
-
- private var colorPackageHash = 0
- private var fontPackageHash = 0
- private var shapePackageHash = 0
- private var clockPackageHash = 0
- private var launcherGrid = 0
- private var wallpaperCategoryHash = 0
- private var wallpaperIdHash = 0
- private var colorPreference = 0
- private var locationPreference = StyleEnums.EFFECT_PREFERENCE_UNSPECIFIED
- private var datePreference = StyleEnums.DATE_PREFERENCE_UNSPECIFIED
- private var launchedPreference = StyleEnums.LAUNCHED_PREFERENCE_UNSPECIFIED
- private var effectPreference = StyleEnums.EFFECT_PREFERENCE_UNSPECIFIED
- private var effectIdHash = 0
- private var lockWallpaperCategoryHash = 0
- private var lockWallpaperIdHash = 0
- private var firstLaunchDateSinceSetup = 0
- private var firstWallpaperApplyDateSinceSetup = 0
- private var appLaunchCount = 0
- private var colorVariant = 0
- private var timeElapsedMillis = 0L
- private var effectResultCode = -1
-
- fun setColorPackageHash(colorPackageHash: Int) = apply {
- this.colorPackageHash = colorPackageHash
- }
-
- fun setFontPackageHash(fontPackageHash: Int) = apply {
- this.fontPackageHash = fontPackageHash
- }
-
- fun setShapePackageHash(shapePackageHash: Int) = apply {
- this.shapePackageHash = shapePackageHash
- }
-
- fun setClockPackageHash(clockPackageHash: Int) = apply {
- this.clockPackageHash = clockPackageHash
- }
-
- fun setLauncherGrid(launcherGrid: Int) = apply { this.launcherGrid = launcherGrid }
-
- fun setWallpaperCategoryHash(wallpaperCategoryHash: Int) = apply {
- this.wallpaperCategoryHash = wallpaperCategoryHash
- }
-
- fun setWallpaperIdHash(wallpaperIdHash: Int) = apply {
- this.wallpaperIdHash = wallpaperIdHash
- }
-
- fun setColorPreference(colorPreference: Int) = apply {
- this.colorPreference = colorPreference
- }
-
- fun setLocationPreference(locationPreference: Int) = apply {
- this.locationPreference = locationPreference
- }
-
- fun setDatePreference(datePreference: Int) = apply { this.datePreference = datePreference }
-
- fun setLaunchedPreference(launchedPreference: Int) = apply {
- this.launchedPreference = launchedPreference
- }
-
- fun setEffectPreference(effectPreference: Int) = apply {
- this.effectPreference = effectPreference
- }
-
- fun setEffectIdHash(effectIdHash: Int) = apply { this.effectIdHash = effectIdHash }
-
- fun setLockWallpaperCategoryHash(lockWallpaperCategoryHash: Int) = apply {
- this.lockWallpaperCategoryHash = lockWallpaperCategoryHash
- }
-
- fun setLockWallpaperIdHash(lockWallpaperIdHash: Int) = apply {
- this.lockWallpaperIdHash = lockWallpaperIdHash
- }
-
- fun setFirstLaunchDateSinceSetup(firstLaunchDateSinceSetup: Int) = apply {
- this.firstLaunchDateSinceSetup = firstLaunchDateSinceSetup
- }
-
- fun setFirstWallpaperApplyDateSinceSetup(firstWallpaperApplyDateSinceSetup: Int) = apply {
- this.firstWallpaperApplyDateSinceSetup = firstWallpaperApplyDateSinceSetup
- }
-
- fun setAppLaunchCount(appLaunchCount: Int) = apply { this.appLaunchCount = appLaunchCount }
-
- fun setColorVariant(colorVariant: Int) = apply { this.colorVariant = colorVariant }
-
- fun setTimeElapsed(timeElapsedMillis: Long) = apply {
- this.timeElapsedMillis = timeElapsedMillis
- }
-
- fun setEffectResultCode(effectResultCode: Int) = apply {
- this.effectResultCode = effectResultCode
- }
-
- fun log() {
- SysUiStatsLog.write(
- STYLE_UI_CHANGED,
- action,
- colorPackageHash,
- fontPackageHash,
- shapePackageHash,
- clockPackageHash,
- launcherGrid,
- wallpaperCategoryHash,
- wallpaperIdHash,
- colorPreference,
- locationPreference,
- datePreference,
- launchedPreference,
- effectPreference,
- effectIdHash,
- lockWallpaperCategoryHash,
- lockWallpaperIdHash,
- firstLaunchDateSinceSetup,
- firstWallpaperApplyDateSinceSetup,
- appLaunchCount,
- colorVariant,
- timeElapsedMillis,
- effectResultCode,
- )
- }
-}
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index 497456f..10b71a5 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -23,7 +23,6 @@
import android.net.Uri
import android.text.TextUtils
import androidx.activity.ComponentActivity
-import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModelProvider
@@ -31,32 +30,31 @@
import com.android.customization.model.color.ColorOptionsProvider
import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_PRESET
import com.android.customization.model.grid.GridOptionsManager
-import com.android.customization.model.grid.data.repository.GridRepositoryImpl
-import com.android.customization.model.grid.domain.interactor.GridInteractor
-import com.android.customization.model.grid.domain.interactor.GridSnapshotRestorer
-import com.android.customization.model.grid.ui.viewmodel.GridScreenViewModel
import com.android.customization.model.mode.DarkModeSnapshotRestorer
import com.android.customization.model.theme.OverlayManagerCompat
-import com.android.customization.model.theme.ThemeBundleProvider
-import com.android.customization.model.theme.ThemeManager
import com.android.customization.model.themedicon.ThemedIconSwitchProvider
import com.android.customization.model.themedicon.data.repository.ThemeIconRepository
import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor
import com.android.customization.model.themedicon.domain.interactor.ThemedIconSnapshotRestorer
+import com.android.customization.module.logging.ThemesUserEventLogger
+import com.android.customization.module.logging.ThemesUserEventLoggerImpl
import com.android.customization.picker.clock.data.repository.ClockPickerRepositoryImpl
import com.android.customization.picker.clock.data.repository.ClockRegistryProvider
import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
import com.android.customization.picker.clock.ui.view.ClockViewFactory
+import com.android.customization.picker.clock.ui.view.ClockViewFactoryImpl
import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
-import com.android.customization.picker.clock.utils.ClockDescriptionUtils
-import com.android.customization.picker.clock.utils.ThemePickerClockDescriptionUtils
import com.android.customization.picker.color.data.repository.ColorPickerRepositoryImpl
import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
import com.android.customization.picker.color.domain.interactor.ColorPickerSnapshotRestorer
import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
+import com.android.customization.picker.grid.data.repository.GridRepositoryImpl
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.domain.interactor.GridSnapshotRestorer
+import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
import com.android.customization.picker.notifications.data.repository.NotificationsRepository
import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
import com.android.customization.picker.notifications.domain.interactor.NotificationsSnapshotRestorer
@@ -71,13 +69,13 @@
import com.android.wallpaper.config.BaseFlags
import com.android.wallpaper.dispatchers.BackgroundDispatcher
import com.android.wallpaper.dispatchers.MainDispatcher
-import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.module.FragmentFactory
-import com.android.wallpaper.module.UserEventLogger
import com.android.wallpaper.module.WallpaperPicker2Injector
+import com.android.wallpaper.module.logging.UserEventLogger
import com.android.wallpaper.picker.CustomizationPickerActivity
import com.android.wallpaper.picker.customization.data.content.WallpaperClientImpl
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
@@ -123,7 +121,6 @@
private var themedIconSnapshotRestorer: ThemedIconSnapshotRestorer? = null
private var themedIconInteractor: ThemedIconInteractor? = null
private var clockSettingsViewModelFactory: ClockSettingsViewModel.Factory? = null
- private var clockDescriptionUtils: ClockDescriptionUtils? = null
private var gridInteractor: GridInteractor? = null
private var gridSnapshotRestorer: GridSnapshotRestorer? = null
private var gridScreenViewModelFactory: GridScreenViewModel.Factory? = null
@@ -134,7 +131,7 @@
?: DefaultCustomizationSections(
getColorPickerViewModelFactory(
context = activity,
- wallpaperColorsViewModel = getWallpaperColorsViewModel(),
+ wallpaperColorsRepository = getWallpaperColorsRepository(),
),
getKeyguardQuickAffordancePickerInteractor(activity),
getKeyguardQuickAffordancePickerViewModelFactory(activity),
@@ -144,12 +141,14 @@
getFlags(),
getClockCarouselViewModelFactory(
getClockPickerInteractor(activity.applicationContext),
+ getClockViewFactory(activity),
+ resources = activity.resources,
),
getClockViewFactory(activity),
getDarkModeSnapshotRestorer(activity),
getThemedIconSnapshotRestorer(activity),
getThemedIconInteractor(),
- getColorPickerInteractor(activity, getWallpaperColorsViewModel()),
+ getColorPickerInteractor(activity, getWallpaperColorsRepository()),
)
.also { customizationSections = it }
}
@@ -169,11 +168,9 @@
@Synchronized
override fun getUserEventLogger(context: Context): ThemesUserEventLogger {
return userEventLogger as? ThemesUserEventLogger
- ?: StatsLogUserEventLogger(
- getPreferences(context.applicationContext),
- getWallpaperStatusChecker(context.applicationContext),
- )
- .also { userEventLogger = it }
+ ?: ThemesUserEventLoggerImpl(getPreferences(context.applicationContext)).also {
+ userEventLogger = it
+ }
}
override fun getFragmentFactory(): FragmentFactory? {
@@ -195,7 +192,7 @@
this[KEY_THEMED_ICON_SNAPSHOT_RESTORER] = getThemedIconSnapshotRestorer(context)
this[KEY_APP_GRID_SNAPSHOT_RESTORER] = getGridSnapshotRestorer(context)
this[KEY_COLOR_PICKER_SNAPSHOT_RESTORER] =
- getColorPickerSnapshotRestorer(context, getWallpaperColorsViewModel())
+ getColorPickerSnapshotRestorer(context, getWallpaperColorsRepository())
this[KEY_CLOCKS_SNAPSHOT_RESTORER] = getClockPickerSnapshotRestorer(context)
}
}
@@ -204,15 +201,6 @@
return getPreferences(context) as CustomizationPreferences
}
- override fun getThemeManager(
- provider: ThemeBundleProvider,
- activity: FragmentActivity,
- overlayManagerCompat: OverlayManagerCompat,
- logger: ThemesUserEventLogger
- ): ThemeManager {
- return ThemeManager(provider, activity, overlayManagerCompat, logger)
- }
-
override fun getWallpaperInteractor(context: Context): WallpaperInteractor {
val appContext = context.applicationContext
return wallpaperInteractor
@@ -375,17 +363,18 @@
override fun getClockCarouselViewModelFactory(
interactor: ClockPickerInteractor,
+ clockViewFactory: ClockViewFactory,
+ resources: Resources,
): ClockCarouselViewModel.Factory {
return clockCarouselViewModelFactory
- ?: ClockCarouselViewModel.Factory(interactor, bgDispatcher).also {
- clockCarouselViewModelFactory = it
- }
+ ?: ClockCarouselViewModel.Factory(interactor, bgDispatcher, clockViewFactory, resources)
+ .also { clockCarouselViewModelFactory = it }
}
override fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory {
val activityHashCode = activity.hashCode()
return clockViewFactories[activityHashCode]
- ?: ClockViewFactory(
+ ?: ClockViewFactoryImpl(
activity.applicationContext,
ScreenSizeCalculator.getInstance()
.getScreenSize(activity.windowManager.defaultDisplay),
@@ -417,18 +406,18 @@
override fun getColorPickerInteractor(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
): ColorPickerInteractor {
val appContext = context.applicationContext
return colorPickerInteractor
?: ColorPickerInteractor(
repository =
ColorPickerRepositoryImpl(
- wallpaperColorsViewModel,
+ wallpaperColorsRepository,
getColorCustomizationManager(appContext)
),
snapshotRestorer = {
- getColorPickerSnapshotRestorer(appContext, wallpaperColorsViewModel)
+ getColorPickerSnapshotRestorer(appContext, wallpaperColorsRepository)
}
)
.also { colorPickerInteractor = it }
@@ -436,23 +425,23 @@
override fun getColorPickerViewModelFactory(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
): ColorPickerViewModel.Factory {
return colorPickerViewModelFactory
?: ColorPickerViewModel.Factory(
context.applicationContext,
- getColorPickerInteractor(context, wallpaperColorsViewModel),
+ getColorPickerInteractor(context, wallpaperColorsRepository),
)
.also { colorPickerViewModelFactory = it }
}
private fun getColorPickerSnapshotRestorer(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
): ColorPickerSnapshotRestorer {
return colorPickerSnapshotRestorer
?: ColorPickerSnapshotRestorer(
- getColorPickerInteractor(context, wallpaperColorsViewModel)
+ getColorPickerInteractor(context, wallpaperColorsRepository)
)
.also { colorPickerSnapshotRestorer = it }
}
@@ -502,7 +491,7 @@
override fun getClockSettingsViewModelFactory(
context: Context,
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
clockViewFactory: ClockViewFactory,
): ClockSettingsViewModel.Factory {
return clockSettingsViewModelFactory
@@ -511,7 +500,7 @@
getClockPickerInteractor(context),
getColorPickerInteractor(
context,
- wallpaperColorsViewModel,
+ wallpaperColorsRepository,
),
) { clockId ->
clockId?.let { clockViewFactory.getController(clockId).config.isReactiveToTone }
@@ -520,11 +509,6 @@
.also { clockSettingsViewModelFactory = it }
}
- override fun getClockDescriptionUtils(resources: Resources): ClockDescriptionUtils {
- return clockDescriptionUtils
- ?: ThemePickerClockDescriptionUtils().also { clockDescriptionUtils = it }
- }
-
fun getGridScreenViewModelFactory(
context: Context,
): ViewModelProvider.Factory {
diff --git a/src/com/android/customization/module/ThemesUserEventLogger.java b/src/com/android/customization/module/ThemesUserEventLogger.java
deleted file mode 100644
index b1a87b9..0000000
--- a/src/com/android/customization/module/ThemesUserEventLogger.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.module;
-
-import com.android.customization.model.color.ColorOption;
-import com.android.customization.model.grid.GridOption;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.wallpaper.module.UserEventLogger;
-
-/**
- * Extension of {@link UserEventLogger} that adds ThemePicker specific events.
- */
-public interface ThemesUserEventLogger extends UserEventLogger {
-
- void logThemeSelected(ThemeBundle theme, boolean isCustomTheme);
-
- void logThemeApplied(ThemeBundle theme, boolean isCustomTheme);
-
- /**
- * Logs the color usage while color is applied.
- *
- * @param action color applied action.
- * @param colorOption applied color option.
- */
- void logColorApplied(int action, ColorOption colorOption);
-
- void logGridSelected(GridOption grid);
-
- void logGridApplied(GridOption grid);
-
-}
diff --git a/src/com/android/customization/module/logging/SysUiStatsLogger.kt b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
new file mode 100644
index 0000000..14f0be6
--- /dev/null
+++ b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2022 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.
+ */
+package com.android.customization.module.logging
+
+import com.android.systemui.shared.system.SysUiStatsLog
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__CLOCK_SIZE__CLOCK_SIZE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__COLOR_SOURCE__COLOR_SOURCE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__DATE_PREFERENCE__DATE_PREFERENCE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__EFFECT_PREFERENCE__EFFECT_PREFERENCE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LOCATION_PREFERENCE__LOCATION_PREFERENCE_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__SET_WALLPAPER_ENTRY_POINT__SET_WALLPAPER_ENTRY_POINT_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__WALLPAPER_DESTINATION__WALLPAPER_DESTINATION_UNSPECIFIED
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UI_CHANGED
+import com.android.wallpaper.module.logging.UserEventLogger.SetWallpaperEntryPoint
+
+/** The builder for [SysUiStatsLog]. */
+class SysUiStatsLogger(val action: Int) {
+
+ private var colorPackageHash = 0
+ private var fontPackageHash = 0
+ private var shapePackageHash = 0
+ private var clockPackageHash = 0
+ private var launcherGrid = 0
+ private var wallpaperCategoryHash = 0
+ private var wallpaperIdHash = 0
+ private var colorPreference = 0
+ private var locationPreference =
+ STYLE_UICHANGED__LOCATION_PREFERENCE__LOCATION_PREFERENCE_UNSPECIFIED
+ private var datePreference = STYLE_UICHANGED__DATE_PREFERENCE__DATE_PREFERENCE_UNSPECIFIED
+ private var launchedPreference =
+ STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED
+ private var effectPreference = STYLE_UICHANGED__EFFECT_PREFERENCE__EFFECT_PREFERENCE_UNSPECIFIED
+ private var effectIdHash = 0
+ private var lockWallpaperCategoryHash = 0
+ private var lockWallpaperIdHash = 0
+ private var firstLaunchDateSinceSetup = 0
+ private var firstWallpaperApplyDateSinceSetup = 0
+ private var appLaunchCount = 0
+ private var colorVariant = 0
+ private var timeElapsedMillis = 0L
+ private var effectResultCode = -1
+ private var sessionId = 0
+ private var setWallpaperEntryPoint =
+ STYLE_UICHANGED__SET_WALLPAPER_ENTRY_POINT__SET_WALLPAPER_ENTRY_POINT_UNSPECIFIED
+ private var wallpaperDestination =
+ STYLE_UICHANGED__WALLPAPER_DESTINATION__WALLPAPER_DESTINATION_UNSPECIFIED
+ private var colorSource = STYLE_UICHANGED__COLOR_SOURCE__COLOR_SOURCE_UNSPECIFIED
+ private var seedColor = 0
+ private var clockSize = STYLE_UICHANGED__CLOCK_SIZE__CLOCK_SIZE_UNSPECIFIED
+ private var toggleOn = false
+ private var shortcut = ""
+ private var shortcutSlotId = ""
+
+ fun setColorPackageHash(colorPackageHash: Int) = apply {
+ this.colorPackageHash = colorPackageHash
+ }
+
+ fun setFontPackageHash(fontPackageHash: Int) = apply { this.fontPackageHash = fontPackageHash }
+
+ fun setShapePackageHash(shapePackageHash: Int) = apply {
+ this.shapePackageHash = shapePackageHash
+ }
+
+ fun setClockPackageHash(clockPackageHash: Int) = apply {
+ this.clockPackageHash = clockPackageHash
+ }
+
+ fun setLauncherGrid(launcherGrid: Int) = apply { this.launcherGrid = launcherGrid }
+
+ fun setWallpaperCategoryHash(wallpaperCategoryHash: Int) = apply {
+ this.wallpaperCategoryHash = wallpaperCategoryHash
+ }
+
+ fun setWallpaperIdHash(wallpaperIdHash: Int) = apply { this.wallpaperIdHash = wallpaperIdHash }
+
+ fun setColorPreference(colorPreference: Int) = apply { this.colorPreference = colorPreference }
+
+ fun setLocationPreference(locationPreference: Int) = apply {
+ this.locationPreference = locationPreference
+ }
+
+ fun setDatePreference(datePreference: Int) = apply { this.datePreference = datePreference }
+
+ fun setLaunchedPreference(launchedPreference: Int) = apply {
+ this.launchedPreference = launchedPreference
+ }
+
+ fun setEffectPreference(effectPreference: Int) = apply {
+ this.effectPreference = effectPreference
+ }
+
+ fun setEffectIdHash(effectIdHash: Int) = apply { this.effectIdHash = effectIdHash }
+
+ fun setLockWallpaperCategoryHash(lockWallpaperCategoryHash: Int) = apply {
+ this.lockWallpaperCategoryHash = lockWallpaperCategoryHash
+ }
+
+ fun setLockWallpaperIdHash(lockWallpaperIdHash: Int) = apply {
+ this.lockWallpaperIdHash = lockWallpaperIdHash
+ }
+
+ fun setFirstLaunchDateSinceSetup(firstLaunchDateSinceSetup: Int) = apply {
+ this.firstLaunchDateSinceSetup = firstLaunchDateSinceSetup
+ }
+
+ fun setFirstWallpaperApplyDateSinceSetup(firstWallpaperApplyDateSinceSetup: Int) = apply {
+ this.firstWallpaperApplyDateSinceSetup = firstWallpaperApplyDateSinceSetup
+ }
+
+ fun setAppLaunchCount(appLaunchCount: Int) = apply { this.appLaunchCount = appLaunchCount }
+
+ fun setColorVariant(colorVariant: Int) = apply { this.colorVariant = colorVariant }
+
+ fun setTimeElapsed(timeElapsedMillis: Long) = apply {
+ this.timeElapsedMillis = timeElapsedMillis
+ }
+
+ fun setEffectResultCode(effectResultCode: Int) = apply {
+ this.effectResultCode = effectResultCode
+ }
+
+ fun setSessionId(sessionId: Int) = apply { this.sessionId = sessionId }
+
+ fun setSetWallpaperEntryPoint(@SetWallpaperEntryPoint setWallpaperEntryPoint: Int) = apply {
+ this.setWallpaperEntryPoint = setWallpaperEntryPoint
+ }
+
+ fun setWallpaperDestination(wallpaperDestination: Int) = apply {
+ this.wallpaperDestination = wallpaperDestination
+ }
+
+ fun setColorSource(colorSource: Int) = apply { this.colorSource = colorSource }
+
+ fun setSeedColor(seedColor: Int) = apply { this.seedColor = seedColor }
+
+ fun setClockSize(clockSize: Int) = apply { this.clockSize = clockSize }
+
+ fun setToggleOn(toggleOn: Boolean) = apply { this.toggleOn = toggleOn }
+
+ fun setShortcut(shortcut: String) = apply { this.shortcut = shortcut }
+
+ fun setShortcutSlotId(shortcutSlotId: String) = apply { this.shortcutSlotId = shortcutSlotId }
+
+ fun log() {
+ SysUiStatsLog.write(
+ STYLE_UI_CHANGED,
+ action,
+ colorPackageHash,
+ fontPackageHash,
+ shapePackageHash,
+ clockPackageHash,
+ launcherGrid,
+ wallpaperCategoryHash,
+ wallpaperIdHash,
+ colorPreference,
+ locationPreference,
+ datePreference,
+ launchedPreference,
+ effectPreference,
+ effectIdHash,
+ lockWallpaperCategoryHash,
+ lockWallpaperIdHash,
+ firstLaunchDateSinceSetup,
+ firstWallpaperApplyDateSinceSetup,
+ appLaunchCount,
+ colorVariant,
+ timeElapsedMillis,
+ effectResultCode,
+ sessionId,
+ setWallpaperEntryPoint,
+ wallpaperDestination,
+ colorSource,
+ seedColor,
+ clockSize,
+ toggleOn,
+ shortcut,
+ shortcutSlotId,
+ )
+ }
+}
diff --git a/src/com/android/customization/module/logging/ThemesUserEventLogger.kt b/src/com/android/customization/module/logging/ThemesUserEventLogger.kt
new file mode 100644
index 0000000..1210343
--- /dev/null
+++ b/src/com/android/customization/module/logging/ThemesUserEventLogger.kt
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package com.android.customization.module.logging
+
+import android.stats.style.StyleEnums
+import androidx.annotation.IntDef
+import com.android.customization.model.color.ColorOption
+import com.android.customization.model.grid.GridOption
+import com.android.wallpaper.module.logging.UserEventLogger
+
+/** Extension of [UserEventLogger] that adds ThemePicker specific events. */
+interface ThemesUserEventLogger : UserEventLogger {
+
+ fun logThemeColorApplied(colorOption: ColorOption)
+
+ fun logGridApplied(grid: GridOption)
+
+ fun logClockApplied(clockId: String)
+
+ fun logClockColorApplied(seedColor: Int)
+
+ fun logClockSizeApplied(@ClockSize clockSize: Int)
+
+ fun logThemedIconApplied(useThemeIcon: Boolean)
+
+ fun logLockScreenNotificationApplied(showLockScreenNotifications: Boolean)
+
+ fun logShortcutApplied(shortcut: String, shortcutSlotId: String)
+
+ fun logDarkThemeApplied(useDarkTheme: Boolean)
+
+ @IntDef(
+ StyleEnums.CLOCK_SIZE_UNSPECIFIED,
+ StyleEnums.CLOCK_SIZE_DYNAMIC,
+ StyleEnums.CLOCK_SIZE_SMALL,
+ )
+ @Retention(AnnotationRetention.SOURCE)
+ annotation class ClockSize
+}
diff --git a/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
new file mode 100644
index 0000000..8eee709
--- /dev/null
+++ b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
@@ -0,0 +1,225 @@
+/*
+ * 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.
+ */
+package com.android.customization.module.logging
+
+import android.app.WallpaperManager
+import android.content.Intent
+import android.stats.style.StyleEnums
+import android.text.TextUtils
+import com.android.customization.model.color.ColorOption
+import com.android.customization.model.grid.GridOption
+import com.android.customization.module.logging.ThemesUserEventLogger.ClockSize
+import com.android.systemui.shared.system.SysUiStatsLog
+import com.android.wallpaper.module.WallpaperPersister.DEST_BOTH
+import com.android.wallpaper.module.WallpaperPersister.DEST_HOME_SCREEN
+import com.android.wallpaper.module.WallpaperPersister.DEST_LOCK_SCREEN
+import com.android.wallpaper.module.WallpaperPreferences
+import com.android.wallpaper.module.logging.UserEventLogger.EffectStatus
+import com.android.wallpaper.module.logging.UserEventLogger.SetWallpaperEntryPoint
+import com.android.wallpaper.module.logging.UserEventLogger.WallpaperDestination
+import com.android.wallpaper.util.LaunchSourceUtils
+
+/** StatsLog-backed implementation of [ThemesUserEventLogger]. */
+class ThemesUserEventLoggerImpl(private val preferences: WallpaperPreferences) :
+ ThemesUserEventLogger {
+
+ override fun logSnapshot() {
+ SysUiStatsLogger(StyleEnums.SNAPSHOT)
+ .setWallpaperCategoryHash(preferences.getHomeCategoryHash())
+ .setWallpaperIdHash(preferences.getHomeWallpaperIdHash())
+ .setLockWallpaperCategoryHash(preferences.getLockCategoryHash())
+ .setLockWallpaperIdHash(preferences.getLockWallpaperIdHash())
+ .setEffectIdHash(getIdHashCode(preferences.homeWallpaperEffects))
+ .log()
+ }
+
+ override fun logAppLaunched(launchSource: Intent) {
+ SysUiStatsLogger(StyleEnums.APP_LAUNCHED)
+ .setLaunchedPreference(launchSource.getAppLaunchSource())
+ .log()
+ }
+
+ override fun logWallpaperApplied(
+ collectionId: String?,
+ wallpaperId: String?,
+ effects: String?,
+ @SetWallpaperEntryPoint setWallpaperEntryPoint: Int,
+ @WallpaperDestination destination: Int,
+ ) {
+ val categoryHash = getIdHashCode(collectionId)
+ val wallpaperIdHash = getIdHashCode(wallpaperId)
+ val isHomeWallpaperSet = destination == DEST_HOME_SCREEN || destination == DEST_BOTH
+ val isLockWallpaperSet = destination == DEST_LOCK_SCREEN || destination == DEST_BOTH
+ SysUiStatsLogger(StyleEnums.WALLPAPER_APPLIED)
+ .setWallpaperCategoryHash(if (isHomeWallpaperSet) categoryHash else 0)
+ .setWallpaperIdHash(if (isHomeWallpaperSet) wallpaperIdHash else 0)
+ .setLockWallpaperCategoryHash(if (isLockWallpaperSet) categoryHash else 0)
+ .setLockWallpaperIdHash(if (isLockWallpaperSet) wallpaperIdHash else 0)
+ .setEffectIdHash(getIdHashCode(effects))
+ .setSetWallpaperEntryPoint(setWallpaperEntryPoint)
+ .setWallpaperDestination(destination)
+ .log()
+ }
+
+ override fun logEffectApply(
+ effect: String,
+ @EffectStatus status: Int,
+ timeElapsedMillis: Long,
+ resultCode: Int
+ ) {
+ SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_APPLIED)
+ .setEffectPreference(status)
+ .setEffectIdHash(getIdHashCode(effect))
+ .setTimeElapsed(timeElapsedMillis)
+ .setEffectResultCode(resultCode)
+ .log()
+ }
+
+ override fun logEffectProbe(effect: String, @EffectStatus status: Int) {
+ SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_PROBE)
+ .setEffectPreference(status)
+ .setEffectIdHash(getIdHashCode(effect))
+ .log()
+ }
+
+ override fun logEffectForegroundDownload(
+ effect: String,
+ @EffectStatus status: Int,
+ timeElapsedMillis: Long
+ ) {
+ SysUiStatsLogger(StyleEnums.WALLPAPER_EFFECT_FG_DOWNLOAD)
+ .setEffectPreference(status)
+ .setEffectIdHash(getIdHashCode(effect))
+ .setTimeElapsed(timeElapsedMillis)
+ .log()
+ }
+
+ override fun logResetApplied() {
+ SysUiStatsLogger(StyleEnums.RESET_APPLIED).log()
+ }
+
+ override fun logWallpaperExploreButtonClicked() {
+ SysUiStatsLogger(StyleEnums.WALLPAPER_EXPLORE).log()
+ }
+
+ override fun logThemeColorApplied(colorOption: ColorOption) {
+ SysUiStatsLogger(StyleEnums.THEME_COLOR_APPLIED)
+ .setColorPreference(colorOption.index)
+ .setColorVariant(colorOption.style.ordinal + 1)
+ .log()
+ }
+
+ override fun logGridApplied(grid: GridOption) {
+ SysUiStatsLogger(StyleEnums.GRID_APPLIED).setLauncherGrid(grid.getLauncherGridInt()).log()
+ }
+
+ override fun logClockApplied(clockId: String) {
+ SysUiStatsLogger(StyleEnums.CLOCK_APPLIED).setClockPackageHash(getIdHashCode(clockId)).log()
+ }
+
+ override fun logClockColorApplied(seedColor: Int) {
+ SysUiStatsLogger(StyleEnums.CLOCK_COLOR_APPLIED).setSeedColor(seedColor).log()
+ }
+
+ override fun logClockSizeApplied(@ClockSize clockSize: Int) {
+ SysUiStatsLogger(StyleEnums.CLOCK_SIZE_APPLIED).setClockSize(clockSize).log()
+ }
+
+ override fun logThemedIconApplied(useThemeIcon: Boolean) {
+ SysUiStatsLogger(StyleEnums.THEMED_ICON_APPLIED).setToggleOn(useThemeIcon).log()
+ }
+
+ override fun logLockScreenNotificationApplied(showLockScreenNotifications: Boolean) {
+ SysUiStatsLogger(StyleEnums.LOCK_SCREEN_NOTIFICATION_APPLIED)
+ .setToggleOn(showLockScreenNotifications)
+ .log()
+ }
+
+ override fun logShortcutApplied(shortcut: String, shortcutSlotId: String) {
+ SysUiStatsLogger(StyleEnums.SHORTCUT_APPLIED)
+ .setShortcut(shortcut)
+ .setShortcutSlotId(shortcutSlotId)
+ .log()
+ }
+
+ override fun logDarkThemeApplied(useDarkTheme: Boolean) {
+ SysUiStatsLogger(StyleEnums.DARK_THEME_APPLIED).setToggleOn(useDarkTheme).log()
+ }
+
+ /**
+ * The grid integer depends on the column and row numbers. For example: 4x5 is 405 13x37 is 1337
+ * The upper limit for the column / row count is 99.
+ */
+ private fun GridOption.getLauncherGridInt(): Int {
+ return cols * 100 + rows
+ }
+
+ private fun Intent.getAppLaunchSource(): Int {
+ return if (hasExtra(LaunchSourceUtils.WALLPAPER_LAUNCH_SOURCE)) {
+ when (getStringExtra(LaunchSourceUtils.WALLPAPER_LAUNCH_SOURCE)) {
+ LaunchSourceUtils.LAUNCH_SOURCE_LAUNCHER ->
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCHER
+ LaunchSourceUtils.LAUNCH_SOURCE_SETTINGS ->
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS
+ LaunchSourceUtils.LAUNCH_SOURCE_SUW ->
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SUW
+ LaunchSourceUtils.LAUNCH_SOURCE_TIPS ->
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_TIPS
+ LaunchSourceUtils.LAUNCH_SOURCE_DEEP_LINK ->
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_DEEP_LINK
+ else ->
+ SysUiStatsLog
+ .STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED
+ }
+ } else if (hasExtra(LaunchSourceUtils.LAUNCH_SETTINGS_SEARCH)) {
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS_SEARCH
+ } else if (action != null && action == WallpaperManager.ACTION_CROP_AND_SET_WALLPAPER) {
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_CROP_AND_SET_ACTION
+ } else if (categories != null && categories.contains(Intent.CATEGORY_LAUNCHER)) {
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_LAUNCH_ICON
+ } else {
+ SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_PREFERENCE_UNSPECIFIED
+ }
+ }
+
+ /** If not set, the output hash is 0. */
+ private fun WallpaperPreferences.getHomeCategoryHash(): Int {
+ return getIdHashCode(homeWallpaperCollectionId)
+ }
+
+ /** If not set, the output hash is 0. */
+ private fun WallpaperPreferences.getHomeWallpaperIdHash(): Int {
+ val remoteId = homeWallpaperRemoteId
+ val wallpaperId = if (!TextUtils.isEmpty(remoteId)) remoteId else homeWallpaperServiceName
+ return getIdHashCode(wallpaperId)
+ }
+
+ /** If not set, the output hash is 0. */
+ private fun WallpaperPreferences.getLockCategoryHash(): Int {
+ return getIdHashCode(lockWallpaperCollectionId)
+ }
+
+ /** If not set, the output hash is 0. */
+ private fun WallpaperPreferences.getLockWallpaperIdHash(): Int {
+ val remoteId = lockWallpaperRemoteId
+ val wallpaperId = if (!TextUtils.isEmpty(remoteId)) remoteId else lockWallpaperServiceName
+ return getIdHashCode(wallpaperId)
+ }
+
+ private fun getIdHashCode(id: String?): Int {
+ return id?.hashCode() ?: 0
+ }
+}
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
index 004103f..8923b46 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -187,7 +187,6 @@
): ClockMetadataModel {
return ClockMetadataModel(
clockId = clockId,
- name = name,
isSelected = isSelected,
selectedColorId = selectedColorId,
colorToneProgress = colorTone,
diff --git a/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt b/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt
index 2522507..6e2bfb3 100644
--- a/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt
+++ b/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt
@@ -23,7 +23,6 @@
/** Model for clock metadata. */
data class ClockMetadataModel(
val clockId: String,
- val name: String,
val isSelected: Boolean,
val selectedColorId: String?,
@IntRange(from = 0, to = 100) val colorToneProgress: Int,
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index 4805f37..dc70633 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -68,7 +68,7 @@
val injector = InjectorProvider.getInjector() as ThemePickerInjector
val lockScreenView: CardView = view.requireViewById(R.id.lock_preview)
- val colorViewModel = injector.getWallpaperColorsViewModel()
+ val wallpaperColorsRepository = injector.getWallpaperColorsRepository()
val displayUtils = injector.getDisplayUtils(context)
ScreenPreviewBinder.bind(
activity = activity,
@@ -88,18 +88,18 @@
injector
.getCurrentWallpaperInfoFactory(context)
.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- continuation.resume(
- lockWallpaper ?: homeWallpaper,
- null,
- )
- },
+ context,
forceReload,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ continuation.resume(
+ lockWallpaper ?: homeWallpaper,
+ null,
+ )
+ }
}
},
onWallpaperColorChanged = { colors ->
- colorViewModel.setLockWallpaperColors(colors)
+ wallpaperColorsRepository.setLockWallpaperColors(colors)
},
initialExtrasProvider = {
Bundle().apply {
@@ -125,7 +125,7 @@
this,
injector.getClockSettingsViewModelFactory(
context,
- injector.getWallpaperColorsViewModel(),
+ injector.getWallpaperColorsRepository(),
injector.getClockViewFactory(activity),
),
)
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index d4f501b..fbc8a96 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -384,7 +384,7 @@
) : Carousel.Adapter {
fun getContentDescription(index: Int, resources: Resources): String {
- return clocks[index].getContentDescription(resources)
+ return clocks[index].contentDescription
}
override fun count(): Int {
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
index 3f6f423..1433e98 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
@@ -15,226 +15,38 @@
*/
package com.android.customization.picker.clock.ui.view
-import android.app.WallpaperColors
-import android.app.WallpaperManager
-import android.content.Context
-import android.content.res.Resources
-import android.graphics.Point
-import android.graphics.Rect
import android.view.View
-import android.widget.FrameLayout
import androidx.annotation.ColorInt
-import androidx.core.text.util.LocalePreferences
import androidx.lifecycle.LifecycleOwner
import com.android.systemui.plugins.ClockController
-import com.android.systemui.plugins.WeatherData
-import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.wallpaper.R
-import com.android.wallpaper.util.TimeUtils.TimeTicker
-import java.util.concurrent.ConcurrentHashMap
-/**
- * Provide reusable clock view and related util functions.
- *
- * @property screenSize The Activity or Fragment's window size.
- */
-class ClockViewFactory(
- private val appContext: Context,
- val screenSize: Point,
- private val wallpaperManager: WallpaperManager,
- private val registry: ClockRegistry,
-) {
- private val resources = appContext.resources
- private val timeTickListeners: ConcurrentHashMap<Int, TimeTicker> = ConcurrentHashMap()
- private val clockControllers: HashMap<String, ClockController> = HashMap()
- private val smallClockFrames: HashMap<String, FrameLayout> = HashMap()
+interface ClockViewFactory {
- fun getController(clockId: String): ClockController {
- return clockControllers[clockId]
- ?: initClockController(clockId).also { clockControllers[clockId] = it }
- }
+ fun getController(clockId: String): ClockController
/**
* Reset the large view to its initial state when getting the view. This is because some view
* configs, e.g. animation state, might change during the reuse of the clock view in the app.
*/
- fun getLargeView(clockId: String): View {
- return getController(clockId).largeClock.let {
- it.animations.onPickerCarouselSwiping(1F)
- it.view
- }
- }
+ fun getLargeView(clockId: String): View
/**
* Reset the small view to its initial state when getting the view. This is because some view
* configs, e.g. translation X, might change during the reuse of the clock view in the app.
*/
- fun getSmallView(clockId: String): View {
- val smallClockFrame =
- smallClockFrames[clockId]
- ?: createSmallClockFrame().also {
- it.addView(getController(clockId).smallClock.view)
- smallClockFrames[clockId] = it
- }
- smallClockFrame.translationX = 0F
- smallClockFrame.translationY = 0F
- return smallClockFrame
- }
+ fun getSmallView(clockId: String): View
- private fun createSmallClockFrame(): FrameLayout {
- val smallClockFrame = FrameLayout(appContext)
- val layoutParams =
- FrameLayout.LayoutParams(
- FrameLayout.LayoutParams.WRAP_CONTENT,
- resources.getDimensionPixelSize(R.dimen.small_clock_height)
- )
- layoutParams.topMargin = getSmallClockTopMargin()
- layoutParams.marginStart = getSmallClockStartPadding()
- smallClockFrame.layoutParams = layoutParams
- smallClockFrame.clipChildren = false
- return smallClockFrame
- }
+ fun updateColorForAllClocks(@ColorInt seedColor: Int?)
- private fun getSmallClockTopMargin() =
- getStatusBarHeight(appContext.resources) +
- appContext.resources.getDimensionPixelSize(R.dimen.small_clock_padding_top)
+ fun updateColor(clockId: String, @ColorInt seedColor: Int?)
- private fun getSmallClockStartPadding() =
- appContext.resources.getDimensionPixelSize(R.dimen.clock_padding_start)
+ fun updateRegionDarkness()
- fun updateColorForAllClocks(@ColorInt seedColor: Int?) {
- clockControllers.values.forEach { it.events.onSeedColorChanged(seedColor = seedColor) }
- }
+ fun updateTimeFormat(clockId: String)
- fun updateColor(clockId: String, @ColorInt seedColor: Int?) {
- clockControllers[clockId]?.events?.onSeedColorChanged(seedColor)
- }
+ fun registerTimeTicker(owner: LifecycleOwner)
- fun updateRegionDarkness() {
- val isRegionDark = isLockscreenWallpaperDark()
- clockControllers.values.forEach {
- it.largeClock.events.onRegionDarknessChanged(isRegionDark)
- it.smallClock.events.onRegionDarknessChanged(isRegionDark)
- }
- }
+ fun onDestroy()
- private fun isLockscreenWallpaperDark(): Boolean {
- val colors = wallpaperManager.getWallpaperColors(WallpaperManager.FLAG_LOCK)
- return (colors?.colorHints?.and(WallpaperColors.HINT_SUPPORTS_DARK_TEXT)) == 0
- }
-
- fun updateTimeFormat(clockId: String) {
- getController(clockId)
- .events
- .onTimeFormatChanged(android.text.format.DateFormat.is24HourFormat(appContext))
- }
-
- fun registerTimeTicker(owner: LifecycleOwner) {
- val hashCode = owner.hashCode()
- if (timeTickListeners.keys.contains(hashCode)) {
- return
- }
-
- timeTickListeners[hashCode] = TimeTicker.registerNewReceiver(appContext) { onTimeTick() }
- }
-
- fun onDestroy() {
- timeTickListeners.forEach { (_, timeTicker) -> appContext.unregisterReceiver(timeTicker) }
- timeTickListeners.clear()
- clockControllers.clear()
- smallClockFrames.clear()
- }
-
- private fun onTimeTick() {
- clockControllers.values.forEach {
- it.largeClock.events.onTimeTick()
- it.smallClock.events.onTimeTick()
- }
- }
-
- fun unregisterTimeTicker(owner: LifecycleOwner) {
- val hashCode = owner.hashCode()
- timeTickListeners[hashCode]?.let {
- appContext.unregisterReceiver(it)
- timeTickListeners.remove(hashCode)
- }
- }
-
- private fun initClockController(clockId: String): ClockController {
- val controller =
- registry.createExampleClock(clockId).also { it?.initialize(resources, 0f, 0f) }
- checkNotNull(controller)
-
- val isWallpaperDark = isLockscreenWallpaperDark()
- // Initialize large clock
- controller.largeClock.events.onRegionDarknessChanged(isWallpaperDark)
- controller.largeClock.events.onFontSettingChanged(
- resources.getDimensionPixelSize(R.dimen.large_clock_text_size).toFloat()
- )
- controller.largeClock.events.onTargetRegionChanged(getLargeClockRegion())
-
- // Initialize small clock
- controller.smallClock.events.onRegionDarknessChanged(isWallpaperDark)
- controller.smallClock.events.onFontSettingChanged(
- resources.getDimensionPixelSize(R.dimen.small_clock_text_size).toFloat()
- )
- controller.smallClock.events.onTargetRegionChanged(getSmallClockRegion())
-
- // Use placeholder for weather clock preview in picker.
- // Use locale default temp unit since assistant default is not available in this context.
- val useCelsius =
- LocalePreferences.getTemperatureUnit() == LocalePreferences.TemperatureUnit.CELSIUS
- controller.events.onWeatherDataChanged(
- WeatherData(
- description = DESCRIPTION_PLACEHODLER,
- state = WEATHERICON_PLACEHOLDER,
- temperature =
- if (useCelsius) TEMPERATURE_CELSIUS_PLACEHOLDER
- else TEMPERATURE_FAHRENHEIT_PLACEHOLDER,
- useCelsius = useCelsius,
- )
- )
- return controller
- }
-
- /**
- * Simulate the function of getLargeClockRegion in KeyguardClockSwitch so that we can get a
- * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
- * and position the clock view
- */
- private fun getLargeClockRegion(): Rect {
- val largeClockTopMargin =
- resources.getDimensionPixelSize(R.dimen.keyguard_large_clock_top_margin)
- val targetHeight = resources.getDimensionPixelSize(R.dimen.large_clock_text_size) * 2
- val top = (screenSize.y / 2 - targetHeight / 2 + largeClockTopMargin / 2)
- return Rect(0, top, screenSize.x, (top + targetHeight))
- }
-
- /**
- * Simulate the function of getSmallClockRegion in KeyguardClockSwitch so that we can get a
- * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
- * and position the clock view
- */
- private fun getSmallClockRegion(): Rect {
- val topMargin = getSmallClockTopMargin()
- val targetHeight = resources.getDimensionPixelSize(R.dimen.small_clock_height)
- return Rect(getSmallClockStartPadding(), topMargin, screenSize.x, topMargin + targetHeight)
- }
-
- companion object {
- const val DESCRIPTION_PLACEHODLER = ""
- const val TEMPERATURE_FAHRENHEIT_PLACEHOLDER = 58
- const val TEMPERATURE_CELSIUS_PLACEHOLDER = 21
- val WEATHERICON_PLACEHOLDER = WeatherData.WeatherStateIcon.MOSTLY_SUNNY
- const val USE_CELSIUS_PLACEHODLER = false
-
- private fun getStatusBarHeight(resource: Resources): Int {
- var result = 0
- val resourceId: Int = resource.getIdentifier("status_bar_height", "dimen", "android")
- if (resourceId > 0) {
- result = resource.getDimensionPixelSize(resourceId)
- }
- return result
- }
- }
+ fun unregisterTimeTicker(owner: LifecycleOwner)
}
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt b/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt
new file mode 100644
index 0000000..9116f3f
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+package com.android.customization.picker.clock.ui.view
+
+import android.app.WallpaperColors
+import android.app.WallpaperManager
+import android.content.Context
+import android.content.res.Resources
+import android.graphics.Point
+import android.graphics.Rect
+import android.view.View
+import android.widget.FrameLayout
+import androidx.annotation.ColorInt
+import androidx.core.text.util.LocalePreferences
+import androidx.lifecycle.LifecycleOwner
+import com.android.systemui.plugins.ClockController
+import com.android.systemui.plugins.WeatherData
+import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.wallpaper.R
+import com.android.wallpaper.util.TimeUtils.TimeTicker
+import java.util.concurrent.ConcurrentHashMap
+
+/**
+ * Provide reusable clock view and related util functions.
+ *
+ * @property screenSize The Activity or Fragment's window size.
+ */
+class ClockViewFactoryImpl(
+ private val appContext: Context,
+ val screenSize: Point,
+ private val wallpaperManager: WallpaperManager,
+ private val registry: ClockRegistry,
+) : ClockViewFactory {
+ private val resources = appContext.resources
+ private val timeTickListeners: ConcurrentHashMap<Int, TimeTicker> = ConcurrentHashMap()
+ private val clockControllers: HashMap<String, ClockController> = HashMap()
+ private val smallClockFrames: HashMap<String, FrameLayout> = HashMap()
+
+ override fun getController(clockId: String): ClockController {
+ return clockControllers[clockId]
+ ?: initClockController(clockId).also { clockControllers[clockId] = it }
+ }
+
+ /**
+ * Reset the large view to its initial state when getting the view. This is because some view
+ * configs, e.g. animation state, might change during the reuse of the clock view in the app.
+ */
+ override fun getLargeView(clockId: String): View {
+ return getController(clockId).largeClock.let {
+ it.animations.onPickerCarouselSwiping(1F)
+ it.view
+ }
+ }
+
+ /**
+ * Reset the small view to its initial state when getting the view. This is because some view
+ * configs, e.g. translation X, might change during the reuse of the clock view in the app.
+ */
+ override fun getSmallView(clockId: String): View {
+ val smallClockFrame =
+ smallClockFrames[clockId]
+ ?: createSmallClockFrame().also {
+ it.addView(getController(clockId).smallClock.view)
+ smallClockFrames[clockId] = it
+ }
+ smallClockFrame.translationX = 0F
+ smallClockFrame.translationY = 0F
+ return smallClockFrame
+ }
+
+ private fun createSmallClockFrame(): FrameLayout {
+ val smallClockFrame = FrameLayout(appContext)
+ val layoutParams =
+ FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ resources.getDimensionPixelSize(R.dimen.small_clock_height)
+ )
+ layoutParams.topMargin = getSmallClockTopMargin()
+ layoutParams.marginStart = getSmallClockStartPadding()
+ smallClockFrame.layoutParams = layoutParams
+ smallClockFrame.clipChildren = false
+ return smallClockFrame
+ }
+
+ private fun getSmallClockTopMargin() =
+ getStatusBarHeight(appContext.resources) +
+ appContext.resources.getDimensionPixelSize(R.dimen.small_clock_padding_top)
+
+ private fun getSmallClockStartPadding() =
+ appContext.resources.getDimensionPixelSize(R.dimen.clock_padding_start)
+
+ override fun updateColorForAllClocks(@ColorInt seedColor: Int?) {
+ clockControllers.values.forEach { it.events.onSeedColorChanged(seedColor = seedColor) }
+ }
+
+ override fun updateColor(clockId: String, @ColorInt seedColor: Int?) {
+ clockControllers[clockId]?.events?.onSeedColorChanged(seedColor)
+ }
+
+ override fun updateRegionDarkness() {
+ val isRegionDark = isLockscreenWallpaperDark()
+ clockControllers.values.forEach {
+ it.largeClock.events.onRegionDarknessChanged(isRegionDark)
+ it.smallClock.events.onRegionDarknessChanged(isRegionDark)
+ }
+ }
+
+ private fun isLockscreenWallpaperDark(): Boolean {
+ val colors = wallpaperManager.getWallpaperColors(WallpaperManager.FLAG_LOCK)
+ return (colors?.colorHints?.and(WallpaperColors.HINT_SUPPORTS_DARK_TEXT)) == 0
+ }
+
+ override fun updateTimeFormat(clockId: String) {
+ getController(clockId)
+ .events
+ .onTimeFormatChanged(android.text.format.DateFormat.is24HourFormat(appContext))
+ }
+
+ override fun registerTimeTicker(owner: LifecycleOwner) {
+ val hashCode = owner.hashCode()
+ if (timeTickListeners.keys.contains(hashCode)) {
+ return
+ }
+
+ timeTickListeners[hashCode] = TimeTicker.registerNewReceiver(appContext) { onTimeTick() }
+ }
+
+ override fun onDestroy() {
+ timeTickListeners.forEach { (_, timeTicker) -> appContext.unregisterReceiver(timeTicker) }
+ timeTickListeners.clear()
+ clockControllers.clear()
+ smallClockFrames.clear()
+ }
+
+ private fun onTimeTick() {
+ clockControllers.values.forEach {
+ it.largeClock.events.onTimeTick()
+ it.smallClock.events.onTimeTick()
+ }
+ }
+
+ override fun unregisterTimeTicker(owner: LifecycleOwner) {
+ val hashCode = owner.hashCode()
+ timeTickListeners[hashCode]?.let {
+ appContext.unregisterReceiver(it)
+ timeTickListeners.remove(hashCode)
+ }
+ }
+
+ private fun initClockController(clockId: String): ClockController {
+ val controller =
+ registry.createExampleClock(clockId).also { it?.initialize(resources, 0f, 0f) }
+ checkNotNull(controller)
+
+ val isWallpaperDark = isLockscreenWallpaperDark()
+ // Initialize large clock
+ controller.largeClock.events.onRegionDarknessChanged(isWallpaperDark)
+ controller.largeClock.events.onFontSettingChanged(
+ resources.getDimensionPixelSize(R.dimen.large_clock_text_size).toFloat()
+ )
+ controller.largeClock.events.onTargetRegionChanged(getLargeClockRegion())
+
+ // Initialize small clock
+ controller.smallClock.events.onRegionDarknessChanged(isWallpaperDark)
+ controller.smallClock.events.onFontSettingChanged(
+ resources.getDimensionPixelSize(R.dimen.small_clock_text_size).toFloat()
+ )
+ controller.smallClock.events.onTargetRegionChanged(getSmallClockRegion())
+
+ // Use placeholder for weather clock preview in picker.
+ // Use locale default temp unit since assistant default is not available in this context.
+ val useCelsius =
+ LocalePreferences.getTemperatureUnit() == LocalePreferences.TemperatureUnit.CELSIUS
+ controller.events.onWeatherDataChanged(
+ WeatherData(
+ description = DESCRIPTION_PLACEHODLER,
+ state = WEATHERICON_PLACEHOLDER,
+ temperature =
+ if (useCelsius) TEMPERATURE_CELSIUS_PLACEHOLDER
+ else TEMPERATURE_FAHRENHEIT_PLACEHOLDER,
+ useCelsius = useCelsius,
+ )
+ )
+ return controller
+ }
+
+ /**
+ * Simulate the function of getLargeClockRegion in KeyguardClockSwitch so that we can get a
+ * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
+ * and position the clock view
+ */
+ private fun getLargeClockRegion(): Rect {
+ val largeClockTopMargin =
+ resources.getDimensionPixelSize(R.dimen.keyguard_large_clock_top_margin)
+ val targetHeight = resources.getDimensionPixelSize(R.dimen.large_clock_text_size) * 2
+ val top = (screenSize.y / 2 - targetHeight / 2 + largeClockTopMargin / 2)
+ return Rect(0, top, screenSize.x, (top + targetHeight))
+ }
+
+ /**
+ * Simulate the function of getSmallClockRegion in KeyguardClockSwitch so that we can get a
+ * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
+ * and position the clock view
+ */
+ private fun getSmallClockRegion(): Rect {
+ val topMargin = getSmallClockTopMargin()
+ val targetHeight = resources.getDimensionPixelSize(R.dimen.small_clock_height)
+ return Rect(getSmallClockStartPadding(), topMargin, screenSize.x, topMargin + targetHeight)
+ }
+
+ companion object {
+ const val DESCRIPTION_PLACEHODLER = ""
+ const val TEMPERATURE_FAHRENHEIT_PLACEHOLDER = 58
+ const val TEMPERATURE_CELSIUS_PLACEHOLDER = 21
+ val WEATHERICON_PLACEHOLDER = WeatherData.WeatherStateIcon.MOSTLY_SUNNY
+ const val USE_CELSIUS_PLACEHODLER = false
+
+ private fun getStatusBarHeight(resource: Resources): Int {
+ var result = 0
+ val resourceId: Int = resource.getIdentifier("status_bar_height", "dimen", "android")
+ if (resourceId > 0) {
+ result = resource.getDimensionPixelSize(resourceId)
+ }
+ return result
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt
index 9811426..e5ac953 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt
@@ -15,20 +15,8 @@
*/
package com.android.customization.picker.clock.ui.viewmodel
-import android.content.res.Resources
-import com.android.customization.module.CustomizationInjector
-import com.android.wallpaper.R
-import com.android.wallpaper.module.InjectorProvider
-
-class ClockCarouselItemViewModel(val clockId: String, val isSelected: Boolean) {
-
- /** Description for accessibility purposes when a clock is selected. */
- fun getContentDescription(resources: Resources): String {
- val clockContent =
- (InjectorProvider.getInjector() as? CustomizationInjector)
- ?.getClockDescriptionUtils(resources)
- ?.getDescription(clockId)
- ?: ""
- return resources.getString(R.string.select_clock_action_description, clockContent)
- }
-}
+class ClockCarouselItemViewModel(
+ val clockId: String,
+ val isSelected: Boolean,
+ val contentDescription: String,
+)
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
index 27c25a2..e4d5a8d 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
@@ -15,12 +15,14 @@
*/
package com.android.customization.picker.clock.ui.viewmodel
+import android.content.res.Resources
import android.graphics.Color
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
import com.android.customization.picker.clock.shared.ClockSize
+import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.wallpaper.R
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -43,6 +45,8 @@
class ClockCarouselViewModel(
private val interactor: ClockPickerInteractor,
private val backgroundDispatcher: CoroutineDispatcher,
+ private val clockViewFactory: ClockViewFactory,
+ private val resources: Resources,
) : ViewModel() {
@OptIn(ExperimentalCoroutinesApi::class)
val allClocks: StateFlow<List<ClockCarouselItemViewModel>> =
@@ -50,7 +54,14 @@
.mapLatest { allClocks ->
// Delay to avoid the case that the full list of clocks is not initiated.
delay(CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
- allClocks.map { ClockCarouselItemViewModel(it.clockId, it.isSelected) }
+ allClocks.map {
+ val contentDescription =
+ resources.getString(
+ R.string.select_clock_action_description,
+ clockViewFactory.getController(it.clockId).config.description
+ )
+ ClockCarouselItemViewModel(it.clockId, it.isSelected, contentDescription)
+ }
}
.stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())
@@ -117,12 +128,16 @@
class Factory(
private val interactor: ClockPickerInteractor,
private val backgroundDispatcher: CoroutineDispatcher,
+ private val clockViewFactory: ClockViewFactory,
+ private val resources: Resources,
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
return ClockCarouselViewModel(
interactor = interactor,
backgroundDispatcher = backgroundDispatcher,
+ clockViewFactory = clockViewFactory,
+ resources = resources,
)
as T
}
diff --git a/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt b/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt
deleted file mode 100644
index 28ea4a3..0000000
--- a/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2023 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.
- */
-package com.android.customization.picker.clock.utils
-
-/** Provides clock description for accessibility purposes. */
-interface ClockDescriptionUtils {
-
- /**
- * TODO (b/287507746) : Migrate the clock description to system UI or a shared library, instead
- * of preserving at the Wallpaper Picker side.
- */
- fun getDescription(clockId: String): String
-}
diff --git a/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt b/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt
deleted file mode 100644
index a04ebff..0000000
--- a/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2023 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.
- */
-package com.android.customization.picker.clock.utils
-
-class ThemePickerClockDescriptionUtils : ClockDescriptionUtils {
- override fun getDescription(clockId: String): String {
- return ""
- }
-}
diff --git a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
index 6540ce0..942a846 100644
--- a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
@@ -24,8 +24,8 @@
import com.android.customization.picker.color.shared.model.ColorOptionModel
import com.android.customization.picker.color.shared.model.ColorType
import com.android.systemui.monet.Style
-import com.android.wallpaper.model.WallpaperColorsModel
-import com.android.wallpaper.model.WallpaperColorsViewModel
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
+import com.android.wallpaper.picker.customization.shared.model.WallpaperColorsModel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -37,14 +37,14 @@
// TODO (b/262924623): refactor to remove dependency on ColorCustomizationManager & ColorOption
// TODO (b/268203200): Create test for ColorPickerRepositoryImpl
class ColorPickerRepositoryImpl(
- wallpaperColorsViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
private val colorManager: ColorCustomizationManager,
) : ColorPickerRepository {
private val homeWallpaperColors: StateFlow<WallpaperColorsModel?> =
- wallpaperColorsViewModel.homeWallpaperColors
+ wallpaperColorsRepository.homeWallpaperColors
private val lockWallpaperColors: StateFlow<WallpaperColorsModel?> =
- wallpaperColorsViewModel.lockWallpaperColors
+ wallpaperColorsRepository.lockWallpaperColors
private var selectedColorOption: MutableStateFlow<ColorOptionModel> =
MutableStateFlow(getCurrentColorOption())
@@ -78,7 +78,7 @@
homeColorsLoaded.colors,
lockColorsLoaded.colors
)
- colorManager.fetchRevampedUIOptions(
+ colorManager.fetchOptions(
object : CustomizationManager.OptionsFetchedListener<ColorOption?> {
override fun onOptionsLoaded(options: MutableList<ColorOption?>?) {
val wallpaperColorOptions: MutableList<ColorOptionModel> =
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
index 0f82f49..9838c31 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
@@ -62,7 +62,7 @@
colorTypeTabView.addItemDecoration(ItemSpacing(ItemSpacing.TAB_ITEM_SPACING_DP))
val colorOptionAdapter =
OptionItemAdapter(
- layoutResourceId = R.layout.color_option_2,
+ layoutResourceId = R.layout.color_option,
lifecycleOwner = lifecycleOwner,
bindIcon = { foregroundView: View, colorIcon: ColorOptionIconViewModel ->
val colorOptionIconView = foregroundView as? ColorOptionIconView
diff --git a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
index 4ef29d6..941d2c6 100644
--- a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
+++ b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
@@ -33,11 +33,11 @@
import com.android.customization.module.ThemePickerInjector
import com.android.customization.picker.color.ui.binder.ColorPickerBinder
import com.android.wallpaper.R
-import com.android.wallpaper.model.WallpaperColorsModel
-import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.AppbarFragment
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
+import com.android.wallpaper.picker.customization.shared.model.WallpaperColorsModel
import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
import com.android.wallpaper.util.DisplayUtils
@@ -76,7 +76,7 @@
val homeScreenView: CardView = view.requireViewById(R.id.home_preview)
val wallpaperInfoFactory = injector.getCurrentWallpaperInfoFactory(requireContext())
val displayUtils: DisplayUtils = injector.getDisplayUtils(requireContext())
- val wcViewModel = injector.getWallpaperColorsViewModel()
+ val wallpaperColorsRepository = injector.getWallpaperColorsRepository()
val wallpaperManager = WallpaperManager.getInstance(requireContext())
binding =
@@ -87,7 +87,7 @@
requireActivity(),
injector.getColorPickerViewModelFactory(
context = requireContext(),
- wallpaperColorsViewModel = wcViewModel,
+ wallpaperColorsRepository = wallpaperColorsRepository,
),
)
.get(),
@@ -114,27 +114,27 @@
wallpaperInfoProvider = { forceReload ->
suspendCancellableCoroutine { continuation ->
wallpaperInfoFactory.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- lifecycleScope.launch {
- if (
- wcViewModel.lockWallpaperColors.value
- is WallpaperColorsModel.Loading
- ) {
- loadInitialColors(
- wallpaperManager,
- wcViewModel,
- CustomizationSections.Screen.LOCK_SCREEN
- )
- }
- }
- continuation.resume(lockWallpaper ?: homeWallpaper, null)
- },
+ context,
forceReload,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ lifecycleScope.launch {
+ if (
+ wallpaperColorsRepository.lockWallpaperColors.value
+ is WallpaperColorsModel.Loading
+ ) {
+ loadInitialColors(
+ wallpaperManager,
+ wallpaperColorsRepository,
+ CustomizationSections.Screen.LOCK_SCREEN
+ )
+ }
+ }
+ continuation.resume(lockWallpaper ?: homeWallpaper, null)
+ }
}
},
onWallpaperColorChanged = { colors ->
- wcViewModel.setLockWallpaperColors(colors)
+ wallpaperColorsRepository.setLockWallpaperColors(colors)
},
wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
screen = CustomizationSections.Screen.LOCK_SCREEN,
@@ -165,27 +165,27 @@
wallpaperInfoProvider = { forceReload ->
suspendCancellableCoroutine { continuation ->
wallpaperInfoFactory.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- lifecycleScope.launch {
- if (
- wcViewModel.homeWallpaperColors.value
- is WallpaperColorsModel.Loading
- ) {
- loadInitialColors(
- wallpaperManager,
- wcViewModel,
- CustomizationSections.Screen.HOME_SCREEN
- )
- }
- }
- continuation.resume(homeWallpaper ?: lockWallpaper, null)
- },
+ context,
forceReload,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ lifecycleScope.launch {
+ if (
+ wallpaperColorsRepository.homeWallpaperColors.value
+ is WallpaperColorsModel.Loading
+ ) {
+ loadInitialColors(
+ wallpaperManager,
+ wallpaperColorsRepository,
+ CustomizationSections.Screen.HOME_SCREEN
+ )
+ }
+ }
+ continuation.resume(homeWallpaper ?: lockWallpaper, null)
+ }
}
},
onWallpaperColorChanged = { colors ->
- wcViewModel.setHomeWallpaperColors(colors)
+ wallpaperColorsRepository.setHomeWallpaperColors(colors)
},
wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
screen = CustomizationSections.Screen.HOME_SCREEN,
@@ -218,7 +218,7 @@
private suspend fun loadInitialColors(
wallpaperManager: WallpaperManager,
- colorViewModel: WallpaperColorsViewModel,
+ colorViewModel: WallpaperColorsRepository,
screen: CustomizationSections.Screen,
) {
withContext(Dispatchers.IO) {
diff --git a/src/com/android/customization/picker/color/ui/section/ColorSectionController2.kt b/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
similarity index 89%
rename from src/com/android/customization/picker/color/ui/section/ColorSectionController2.kt
rename to src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
index f1c982b..a36fd80 100644
--- a/src/com/android/customization/picker/color/ui/section/ColorSectionController2.kt
+++ b/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
@@ -22,37 +22,37 @@
import androidx.lifecycle.LifecycleOwner
import com.android.customization.picker.color.ui.binder.ColorSectionViewBinder
import com.android.customization.picker.color.ui.fragment.ColorPickerFragment
-import com.android.customization.picker.color.ui.view.ColorSectionView2
+import com.android.customization.picker.color.ui.view.ColorSectionView
import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
import com.android.wallpaper.R
import com.android.wallpaper.model.CustomizationSectionController
import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController as NavigationController
-class ColorSectionController2(
+class ColorSectionController(
private val navigationController: NavigationController,
private val viewModel: ColorPickerViewModel,
private val lifecycleOwner: LifecycleOwner
-) : CustomizationSectionController<ColorSectionView2> {
+) : CustomizationSectionController<ColorSectionView> {
override fun isAvailable(context: Context): Boolean {
return true
}
- override fun createView(context: Context): ColorSectionView2 {
+ override fun createView(context: Context): ColorSectionView {
return createView(context, CustomizationSectionController.ViewCreationParams())
}
override fun createView(
context: Context,
params: CustomizationSectionController.ViewCreationParams
- ): ColorSectionView2 {
+ ): ColorSectionView {
@SuppressWarnings("It is fine to inflate with null parent for our need.")
val view =
LayoutInflater.from(context)
.inflate(
- R.layout.color_section_view2,
+ R.layout.color_section_view,
null,
- ) as ColorSectionView2
+ ) as ColorSectionView
ColorSectionViewBinder.bind(
view = view,
viewModel = viewModel,
diff --git a/src/com/android/customization/picker/color/ui/view/ColorSectionView2.kt b/src/com/android/customization/picker/color/ui/view/ColorSectionView.kt
similarity index 90%
rename from src/com/android/customization/picker/color/ui/view/ColorSectionView2.kt
rename to src/com/android/customization/picker/color/ui/view/ColorSectionView.kt
index 7a8f21a..a89292d 100644
--- a/src/com/android/customization/picker/color/ui/view/ColorSectionView2.kt
+++ b/src/com/android/customization/picker/color/ui/view/ColorSectionView.kt
@@ -23,4 +23,4 @@
* The class inherits from {@link SectionView} as the view representing the color section of the
* customization picker. It displays a list of color options and an overflow option.
*/
-class ColorSectionView2(context: Context, attrs: AttributeSet?) : SectionView(context, attrs)
+class ColorSectionView(context: Context, attrs: AttributeSet?) : SectionView(context, attrs)
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
deleted file mode 100644
index 4de1dab..0000000
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-package com.android.customization.picker.grid;
-
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY_TEXT;
-
-import android.content.Context;
-import android.graphics.Point;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityManager;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.constraintlayout.widget.ConstraintSet;
-import androidx.core.widget.ContentLoadingProgressBar;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.customization.model.CustomizationManager.Callback;
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.grid.GridOption;
-import com.android.customization.model.grid.GridOptionViewModel;
-import com.android.customization.model.grid.GridOptionsManager;
-import com.android.customization.module.ThemesUserEventLogger;
-import com.android.customization.picker.WallpaperPreviewer;
-import com.android.customization.widget.OptionSelectorController;
-import com.android.customization.widget.OptionSelectorController.CheckmarkStyle;
-import com.android.wallpaper.R;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
-import com.android.wallpaper.module.InjectorProvider;
-import com.android.wallpaper.picker.AppbarFragment;
-import com.android.wallpaper.util.LaunchUtils;
-import com.android.wallpaper.util.ScreenSizeCalculator;
-import com.android.wallpaper.widget.BottomActionBar;
-
-import com.bumptech.glide.Glide;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Fragment that contains the UI for selecting and applying a GridOption.
- */
-public class GridFragment extends AppbarFragment {
-
- private static final String TAG = "GridFragment";
-
- private WallpaperInfo mHomeWallpaper;
- private RecyclerView mOptionsContainer;
- private OptionSelectorController<GridOption> mOptionsController;
- private GridOptionsManager mGridManager;
- private ContentLoadingProgressBar mLoading;
- private ConstraintLayout mContent;
- private View mError;
- private BottomActionBar mBottomActionBar;
- private ThemesUserEventLogger mEventLogger;
- private GridOptionPreviewer mGridOptionPreviewer;
- private GridOptionViewModel mGridOptionViewModel;
-
- private final Callback mApplyGridCallback = new Callback() {
- @Override
- public void onSuccess() {
- mGridManager.fetchOptions(unused -> {}, true);
- Toast.makeText(getContext(), R.string.applied_grid_msg, Toast.LENGTH_SHORT).show();
- getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- getActivity().finish();
-
- // Go back to launcher home
- LaunchUtils.launchHome(getContext());
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- // Since we disabled it when clicked apply button.
- mBottomActionBar.enableActions();
- mBottomActionBar.hide();
- mGridOptionViewModel.setBottomActionBarVisible(false);
- //TODO(chihhangchuang): handle
- }
- };
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mGridOptionViewModel = new ViewModelProvider(requireActivity()).get(
- GridOptionViewModel.class);
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(
- R.layout.fragment_grid_picker, container, /* attachToRoot */ false);
- setUpToolbar(view);
- mContent = view.findViewById(R.id.content_section);
- mOptionsContainer = view.findViewById(R.id.options_container);
- AccessibilityManager accessibilityManager =
- (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
- if (accessibilityManager.isEnabled()) {
- // Make Talkback focus won't reset when notifyDataSetChange
- mOptionsContainer.setItemAnimator(null);
- }
-
- // Set aspect ratio on the preview card dynamically.
- Point mScreenSize;
- ScreenSizeCalculator screenSizeCalculator = ScreenSizeCalculator.getInstance();
- mScreenSize = screenSizeCalculator.getScreenSize(
- requireActivity().getWindowManager().getDefaultDisplay());
- ConstraintSet set = new ConstraintSet();
- set.clone(mContent);
- String ratio = String.format(Locale.US, "%d:%d", mScreenSize.x, mScreenSize.y);
- set.setDimensionRatio(R.id.preview_card_container, ratio);
- set.applyTo(mContent);
-
- mLoading = view.findViewById(R.id.loading_indicator);
- mError = view.findViewById(R.id.error_section);
-
- // For nav bar edge-to-edge effect.
- view.setOnApplyWindowInsetsListener((v, windowInsets) -> {
- v.setPadding(
- v.getPaddingLeft(),
- windowInsets.getSystemWindowInsetTop(),
- v.getPaddingRight(),
- windowInsets.getSystemWindowInsetBottom());
- return windowInsets.consumeSystemWindowInsets();
- });
-
- // Clear memory cache whenever grid fragment view is being loaded.
- Glide.get(getContext()).clearMemory();
-
- mGridManager = GridOptionsManager.getInstance(getContext());
- mEventLogger = (ThemesUserEventLogger) InjectorProvider.getInjector()
- .getUserEventLogger(getContext());
- setUpOptions();
-
- SurfaceView wallpaperSurface = view.findViewById(R.id.wallpaper_preview_surface);
- WallpaperPreviewer wallpaperPreviewer = new WallpaperPreviewer(getLifecycle(),
- getActivity(), view.findViewById(R.id.wallpaper_preview_image), wallpaperSurface,
- view.findViewById(R.id.grid_fadein_scrim));
- // Loads current Wallpaper.
- CurrentWallpaperInfoFactory factory = InjectorProvider.getInjector()
- .getCurrentWallpaperInfoFactory(getContext().getApplicationContext());
- factory.createCurrentWallpaperInfos((homeWallpaper, lockWallpaper, presentationMode) -> {
- mHomeWallpaper = homeWallpaper;
- wallpaperPreviewer.setWallpaper(mHomeWallpaper, /* listener= */ null);
- }, false);
-
- mGridOptionPreviewer = new GridOptionPreviewer(mGridManager,
- view.findViewById(R.id.grid_preview_container));
-
- return view;
- }
-
- @Override
- public boolean onBackPressed() {
- mGridOptionViewModel.setSelectedOption(null);
- mGridOptionViewModel.setBottomActionBarVisible(false);
- return super.onBackPressed();
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (mGridOptionPreviewer != null) {
- mGridOptionPreviewer.release();
- }
- }
-
- @Override
- public CharSequence getDefaultTitle() {
- return getString(R.string.grid_title);
- }
-
- @Override
- protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
- super.onBottomActionBarReady(bottomActionBar);
- mBottomActionBar = bottomActionBar;
- mBottomActionBar.showActionsOnly(APPLY_TEXT);
- mBottomActionBar.setActionClickListener(APPLY_TEXT,
- v -> applyGridOption(mGridOptionViewModel.getSelectedOption()));
- mBottomActionBar.setActionAccessibilityTraversalAfter(APPLY_TEXT,
- mOptionsContainer.getId());
- }
-
- private void applyGridOption(GridOption gridOption) {
- mBottomActionBar.disableActions();
- mGridManager.apply(gridOption, mApplyGridCallback);
- }
-
- private void setUpOptions() {
- hideError();
- mLoading.show();
- mGridManager.fetchOptions(new OptionsFetchedListener<GridOption>() {
- @Override
- public void onOptionsLoaded(List<GridOption> options) {
- mLoading.hide();
- mOptionsController = new OptionSelectorController<>(
- mOptionsContainer, options, /* useGrid= */ false,
- CheckmarkStyle.CENTER_CHANGE_COLOR_WHEN_NOT_SELECTED);
- mOptionsController.initOptions(mGridManager);
- GridOption previouslySelectedOption = findEquivalent(options,
- mGridOptionViewModel.getSelectedOption());
- mGridOptionViewModel.setSelectedOption(
- previouslySelectedOption != null
- ? previouslySelectedOption
- : getActiveOption(options));
-
- mOptionsController.setSelectedOption(mGridOptionViewModel.getSelectedOption());
- onOptionSelected(mGridOptionViewModel.getSelectedOption());
- restoreBottomActionBarVisibility();
-
- mOptionsController.addListener(selectedOption -> {
- String title = selectedOption.getTitle();
- int stringId = R.string.option_previewed_description;
- if (selectedOption.isActive(mGridManager)) {
- stringId = R.string.option_applied_previewed_description;
- }
- CharSequence cd = getContext().getString(stringId, title);
- mOptionsContainer.announceForAccessibility(cd);
- onOptionSelected(selectedOption);
- mBottomActionBar.show();
- mGridOptionViewModel.setBottomActionBarVisible(true);
- });
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- if (throwable != null) {
- Log.e(TAG, "Error loading grid options", throwable);
- }
- showError();
- }
- }, /*reload= */ true);
- }
-
- private GridOption getActiveOption(List<GridOption> options) {
- return options.stream()
- .filter(option -> option.isActive(mGridManager))
- .findAny()
- // For development only, as there should always be a grid set.
- .orElse(options.get(0));
- }
-
- @Nullable
- private GridOption findEquivalent(List<GridOption> options, GridOption target) {
- return options.stream()
- .filter(option -> option.equals(target))
- .findAny()
- .orElse(null);
- }
-
- 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 onOptionSelected(CustomizationOption selectedOption) {
- mGridOptionViewModel.setSelectedOption((GridOption) selectedOption);
- mEventLogger.logGridSelected(mGridOptionViewModel.getSelectedOption());
- mGridOptionPreviewer.setGridOption(mGridOptionViewModel.getSelectedOption());
- }
-
- private void restoreBottomActionBarVisibility() {
- if (mGridOptionViewModel.getBottomActionBarVisible()) {
- mBottomActionBar.show();
- } else {
- mBottomActionBar.hide();
- }
- }
-}
diff --git a/src/com/android/customization/picker/grid/GridOptionPreviewer.java b/src/com/android/customization/picker/grid/GridOptionPreviewer.java
deleted file mode 100644
index 7786d35..0000000
--- a/src/com/android/customization/picker/grid/GridOptionPreviewer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2020 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.
- */
-package com.android.customization.picker.grid;
-
-import android.content.Context;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.ViewGroup;
-
-import com.android.customization.model.grid.GridOption;
-import com.android.customization.model.grid.GridOptionsManager;
-import com.android.wallpaper.R;
-import com.android.wallpaper.picker.WorkspaceSurfaceHolderCallback;
-import com.android.wallpaper.util.PreviewUtils;
-import com.android.wallpaper.util.SurfaceViewUtils;
-
-/** A class to load the {@link GridOption} preview to the view. */
-class GridOptionPreviewer {
-
- private final GridOptionsManager mGridManager;
- private final ViewGroup mPreviewContainer;
-
- private SurfaceView mGridOptionSurface;
- private GridOption mGridOption;
- private GridOptionSurfaceHolderCallback mSurfaceCallback;
-
- GridOptionPreviewer(GridOptionsManager gridManager, ViewGroup previewContainer) {
- mGridManager = gridManager;
- mPreviewContainer = previewContainer;
- }
-
- /** Loads the Grid option into the container view. */
- public void setGridOption(GridOption gridOption) {
- mGridOption = gridOption;
- if (mGridOption != null) {
- updateWorkspacePreview();
- }
- }
-
- /** Releases the view resource. */
- public void release() {
- if (mGridOptionSurface != null) {
- mSurfaceCallback.cleanUp();
- mGridOptionSurface = null;
- }
- mPreviewContainer.removeAllViews();
- }
-
- private void updateWorkspacePreview() {
- // Reattach SurfaceView to trigger #surfaceCreated to update preview for different option.
- mPreviewContainer.removeAllViews();
- if (mSurfaceCallback != null) {
- mSurfaceCallback.cleanUp();
- mSurfaceCallback.resetLastSurface();
- if (mGridOptionSurface != null) {
- mGridOptionSurface.getHolder().removeCallback(mSurfaceCallback);
- }
- }
- mGridOptionSurface = new SurfaceView(mPreviewContainer.getContext());
- mGridOptionSurface.setLayoutParams(new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
- mGridOptionSurface.setZOrderMediaOverlay(true);
- mSurfaceCallback = new GridOptionSurfaceHolderCallback(mGridOptionSurface,
- mGridOptionSurface.getContext());
- mGridOptionSurface.getHolder().addCallback(mSurfaceCallback);
- mPreviewContainer.addView(mGridOptionSurface);
- }
-
- private class GridOptionSurfaceHolderCallback extends WorkspaceSurfaceHolderCallback {
- private GridOptionSurfaceHolderCallback(SurfaceView workspaceSurface, Context context) {
- super(
- workspaceSurface,
- new PreviewUtils(
- context, context.getString(R.string.grid_control_metadata_name)));
- }
-
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- if (mGridOption != null) {
- super.surfaceCreated(holder);
- }
- }
-
- @Override
- protected void requestPreview(SurfaceView workspaceSurface,
- PreviewUtils.WorkspacePreviewCallback callback) {
- mGridManager.renderPreview(
- SurfaceViewUtils.createSurfaceViewRequest(workspaceSurface),
- mGridOption.name, callback);
- }
- }
-}
diff --git a/src/com/android/customization/model/grid/data/repository/GridRepository.kt b/src/com/android/customization/picker/grid/data/repository/GridRepository.kt
similarity index 96%
rename from src/com/android/customization/model/grid/data/repository/GridRepository.kt
rename to src/com/android/customization/picker/grid/data/repository/GridRepository.kt
index 4379dad..f384429 100644
--- a/src/com/android/customization/model/grid/data/repository/GridRepository.kt
+++ b/src/com/android/customization/picker/grid/data/repository/GridRepository.kt
@@ -15,15 +15,15 @@
*
*/
-package com.android.customization.model.grid.data.repository
+package com.android.customization.picker.grid.data.repository
import androidx.lifecycle.asFlow
import com.android.customization.model.CustomizationManager
import com.android.customization.model.CustomizationManager.Callback
import com.android.customization.model.grid.GridOption
import com.android.customization.model.grid.GridOptionsManager
-import com.android.customization.model.grid.shared.model.GridOptionItemModel
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.shared.model.GridOptionItemModel
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import kotlin.coroutines.resume
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
diff --git a/src/com/android/customization/model/grid/domain/interactor/GridInteractor.kt b/src/com/android/customization/picker/grid/domain/interactor/GridInteractor.kt
similarity index 93%
rename from src/com/android/customization/model/grid/domain/interactor/GridInteractor.kt
rename to src/com/android/customization/picker/grid/domain/interactor/GridInteractor.kt
index 7abd605..02e16dd 100644
--- a/src/com/android/customization/model/grid/domain/interactor/GridInteractor.kt
+++ b/src/com/android/customization/picker/grid/domain/interactor/GridInteractor.kt
@@ -15,13 +15,13 @@
*
*/
-package com.android.customization.model.grid.domain.interactor
+package com.android.customization.picker.grid.domain.interactor
import com.android.customization.model.CustomizationManager
import com.android.customization.model.grid.GridOption
-import com.android.customization.model.grid.data.repository.GridRepository
-import com.android.customization.model.grid.shared.model.GridOptionItemModel
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.data.repository.GridRepository
+import com.android.customization.picker.grid.shared.model.GridOptionItemModel
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import javax.inject.Provider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
diff --git a/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt b/src/com/android/customization/picker/grid/domain/interactor/GridSnapshotRestorer.kt
similarity index 94%
rename from src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt
rename to src/com/android/customization/picker/grid/domain/interactor/GridSnapshotRestorer.kt
index 19d4c77..74d77f7 100644
--- a/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt
+++ b/src/com/android/customization/picker/grid/domain/interactor/GridSnapshotRestorer.kt
@@ -15,10 +15,10 @@
*
*/
-package com.android.customization.model.grid.domain.interactor
+package com.android.customization.picker.grid.domain.interactor
import android.util.Log
-import com.android.customization.model.grid.shared.model.GridOptionItemModel
+import com.android.customization.picker.grid.shared.model.GridOptionItemModel
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotStore
import com.android.wallpaper.picker.undo.shared.model.RestorableSnapshot
diff --git a/src/com/android/customization/model/grid/shared/model/GridOptionItemModel.kt b/src/com/android/customization/picker/grid/shared/model/GridOptionItemModel.kt
similarity index 93%
rename from src/com/android/customization/model/grid/shared/model/GridOptionItemModel.kt
rename to src/com/android/customization/picker/grid/shared/model/GridOptionItemModel.kt
index 2eabeab..1fb01be 100644
--- a/src/com/android/customization/model/grid/shared/model/GridOptionItemModel.kt
+++ b/src/com/android/customization/picker/grid/shared/model/GridOptionItemModel.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.shared.model
+package com.android.customization.picker.grid.shared.model
import kotlinx.coroutines.flow.StateFlow
diff --git a/src/com/android/customization/model/grid/shared/model/GridOptionItemsModel.kt b/src/com/android/customization/picker/grid/shared/model/GridOptionItemsModel.kt
similarity index 93%
rename from src/com/android/customization/model/grid/shared/model/GridOptionItemsModel.kt
rename to src/com/android/customization/picker/grid/shared/model/GridOptionItemsModel.kt
index e969be8..e5b33c5 100644
--- a/src/com/android/customization/model/grid/shared/model/GridOptionItemsModel.kt
+++ b/src/com/android/customization/picker/grid/shared/model/GridOptionItemsModel.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.shared.model
+package com.android.customization.picker.grid.shared.model
sealed class GridOptionItemsModel {
data class Loaded(
diff --git a/src/com/android/customization/model/grid/ui/binder/GridIconViewBinder.kt b/src/com/android/customization/picker/grid/ui/binder/GridIconViewBinder.kt
similarity index 73%
rename from src/com/android/customization/model/grid/ui/binder/GridIconViewBinder.kt
rename to src/com/android/customization/picker/grid/ui/binder/GridIconViewBinder.kt
index fba89a7..9fc88a0 100644
--- a/src/com/android/customization/model/grid/ui/binder/GridIconViewBinder.kt
+++ b/src/com/android/customization/picker/grid/ui/binder/GridIconViewBinder.kt
@@ -1,7 +1,7 @@
-package com.android.customization.model.grid.ui.binder
+package com.android.customization.picker.grid.ui.binder
import android.widget.ImageView
-import com.android.customization.model.grid.ui.viewmodel.GridIconViewModel
+import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
import com.android.customization.widget.GridTileDrawable
object GridIconViewBinder {
diff --git a/src/com/android/customization/model/grid/ui/binder/GridScreenBinder.kt b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
similarity index 92%
rename from src/com/android/customization/model/grid/ui/binder/GridScreenBinder.kt
rename to src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
index 56fe425..bcb3737 100644
--- a/src/com/android/customization/model/grid/ui/binder/GridScreenBinder.kt
+++ b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.ui.binder
+package com.android.customization.picker.grid.ui.binder
import android.view.View
import android.widget.Button
@@ -26,9 +26,9 @@
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import com.android.customization.model.grid.ui.viewmodel.GridIconViewModel
-import com.android.customization.model.grid.ui.viewmodel.GridScreenViewModel
import com.android.customization.picker.common.ui.view.ItemSpacing
+import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
+import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
import com.android.wallpaper.R
import com.android.wallpaper.picker.option.ui.adapter.OptionItemAdapter
import com.android.wallpaper.picker.option.ui.binder.OptionItemBinder
@@ -55,7 +55,7 @@
optionView.addItemDecoration(ItemSpacing(ItemSpacing.ITEM_SPACING_DP))
val adapter =
OptionItemAdapter(
- layoutResourceId = R.layout.grid_option_2,
+ layoutResourceId = R.layout.grid_option,
lifecycleOwner = lifecycleOwner,
backgroundDispatcher = backgroundDispatcher,
foregroundTintSpec =
diff --git a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt b/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
similarity index 92%
rename from src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
rename to src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
index 9e99efe..2a301b4 100644
--- a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
+++ b/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.ui.fragment
+package com.android.customization.picker.grid.ui.fragment
import android.os.Bundle
import android.util.Log
@@ -30,10 +30,10 @@
import androidx.transition.Transition
import androidx.transition.doOnStart
import com.android.customization.model.CustomizationManager.Callback
-import com.android.customization.model.grid.domain.interactor.GridInteractor
-import com.android.customization.model.grid.ui.binder.GridScreenBinder
-import com.android.customization.model.grid.ui.viewmodel.GridScreenViewModel
import com.android.customization.module.ThemePickerInjector
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.ui.binder.GridScreenBinder
+import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
import com.android.wallpaper.R
import com.android.wallpaper.config.BaseFlags
import com.android.wallpaper.module.CurrentWallpaperInfoFactory
@@ -48,10 +48,10 @@
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.suspendCancellableCoroutine
-private val TAG = GridFragment2::class.java.simpleName
+private val TAG = GridFragment::class.java.simpleName
@OptIn(ExperimentalCoroutinesApi::class)
-class GridFragment2 : AppbarFragment() {
+class GridFragment : AppbarFragment() {
private lateinit var gridInteractor: GridInteractor
@@ -185,11 +185,11 @@
wallpaperInfoProvider = {
suspendCancellableCoroutine { continuation ->
wallpaperInfoFactory.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- continuation.resume(homeWallpaper ?: lockWallpaper, null)
- },
+ context,
/* forceRefresh= */ true,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ continuation.resume(homeWallpaper ?: lockWallpaper, null)
+ }
}
},
wallpaperInteractor = wallpaperInteractor,
diff --git a/src/com/android/customization/model/grid/GridSectionController.java b/src/com/android/customization/picker/grid/ui/section/GridSectionController.java
similarity index 83%
rename from src/com/android/customization/model/grid/GridSectionController.java
rename to src/com/android/customization/picker/grid/ui/section/GridSectionController.java
index c50bfcc..6ae9acd 100644
--- a/src/com/android/customization/model/grid/GridSectionController.java
+++ b/src/com/android/customization/picker/grid/ui/section/GridSectionController.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.customization.model.grid;
+package com.android.customization.picker.grid.ui.section;
import android.content.Context;
import android.util.Log;
@@ -27,9 +27,10 @@
import androidx.lifecycle.Observer;
import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.grid.ui.fragment.GridFragment2;
-import com.android.customization.picker.grid.GridFragment;
-import com.android.customization.picker.grid.GridSectionView;
+import com.android.customization.model.grid.GridOption;
+import com.android.customization.model.grid.GridOptionsManager;
+import com.android.customization.picker.grid.ui.fragment.GridFragment;
+import com.android.customization.picker.grid.ui.view.GridSectionView;
import com.android.wallpaper.R;
import com.android.wallpaper.model.CustomizationSectionController;
@@ -42,7 +43,6 @@
private final GridOptionsManager mGridOptionsManager;
private final CustomizationSectionNavigationController mSectionNavigationController;
- private final boolean mIsRevampedUiEnabled;
private final Observer<Object> mOptionChangeObserver;
private final LifecycleOwner mLifecycleOwner;
private TextView mSectionDescription;
@@ -55,7 +55,6 @@
boolean isRevampedUiEnabled) {
mGridOptionsManager = gridOptionsManager;
mSectionNavigationController = sectionNavigationController;
- mIsRevampedUiEnabled = isRevampedUiEnabled;
mLifecycleOwner = lifecycleOwner;
mOptionChangeObserver = o -> updateUi(/* reload= */ true);
}
@@ -74,20 +73,13 @@
// Fetch grid options to show currently set grid.
updateUi(/* The result is getting when calling isAvailable(), so reload= */ false);
- if (mIsRevampedUiEnabled) {
- mGridOptionsManager.getOptionChangeObservable(/* handler= */ null).observe(
- mLifecycleOwner,
- mOptionChangeObserver);
- }
+ mGridOptionsManager.getOptionChangeObservable(/* handler= */ null).observe(
+ mLifecycleOwner,
+ mOptionChangeObserver);
gridSectionView.setOnClickListener(
v -> {
- final Fragment gridFragment;
- if (mIsRevampedUiEnabled) {
- gridFragment = new GridFragment2();
- } else {
- gridFragment = new GridFragment();
- }
+ final Fragment gridFragment = new GridFragment();
mSectionNavigationController.navigateTo(gridFragment);
});
@@ -96,7 +88,7 @@
@Override
public void release() {
- if (mIsRevampedUiEnabled && mGridOptionsManager.isAvailable()) {
+ if (mGridOptionsManager.isAvailable()) {
mGridOptionsManager.getOptionChangeObservable(/* handler= */ null).removeObserver(
mOptionChangeObserver
);
diff --git a/src/com/android/customization/picker/grid/GridSectionView.java b/src/com/android/customization/picker/grid/ui/view/GridSectionView.java
similarity index 94%
rename from src/com/android/customization/picker/grid/GridSectionView.java
rename to src/com/android/customization/picker/grid/ui/view/GridSectionView.java
index 58468e1..545ef19 100644
--- a/src/com/android/customization/picker/grid/GridSectionView.java
+++ b/src/com/android/customization/picker/grid/ui/view/GridSectionView.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.customization.picker.grid;
+package com.android.customization.picker.grid.ui.view;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/src/com/android/customization/model/grid/ui/viewmodel/GridIconViewModel.kt b/src/com/android/customization/picker/grid/ui/viewmodel/GridIconViewModel.kt
similarity index 92%
rename from src/com/android/customization/model/grid/ui/viewmodel/GridIconViewModel.kt
rename to src/com/android/customization/picker/grid/ui/viewmodel/GridIconViewModel.kt
index 3942d7c..d12dc6c 100644
--- a/src/com/android/customization/model/grid/ui/viewmodel/GridIconViewModel.kt
+++ b/src/com/android/customization/picker/grid/ui/viewmodel/GridIconViewModel.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.ui.viewmodel
+package com.android.customization.picker.grid.ui.viewmodel
data class GridIconViewModel(
val columns: Int,
diff --git a/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModel.kt b/src/com/android/customization/picker/grid/ui/viewmodel/GridScreenViewModel.kt
similarity index 94%
rename from src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModel.kt
rename to src/com/android/customization/picker/grid/ui/viewmodel/GridScreenViewModel.kt
index c11a594..179127d 100644
--- a/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModel.kt
+++ b/src/com/android/customization/picker/grid/ui/viewmodel/GridScreenViewModel.kt
@@ -15,7 +15,7 @@
*
*/
-package com.android.customization.model.grid.ui.viewmodel
+package com.android.customization.picker.grid.ui.viewmodel
import android.annotation.SuppressLint
import android.content.Context
@@ -24,8 +24,8 @@
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.android.customization.model.ResourceConstants
-import com.android.customization.model.grid.domain.interactor.GridInteractor
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
import kotlinx.coroutines.flow.Flow
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
index 71dfe1d..eb25af7 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
@@ -42,10 +42,10 @@
import com.android.wallpaper.R
import com.android.wallpaper.model.CustomizationSectionController
import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
-import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.model.WallpaperPreviewNavigator
import com.android.wallpaper.module.CurrentWallpaperInfoFactory
import com.android.wallpaper.module.CustomizationSections
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewClickView
import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController
@@ -64,7 +64,7 @@
private val lifecycleOwner: LifecycleOwner,
private val screen: CustomizationSections.Screen,
wallpaperInfoFactory: CurrentWallpaperInfoFactory,
- colorViewModel: WallpaperColorsViewModel,
+ wallpaperColorsRepository: WallpaperColorsRepository,
displayUtils: DisplayUtils,
clockCarouselViewModelFactory: ClockCarouselViewModel.Factory,
private val clockViewFactory: ClockViewFactory,
@@ -82,7 +82,7 @@
lifecycleOwner,
screen,
wallpaperInfoFactory,
- colorViewModel,
+ wallpaperColorsRepository,
displayUtils,
wallpaperPreviewNavigator,
wallpaperInteractor,
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt
index c4d6be4..b3e778b 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt
@@ -25,16 +25,17 @@
import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
import com.android.customization.picker.preview.ui.viewmodel.PreviewWithThemeViewModel
import com.android.wallpaper.R
-import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.model.WallpaperPreviewNavigator
import com.android.wallpaper.module.CurrentWallpaperInfoFactory
import com.android.wallpaper.module.CustomizationSections
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController
import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationPickerViewModel
import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
import com.android.wallpaper.util.DisplayUtils
import com.android.wallpaper.util.PreviewUtils
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.suspendCancellableCoroutine
/**
@@ -46,7 +47,7 @@
lifecycleOwner: LifecycleOwner,
private val screen: CustomizationSections.Screen,
private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
- private val colorViewModel: WallpaperColorsViewModel,
+ private val wallpaperColorsRepository: WallpaperColorsRepository,
displayUtils: DisplayUtils,
wallpaperPreviewNavigator: WallpaperPreviewNavigator,
private val wallpaperInteractor: WallpaperInteractor,
@@ -61,7 +62,7 @@
lifecycleOwner,
screen,
wallpaperInfoFactory,
- colorViewModel,
+ wallpaperColorsRepository,
displayUtils,
wallpaperPreviewNavigator,
wallpaperInteractor,
@@ -69,6 +70,7 @@
isTwoPaneAndSmallWidth,
customizationPickerViewModel,
) {
+ @OptIn(ExperimentalCoroutinesApi::class)
override fun createScreenPreviewViewModel(context: Context): ScreenPreviewViewModel {
return PreviewWithThemeViewModel(
previewUtils =
@@ -92,28 +94,28 @@
wallpaperInfoProvider = { forceReload ->
suspendCancellableCoroutine { continuation ->
wallpaperInfoFactory.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- val wallpaper =
- if (isOnLockScreen) {
- lockWallpaper ?: homeWallpaper
- } else {
- homeWallpaper ?: lockWallpaper
- }
- loadInitialColors(
- context = context,
- screen = screen,
- )
- continuation.resume(wallpaper, null)
- },
+ context,
forceReload,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ val wallpaper =
+ if (isOnLockScreen) {
+ lockWallpaper ?: homeWallpaper
+ } else {
+ homeWallpaper ?: lockWallpaper
+ }
+ loadInitialColors(
+ context = context,
+ screen = screen,
+ )
+ continuation.resume(wallpaper, null)
+ }
}
},
onWallpaperColorChanged = { colors ->
if (isOnLockScreen) {
- colorViewModel.setLockWallpaperColors(colors)
+ wallpaperColorsRepository.setLockWallpaperColors(colors)
} else {
- colorViewModel.setHomeWallpaperColors(colors)
+ wallpaperColorsRepository.setHomeWallpaperColors(colors)
}
},
initialExtrasProvider = { getInitialExtras(isOnLockScreen) },
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index f832cde..809d20e 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -92,11 +92,11 @@
wallpaperInfoProvider = { forceReload ->
suspendCancellableCoroutine { continuation ->
wallpaperInfoFactory.createCurrentWallpaperInfos(
- { homeWallpaper, lockWallpaper, _ ->
- continuation.resume(lockWallpaper ?: homeWallpaper, null)
- },
+ context,
forceReload,
- )
+ ) { homeWallpaper, lockWallpaper, _ ->
+ continuation.resume(lockWallpaper ?: homeWallpaper, null)
+ }
}
},
wallpaperInteractor = wallpaperInteractor,
diff --git a/src/com/android/customization/picker/theme/CustomThemeActivity.java b/src/com/android/customization/picker/theme/CustomThemeActivity.java
deleted file mode 100644
index 62a2f26..0000000
--- a/src/com/android/customization/picker/theme/CustomThemeActivity.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.picker.theme;
-
-import android.app.AlertDialog.Builder;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.Nullable;
-import androidx.annotation.StringRes;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-import com.android.customization.model.CustomizationManager.Callback;
-import com.android.customization.model.theme.DefaultThemeProvider;
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.customization.model.theme.ThemeBundleProvider;
-import com.android.customization.model.theme.ThemeManager;
-import com.android.customization.model.theme.custom.ColorOptionsProvider;
-import com.android.customization.model.theme.custom.CustomTheme;
-import com.android.customization.model.theme.custom.CustomThemeManager;
-import com.android.customization.model.theme.custom.FontOptionsProvider;
-import com.android.customization.model.theme.custom.IconOptionsProvider;
-import com.android.customization.model.theme.custom.ShapeOptionsProvider;
-import com.android.customization.model.theme.custom.ThemeComponentOption;
-import com.android.customization.model.theme.custom.ThemeComponentOption.ColorOption;
-import com.android.customization.model.theme.custom.ThemeComponentOption.FontOption;
-import com.android.customization.model.theme.custom.ThemeComponentOption.IconOption;
-import com.android.customization.model.theme.custom.ThemeComponentOption.ShapeOption;
-import com.android.customization.model.theme.custom.ThemeComponentOptionProvider;
-import com.android.customization.module.CustomizationInjector;
-import com.android.customization.module.ThemesUserEventLogger;
-import com.android.customization.picker.theme.CustomThemeStepFragment.CustomThemeComponentStepHost;
-import com.android.wallpaper.R;
-import com.android.wallpaper.module.InjectorProvider;
-import com.android.wallpaper.picker.AppbarFragment.AppbarFragmentHost;
-
-import org.json.JSONException;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class CustomThemeActivity extends FragmentActivity implements
- AppbarFragmentHost, CustomThemeComponentStepHost {
- public static final String EXTRA_THEME_ID = "CustomThemeActivity.ThemeId";
- public static final String EXTRA_THEME_TITLE = "CustomThemeActivity.ThemeTitle";
- public static final String EXTRA_THEME_PACKAGES = "CustomThemeActivity.ThemePackages";
- public static final int REQUEST_CODE_CUSTOM_THEME = 1;
- public static final int RESULT_THEME_DELETED = 10;
- public static final int RESULT_THEME_APPLIED = 20;
-
- private static final String TAG = "CustomThemeActivity";
- private static final String KEY_STATE_CURRENT_STEP = "CustomThemeActivity.currentStep";
-
- private ThemesUserEventLogger mUserEventLogger;
- private List<ComponentStep<?>> mSteps;
- private int mCurrentStep;
- private CustomThemeManager mCustomThemeManager;
- private ThemeManager mThemeManager;
- private TextView mNextButton;
- private TextView mPreviousButton;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- CustomizationInjector injector = (CustomizationInjector) InjectorProvider.getInjector();
- mUserEventLogger = (ThemesUserEventLogger) injector.getUserEventLogger(this);
- ThemeBundleProvider themeProvider =
- new DefaultThemeProvider(this, injector.getCustomizationPreferences(this));
- Intent intent = getIntent();
- CustomTheme customTheme = null;
- if (intent != null && intent.hasExtra(EXTRA_THEME_PACKAGES)
- && intent.hasExtra(EXTRA_THEME_TITLE) && intent.hasExtra(EXTRA_THEME_ID)) {
- try {
- CustomTheme.Builder themeBuilder = themeProvider.parseCustomTheme(
- intent.getStringExtra(EXTRA_THEME_PACKAGES));
- if (themeBuilder != null) {
- themeBuilder.setId(intent.getStringExtra(EXTRA_THEME_ID));
- themeBuilder.setTitle(intent.getStringExtra(EXTRA_THEME_TITLE));
- customTheme = themeBuilder.build(this);
- }
- } catch (JSONException e) {
- Log.w(TAG, "Couldn't parse provided custom theme, will override it");
- }
- }
-
- mThemeManager = injector.getThemeManager(
- new DefaultThemeProvider(this, injector.getCustomizationPreferences(this)),
- this,
- new OverlayManagerCompat(this),
- mUserEventLogger);
- mThemeManager.fetchOptions(null, false);
- mCustomThemeManager = CustomThemeManager.create(customTheme, mThemeManager);
- if (savedInstanceState != null) {
- mCustomThemeManager.readCustomTheme(themeProvider, savedInstanceState);
- }
-
- int currentStep = 0;
- if (savedInstanceState != null) {
- currentStep = savedInstanceState.getInt(KEY_STATE_CURRENT_STEP);
- }
- initSteps(currentStep);
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_custom_theme);
- mNextButton = findViewById(R.id.next_button);
- mNextButton.setOnClickListener(view -> onNextOrApply());
- mPreviousButton = findViewById(R.id.previous_button);
- mPreviousButton.setOnClickListener(view -> onBackPressed());
-
- FragmentManager fm = getSupportFragmentManager();
- Fragment fragment = fm.findFragmentById(R.id.fragment_container);
- if (fragment == null) {
- // Navigate to the first step
- navigateToStep(0);
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putInt(KEY_STATE_CURRENT_STEP, mCurrentStep);
- if (mCustomThemeManager != null) {
- mCustomThemeManager.saveCustomTheme(this, outState);
- }
- }
-
- private void navigateToStep(int i) {
- FragmentManager fragmentManager = getSupportFragmentManager();
- ComponentStep step = mSteps.get(i);
- Fragment fragment = step.getFragment(mCustomThemeManager.getOriginalTheme().getTitle());
-
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
- fragmentTransaction.replace(R.id.fragment_container, fragment);
- // Don't add step 0 to the back stack so that going back from it just finishes the Activity
- if (i > 0) {
- fragmentTransaction.addToBackStack("Step " + i);
- }
- fragmentTransaction.commit();
- fragmentManager.executePendingTransactions();
- updateNavigationButtonLabels();
- }
-
- private void initSteps(int currentStep) {
- mSteps = new ArrayList<>();
- OverlayManagerCompat manager = new OverlayManagerCompat(this);
- mSteps.add(new FontStep(new FontOptionsProvider(this, manager), 0));
- mSteps.add(new IconStep(new IconOptionsProvider(this, manager), 1));
- mSteps.add(new ColorStep(new ColorOptionsProvider(this, manager, mCustomThemeManager), 2));
- mSteps.add(new ShapeStep(new ShapeOptionsProvider(this, manager), 3));
- mSteps.add(new NameStep(4));
- mCurrentStep = currentStep;
- }
-
- private void onNextOrApply() {
- CustomThemeStepFragment stepFragment = getCurrentStepFragment();
- if (stepFragment instanceof CustomThemeComponentFragment) {
- CustomThemeComponentFragment fragment = (CustomThemeComponentFragment) stepFragment;
- mCustomThemeManager.apply(fragment.getSelectedOption(), new Callback() {
- @Override
- public void onSuccess() {
- navigateToStep(mCurrentStep + 1);
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- Log.w(TAG, "Error applying custom theme component", throwable);
- Toast.makeText(CustomThemeActivity.this, R.string.apply_theme_error_msg,
- Toast.LENGTH_LONG).show();
- }
- });
- } else if (stepFragment instanceof CustomThemeNameFragment) {
- CustomThemeNameFragment fragment = (CustomThemeNameFragment) stepFragment;
- CustomTheme originalTheme = mCustomThemeManager.getOriginalTheme();
-
- // We're on the last step, apply theme and leave
- CustomTheme themeToApply = mCustomThemeManager.buildPartialCustomTheme(this,
- originalTheme.getId(), fragment.getThemeName());
-
- // If the current theme is equal to the original theme being edited, then
- // don't search for an equivalent, let the user apply the same one by keeping
- // it null.
- ThemeBundle equivalent = (originalTheme.isEquivalent(themeToApply))
- ? null : mThemeManager.findThemeByPackages(themeToApply);
-
- if (equivalent != null) {
- Builder builder =
- new Builder(CustomThemeActivity.this);
- builder.setTitle(getString(R.string.use_style_instead_title,
- equivalent.getTitle()))
- .setMessage(getString(R.string.use_style_instead_body,
- equivalent.getTitle()))
- .setPositiveButton(getString(R.string.use_style_button,
- equivalent.getTitle()),
- (dialogInterface, i) -> applyTheme(equivalent))
- .setNegativeButton(R.string.no_thanks, null)
- .create()
- .show();
- } else {
- applyTheme(themeToApply);
- }
- } else {
- throw new IllegalStateException("Unknown CustomThemeStepFragment");
- }
- }
-
- private void applyTheme(ThemeBundle themeToApply) {
- mThemeManager.apply(themeToApply, new Callback() {
- @Override
- public void onSuccess() {
- overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- Toast.makeText(getApplicationContext(), R.string.applied_theme_msg,
- Toast.LENGTH_LONG).show();
- setResult(RESULT_THEME_APPLIED);
- finish();
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- Log.w(TAG, "Error applying custom theme", throwable);
- Toast.makeText(CustomThemeActivity.this,
- R.string.apply_theme_error_msg,
- Toast.LENGTH_LONG).show();
- }
- });
- }
-
- private CustomThemeStepFragment getCurrentStepFragment() {
- return (CustomThemeStepFragment)
- getSupportFragmentManager().findFragmentById(R.id.fragment_container);
- }
-
- @Override
- public void setCurrentStep(int i) {
- mCurrentStep = i;
- updateNavigationButtonLabels();
- }
-
- private void updateNavigationButtonLabels() {
- mPreviousButton.setVisibility(mCurrentStep == 0 ? View.INVISIBLE : View.VISIBLE);
- mNextButton.setText((mCurrentStep < mSteps.size() -1) ? R.string.custom_theme_next
- : R.string.apply_btn);
- }
-
- @Override
- public void delete() {
- mThemeManager.removeCustomTheme(mCustomThemeManager.getOriginalTheme());
- setResult(RESULT_THEME_DELETED);
- finish();
- }
-
- @Override
- public void cancel() {
- finish();
- }
-
- @Override
- public ThemeComponentOptionProvider<? extends ThemeComponentOption> getComponentOptionProvider(
- int position) {
- return mSteps.get(position).provider;
- }
-
- @Override
- public CustomThemeManager getCustomThemeManager() {
- return mCustomThemeManager;
- }
-
- @Override
- public void onUpArrowPressed() {
- // Skip it because CustomThemeStepFragment will implement cancel button
- // (instead of up arrow) on action bar.
- }
-
- @Override
- public boolean isUpArrowSupported() {
- // Skip it because CustomThemeStepFragment will implement cancel button
- // (instead of up arrow) on action bar.
- return false;
- }
-
- /**
- * Represents a step in selecting a custom theme, picking a particular component (eg font,
- * color, shape, etc).
- * Each step has a Fragment instance associated that instances of this class will provide.
- */
- private static abstract class ComponentStep<T extends ThemeComponentOption> {
- @StringRes final int titleResId;
- @StringRes final int accessibilityResId;
- final ThemeComponentOptionProvider<T> provider;
- final int position;
- private CustomThemeStepFragment mFragment;
-
- protected ComponentStep(@StringRes int titleResId, @StringRes int accessibilityResId,
- ThemeComponentOptionProvider<T> provider, int position) {
- this.titleResId = titleResId;
- this.accessibilityResId = accessibilityResId;
- this.provider = provider;
- this.position = position;
- }
-
- CustomThemeStepFragment getFragment(String title) {
- if (mFragment == null) {
- mFragment = createFragment(title);
- }
- return mFragment;
- }
-
- /**
- * @return a newly created fragment that will handle this step's UI.
- */
- abstract CustomThemeStepFragment createFragment(String title);
- }
-
- private class FontStep extends ComponentStep<FontOption> {
-
- protected FontStep(ThemeComponentOptionProvider<FontOption> provider,
- int position) {
- super(R.string.font_component_title, R.string.accessibility_custom_font_title, provider,
- position);
- }
-
- @Override
- CustomThemeComponentFragment createFragment(String title) {
- return CustomThemeComponentFragment.newInstance(
- title,
- position,
- titleResId,
- accessibilityResId);
- }
- }
-
- private class IconStep extends ComponentStep<IconOption> {
-
- protected IconStep(ThemeComponentOptionProvider<IconOption> provider,
- int position) {
- super(R.string.icon_component_title, R.string.accessibility_custom_icon_title, provider,
- position);
- }
-
- @Override
- CustomThemeComponentFragment createFragment(String title) {
- return CustomThemeComponentFragment.newInstance(
- title,
- position,
- titleResId,
- accessibilityResId);
- }
- }
-
- private class ColorStep extends ComponentStep<ColorOption> {
-
- protected ColorStep(ThemeComponentOptionProvider<ColorOption> provider,
- int position) {
- super(R.string.color_component_title, R.string.accessibility_custom_color_title,
- provider, position);
- }
-
- @Override
- CustomThemeComponentFragment createFragment(String title) {
- return CustomThemeComponentFragment.newInstance(
- title,
- position,
- titleResId,
- accessibilityResId);
- }
- }
-
- private class ShapeStep extends ComponentStep<ShapeOption> {
-
- protected ShapeStep(ThemeComponentOptionProvider<ShapeOption> provider,
- int position) {
- super(R.string.shape_component_title, R.string.accessibility_custom_shape_title,
- provider, position);
- }
-
- @Override
- CustomThemeComponentFragment createFragment(String title) {
- return CustomThemeComponentFragment.newInstance(
- title,
- position,
- titleResId,
- accessibilityResId);
- }
- }
-
- private class NameStep extends ComponentStep {
-
- protected NameStep(int position) {
- super(R.string.name_component_title, R.string.accessibility_custom_name_title, null,
- position);
- }
-
- @Override
- CustomThemeNameFragment createFragment(String title) {
- return CustomThemeNameFragment.newInstance(
- title,
- position,
- titleResId,
- accessibilityResId);
- }
- }
-}
diff --git a/src/com/android/customization/picker/theme/CustomThemeComponentFragment.java b/src/com/android/customization/picker/theme/CustomThemeComponentFragment.java
deleted file mode 100644
index a1e9967..0000000
--- a/src/com/android/customization/picker/theme/CustomThemeComponentFragment.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.picker.theme;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.customization.model.theme.custom.ThemeComponentOption;
-import com.android.customization.model.theme.custom.ThemeComponentOptionProvider;
-import com.android.customization.widget.OptionSelectorController;
-import com.android.customization.widget.OptionSelectorController.CheckmarkStyle;
-import com.android.wallpaper.R;
-import com.android.wallpaper.picker.AppbarFragment;
-
-public class CustomThemeComponentFragment extends CustomThemeStepFragment {
- private static final String ARG_USE_GRID_LAYOUT = "CustomThemeComponentFragment.use_grid";;
-
- public static CustomThemeComponentFragment newInstance(CharSequence toolbarTitle, int position,
- int titleResId, int accessibilityResId) {
- return newInstance(toolbarTitle, position, titleResId, accessibilityResId, false);
- }
-
- public static CustomThemeComponentFragment newInstance(CharSequence toolbarTitle, int position,
- int titleResId, int accessibilityResId, boolean allowGridLayout) {
- CustomThemeComponentFragment fragment = new CustomThemeComponentFragment();
- Bundle arguments = AppbarFragment.createArguments(toolbarTitle);
- arguments.putInt(ARG_KEY_POSITION, position);
- arguments.putInt(ARG_KEY_TITLE_RES_ID, titleResId);
- arguments.putInt(ARG_KEY_ACCESSIBILITY_RES_ID, accessibilityResId);
- arguments.putBoolean(ARG_USE_GRID_LAYOUT, allowGridLayout);
- fragment.setArguments(arguments);
- return fragment;
- }
-
- private ThemeComponentOptionProvider<? extends ThemeComponentOption> mProvider;
- private boolean mUseGridLayout;
-
- private RecyclerView mOptionsContainer;
- private OptionSelectorController<ThemeComponentOption> mOptionsController;
- private ThemeComponentOption mSelectedOption;
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mUseGridLayout = getArguments().getBoolean(ARG_USE_GRID_LAYOUT);
- mProvider = mHost.getComponentOptionProvider(mPosition);
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = super.onCreateView(inflater, container, savedInstanceState);
- mOptionsContainer = view.findViewById(R.id.options_container);
- mPreviewContainer = view.findViewById(R.id.component_preview_content);
- mTitle = view.findViewById(R.id.component_options_title);
- mTitle.setText(mTitleResId);
- setUpOptions();
-
- return view;
- }
-
- @Override
- protected int getFragmentLayoutResId() {
- return R.layout.fragment_custom_theme_component;
- }
-
- public ThemeComponentOption getSelectedOption() {
- return mSelectedOption;
- }
-
- private void bindPreview() {
- mSelectedOption.bindPreview(mPreviewContainer);
- }
-
- private void setUpOptions() {
- mProvider.fetch(options -> {
- mOptionsController = new OptionSelectorController(
- mOptionsContainer, options, mUseGridLayout, CheckmarkStyle.NONE);
-
- mOptionsController.addListener(selected -> {
- mSelectedOption = (ThemeComponentOption) selected;
- bindPreview();
- // Preview and apply. The selection will be kept whatever user goes to previous page
- // or encounter system config changes, the current selection can be recovered.
- mCustomThemeManager.apply(mSelectedOption, /* callback= */ null);
- });
- mOptionsController.initOptions(mCustomThemeManager);
-
- for (ThemeComponentOption option : options) {
- if (option.isActive(mCustomThemeManager)) {
- mSelectedOption = option;
- break;
- }
- }
- if (mSelectedOption == null) {
- mSelectedOption = options.get(0);
- }
- mOptionsController.setSelectedOption(mSelectedOption);
- }, false);
- }
-}
diff --git a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java b/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
deleted file mode 100644
index ea9099f..0000000
--- a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.picker.theme;
-
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.ImageView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
-import com.android.customization.model.theme.custom.CustomTheme;
-import com.android.customization.module.CustomizationInjector;
-import com.android.customization.module.CustomizationPreferences;
-import com.android.customization.picker.WallpaperPreviewer;
-import com.android.wallpaper.R;
-import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
-import com.android.wallpaper.module.InjectorProvider;
-import com.android.wallpaper.picker.AppbarFragment;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-
-/** Fragment of naming a custom theme. */
-public class CustomThemeNameFragment extends CustomThemeStepFragment {
-
- private static final String TAG = "CustomThemeNameFragment";
-
- public static CustomThemeNameFragment newInstance(CharSequence toolbarTitle, int position,
- int titleResId, int accessibilityResId) {
- CustomThemeNameFragment fragment = new CustomThemeNameFragment();
- Bundle arguments = AppbarFragment.createArguments(toolbarTitle);
- arguments.putInt(ARG_KEY_POSITION, position);
- arguments.putInt(ARG_KEY_TITLE_RES_ID, titleResId);
- arguments.putInt(ARG_KEY_ACCESSIBILITY_RES_ID, accessibilityResId);
- fragment.setArguments(arguments);
- return fragment;
- }
-
- private EditText mNameEditor;
- private ImageView mWallpaperImage;
- private ThemeOptionPreviewer mThemeOptionPreviewer;
- private CustomizationPreferences mCustomizationPreferences;
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = super.onCreateView(inflater, container, savedInstanceState);
- mTitle = view.findViewById(R.id.component_options_title);
- mTitle.setText(mTitleResId);
- CurrentWallpaperInfoFactory currentWallpaperFactory = InjectorProvider.getInjector()
- .getCurrentWallpaperInfoFactory(getActivity().getApplicationContext());
- CustomizationInjector injector = (CustomizationInjector) InjectorProvider.getInjector();
- mCustomizationPreferences = injector.getCustomizationPreferences(getContext());
-
- // Set theme option.
- ViewGroup previewContainer = view.findViewById(R.id.theme_preview_container);
- mThemeOptionPreviewer = new ThemeOptionPreviewer(getLifecycle(), getContext(),
- previewContainer);
- PreviewInfo previewInfo = mCustomThemeManager.buildCustomThemePreviewInfo(getContext());
- mThemeOptionPreviewer.setPreviewInfo(previewInfo);
-
- // Set wallpaper background.
- mWallpaperImage = view.findViewById(R.id.wallpaper_preview_image);
- final WallpaperPreviewer wallpaperPreviewer = new WallpaperPreviewer(
- getLifecycle(),
- getActivity(),
- mWallpaperImage,
- view.findViewById(R.id.wallpaper_preview_surface));
- currentWallpaperFactory.createCurrentWallpaperInfos(
- (homeWallpaper, lockWallpaper, presentationMode) -> {
- wallpaperPreviewer.setWallpaper(homeWallpaper,
- mThemeOptionPreviewer::updateColorForLauncherWidgets);
- }, false);
-
- // Set theme default name.
- mNameEditor = view.findViewById(R.id.custom_theme_name);
- mNameEditor.setText(getOriginalThemeName());
- return view;
- }
-
- private String getOriginalThemeName() {
- CustomTheme originalTheme = mCustomThemeManager.getOriginalTheme();
- if (originalTheme == null || !originalTheme.isDefined()) {
- // For new custom theme. use custom themes amount plus 1 as default naming.
- String serializedThemes = mCustomizationPreferences.getSerializedCustomThemes();
- int customThemesCount = 0;
- if (!TextUtils.isEmpty(serializedThemes)) {
- try {
- JSONArray customThemes = new JSONArray(serializedThemes);
- customThemesCount = customThemes.length();
- } catch (JSONException e) {
- Log.w(TAG, "Couldn't read stored custom theme");
- }
- }
- return getContext().getString(
- R.string.custom_theme_title, customThemesCount + 1);
- } else {
- // For existing custom theme, keep its name as default naming.
- return originalTheme.getTitle();
- }
- }
-
- @Override
- protected int getFragmentLayoutResId() {
- return R.layout.fragment_custom_theme_name;
- }
-
- public String getThemeName() {
- return mNameEditor.getText().toString();
- }
-}
diff --git a/src/com/android/customization/picker/theme/CustomThemeStepFragment.java b/src/com/android/customization/picker/theme/CustomThemeStepFragment.java
deleted file mode 100644
index 3f07431..0000000
--- a/src/com/android/customization/picker/theme/CustomThemeStepFragment.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.android.customization.picker.theme;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.StringRes;
-
-import com.android.customization.model.theme.custom.CustomThemeManager;
-import com.android.customization.model.theme.custom.ThemeComponentOption;
-import com.android.customization.model.theme.custom.ThemeComponentOptionProvider;
-import com.android.wallpaper.R;
-import com.android.wallpaper.picker.AppbarFragment;
-
-abstract class CustomThemeStepFragment extends AppbarFragment {
- protected static final String ARG_KEY_POSITION = "CustomThemeStepFragment.position";
- protected static final String ARG_KEY_TITLE_RES_ID = "CustomThemeStepFragment.title_res";
- protected static final String ARG_KEY_ACCESSIBILITY_RES_ID =
- "CustomThemeStepFragment.accessibility_res";
- protected CustomThemeComponentStepHost mHost;
- protected CustomThemeManager mCustomThemeManager;
- protected int mPosition;
- protected ViewGroup mPreviewContainer;
- protected TextView mTitle;
- @StringRes
- protected int mTitleResId;
- @StringRes
- protected int mAccessibilityResId;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- mHost = (CustomThemeComponentStepHost) context;
- }
-
- @Override
- public void onResume() {
- super.onResume();
- mHost.setCurrentStep(mPosition);
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mPosition = getArguments().getInt(ARG_KEY_POSITION);
- mTitleResId = getArguments().getInt(ARG_KEY_TITLE_RES_ID);
- mAccessibilityResId = getArguments().getInt(ARG_KEY_ACCESSIBILITY_RES_ID);
- mCustomThemeManager = mHost.getCustomThemeManager();
- }
-
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(
- getFragmentLayoutResId(), container, /* attachToRoot */ false);
- // No original theme means it's a new one, so no toolbar icon for deleting it is needed
- if (mCustomThemeManager.getOriginalTheme() == null
- || !mCustomThemeManager.getOriginalTheme().isDefined()) {
- setUpToolbar(view);
- } else {
- setUpToolbar(view, R.menu.custom_theme_editor_menu);
- mToolbar.getMenu().getItem(0).setIconTintList(
- getContext().getColorStateList(R.color.toolbar_icon_tint));
- }
- Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_24px, null).mutate();
- closeIcon.setTintList(getResources().getColorStateList(R.color.toolbar_icon_tint, null));
- mToolbar.setNavigationIcon(closeIcon);
-
- mToolbar.setNavigationContentDescription(R.string.cancel);
- mToolbar.setNavigationOnClickListener(v -> mHost.cancel());
-
- mPreviewContainer = view.findViewById(R.id.component_preview_content);
- return view;
- }
-
- @Override
- protected String getAccessibilityTitle() {
- return getString(mAccessibilityResId);
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- if (item.getItemId() == R.id.custom_theme_delete) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- builder.setMessage(R.string.delete_custom_theme_confirmation)
- .setPositiveButton(R.string.delete_custom_theme_button,
- (dialogInterface, i) -> mHost.delete())
- .setNegativeButton(R.string.cancel, null)
- .create()
- .show();
- return true;
- }
- return super.onMenuItemClick(item);
- }
-
- protected abstract int getFragmentLayoutResId();
-
- public interface CustomThemeComponentStepHost {
- void delete();
- void cancel();
- ThemeComponentOptionProvider<? extends ThemeComponentOption> getComponentOptionProvider(
- int position);
-
- CustomThemeManager getCustomThemeManager();
-
- void setCurrentStep(int step);
- }
-}
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
deleted file mode 100644
index 3a9a56f..0000000
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-package com.android.customization.picker.theme;
-
-import static android.app.Activity.RESULT_OK;
-
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY;
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.CUSTOMIZE;
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.INFORMATION;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-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.CustomizationOption;
-import com.android.customization.model.theme.ThemeBundle;
-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.WallpaperPreviewer;
-import com.android.customization.widget.OptionSelectorController;
-import com.android.wallpaper.R;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
-import com.android.wallpaper.module.InjectorProvider;
-import com.android.wallpaper.picker.AppbarFragment;
-import com.android.wallpaper.widget.BottomActionBar;
-import com.android.wallpaper.widget.BottomActionBar.AccessibilityCallback;
-import com.android.wallpaper.widget.BottomActionBar.BottomSheetContent;
-
-import java.util.List;
-
-/**
- * Fragment that contains the main UI for selecting and applying a ThemeBundle.
- */
-public class ThemeFragment extends AppbarFragment {
-
- private static final String TAG = "ThemeFragment";
- private static final String KEY_SELECTED_THEME = "ThemeFragment.SelectedThemeBundle";
- private static final String KEY_STATE_BOTTOM_ACTION_BAR_VISIBLE =
- "ThemeFragment.bottomActionBarVisible";
- private static final int FULL_PREVIEW_REQUEST_CODE = 1000;
-
- /**
- * Interface to be implemented by an Activity hosting a {@link ThemeFragment}
- */
- public interface ThemeFragmentHost {
- ThemeManager getThemeManager();
- }
- public static ThemeFragment newInstance(CharSequence title) {
- ThemeFragment fragment = new ThemeFragment();
- fragment.setArguments(AppbarFragment.createArguments(title));
- return fragment;
- }
-
- private RecyclerView mOptionsContainer;
- private OptionSelectorController<ThemeBundle> mOptionsController;
- private ThemeManager mThemeManager;
- private ThemesUserEventLogger mEventLogger;
- private ThemeBundle mSelectedTheme;
- private ContentLoadingProgressBar mLoading;
- private View mContent;
- private View mError;
- private WallpaperInfo mCurrentHomeWallpaper;
- private CurrentWallpaperInfoFactory mCurrentWallpaperFactory;
- private BottomActionBar mBottomActionBar;
- private WallpaperPreviewer mWallpaperPreviewer;
- private ImageView mWallpaperImage;
- private ThemeOptionPreviewer mThemeOptionPreviewer;
- private ThemeInfoView mThemeInfoView;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- mThemeManager = ((ThemeFragmentHost) context).getThemeManager();
- mEventLogger = (ThemesUserEventLogger)
- InjectorProvider.getInjector().getUserEventLogger(context);
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(
- 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()
- .getCurrentWallpaperInfoFactory(getActivity().getApplicationContext());
- mOptionsContainer = view.findViewById(R.id.options_container);
-
- mThemeOptionPreviewer = new ThemeOptionPreviewer(
- getLifecycle(),
- getContext(),
- view.findViewById(R.id.theme_preview_container));
-
- // Set Wallpaper background.
- mWallpaperImage = view.findViewById(R.id.wallpaper_preview_image);
- mWallpaperPreviewer = new WallpaperPreviewer(
- getLifecycle(),
- getActivity(),
- mWallpaperImage,
- view.findViewById(R.id.wallpaper_preview_surface));
- mCurrentWallpaperFactory.createCurrentWallpaperInfos(
- (homeWallpaper, lockWallpaper, presentationMode) -> {
- mCurrentHomeWallpaper = homeWallpaper;
- mWallpaperPreviewer.setWallpaper(mCurrentHomeWallpaper,
- mThemeOptionPreviewer::updateColorForLauncherWidgets);
- }, false);
- return view;
- }
-
- @Override
- protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
- super.onBottomActionBarReady(bottomActionBar);
- mBottomActionBar = bottomActionBar;
- mBottomActionBar.showActionsOnly(INFORMATION, APPLY);
- mBottomActionBar.setActionClickListener(APPLY, v -> {
- mBottomActionBar.disableActions();
- applyTheme();
- });
-
- mBottomActionBar.bindBottomSheetContentWithAction(
- new ThemeInfoContent(getContext()), INFORMATION);
- mBottomActionBar.setActionClickListener(CUSTOMIZE, this::onCustomizeClicked);
-
- // Update target view's accessibility param since it will be blocked by the bottom sheet
- // when expanded.
- mBottomActionBar.setAccessibilityCallback(new AccessibilityCallback() {
- @Override
- public void onBottomSheetCollapsed() {
- mOptionsContainer.setImportantForAccessibility(
- View.IMPORTANT_FOR_ACCESSIBILITY_YES);
- }
-
- @Override
- public void onBottomSheetExpanded() {
- mOptionsContainer.setImportantForAccessibility(
- View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
- }
- });
- }
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- // Setup options here when all views are ready(including BottomActionBar), since we need to
- // update views after options are loaded.
- setUpOptions(savedInstanceState);
- }
-
- private void applyTheme() {
- mThemeManager.apply(mSelectedTheme, new Callback() {
- @Override
- public void onSuccess() {
- Toast.makeText(getContext(), R.string.applied_theme_msg, Toast.LENGTH_LONG).show();
- getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- getActivity().finish();
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- Log.w(TAG, "Error applying theme", throwable);
- // Since we disabled it when clicked apply button.
- mBottomActionBar.enableActions();
- mBottomActionBar.hide();
- Toast.makeText(getContext(), R.string.apply_theme_error_msg,
- Toast.LENGTH_LONG).show();
- }
- });
- }
-
- @Override
- public void onSaveInstanceState(@NonNull Bundle outState) {
- super.onSaveInstanceState(outState);
- if (mSelectedTheme != null && !mSelectedTheme.isActive(mThemeManager)) {
- outState.putString(KEY_SELECTED_THEME, mSelectedTheme.getSerializedPackages());
- }
- if (mBottomActionBar != null) {
- outState.putBoolean(KEY_STATE_BOTTOM_ACTION_BAR_VISIBLE, mBottomActionBar.isVisible());
- }
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == CustomThemeActivity.REQUEST_CODE_CUSTOM_THEME) {
- if (resultCode == CustomThemeActivity.RESULT_THEME_DELETED) {
- mSelectedTheme = null;
- reloadOptions();
- } else if (resultCode == CustomThemeActivity.RESULT_THEME_APPLIED) {
- getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- getActivity().finish();
- } else {
- if (mSelectedTheme != null) {
- mOptionsController.setSelectedOption(mSelectedTheme);
- // Set selected option above will show BottomActionBar,
- // hide BottomActionBar for the mis-trigger.
- mBottomActionBar.hide();
- } else {
- reloadOptions();
- }
- }
- } else if (requestCode == FULL_PREVIEW_REQUEST_CODE && resultCode == RESULT_OK) {
- applyTheme();
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- private void onCustomizeClicked(View view) {
- if (mSelectedTheme instanceof CustomTheme) {
- navigateToCustomTheme((CustomTheme) mSelectedTheme);
- }
- }
-
- 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) {
- hideError();
- mLoading.show();
- mThemeManager.fetchOptions(new OptionsFetchedListener<ThemeBundle>() {
- @Override
- public void onOptionsLoaded(List<ThemeBundle> options) {
- mOptionsController = new OptionSelectorController<>(mOptionsContainer, options);
- mOptionsController.initOptions(mThemeManager);
-
- // Find out the selected theme option.
- // 1. Find previously selected theme.
- String previouslySelected = savedInstanceState != null
- ? savedInstanceState.getString(KEY_SELECTED_THEME) : null;
- ThemeBundle previouslySelectedTheme = null;
- ThemeBundle activeTheme = null;
- for (ThemeBundle theme : options) {
- if (previouslySelected != null
- && previouslySelected.equals(theme.getSerializedPackages())) {
- previouslySelectedTheme = theme;
- }
- if (theme.isActive(mThemeManager)) {
- activeTheme = theme;
- }
- }
- // 2. Use active theme if no previously selected theme.
- mSelectedTheme = previouslySelectedTheme != null
- ? previouslySelectedTheme
- : activeTheme;
- // 3. Select the first system theme(default theme currently)
- // if there is no matching custom enabled theme.
- if (mSelectedTheme == null) {
- mSelectedTheme = findFirstSystemThemeBundle(options);
- }
-
- mOptionsController.setSelectedOption(mSelectedTheme);
- onOptionSelected(mSelectedTheme);
- restoreBottomActionBarVisibility(savedInstanceState);
-
- mOptionsController.addListener(selectedOption -> {
- onOptionSelected(selectedOption);
- if (!isAddCustomThemeOption(selectedOption)) {
- mBottomActionBar.show();
- }
- });
- mLoading.hide();
- }
- @Override
- public void onError(@Nullable Throwable throwable) {
- if (throwable != null) {
- Log.e(TAG, "Error loading theme bundles", throwable);
- }
- showError();
- }
- }, false);
- }
-
- private void reloadOptions() {
- mThemeManager.fetchOptions(options -> {
- mOptionsController.resetOptions(options);
- for (ThemeBundle theme : options) {
- if (theme.isActive(mThemeManager)) {
- mSelectedTheme = theme;
- break;
- }
- }
- if (mSelectedTheme == null) {
- mSelectedTheme = findFirstSystemThemeBundle(options);
- }
- mOptionsController.setSelectedOption(mSelectedTheme);
- // Set selected option above will show BottomActionBar,
- // hide BottomActionBar for the mis-trigger.
- mBottomActionBar.hide();
- }, true);
- }
-
- private ThemeBundle findFirstSystemThemeBundle(List<ThemeBundle> options) {
- for (ThemeBundle bundle : options) {
- if (!(bundle instanceof CustomTheme)) {
- return bundle;
- }
- }
- return null;
- }
-
- private void onOptionSelected(CustomizationOption selectedOption) {
- if (isAddCustomThemeOption(selectedOption)) {
- navigateToCustomTheme((CustomTheme) selectedOption);
- } else {
- mSelectedTheme = (ThemeBundle) selectedOption;
- mSelectedTheme.setOverrideThemeWallpaper(mCurrentHomeWallpaper);
- mEventLogger.logThemeSelected(mSelectedTheme,
- selectedOption instanceof CustomTheme);
- mThemeOptionPreviewer.setPreviewInfo(mSelectedTheme.getPreviewInfo());
- if (mThemeInfoView != null && mSelectedTheme != null) {
- mThemeInfoView.populateThemeInfo(mSelectedTheme);
- }
-
- if (selectedOption instanceof CustomTheme) {
- mBottomActionBar.showActionsOnly(INFORMATION, CUSTOMIZE, APPLY);
- } else {
- mBottomActionBar.showActionsOnly(INFORMATION, APPLY);
- }
- }
- }
-
- private void restoreBottomActionBarVisibility(@Nullable Bundle savedInstanceState) {
- boolean isBottomActionBarVisible = savedInstanceState != null
- && savedInstanceState.getBoolean(KEY_STATE_BOTTOM_ACTION_BAR_VISIBLE);
- if (isBottomActionBarVisible) {
- mBottomActionBar.show();
- } else {
- mBottomActionBar.hide();
- }
- }
-
- private boolean isAddCustomThemeOption(CustomizationOption option) {
- return option instanceof CustomTheme && !((CustomTheme) option).isDefined();
- }
-
- private void navigateToCustomTheme(CustomTheme themeToEdit) {
- Intent intent = new Intent(getActivity(), CustomThemeActivity.class);
- intent.putExtra(CustomThemeActivity.EXTRA_THEME_TITLE, themeToEdit.getTitle());
- intent.putExtra(CustomThemeActivity.EXTRA_THEME_ID, themeToEdit.getId());
- intent.putExtra(CustomThemeActivity.EXTRA_THEME_PACKAGES,
- themeToEdit.getSerializedPackages());
- startActivityForResult(intent, CustomThemeActivity.REQUEST_CODE_CUSTOM_THEME);
- }
-
- private final class ThemeInfoContent extends BottomSheetContent<ThemeInfoView> {
-
- private ThemeInfoContent(Context context) {
- super(context);
- }
-
- @Override
- public int getViewId() {
- return R.layout.theme_info_view;
- }
-
- @Override
- public void onViewCreated(ThemeInfoView view) {
- mThemeInfoView = view;
- if (mSelectedTheme != null) {
- mThemeInfoView.populateThemeInfo(mSelectedTheme);
- }
- }
- }
-}
diff --git a/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java b/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java
deleted file mode 100644
index 3ba64ec..0000000
--- a/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2020 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.
- */
-package com.android.customization.picker.theme;
-
-import static android.app.Activity.RESULT_OK;
-
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY;
-import static com.android.wallpaper.widget.BottomActionBar.BottomAction.INFORMATION;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.theme.DefaultThemeProvider;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.customization.model.theme.ThemeBundleProvider;
-import com.android.customization.module.CustomizationInjector;
-import com.android.customization.picker.WallpaperPreviewer;
-import com.android.wallpaper.R;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.module.InjectorProvider;
-import com.android.wallpaper.picker.AppbarFragment;
-import com.android.wallpaper.widget.BottomActionBar;
-import com.android.wallpaper.widget.BottomActionBar.BottomSheetContent;
-
-import com.bumptech.glide.Glide;
-
-import org.json.JSONException;
-
-/** A Fragment for theme full preview page. */
-public class ThemeFullPreviewFragment extends AppbarFragment {
- private static final String TAG = "ThemeFullPreviewFragment";
-
- public static final String EXTRA_THEME_OPTION_TITLE = "theme_option_title";
- protected static final String EXTRA_THEME_OPTION = "theme_option";
- protected static final String EXTRA_WALLPAPER_INFO = "wallpaper_info";
- protected static final String EXTRA_CAN_APPLY_FROM_FULL_PREVIEW = "can_apply";
-
- private WallpaperInfo mWallpaper;
- private ThemeBundle mThemeBundle;
- private boolean mCanApplyFromFullPreview;
-
- /**
- * Returns a new {@link ThemeFullPreviewFragment} with the provided title and bundle arguments
- * set.
- */
- public static ThemeFullPreviewFragment newInstance(CharSequence title, Bundle intentBundle) {
- ThemeFullPreviewFragment fragment = new ThemeFullPreviewFragment();
- Bundle bundle = new Bundle();
- bundle.putAll(AppbarFragment.createArguments(title));
- bundle.putAll(intentBundle);
- fragment.setArguments(bundle);
- return fragment;
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mWallpaper = getArguments().getParcelable(EXTRA_WALLPAPER_INFO);
- mCanApplyFromFullPreview = getArguments().getBoolean(EXTRA_CAN_APPLY_FROM_FULL_PREVIEW);
- CustomizationInjector injector = (CustomizationInjector) InjectorProvider.getInjector();
- ThemeBundleProvider themeProvider = new DefaultThemeProvider(
- getContext(), injector.getCustomizationPreferences(getContext()));
- try {
- ThemeBundle.Builder builder = themeProvider.parseThemeBundle(
- getArguments().getString(EXTRA_THEME_OPTION));
- if (builder != null) {
- builder.setTitle(getArguments().getString(EXTRA_THEME_OPTION_TITLE));
- mThemeBundle = builder.build(getContext());
- }
- } catch (JSONException e) {
- Log.w(TAG, "Couldn't parse provided custom theme, will override it");
- // TODO(chihhangchuang): Handle the error case.
- }
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(
- R.layout.fragment_theme_full_preview, container, /* attachToRoot */ false);
- setUpToolbar(view);
- Glide.get(getContext()).clearMemory();
-
- // Set theme option.
- final ThemeOptionPreviewer themeOptionPreviewer = new ThemeOptionPreviewer(
- getLifecycle(),
- getContext(),
- view.findViewById(R.id.theme_preview_container));
- themeOptionPreviewer.setPreviewInfo(mThemeBundle.getPreviewInfo());
-
- // Set wallpaper background.
- ImageView wallpaperImageView = view.findViewById(R.id.wallpaper_preview_image);
- final WallpaperPreviewer wallpaperPreviewer = new WallpaperPreviewer(
- getLifecycle(),
- getActivity(),
- wallpaperImageView,
- view.findViewById(R.id.wallpaper_preview_surface));
- wallpaperPreviewer.setWallpaper(mWallpaper,
- themeOptionPreviewer::updateColorForLauncherWidgets);
- return view;
- }
-
- @Override
- protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
- super.onBottomActionBarReady(bottomActionBar);
- if (mCanApplyFromFullPreview) {
- bottomActionBar.showActionsOnly(INFORMATION, APPLY);
- bottomActionBar.setActionClickListener(APPLY, v -> finishActivityWithResultOk());
- } else {
- bottomActionBar.showActionsOnly(INFORMATION);
- }
- bottomActionBar.bindBottomSheetContentWithAction(
- new ThemeInfoContent(getContext()), INFORMATION);
- bottomActionBar.show();
- }
-
- private void finishActivityWithResultOk() {
- Activity activity = requireActivity();
- activity.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- Intent intent = new Intent();
- activity.setResult(RESULT_OK, intent);
- activity.finish();
- }
-
- private final class ThemeInfoContent extends BottomSheetContent<ThemeInfoView> {
-
- private ThemeInfoContent(Context context) {
- super(context);
- }
-
- @Override
- public int getViewId() {
- return R.layout.theme_info_view;
- }
-
- @Override
- public void onViewCreated(ThemeInfoView view) {
- view.populateThemeInfo(mThemeBundle);
- }
- }
-}
diff --git a/src/com/android/customization/picker/theme/ThemeInfoView.java b/src/com/android/customization/picker/theme/ThemeInfoView.java
deleted file mode 100644
index e929c4d..0000000
--- a/src/com/android/customization/picker/theme/ThemeInfoView.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2020 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.
- */
-package com.android.customization.picker.theme;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.wallpaper.R;
-
-/** A view for displaying style info. */
-public class ThemeInfoView extends LinearLayout {
- private static final int WIFI_ICON_PREVIEW_INDEX = 0;
- private static final int SHAPE_PREVIEW_INDEX = 0;
-
- private TextView mTitle;
- private TextView mFontPreviewTextView;
- private ImageView mIconPreviewImageView;
- private ImageView mAppPreviewImageView;
- private ImageView mShapePreviewImageView;
-
- public ThemeInfoView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mTitle = findViewById(R.id.style_info_title);
- mFontPreviewTextView = findViewById(R.id.font_preview);
- mIconPreviewImageView = findViewById(R.id.qs_preview_icon);
- mAppPreviewImageView = findViewById(R.id.app_preview_icon);
- mShapePreviewImageView = findViewById(R.id.shape_preview_icon);
- }
-
- /** Populates theme info. */
- public void populateThemeInfo(@NonNull ThemeBundle selectedTheme) {
- ThemeBundle.PreviewInfo previewInfo = selectedTheme.getPreviewInfo();
-
- if (previewInfo != null) {
- mTitle.setText(getContext().getString(R.string.style_info_description));
- if (previewInfo.headlineFontFamily != null) {
- mTitle.setTypeface(previewInfo.headlineFontFamily);
- mFontPreviewTextView.setTypeface(previewInfo.headlineFontFamily);
- }
-
- if (previewInfo.icons.get(WIFI_ICON_PREVIEW_INDEX) != null) {
- mIconPreviewImageView.setImageDrawable(
- previewInfo.icons.get(WIFI_ICON_PREVIEW_INDEX));
- }
-
- if (previewInfo.shapeAppIcons.get(SHAPE_PREVIEW_INDEX) != null) {
- mAppPreviewImageView.setBackground(
- previewInfo.shapeAppIcons.get(SHAPE_PREVIEW_INDEX).getDrawableCopy());
- }
-
- if (previewInfo.shapeDrawable != null) {
- mShapePreviewImageView.setImageDrawable(previewInfo.shapeDrawable);
- mShapePreviewImageView.setImageTintList(
- ColorStateList.valueOf(previewInfo.resolveAccentColor(getResources())));
- }
- }
- }
-}
diff --git a/src/com/android/customization/picker/theme/ThemeOptionPreviewer.java b/src/com/android/customization/picker/theme/ThemeOptionPreviewer.java
deleted file mode 100644
index 14b53ec..0000000
--- a/src/com/android/customization/picker/theme/ThemeOptionPreviewer.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * Copyright (C) 2020 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.
- */
-package com.android.customization.picker.theme;
-
-import static android.view.View.MeasureSpec.EXACTLY;
-import static android.view.View.MeasureSpec.makeMeasureSpec;
-
-import android.app.WallpaperColors;
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
-import android.text.format.DateFormat;
-import android.util.DisplayMetrics;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.widget.CompoundButton;
-import android.widget.ImageView;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.annotation.MainThread;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
-
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
-import com.android.customization.model.theme.ThemeBundle.PreviewInfo.ShapeAppIcon;
-import com.android.wallpaper.R;
-import com.android.wallpaper.util.ResourceUtils;
-import com.android.wallpaper.util.ScreenSizeCalculator;
-import com.android.wallpaper.util.TimeUtils;
-import com.android.wallpaper.util.TimeUtils.TimeTicker;
-
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
-
-/** A class to load the {@link ThemeBundle} preview to the view. */
-class ThemeOptionPreviewer implements LifecycleObserver {
- private static final String DATE_FORMAT = "EEEE, MMM d";
-
- // Maps which icon from ResourceConstants#ICONS_FOR_PREVIEW.
- private static final int ICON_WIFI = 0;
- private static final int ICON_BLUETOOTH = 1;
- private static final int ICON_FLASHLIGHT = 3;
- private static final int ICON_AUTO_ROTATE = 4;
- private static final int ICON_CELLULAR_SIGNAL = 6;
- private static final int ICON_BATTERY = 7;
-
- // Icons in the top bar (fake "status bar") with the particular order.
- private static final int [] sTopBarIconToPreviewIcon = new int [] {
- ICON_WIFI, ICON_CELLULAR_SIGNAL, ICON_BATTERY };
-
- // Ids of app icon shape preview.
- private int[] mShapeAppIconIds = {
- R.id.shape_preview_icon_0, R.id.shape_preview_icon_1,
- R.id.shape_preview_icon_2, R.id.shape_preview_icon_3
- };
- private int[] mShapeIconAppNameIds = {
- R.id.shape_preview_icon_app_name_0, R.id.shape_preview_icon_app_name_1,
- R.id.shape_preview_icon_app_name_2, R.id.shape_preview_icon_app_name_3
- };
-
- // Ids of color/icons section.
- private int[][] mColorTileIconIds = {
- new int[] { R.id.preview_color_qs_0_icon, ICON_WIFI},
- new int[] { R.id.preview_color_qs_1_icon, ICON_BLUETOOTH},
- new int[] { R.id.preview_color_qs_2_icon, ICON_FLASHLIGHT},
- new int[] { R.id.preview_color_qs_3_icon, ICON_AUTO_ROTATE},
- };
- private int[] mColorTileIds = {
- R.id.preview_color_qs_0_bg, R.id.preview_color_qs_1_bg,
- R.id.preview_color_qs_2_bg, R.id.preview_color_qs_3_bg
- };
- private int[] mColorButtonIds = {
- R.id.preview_check_selected, R.id.preview_radio_selected, R.id.preview_toggle_selected
- };
-
- private final Context mContext;
-
- private View mContentView;
- private TextView mStatusBarClock;
- private TextView mSmartSpaceDate;
- private TimeTicker mTicker;
-
- private boolean mHasPreviewInfoSet;
- private boolean mHasWallpaperColorSet;
-
- ThemeOptionPreviewer(Lifecycle lifecycle, Context context, ViewGroup previewContainer) {
- lifecycle.addObserver(this);
-
- mContext = context;
- mContentView = LayoutInflater.from(context).inflate(
- R.layout.theme_preview_content, /* root= */ null);
- mContentView.setVisibility(View.INVISIBLE);
- mStatusBarClock = mContentView.findViewById(R.id.theme_preview_clock);
- mSmartSpaceDate = mContentView.findViewById(R.id.smart_space_date);
- updateTime();
- final float screenAspectRatio =
- ScreenSizeCalculator.getInstance().getScreenAspectRatio(mContext);
- Configuration config = mContext.getResources().getConfiguration();
- final boolean directionLTR = config.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
- previewContainer.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
- @Override
- public void onLayoutChange(View view, int left, int top, int right, int bottom,
- int oldLeft, int oldTop, int oldRight, int oldBottom) {
- // Calculate the full preview card height and width.
- final int fullPreviewCardHeight = getFullPreviewCardHeight();
- final int fullPreviewCardWidth = (int) (fullPreviewCardHeight / screenAspectRatio);
-
- // Relayout the content view to match full preview card size.
- mContentView.measure(
- makeMeasureSpec(fullPreviewCardWidth, EXACTLY),
- makeMeasureSpec(fullPreviewCardHeight, EXACTLY));
- mContentView.layout(0, 0, fullPreviewCardWidth, fullPreviewCardHeight);
-
- // Scale the content view from full preview size to the container size. For full
- // preview, the scale value is 1.
- float scale = (float) previewContainer.getMeasuredHeight() / fullPreviewCardHeight;
- mContentView.setScaleX(scale);
- mContentView.setScaleY(scale);
- // The pivot point is centered by default, set to (0, 0).
- mContentView.setPivotX(directionLTR ? 0f : mContentView.getMeasuredWidth());
- mContentView.setPivotY(0f);
-
- // Ensure there will be only one content view in the container.
- previewContainer.removeAllViews();
- // Finally, add the content view to the container.
- previewContainer.addView(
- mContentView,
- mContentView.getMeasuredWidth(),
- mContentView.getMeasuredHeight());
-
- previewContainer.removeOnLayoutChangeListener(this);
- }
- });
- }
-
- /** Loads the Theme option preview into the container view. */
- public void setPreviewInfo(PreviewInfo previewInfo) {
- setHeadlineFont(previewInfo.headlineFontFamily);
- setBodyFont(previewInfo.bodyFontFamily);
- setTopBarIcons(previewInfo.icons);
- setAppIconShape(previewInfo.shapeAppIcons);
- setColorAndIconsSection(previewInfo.icons, previewInfo.shapeDrawable,
- previewInfo.resolveAccentColor(mContext.getResources()));
- setColorAndIconsBoxRadius(previewInfo.bottomSheeetCornerRadius);
- setQsbRadius(previewInfo.bottomSheeetCornerRadius);
- mHasPreviewInfoSet = true;
- showPreviewIfHasAllConfigSet();
- }
-
- /**
- * Updates the color of widgets in launcher (like top status bar, smart space, and app name
- * text) which will change its content color according to different wallpapers.
- *
- * @param colors the {@link WallpaperColors} of the wallpaper, or {@code null} to use light
- * color as default
- */
- public void updateColorForLauncherWidgets(@Nullable WallpaperColors colors) {
- boolean useLightTextColor = colors == null
- || (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0;
- int textColor = mContext.getColor(useLightTextColor
- ? android.R.color.white
- : android.R.color.black);
- int textShadowColor = mContext.getColor(useLightTextColor
- ? android.R.color.tertiary_text_dark
- : android.R.color.transparent);
- // Update the top status bar clock text color.
- mStatusBarClock.setTextColor(textColor);
- // Update the top status bar icon color.
- ViewGroup iconsContainer = mContentView.findViewById(R.id.theme_preview_top_bar_icons);
- for (int i = 0; i < iconsContainer.getChildCount(); i++) {
- ((ImageView) iconsContainer.getChildAt(i))
- .setImageTintList(ColorStateList.valueOf(textColor));
- }
- // Update smart space date color.
- mSmartSpaceDate.setTextColor(textColor);
- mSmartSpaceDate.setShadowLayer(
- mContext.getResources().getDimension(
- R.dimen.smartspace_preview_key_ambient_shadow_blur),
- /* dx = */ 0,
- /* dy = */ 0,
- textShadowColor);
-
- // Update shape app icon name text color.
- for (int id : mShapeIconAppNameIds) {
- TextView appName = mContentView.findViewById(id);
- appName.setTextColor(textColor);
- appName.setShadowLayer(
- mContext.getResources().getDimension(
- R.dimen.preview_theme_app_name_key_ambient_shadow_blur),
- /* dx = */ 0,
- /* dy = */ 0,
- textShadowColor);
- }
-
- mHasWallpaperColorSet = true;
- showPreviewIfHasAllConfigSet();
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
- @MainThread
- public void onResume() {
- mTicker = TimeTicker.registerNewReceiver(mContext, this::updateTime);
- updateTime();
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
- @MainThread
- public void onPause() {
- if (mContext != null) {
- mContext.unregisterReceiver(mTicker);
- }
- }
-
- private void showPreviewIfHasAllConfigSet() {
- if (mHasPreviewInfoSet && mHasWallpaperColorSet
- && mContentView.getVisibility() != View.VISIBLE) {
- mContentView.setAlpha(0f);
- mContentView.setVisibility(View.VISIBLE);
- mContentView.animate().alpha(1f)
- .setStartDelay(50)
- .setDuration(200)
- .setInterpolator(AnimationUtils.loadInterpolator(mContext,
- android.R.interpolator.fast_out_linear_in))
- .start();
- }
- }
-
- private void setHeadlineFont(Typeface headlineFont) {
- mStatusBarClock.setTypeface(headlineFont);
- mSmartSpaceDate.setTypeface(headlineFont);
-
- // Update font of color/icons section title.
- TextView colorIconsSectionTitle = mContentView.findViewById(R.id.color_icons_section_title);
- colorIconsSectionTitle.setTypeface(headlineFont);
- }
-
- private void setBodyFont(Typeface bodyFont) {
- // Update font of app names.
- for (int id : mShapeIconAppNameIds) {
- TextView appName = mContentView.findViewById(id);
- appName.setTypeface(bodyFont);
- }
- }
-
- private void setTopBarIcons(List<Drawable> icons) {
- ViewGroup iconsContainer = mContentView.findViewById(R.id.theme_preview_top_bar_icons);
- for (int i = 0; i < iconsContainer.getChildCount(); i++) {
- int iconIndex = sTopBarIconToPreviewIcon[i];
- if (iconIndex < icons.size()) {
- ((ImageView) iconsContainer.getChildAt(i))
- .setImageDrawable(icons.get(iconIndex).getConstantState()
- .newDrawable().mutate());
- } else {
- iconsContainer.getChildAt(i).setVisibility(View.GONE);
- }
- }
- }
-
- private void setAppIconShape(List<ShapeAppIcon> appIcons) {
- for (int i = 0; i < mShapeAppIconIds.length && i < mShapeIconAppNameIds.length
- && i < appIcons.size(); i++) {
- ShapeAppIcon icon = appIcons.get(i);
- // Set app icon.
- ImageView iconView = mContentView.findViewById(mShapeAppIconIds[i]);
- iconView.setBackground(icon.getDrawableCopy());
- // Set app name.
- TextView appName = mContentView.findViewById(mShapeIconAppNameIds[i]);
- appName.setText(icon.getAppName());
- }
- }
-
- private void setColorAndIconsSection(List<Drawable> icons, Drawable shapeDrawable,
- int accentColor) {
- // Set QS icons and background.
- for (int i = 0; i < mColorTileIconIds.length && i < icons.size(); i++) {
- Drawable icon = icons.get(mColorTileIconIds[i][1]).getConstantState()
- .newDrawable().mutate();
- Drawable bgShape = shapeDrawable.getConstantState().newDrawable();
- bgShape.setTint(accentColor);
-
- ImageView bg = mContentView.findViewById(mColorTileIds[i]);
- bg.setImageDrawable(bgShape);
- ImageView fg = mContentView.findViewById(mColorTileIconIds[i][0]);
- fg.setImageDrawable(icon);
- }
-
- // Set color for Buttons (CheckBox, RadioButton, and Switch).
- ColorStateList tintList = getColorStateList(accentColor);
- for (int mColorButtonId : mColorButtonIds) {
- CompoundButton button = mContentView.findViewById(mColorButtonId);
- button.setButtonTintList(tintList);
- if (button instanceof Switch) {
- ((Switch) button).setThumbTintList(tintList);
- ((Switch) button).setTrackTintList(tintList);
- }
- }
- }
-
- private void setColorAndIconsBoxRadius(int cornerRadius) {
- ((CardView) mContentView.findViewById(R.id.color_icons_section)).setRadius(cornerRadius);
- }
-
- private void setQsbRadius(int cornerRadius) {
- View qsb = mContentView.findViewById(R.id.theme_qsb);
- if (qsb != null && qsb.getVisibility() == View.VISIBLE) {
- if (qsb.getBackground() instanceof GradientDrawable) {
- GradientDrawable bg = (GradientDrawable) qsb.getBackground();
- float radius = useRoundedQSB(cornerRadius)
- ? (float) qsb.getLayoutParams().height / 2 : cornerRadius;
- bg.setCornerRadii(new float[]{
- radius, radius, radius, radius,
- radius, radius, radius, radius});
- }
- }
- }
-
- private void updateTime() {
- Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
- if (mStatusBarClock != null) {
- mStatusBarClock.setText(TimeUtils.getFormattedTime(mContext, calendar));
- }
- if (mSmartSpaceDate != null) {
- String datePattern =
- DateFormat.getBestDateTimePattern(Locale.getDefault(), DATE_FORMAT);
- mSmartSpaceDate.setText(DateFormat.format(datePattern, calendar));
- }
- }
-
- private boolean useRoundedQSB(int cornerRadius) {
- return cornerRadius >= mContext.getResources().getDimensionPixelSize(
- R.dimen.roundCornerThreshold);
- }
-
- private ColorStateList getColorStateList(int accentColor) {
- int controlGreyColor =
- ResourceUtils.getColorAttr(mContext, android.R.attr.textColorTertiary);
- return new ColorStateList(
- new int[][]{
- new int[]{android.R.attr.state_selected},
- new int[]{android.R.attr.state_checked},
- new int[]{-android.R.attr.state_enabled},
- },
- new int[] {
- accentColor,
- accentColor,
- controlGreyColor
- }
- );
- }
-
- /**
- * Gets the screen height which does not include the system status bar and bottom navigation
- * bar.
- */
- private int getDisplayHeight() {
- final DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
- return dm.heightPixels;
- }
-
- // The height of top tool bar (R.layout.section_header).
- private int getTopToolBarHeight() {
- final TypedValue typedValue = new TypedValue();
- return mContext.getTheme().resolveAttribute(
- android.R.attr.actionBarSize, typedValue, true)
- ? TypedValue.complexToDimensionPixelSize(
- typedValue.data, mContext.getResources().getDisplayMetrics())
- : 0;
- }
-
- private int getFullPreviewCardHeight() {
- final Resources res = mContext.getResources();
- return getDisplayHeight()
- - getTopToolBarHeight()
- - res.getDimensionPixelSize(R.dimen.bottom_actions_height)
- - res.getDimensionPixelSize(R.dimen.full_preview_page_default_padding_top)
- - res.getDimensionPixelSize(R.dimen.full_preview_page_default_padding_bottom);
- }
-}
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
deleted file mode 100644
index 8c7af00..0000000
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-package com.android.customization.widget;
-
-import static com.android.internal.util.Preconditions.checkNotNull;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.accessibility.AccessibilityEvent;
-import android.widget.TextView;
-
-import androidx.annotation.Dimension;
-import androidx.annotation.IntDef;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.CustomizationOption;
-import com.android.wallpaper.R;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Simple controller for a RecyclerView-based widget to hold the options for each customization
- * section (eg, thumbnails for themes, clocks, grid sizes).
- * To use, just pass the RV that will contain the tiles and the list of {@link CustomizationOption}
- * representing each option, and call {@link #initOptions(CustomizationManager)} to populate the
- * widget.
- */
-public class OptionSelectorController<T extends CustomizationOption<T>> {
-
- /**
- * Interface to be notified when an option is selected by the user.
- */
- public interface OptionSelectedListener {
-
- /**
- * Called when an option has been selected (and marked as such in the UI)
- */
- void onOptionSelected(CustomizationOption selected);
- }
-
- @IntDef({CheckmarkStyle.NONE, CheckmarkStyle.CORNER, CheckmarkStyle.CENTER,
- CheckmarkStyle.CENTER_CHANGE_COLOR_WHEN_NOT_SELECTED})
- public @interface CheckmarkStyle {
- int NONE = 0;
- int CORNER = 1;
- int CENTER = 2;
- int CENTER_CHANGE_COLOR_WHEN_NOT_SELECTED = 3;
- }
-
- private final float mLinearLayoutHorizontalDisplayOptionsMax;
-
- private final RecyclerView mContainer;
- private final List<T> mOptions;
- private final boolean mUseGrid;
- @CheckmarkStyle
- private final int mCheckmarkStyle;
-
- private final Set<OptionSelectedListener> mListeners = new HashSet<>();
- private RecyclerView.Adapter<TileViewHolder> mAdapter;
- private T mSelectedOption;
- private T mAppliedOption;
-
- public OptionSelectorController(RecyclerView container, List<T> options) {
- this(container, options, true, CheckmarkStyle.CORNER);
- }
-
- public OptionSelectorController(RecyclerView container, List<T> options,
- boolean useGrid, @CheckmarkStyle int checkmarkStyle) {
- mContainer = container;
- mOptions = options;
- mUseGrid = useGrid;
- mCheckmarkStyle = checkmarkStyle;
- TypedValue typedValue = new TypedValue();
- mContainer.getResources().getValue(R.dimen.linear_layout_horizontal_display_options_max,
- typedValue, true);
- mLinearLayoutHorizontalDisplayOptionsMax = typedValue.getFloat();
- }
-
- public void addListener(OptionSelectedListener listener) {
- mListeners.add(listener);
- }
-
- public void removeListener(OptionSelectedListener listener) {
- mListeners.remove(listener);
- }
-
- /**
- * Mark the given option as selected
- */
- public void setSelectedOption(T option) {
- if (!mOptions.contains(option)) {
- throw new IllegalArgumentException("Invalid option");
- }
- T lastSelectedOption = mSelectedOption;
- mSelectedOption = option;
- mAdapter.notifyItemChanged(mOptions.indexOf(option));
- if (lastSelectedOption != null) {
- mAdapter.notifyItemChanged(mOptions.indexOf(lastSelectedOption));
- }
- notifyListeners();
- }
-
- /**
- * @return whether this controller contains the given option
- */
- public boolean containsOption(T option) {
- return mOptions.contains(option);
- }
-
- /**
- * Mark an option as the one which is currently applied on the device. This will result in a
- * check being displayed in the lower-right corner of the corresponding ViewHolder.
- */
- public void setAppliedOption(T option) {
- if (!mOptions.contains(option)) {
- throw new IllegalArgumentException("Invalid option");
- }
- T lastAppliedOption = mAppliedOption;
- mAppliedOption = option;
- mAdapter.notifyItemChanged(mOptions.indexOf(option));
- if (lastAppliedOption != null) {
- mAdapter.notifyItemChanged(mOptions.indexOf(lastAppliedOption));
- }
- }
-
- /**
- * Notify that a given option has changed.
- *
- * @param option the option that changed
- */
- public void optionChanged(T option) {
- if (!mOptions.contains(option)) {
- throw new IllegalArgumentException("Invalid option");
- }
- mAdapter.notifyItemChanged(mOptions.indexOf(option));
- }
-
- /**
- * Initializes the UI for the options passed in the constructor of this class.
- */
- public void initOptions(final CustomizationManager<T> manager) {
- mContainer.setAccessibilityDelegateCompat(
- new OptionSelectorAccessibilityDelegate(mContainer));
-
- mAdapter = new RecyclerView.Adapter<TileViewHolder>() {
- @Override
- public int getItemViewType(int position) {
- return mOptions.get(position).getLayoutResId();
- }
-
- @NonNull
- @Override
- public TileViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View v = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
- // Provide width constraint when a grid layout manager is not use and width is set
- // to match parent
- if (!mUseGrid
- && v.getLayoutParams().width == RecyclerView.LayoutParams.MATCH_PARENT) {
- Resources res = mContainer.getContext().getResources();
- RecyclerView.LayoutParams layoutParams = new RecyclerView.LayoutParams(
- res.getDimensionPixelSize(R.dimen.option_tile_width),
- RecyclerView.LayoutParams.WRAP_CONTENT);
- v.setLayoutParams(layoutParams);
- }
- return new TileViewHolder(v);
- }
-
- @Override
- public void onBindViewHolder(@NonNull TileViewHolder holder, int position) {
- T option = mOptions.get(position);
- if (option.isActive(manager)) {
- mAppliedOption = option;
- if (mSelectedOption == null) {
- mSelectedOption = option;
- }
- }
- if (holder.labelView != null) {
- holder.labelView.setText(option.getTitle());
- }
- holder.itemView.setActivated(option.equals(mSelectedOption));
- option.bindThumbnailTile(holder.tileView);
- holder.itemView.setOnClickListener(view -> setSelectedOption(option));
-
- Resources res = mContainer.getContext().getResources();
- if (mCheckmarkStyle == CheckmarkStyle.CORNER && option.equals(mAppliedOption)) {
- drawCheckmark(option, holder,
- res.getDrawable(R.drawable.check_circle_accent_24dp,
- mContainer.getContext().getTheme()),
- Gravity.BOTTOM | Gravity.RIGHT,
- res.getDimensionPixelSize(R.dimen.check_size),
- res.getDimensionPixelOffset(R.dimen.check_offset), true);
- } else if (mCheckmarkStyle == CheckmarkStyle.CENTER
- && option.equals(mAppliedOption)) {
- drawCheckmark(option, holder,
- res.getDrawable(R.drawable.check_circle_grey_large,
- mContainer.getContext().getTheme()),
- Gravity.CENTER, res.getDimensionPixelSize(R.dimen.center_check_size),
- 0, true);
- } else if (mCheckmarkStyle == CheckmarkStyle.CENTER_CHANGE_COLOR_WHEN_NOT_SELECTED
- && option.equals(mAppliedOption)) {
- int drawableRes = option.equals(mSelectedOption)
- ? R.drawable.check_circle_grey_large
- : R.drawable.check_circle_grey_large_not_select;
- drawCheckmark(option, holder,
- res.getDrawable(drawableRes,
- mContainer.getContext().getTheme()),
- Gravity.CENTER, res.getDimensionPixelSize(R.dimen.center_check_size),
- 0, option.equals(mSelectedOption));
- } else if (option.equals(mAppliedOption)) {
- // Initialize with "previewed" description if we don't show checkmark
- holder.setContentDescription(mContainer.getContext(), option,
- R.string.option_previewed_description);
- } else if (mCheckmarkStyle != CheckmarkStyle.NONE) {
- if (mCheckmarkStyle == CheckmarkStyle.CENTER_CHANGE_COLOR_WHEN_NOT_SELECTED) {
- if (option.equals(mSelectedOption)) {
- holder.setContentDescription(mContainer.getContext(), option,
- R.string.option_previewed_description);
- } else {
- holder.setContentDescription(mContainer.getContext(), option,
- R.string.option_change_applied_previewed_description);
- }
- }
-
- holder.tileView.setForeground(null);
- }
- }
-
- @Override
- public int getItemCount() {
- return mOptions.size();
- }
-
- private void drawCheckmark(CustomizationOption<?> option, TileViewHolder holder,
- Drawable checkmark, int gravity, @Dimension int checkSize,
- @Dimension int checkOffset, boolean currentlyPreviewed) {
- Drawable frame = holder.tileView.getForeground();
- Drawable[] layers = {frame, checkmark};
- if (frame == null) {
- layers = new Drawable[]{checkmark};
- }
- LayerDrawable checkedFrame = new LayerDrawable(layers);
-
- // Position according to the given gravity and offset
- int idx = layers.length - 1;
- checkedFrame.setLayerGravity(idx, gravity);
- checkedFrame.setLayerWidth(idx, checkSize);
- checkedFrame.setLayerHeight(idx, checkSize);
- checkedFrame.setLayerInsetBottom(idx, checkOffset);
- checkedFrame.setLayerInsetRight(idx, checkOffset);
- holder.tileView.setForeground(checkedFrame);
-
- // Initialize the currently applied option
- if (currentlyPreviewed) {
- holder.setContentDescription(mContainer.getContext(), option,
- R.string.option_applied_previewed_description);
- } else {
- holder.setContentDescription(mContainer.getContext(), option,
- R.string.option_applied_description);
- }
- }
- };
-
- Resources res = mContainer.getContext().getResources();
- mContainer.setAdapter(mAdapter);
- final DisplayMetrics metrics = new DisplayMetrics();
- mContainer.getContext().getSystemService(WindowManager.class)
- .getDefaultDisplay().getMetrics(metrics);
- final boolean hasDecoration = mContainer.getItemDecorationCount() != 0;
-
- if (mUseGrid) {
- int numColumns = res.getInteger(R.integer.options_grid_num_columns);
- GridLayoutManager gridLayoutManager = new GridLayoutManager(mContainer.getContext(),
- numColumns);
- mContainer.setLayoutManager(gridLayoutManager);
- } else {
- final int padding = res.getDimensionPixelSize(
- R.dimen.option_tile_linear_padding_horizontal);
- final int widthPerItem = res.getDimensionPixelSize(R.dimen.option_tile_width) + (
- hasDecoration ? 0 : 2 * padding);
- mContainer.setLayoutManager(new LinearLayoutManager(mContainer.getContext(),
- LinearLayoutManager.HORIZONTAL, false));
- mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
- int availableWidth = metrics.widthPixels;
- int extraSpace = availableWidth - mContainer.getMeasuredWidth();
- if (extraSpace >= 0) {
- mContainer.setOverScrollMode(View.OVER_SCROLL_NEVER);
- }
-
- if (mAdapter.getItemCount() >= mLinearLayoutHorizontalDisplayOptionsMax) {
- int spaceBetweenItems = availableWidth
- - Math.round(widthPerItem * mLinearLayoutHorizontalDisplayOptionsMax)
- - mContainer.getPaddingLeft();
- int itemEndMargin =
- spaceBetweenItems / (int) mLinearLayoutHorizontalDisplayOptionsMax;
- itemEndMargin = Math.max(itemEndMargin, res.getDimensionPixelOffset(
- R.dimen.option_tile_margin_horizontal));
- mContainer.addItemDecoration(new ItemEndHorizontalSpaceItemDecoration(
- mContainer.getContext(), itemEndMargin));
- return;
- }
-
- int spaceBetweenItems = extraSpace / (mAdapter.getItemCount() + 1);
- int itemSideMargin = spaceBetweenItems / 2;
- mContainer.addItemDecoration(new HorizontalSpacerItemDecoration(itemSideMargin));
- }
- }
-
- public void resetOptions(List<T> options) {
- mOptions.clear();
- mOptions.addAll(options);
- mAdapter.notifyDataSetChanged();
- }
-
- private void notifyListeners() {
- if (mListeners.isEmpty()) {
- return;
- }
- T option = mSelectedOption;
- Set<OptionSelectedListener> iterableListeners = new HashSet<>(mListeners);
- for (OptionSelectedListener listener : iterableListeners) {
- listener.onOptionSelected(option);
- }
- }
-
- private static class TileViewHolder extends RecyclerView.ViewHolder {
- TextView labelView;
- View tileView;
- CharSequence title;
-
- TileViewHolder(@NonNull View itemView) {
- super(itemView);
- labelView = itemView.findViewById(R.id.option_label);
- tileView = itemView.findViewById(R.id.option_tile);
- title = null;
- }
-
- /**
- * Set the content description for this holder using the given string id.
- * If the option does not have a label, the description will be set on the tile view.
- *
- * @param context The view's context
- * @param option The customization option
- * @param id Resource ID of the string to use for the content description
- */
- public void setContentDescription(Context context, CustomizationOption<?> option, int id) {
- title = option.getTitle();
- if (TextUtils.isEmpty(title) && tileView != null) {
- title = tileView.getContentDescription();
- }
-
- CharSequence cd = context.getString(id, title);
- if (labelView != null && !TextUtils.isEmpty(labelView.getText())) {
- labelView.setAccessibilityPaneTitle(cd);
- labelView.setContentDescription(cd);
- } else if (tileView != null) {
- tileView.setAccessibilityPaneTitle(cd);
- tileView.setContentDescription(cd);
- }
- }
-
- public void resetContentDescription() {
- if (labelView != null && !TextUtils.isEmpty(labelView.getText())) {
- labelView.setAccessibilityPaneTitle(title);
- labelView.setContentDescription(title);
- } else if (tileView != null) {
- tileView.setAccessibilityPaneTitle(title);
- tileView.setContentDescription(title);
- }
- }
- }
-
- private class OptionSelectorAccessibilityDelegate extends RecyclerViewAccessibilityDelegate {
-
- OptionSelectorAccessibilityDelegate(RecyclerView recyclerView) {
- super(recyclerView);
- }
-
- @Override
- public boolean onRequestSendAccessibilityEvent(
- ViewGroup host, View child, AccessibilityEvent event) {
-
- // Apply this workaround to horizontal recyclerview only,
- // since the symptom is TalkBack will lose focus when navigating horizontal list items.
- if (mContainer.getLayoutManager() != null
- && mContainer.getLayoutManager().canScrollHorizontally()
- && event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
- int itemPos = mContainer.getChildLayoutPosition(child);
- int itemWidth = mContainer.getContext().getResources()
- .getDimensionPixelOffset(R.dimen.option_tile_width);
- int itemMarginHorizontal = mContainer.getContext().getResources()
- .getDimensionPixelOffset(R.dimen.option_tile_margin_horizontal) * 2;
- int scrollOffset = itemWidth + itemMarginHorizontal;
-
- // Make focusing item's previous/next item totally visible when changing focus,
- // ensure TalkBack won't lose focus when recyclerview scrolling.
- if (itemPos >= ((LinearLayoutManager) mContainer.getLayoutManager())
- .findLastCompletelyVisibleItemPosition()) {
- mContainer.scrollBy(scrollOffset, 0);
- } else if (itemPos <= ((LinearLayoutManager) mContainer.getLayoutManager())
- .findFirstCompletelyVisibleItemPosition() && itemPos != 0) {
- mContainer.scrollBy(-scrollOffset, 0);
- }
- }
- return super.onRequestSendAccessibilityEvent(host, child, event);
- }
- }
-
- /** Custom ItemDecorator to add specific spacing between items in the list. */
- private static final class ItemEndHorizontalSpaceItemDecoration
- extends RecyclerView.ItemDecoration {
- private final int mHorizontalSpacePx;
- private final boolean mDirectionLTR;
-
- private ItemEndHorizontalSpaceItemDecoration(Context context, int horizontalSpacePx) {
- mDirectionLTR = context.getResources().getConfiguration().getLayoutDirection()
- == View.LAYOUT_DIRECTION_LTR;
- mHorizontalSpacePx = horizontalSpacePx;
- }
-
- @Override
- public void getItemOffsets(Rect outRect, View view, RecyclerView recyclerView,
- RecyclerView.State state) {
- if (recyclerView.getAdapter() == null) {
- return;
- }
-
- if (recyclerView.getChildAdapterPosition(view)
- != checkNotNull(recyclerView.getAdapter()).getItemCount() - 1) {
- // Don't add spacing behind the last item
- if (mDirectionLTR) {
- outRect.right = mHorizontalSpacePx;
- } else {
- outRect.left = mHorizontalSpacePx;
- }
- }
- }
- }
-}
diff --git a/tests/Android.bp b/tests/Android.bp
index c6b599d..74dc6a1 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -20,17 +20,43 @@
default_applicable_licenses: ["Android-Apache-2.0"],
}
+filegroup {
+ name: "ThemePickerTests_srcs",
+
+ visibility: [
+ "//visibility:public"
+ ],
+
+ srcs: [
+ "src/**/*.java",
+ "src/**/*.kt",
+ ],
+}
+
android_test {
name: "ThemePickerTests",
defaults: ["ThemePicker_defaults"],
srcs: [
- "src/**/*.java",
- "src/**/*.kt",
+ ":ThemePickerTests_srcs",
+ ":WallpaperPicker2Tests_srcs",
+ "module/src/com/android/customization/TestModule.kt",
],
+ exclude_srcs: [":ThemePicker_src_prod"],
static_libs: [
"WallpaperPicker2TestLib",
+ "WallpaperPicker2TestRunner",
+ "ThemePickerTestLib",
+ "androidx.test.espresso.core",
+ "androidx.test.espresso.contrib",
+ "androidx.test.espresso.intents",
+ "androidx.test.ext.junit",
"androidx.test.rules",
+ "hamcrest-library",
+ "hamcrest",
+ "hilt_android",
+ "hilt_android_testing",
+ "mockito-target-minus-junit4",
"junit",
"kotlinx_coroutines_test",
"truth",
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 2fd6b3f..f1c0cf2 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -18,9 +18,17 @@
<application>
<uses-library android:name="android.test.runner" />
+
+ <activity android:name="com.android.wallpaper.picker.PreviewActivity"
+ android:resizeableActivity="false">
+ </activity>
+
+ <activity android:name="com.android.wallpaper.picker.preview.ui.WallpaperPreviewActivity"
+ android:resizeableActivity="false">
+ </activity>
</application>
- <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="com.android.wallpaper.CustomTestRunner"
android:targetPackage="com.android.wallpaper"
android:label="Tests for ThemePicker" />
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
index be2119b..18e95ef 100644
--- a/tests/AndroidTest.xml
+++ b/tests/AndroidTest.xml
@@ -22,7 +22,7 @@
<option name="test-tag" value="ThemePickerTests" />
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.wallpaper" />
- <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="runner" value="com.android.wallpaper.CustomTestRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
</configuration>
diff --git a/tests/common/Android.bp b/tests/common/Android.bp
index 2904fad..0961886 100644
--- a/tests/common/Android.bp
+++ b/tests/common/Android.bp
@@ -23,10 +23,10 @@
android_library {
name: "ThemePickerTestLib",
- defaults: ["ThemePicker_defaults"],
+ defaults: ["ThemePicker_common_defaults"],
srcs: [
- "src/com/android/customization/testing/**/*.java",
- "src/com/android/customization/testing/**/*.kt",
+ "src/**/*.java",
+ "src/**/*.kt",
],
static_libs: [
"WallpaperPicker2TestLib",
diff --git a/tests/common/src/com/android/customization/module/logging/TestThemesUserEventLogger.kt b/tests/common/src/com/android/customization/module/logging/TestThemesUserEventLogger.kt
new file mode 100644
index 0000000..b2835f4
--- /dev/null
+++ b/tests/common/src/com/android/customization/module/logging/TestThemesUserEventLogger.kt
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package com.android.customization.module.logging
+
+import com.android.customization.model.color.ColorOption
+import com.android.customization.model.grid.GridOption
+import com.android.wallpaper.module.logging.TestUserEventLogger
+
+/** Test implementation of [ThemesUserEventLogger]. */
+class TestThemesUserEventLogger : TestUserEventLogger(), ThemesUserEventLogger {
+
+ override fun logThemeColorApplied(colorOption: ColorOption) {}
+
+ override fun logGridApplied(grid: GridOption) {}
+
+ override fun logClockApplied(clockId: String) {}
+
+ override fun logClockColorApplied(seedColor: Int) {}
+
+ override fun logClockSizeApplied(clockSize: Int) {}
+
+ override fun logThemedIconApplied(useThemeIcon: Boolean) {}
+
+ override fun logLockScreenNotificationApplied(showLockScreenNotifications: Boolean) {}
+
+ override fun logShortcutApplied(shortcut: String, shortcutSlotId: String) {}
+
+ override fun logDarkThemeApplied(useDarkTheme: Boolean) {}
+}
diff --git a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
new file mode 100644
index 0000000..e08209d
--- /dev/null
+++ b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
@@ -0,0 +1,100 @@
+package com.android.customization.testing
+
+import android.content.Context
+import android.content.res.Resources
+import androidx.activity.ComponentActivity
+import com.android.customization.module.CustomizationInjector
+import com.android.customization.module.CustomizationPreferences
+import com.android.customization.module.logging.TestThemesUserEventLogger
+import com.android.customization.module.logging.ThemesUserEventLogger
+import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.ui.view.ClockViewFactory
+import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
+import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
+import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
+import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
+import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.wallpaper.module.logging.UserEventLogger
+import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
+import com.android.wallpaper.testing.TestInjector
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+open class TestCustomizationInjector
+@Inject
+constructor(private val customPrefs: TestDefaultCustomizationPreferences) :
+ TestInjector(), CustomizationInjector {
+ private var themesUserEventLogger: ThemesUserEventLogger? = null
+
+ /////////////////
+ // CustomizationInjector implementations
+ /////////////////
+
+ override fun getCustomizationPreferences(context: Context): CustomizationPreferences {
+ return customPrefs
+ }
+
+ override fun getKeyguardQuickAffordancePickerInteractor(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockRegistry(context: Context): ClockRegistry? {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockPickerInteractor(context: Context): ClockPickerInteractor {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockSectionViewModel(context: Context): ClockSectionViewModel {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getColorPickerInteractor(
+ context: Context,
+ wallpaperColorsRepository: WallpaperColorsRepository,
+ ): ColorPickerInteractor {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getColorPickerViewModelFactory(
+ context: Context,
+ wallpaperColorsRepository: WallpaperColorsRepository,
+ ): ColorPickerViewModel.Factory {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockCarouselViewModelFactory(
+ interactor: ClockPickerInteractor,
+ clockViewFactory: ClockViewFactory,
+ resources: Resources,
+ ): ClockCarouselViewModel.Factory {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ override fun getClockSettingsViewModelFactory(
+ context: Context,
+ wallpaperColorsRepository: WallpaperColorsRepository,
+ clockViewFactory: ClockViewFactory,
+ ): ClockSettingsViewModel.Factory {
+ throw UnsupportedOperationException("not implemented")
+ }
+
+ /////////////////
+ // TestInjector overrides
+ /////////////////
+
+ override fun getUserEventLogger(context: Context): UserEventLogger {
+ return themesUserEventLogger
+ ?: TestThemesUserEventLogger().also { themesUserEventLogger = it }
+ }
+}
diff --git a/tests/common/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java b/tests/common/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java
index 81890f0..c8e31a3 100644
--- a/tests/common/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java
+++ b/tests/common/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java
@@ -17,21 +17,32 @@
import android.content.Context;
+import com.android.customization.module.CustomizationPreferences;
import com.android.customization.module.DefaultCustomizationPreferences;
+import com.android.wallpaper.testing.TestWallpaperPreferences;
+
+import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.HashSet;
import java.util.Set;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Test implementation of {@link DefaultCustomizationPreferences}.
*/
-public class TestDefaultCustomizationPreferences extends DefaultCustomizationPreferences {
+@Singleton
+public class TestDefaultCustomizationPreferences extends TestWallpaperPreferences implements
+ CustomizationPreferences {
private String mCustomThemes;
private final Set<String> mTabVisited = new HashSet<>();
+ private boolean mThemedIconEnabled = false;
- public TestDefaultCustomizationPreferences(Context context) {
- super(context);
+ @Inject
+ public TestDefaultCustomizationPreferences(@ApplicationContext Context context) {
+ super();
}
@Override
@@ -53,4 +64,14 @@
public void setTabVisited(String id) {
mTabVisited.add(id);
}
+
+ @Override
+ public boolean getThemedIconEnabled() {
+ return mThemedIconEnabled;
+ }
+
+ @Override
+ public void setThemedIconEnabled(boolean enabled) {
+ mThemedIconEnabled = enabled;
+ }
}
diff --git a/tests/common/src/com/android/customization/testing/TestDrawableLayerResolver.java b/tests/common/src/com/android/customization/testing/TestDrawableLayerResolver.java
deleted file mode 100644
index 8b16299..0000000
--- a/tests/common/src/com/android/customization/testing/TestDrawableLayerResolver.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.testing;
-
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-
-import com.android.wallpaper.module.DrawableLayerResolver;
-
-/**
- * Test implementation of {@link DrawableLayerResolver}.
- */
-public class TestDrawableLayerResolver implements DrawableLayerResolver {
- @Override
- public Drawable resolveLayer(LayerDrawable layerDrawable) {
- return layerDrawable.getDrawable(0);
- }
-}
diff --git a/tests/common/src/com/android/customization/testing/TestPackageStatusNotifier.java b/tests/common/src/com/android/customization/testing/TestPackageStatusNotifier.java
deleted file mode 100644
index 2aadae8..0000000
--- a/tests/common/src/com/android/customization/testing/TestPackageStatusNotifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.testing;
-
-import com.android.wallpaper.module.PackageStatusNotifier;
-
-/**
- * Test implementation of {@link PackageStatusNotifier}.
- */
-public class TestPackageStatusNotifier implements PackageStatusNotifier {
- @Override
- public void addListener(Listener listener, String action) {
- // Do nothing
- }
-
- @Override
- public void removeListener(Listener listener) {
- // Do nothing
- }
-}
diff --git a/tests/common/src/com/android/customization/testing/TestThemeManager.java b/tests/common/src/com/android/customization/testing/TestThemeManager.java
deleted file mode 100644
index 5175b24..0000000
--- a/tests/common/src/com/android/customization/testing/TestThemeManager.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.testing;
-
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.customization.model.theme.OverlayManagerCompat;
-import com.android.customization.model.theme.ThemeBundleProvider;
-import com.android.customization.model.theme.ThemeManager;
-import com.android.customization.module.ThemesUserEventLogger;
-
-/**
- * Test implementation of {@link ThemeManager}.
- */
-public class TestThemeManager extends ThemeManager {
-
- private static boolean sIsAvailable;
-
- public TestThemeManager(
- ThemeBundleProvider provider,
- FragmentActivity activity,
- OverlayManagerCompat overlayManagerCompat,
- ThemesUserEventLogger logger) {
- super(provider, activity, overlayManagerCompat, logger);
- }
-
- @Override
- public boolean isAvailable() {
- return sIsAvailable;
- }
-
- public static void setAvailable(boolean available) {
- sIsAvailable = available;
- }
-}
diff --git a/tests/common/src/com/android/customization/testing/TestThemesUserEventLogger.java b/tests/common/src/com/android/customization/testing/TestThemesUserEventLogger.java
deleted file mode 100644
index 22a5b94..0000000
--- a/tests/common/src/com/android/customization/testing/TestThemesUserEventLogger.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.testing;
-
-import com.android.customization.model.color.ColorOption;
-import com.android.customization.model.grid.GridOption;
-import com.android.customization.model.theme.ThemeBundle;
-import com.android.customization.module.ThemesUserEventLogger;
-import com.android.wallpaper.testing.TestUserEventLogger;
-
-/**
- * Test implementation of {@link ThemesUserEventLogger}.
- */
-public class TestThemesUserEventLogger extends TestUserEventLogger
- implements ThemesUserEventLogger {
- @Override
- public void logThemeSelected(ThemeBundle theme, boolean isCustomTheme) {
- // Do nothing.
- }
-
- @Override
- public void logThemeApplied(ThemeBundle theme, boolean isCustomTheme) {
- // Do nothing.
- }
-
- @Override
- public void logColorApplied(int action, ColorOption colorOption) {
- // Do nothing.
- }
-
- @Override
- public void logGridSelected(GridOption grid) {
- // Do nothing.
- }
-
- @Override
- public void logGridApplied(GridOption grid) {
- // Do nothing.
- }
-}
diff --git a/tests/module/src/com/android/customization/TestModule.kt b/tests/module/src/com/android/customization/TestModule.kt
new file mode 100644
index 0000000..d35c89a
--- /dev/null
+++ b/tests/module/src/com/android/customization/TestModule.kt
@@ -0,0 +1,50 @@
+package com.android.customization
+
+import com.android.customization.module.CustomizationInjector
+import com.android.customization.module.CustomizationPreferences
+import com.android.customization.testing.TestCustomizationInjector
+import com.android.customization.testing.TestDefaultCustomizationPreferences
+import com.android.wallpaper.module.AppModule
+import com.android.wallpaper.module.Injector
+import com.android.wallpaper.module.WallpaperPreferences
+import com.android.wallpaper.testing.TestInjector
+import com.android.wallpaper.testing.TestWallpaperPreferences
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.components.SingletonComponent
+import dagger.hilt.testing.TestInstallIn
+import javax.inject.Singleton
+
+@Module
+@TestInstallIn(components = [SingletonComponent::class], replaces = [AppModule::class])
+abstract class TestModule {
+ //// WallpaperPicker2 prod
+
+ @Binds @Singleton abstract fun bindInjector(impl: TestCustomizationInjector): Injector
+
+ @Binds
+ @Singleton
+ abstract fun bindWallpaperPrefs(impl: TestDefaultCustomizationPreferences): WallpaperPreferences
+
+ //// WallpaperPicker2 test
+
+ @Binds @Singleton abstract fun bindTestInjector(impl: TestCustomizationInjector): TestInjector
+
+ @Binds
+ @Singleton
+ abstract fun bindTestWallpaperPrefs(
+ impl: TestDefaultCustomizationPreferences
+ ): TestWallpaperPreferences
+
+ //// ThemePicker prod
+
+ @Binds
+ @Singleton
+ abstract fun bindCustomizationInjector(impl: TestCustomizationInjector): CustomizationInjector
+
+ @Binds
+ @Singleton
+ abstract fun bindCustomizationPrefs(
+ impl: TestDefaultCustomizationPreferences
+ ): CustomizationPreferences
+}
diff --git a/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt b/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
index 80d01c6..e3de954 100644
--- a/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
+++ b/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
@@ -16,7 +16,9 @@
package com.android.customization.model.color
import android.app.WallpaperColors
+import android.content.Context
import android.graphics.Color
+import androidx.test.core.app.ApplicationProvider
import com.android.customization.model.CustomizationManager
import com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR
import com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SYSTEM_PALETTE
@@ -25,25 +27,23 @@
import com.android.customization.model.color.ColorOptionsProvider.OVERLAY_COLOR_BOTH
import com.android.customization.model.color.ColorOptionsProvider.OVERLAY_COLOR_INDEX
import com.android.customization.model.color.ColorOptionsProvider.OVERLAY_COLOR_SOURCE
+import com.android.customization.model.color.ColorOptionsProvider.OVERLAY_THEME_STYLE
import com.android.customization.model.theme.OverlayManagerCompat
+import com.android.customization.picker.color.shared.model.ColorType
import com.android.systemui.monet.Style
import com.google.common.truth.Truth.assertThat
import org.json.JSONObject
import org.junit.Before
-import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.robolectric.RobolectricTestRunner
-import org.robolectric.RuntimeEnvironment
/** Tests of {@link ColorCustomizationManager}. */
-// TODO(b/222433744): most of these tests are failing due to the manager apk missing in the image
@RunWith(RobolectricTestRunner::class)
class ColorCustomizationManagerTest {
@@ -56,13 +56,12 @@
@Before
fun setUp() {
- MockitoAnnotations.initMocks(this)
- val application = RuntimeEnvironment.application
+ MockitoAnnotations.openMocks(this)
+ val application = ApplicationProvider.getApplicationContext<Context>()
manager = ColorCustomizationManager(provider, application.contentResolver, mockOM)
}
@Test
- @Ignore("b/260925899")
fun testParseSettings() {
val source = COLOR_SOURCE_HOME
val style = Style.SPRITZ
@@ -73,6 +72,7 @@
OVERLAY_CATEGORY_SYSTEM_PALETTE to someColor,
OVERLAY_CATEGORY_COLOR to someOtherColor,
OVERLAY_COLOR_SOURCE to source,
+ OVERLAY_THEME_STYLE to style.toString(),
ColorOption.TIMESTAMP_FIELD to "12345"
)
val json = JSONObject(settings).toString()
@@ -80,114 +80,119 @@
manager.parseSettings(json)
assertThat(manager.currentColorSource).isEqualTo(source)
- assertThat(manager.currentStyle).isEqualTo(style)
+ assertThat(manager.currentStyle).isEqualTo(style.toString())
assertThat(manager.currentOverlays.size).isEqualTo(2)
- assertThat(manager.currentOverlays.get(OVERLAY_CATEGORY_COLOR)).isEqualTo(someOtherColor)
- assertThat(manager.currentOverlays.get(OVERLAY_CATEGORY_SYSTEM_PALETTE))
- .isEqualTo(someColor)
+ assertThat(manager.currentOverlays[OVERLAY_CATEGORY_COLOR]).isEqualTo(someOtherColor)
+ assertThat(manager.currentOverlays[OVERLAY_CATEGORY_SYSTEM_PALETTE]).isEqualTo(someColor)
}
@Test
- @Ignore("b/260925899")
- fun apply_ColorBundle_index() {
- testApplyColorBundle(1, "1")
- testApplyColorBundle(2, "2")
- testApplyColorBundle(3, "3")
- testApplyColorBundle(4, "4")
+ fun apply_PresetColorOption_index() {
+ testApplyPresetColorOption(1, "1")
+ testApplyPresetColorOption(2, "2")
+ testApplyPresetColorOption(3, "3")
+ testApplyPresetColorOption(4, "4")
}
- private fun testApplyColorBundle(index: Int, value: String) {
+ private fun testApplyPresetColorOption(index: Int, value: String) {
manager.apply(
- getColorBundle(index),
+ getPresetColorOption(index),
object : CustomizationManager.Callback {
override fun onSuccess() {}
override fun onError(throwable: Throwable?) {}
}
)
+ Thread.sleep(100)
+
val overlaysJson = JSONObject(manager.storedOverlays)
assertThat(overlaysJson.getString(OVERLAY_COLOR_INDEX)).isEqualTo(value)
}
-
- private fun getColorBundle(index: Int): ColorBundle {
- return ColorBundle(
- "fake color",
- mapOf("fake_package" to "fake_color"),
- /* isDefault= */ false,
- null,
- /* index= */ index,
- null
- )
- }
-
@Test
- @Ignore("b/260925899")
- fun apply_ColorSeed_index() {
- testApplyColorSeed(1, "1")
- testApplyColorSeed(2, "2")
- testApplyColorSeed(3, "3")
- testApplyColorSeed(4, "4")
+ fun apply_WallpaperColorOption_index() {
+ testApplyWallpaperColorOption(1, "1")
+ testApplyWallpaperColorOption(2, "2")
+ testApplyWallpaperColorOption(3, "3")
+ testApplyWallpaperColorOption(4, "4")
}
- private fun testApplyColorSeed(index: Int, value: String) {
+ private fun testApplyWallpaperColorOption(index: Int, value: String) {
manager.apply(
- getColorSeed(index),
+ getWallpaperColorOption(index),
object : CustomizationManager.Callback {
override fun onSuccess() {}
override fun onError(throwable: Throwable?) {}
}
)
+ Thread.sleep(100)
+
val overlaysJson = JSONObject(manager.storedOverlays)
assertThat(overlaysJson.getString(OVERLAY_COLOR_INDEX)).isEqualTo(value)
}
- private fun getColorSeed(index: Int): ColorSeedOption {
- return ColorSeedOption(
+ private fun getPresetColorOption(index: Int): ColorOptionImpl {
+ return ColorOptionImpl(
"fake color",
mapOf("fake_package" to "fake_color"),
/* isDefault= */ false,
COLOR_SOURCE_PRESET,
- null,
+ Style.TONAL_SPOT,
index,
- null
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.PRESET_COLOR
+ )
+ }
+
+ private fun getWallpaperColorOption(index: Int): ColorOptionImpl {
+ return ColorOptionImpl(
+ "fake color",
+ mapOf("fake_package" to "fake_color"),
+ /* isDefault= */ false,
+ COLOR_SOURCE_HOME,
+ Style.TONAL_SPOT,
+ index,
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.WALLPAPER_COLOR
)
}
@Test
- @Ignore("b/260925899")
fun testApply_colorSeedFromWallpaperBoth_shouldReturnBothValue() {
val wallpaperColor = WallpaperColors(Color.valueOf(Color.RED), null, null)
manager.setWallpaperColors(wallpaperColor, wallpaperColor)
manager.apply(
- getColorSeed(anyInt()),
+ getWallpaperColorOption(0),
object : CustomizationManager.Callback {
override fun onSuccess() {}
override fun onError(throwable: Throwable?) {}
}
)
+ Thread.sleep(100)
+
val overlaysJson = JSONObject(manager.storedOverlays)
assertThat(overlaysJson.getString(OVERLAY_COLOR_BOTH)).isEqualTo("1")
}
@Test
- @Ignore("b/260925899")
fun testApply_colorSeedFromWallpaperDifferent_shouldReturnNonBothValue() {
val wallpaperColor1 = WallpaperColors(Color.valueOf(Color.RED), null, null)
val wallpaperColor2 = WallpaperColors(Color.valueOf(Color.BLUE), null, null)
manager.setWallpaperColors(wallpaperColor1, wallpaperColor2)
manager.apply(
- getColorSeed(anyInt()),
+ getWallpaperColorOption(0),
object : CustomizationManager.Callback {
override fun onSuccess() {}
override fun onError(throwable: Throwable?) {}
}
)
+ Thread.sleep(100)
+
val overlaysJson = JSONObject(manager.storedOverlays)
assertThat(overlaysJson.getString(OVERLAY_COLOR_BOTH)).isEqualTo("0")
}
diff --git a/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt b/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
index 0431c19..b9156d6 100644
--- a/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
+++ b/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
@@ -15,13 +15,14 @@
*/
package com.android.customization.model.color
+import com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SYSTEM_PALETTE
import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_HOME
import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_LOCK
import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_PRESET
+import com.android.customization.picker.color.shared.model.ColorType
import com.android.systemui.monet.Style
import com.google.common.truth.Truth.assertThat
-import org.junit.Assert.assertEquals
-import org.junit.Ignore
+import org.json.JSONObject
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -40,108 +41,77 @@
@Mock private lateinit var manager: ColorCustomizationManager
@Test
- fun colorOption_Source_Preset() {
- val bundleOption: ColorOption =
- ColorBundle(
- "fake color",
- mapOf("fake_package" to "fake_color"),
- false,
- null,
- /* index= */ 0,
- null
- )
- assertEquals(COLOR_SOURCE_PRESET, bundleOption.source)
+ fun colorOption_Source() {
+ testColorOptionSource(COLOR_SOURCE_HOME)
+ testColorOptionSource(COLOR_SOURCE_LOCK)
+ testColorOptionSource(COLOR_SOURCE_PRESET)
}
- @Test
- fun colorOption_bundle_index() {
- testBundleOptionIndex(1)
- testBundleOptionIndex(2)
- testBundleOptionIndex(3)
- testBundleOptionIndex(4)
- }
-
- private fun testBundleOptionIndex(index: Int) {
- val bundleOption: ColorBundle =
- ColorBundle(
- "fake color",
- mapOf("fake_package" to "fake_color"),
- false,
- null,
- /* index= */ index,
- null
- )
- assertThat(bundleOption.index).isEqualTo(index)
- }
-
- @Test
- fun colorOption_Source_Seed() {
- testSeedOptionSource(COLOR_SOURCE_HOME)
- testSeedOptionSource(COLOR_SOURCE_LOCK)
- }
-
- private fun testSeedOptionSource(source: String) {
- val seedOption: ColorOption =
- ColorSeedOption(
+ private fun testColorOptionSource(source: String) {
+ val colorOption: ColorOption =
+ ColorOptionImpl(
"fake color",
mapOf("fake_package" to "fake_color"),
false,
source,
- null,
+ Style.TONAL_SPOT,
/* index= */ 0,
- null
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.WALLPAPER_COLOR
)
- assertThat(seedOption.source).isEqualTo(source)
+ assertThat(colorOption.source).isEqualTo(source)
}
@Test
- fun colorOption_seed_style() {
- testSeedOptionStyle(Style.TONAL_SPOT)
- testSeedOptionStyle(Style.SPRITZ)
- testSeedOptionStyle(Style.VIBRANT)
- testSeedOptionStyle(Style.EXPRESSIVE)
+ fun colorOption_style() {
+ testColorOptionStyle(Style.TONAL_SPOT)
+ testColorOptionStyle(Style.SPRITZ)
+ testColorOptionStyle(Style.VIBRANT)
+ testColorOptionStyle(Style.EXPRESSIVE)
}
- private fun testSeedOptionStyle(style: Style) {
- val seedOption: ColorOption =
- ColorSeedOption(
+ private fun testColorOptionStyle(style: Style) {
+ val colorOption: ColorOption =
+ ColorOptionImpl(
"fake color",
mapOf("fake_package" to "fake_color"),
/* isDefault= */ false,
"fake_source",
style,
0,
- null
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.WALLPAPER_COLOR
)
- assertThat(seedOption.style).isEqualTo(style)
+ assertThat(colorOption.style).isEqualTo(style)
}
@Test
- fun colorOption_seed_index() {
- testSeedOptionIndex(1)
- testSeedOptionIndex(2)
- testSeedOptionIndex(3)
- testSeedOptionIndex(4)
+ fun colorOption_index() {
+ testColorOptionIndex(1)
+ testColorOptionIndex(2)
+ testColorOptionIndex(3)
+ testColorOptionIndex(4)
}
- private fun testSeedOptionIndex(index: Int) {
- val seedOption: ColorOption =
- ColorSeedOption(
+ private fun testColorOptionIndex(index: Int) {
+ val colorOption: ColorOption =
+ ColorOptionImpl(
"fake color",
mapOf("fake_package" to "fake_color"),
/* isDefault= */ false,
"fake_source",
Style.TONAL_SPOT,
index,
- /* previewInfo= */ null
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.WALLPAPER_COLOR
)
- assertThat(seedOption.index).isEqualTo(index)
+ assertThat(colorOption.index).isEqualTo(index)
}
- private fun setUpSeedOption(
+ private fun setUpWallpaperColorOption(
isDefault: Boolean,
source: String = "some_source"
- ): ColorSeedOption {
+ ): ColorOptionImpl {
val overlays =
if (isDefault) {
HashMap()
@@ -149,67 +119,69 @@
mapOf("package" to "value", "otherPackage" to "otherValue")
}
`when`(manager.currentOverlays).thenReturn(overlays)
- return ColorSeedOption(
+ return ColorOptionImpl(
"seed",
overlays,
isDefault,
source,
Style.TONAL_SPOT,
/* index= */ 0,
- /* previewInfo= */ null
+ ColorOptionImpl.PreviewInfo(intArrayOf(0), intArrayOf(0)),
+ ColorType.WALLPAPER_COLOR
)
}
@Test
- fun seedOption_isActive_notDefault_SourceSet() {
+ fun wallpaperColorOption_isActive_notDefault_SourceSet() {
val source = "some_source"
- val seedOption = setUpSeedOption(false, source)
+ val colorOption = setUpWallpaperColorOption(false, source)
`when`(manager.currentColorSource).thenReturn(source)
- assertThat(seedOption.isActive(manager)).isTrue()
+ assertThat(colorOption.isActive(manager)).isTrue()
}
@Test
- fun seedOption_isActive_notDefault_NoSource() {
- val seedOption = setUpSeedOption(false)
+ fun wallpaperColorOption_isActive_notDefault_NoSource() {
+ val colorOption = setUpWallpaperColorOption(false)
`when`(manager.currentColorSource).thenReturn(null)
- assertThat(seedOption.isActive(manager)).isTrue()
+ assertThat(colorOption.isActive(manager)).isTrue()
}
@Test
- fun seedOption_isActive_notDefault_differentSource() {
- val seedOption = setUpSeedOption(false)
+ fun wallpaperColorOption_isActive_notDefault_differentSource() {
+ val colorOption = setUpWallpaperColorOption(false)
`when`(manager.currentColorSource).thenReturn("some_other_source")
- assertThat(seedOption.isActive(manager)).isFalse()
+ assertThat(colorOption.isActive(manager)).isFalse()
}
@Test
- fun seedOption_isActive_default_emptyJson() {
- val seedOption = setUpSeedOption(true)
+ fun wallpaperColorOption_isActive_default_emptyJson() {
+ val colorOption = setUpWallpaperColorOption(true)
`when`(manager.storedOverlays).thenReturn("")
- assertThat(seedOption.isActive(manager)).isTrue()
+ assertThat(colorOption.isActive(manager)).isTrue()
}
@Test
- fun seedOption_isActive_default_nonEmptyJson() {
- val seedOption = setUpSeedOption(true)
+ fun wallpaperColorOption_isActive_default_nonEmptyJson() {
+ val colorOption = setUpWallpaperColorOption(true)
`when`(manager.storedOverlays).thenReturn("{non-empty-json}")
// Should still be Active because overlays is empty
- assertThat(seedOption.isActive(manager)).isTrue()
+ assertThat(colorOption.isActive(manager)).isTrue()
}
@Test
- @Ignore("b/260925899")
- fun seedOption_isActive_default_nonEmptyOverlays() {
- val seedOption = setUpSeedOption(true)
+ fun wallpaperColorOption_isActive_default_nonEmptyOverlays() {
+ val colorOption = setUpWallpaperColorOption(true)
- `when`(manager.currentOverlays).thenReturn(mapOf("a" to "b"))
- // TODO(b/222433744): failing as it's true
- assertThat(seedOption.isActive(manager)).isFalse()
+ val settings = mapOf(OVERLAY_CATEGORY_SYSTEM_PALETTE to "fake_color")
+ val json = JSONObject(settings).toString()
+ `when`(manager.storedOverlays).thenReturn(json)
+ `when`(manager.currentOverlays).thenReturn(settings)
+ assertThat(colorOption.isActive(manager)).isFalse()
}
}
diff --git a/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java b/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java
index 04ac024..52c6489 100644
--- a/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java
+++ b/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java
@@ -24,7 +24,7 @@
import androidx.annotation.Nullable;
import com.android.customization.model.CustomizationManager.Callback;
-import com.android.customization.module.ThemesUserEventLogger;
+import com.android.customization.module.logging.ThemesUserEventLogger;
import org.junit.Before;
import org.junit.Ignore;
diff --git a/tests/robotests/src/com/android/customization/model/grid/data/repository/FakeGridRepository.kt b/tests/robotests/src/com/android/customization/model/grid/data/repository/FakeGridRepository.kt
index 317ad3a..de68bf0 100644
--- a/tests/robotests/src/com/android/customization/model/grid/data/repository/FakeGridRepository.kt
+++ b/tests/robotests/src/com/android/customization/model/grid/data/repository/FakeGridRepository.kt
@@ -19,8 +19,9 @@
import com.android.customization.model.CustomizationManager
import com.android.customization.model.grid.GridOption
-import com.android.customization.model.grid.shared.model.GridOptionItemModel
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.data.repository.GridRepository
+import com.android.customization.picker.grid.shared.model.GridOptionItemModel
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.Flow
diff --git a/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridInteractorTest.kt b/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridInteractorTest.kt
index f73d5a3..3d6c623 100644
--- a/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridInteractorTest.kt
+++ b/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridInteractorTest.kt
@@ -19,7 +19,9 @@
import androidx.test.filters.SmallTest
import com.android.customization.model.grid.data.repository.FakeGridRepository
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.domain.interactor.GridSnapshotRestorer
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import com.android.wallpaper.testing.FakeSnapshotStore
import com.android.wallpaper.testing.collectLastValue
import com.google.common.truth.Truth.assertThat
diff --git a/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorerTest.kt b/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorerTest.kt
index c2712b1..e3f03b7 100644
--- a/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorerTest.kt
+++ b/tests/robotests/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorerTest.kt
@@ -19,7 +19,9 @@
import androidx.test.filters.SmallTest
import com.android.customization.model.grid.data.repository.FakeGridRepository
-import com.android.customization.model.grid.shared.model.GridOptionItemsModel
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.domain.interactor.GridSnapshotRestorer
+import com.android.customization.picker.grid.shared.model.GridOptionItemsModel
import com.android.wallpaper.testing.FakeSnapshotStore
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
diff --git a/tests/robotests/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModelTest.kt b/tests/robotests/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModelTest.kt
index 58c5d99..46e914c 100644
--- a/tests/robotests/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/model/grid/ui/viewmodel/GridScreenViewModelTest.kt
@@ -20,8 +20,10 @@
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.customization.model.grid.data.repository.FakeGridRepository
-import com.android.customization.model.grid.domain.interactor.GridInteractor
-import com.android.customization.model.grid.domain.interactor.GridSnapshotRestorer
+import com.android.customization.picker.grid.domain.interactor.GridInteractor
+import com.android.customization.picker.grid.domain.interactor.GridSnapshotRestorer
+import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
+import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
import com.android.wallpaper.testing.FakeSnapshotStore
import com.android.wallpaper.testing.collectLastValue
diff --git a/tests/robotests/src/com/android/customization/model/theme/ThemeManagerTest.java b/tests/robotests/src/com/android/customization/model/theme/ThemeManagerTest.java
deleted file mode 100644
index cfb8a33..0000000
--- a/tests/robotests/src/com/android/customization/model/theme/ThemeManagerTest.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * 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.
- */
-package com.android.customization.model.theme;
-
-import static com.android.customization.model.ResourceConstants.ANDROID_PACKAGE;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_COLOR;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_FONT;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_ANDROID;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SETTINGS;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_ICON_SYSUI;
-import static com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_SHAPE;
-import static com.android.customization.model.ResourceConstants.SETTINGS_PACKAGE;
-import static com.android.customization.model.ResourceConstants.SYSUI_PACKAGE;
-import static com.android.customization.model.ResourceConstants.THEME_SETTING;
-
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
-import static junit.framework.TestCase.assertEquals;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.provider.Settings;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.customization.model.CustomizationManager.Callback;
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.theme.custom.CustomTheme;
-import com.android.customization.module.ThemesUserEventLogger;
-import com.android.customization.testutils.OverlayManagerMocks;
-
-import org.json.JSONObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class ThemeManagerTest {
-
- @Mock OverlayManagerCompat mMockOm;
- @Mock ThemesUserEventLogger mThemesUserEventLogger;
- @Mock ThemeBundleProvider mThemeBundleProvider;
- private OverlayManagerMocks mMockOmHelper;
- private ThemeManager mThemeManager;
- private FragmentActivity mActivity;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
- mActivity = spy(activity);
- mMockOmHelper = new OverlayManagerMocks();
- mMockOmHelper.setUpMock(mMockOm);
- mThemeManager = new ThemeManager(mThemeBundleProvider, activity,
- mMockOm, mThemesUserEventLogger);
- }
-
- @After
- public void cleanUp() {
- mMockOmHelper.clearOverlays();
- }
-
- @Test
- public void apply_WithDefaultTheme_StoresEmptyJsonString() {
- mMockOmHelper.addOverlay("test.package.name_color", ANDROID_PACKAGE,
- OVERLAY_CATEGORY_COLOR, true, 0);
- mMockOmHelper.addOverlay("test.package.name_font", ANDROID_PACKAGE,
- OVERLAY_CATEGORY_FONT, true, 0);
- mMockOmHelper.addOverlay("test.package.name_shape", ANDROID_PACKAGE,
- OVERLAY_CATEGORY_SHAPE, true, 0);
- mMockOmHelper.addOverlay("test.package.name_icon", ANDROID_PACKAGE,
- OVERLAY_CATEGORY_ICON_ANDROID, true, 0);
- mMockOmHelper.addOverlay("test.package.name_settings", SETTINGS_PACKAGE,
- OVERLAY_CATEGORY_ICON_SETTINGS, true, 0);
- mMockOmHelper.addOverlay("test.package.name_sysui", SYSUI_PACKAGE,
- OVERLAY_CATEGORY_ICON_SYSUI, true, 0);
- mMockOmHelper.addOverlay("test.package.name_themepicker", mActivity.getPackageName(),
- OVERLAY_CATEGORY_ICON_SYSUI, true, 0);
-
- ThemeBundle defaultTheme = new ThemeBundle.Builder().asDefault().build(mActivity);
-
- applyTheme(defaultTheme);
-
- assertEquals("Secure Setting should be empty JSON string after applying default theme",
- new JSONObject().toString(),
- Settings.Secure.getString(mActivity.getContentResolver(), THEME_SETTING));
- }
-
- @Test
- public void apply_WithOverlayTheme_StoresSerializedPackagesWithTimestamp() {
- ThemeBundle theme = getOverlayTheme();
- final String serializedPackagesWithTimestamp = theme.getSerializedPackagesWithTimestamp();
-
- theme = spy(theme);
- // Makes it return the fixed serializedPackagesWithTimestamp to test. Since we will get
- // fresh time every time, it's hard to compare for testing.
- when(theme.getSerializedPackagesWithTimestamp())
- .thenReturn(serializedPackagesWithTimestamp);
-
- applyTheme(theme);
-
- assertEquals("Secure Setting should be the overlay packages after applying theme",
- serializedPackagesWithTimestamp,
- Settings.Secure.getString(mActivity.getContentResolver(), THEME_SETTING));
- }
-
- @Test
- public void isAvailable_ThemeBundleProviderAndOverlayManagerAreAvailable_ReturnsTrue() {
- when(mThemeBundleProvider.isAvailable()).thenReturn(true);
- when(mMockOm.isAvailable()).thenReturn(true);
-
- assertTrue(mThemeManager.isAvailable());
- }
-
- @Test
- public void isAvailable_ThemeBundleProviderOrOverlayManagerIsAvailable_ReturnsFalse() {
- when(mThemeBundleProvider.isAvailable()).thenReturn(false);
- when(mMockOm.isAvailable()).thenReturn(true);
- assertFalse(mThemeManager.isAvailable());
-
- when(mThemeBundleProvider.isAvailable()).thenReturn(true);
- when(mMockOm.isAvailable()).thenReturn(false);
- assertFalse(mThemeManager.isAvailable());
- }
-
- @Test
- public void fetchOptions_ThemeBundleProviderFetches() {
- OptionsFetchedListener listener = mock(OptionsFetchedListener.class);
-
- mThemeManager.fetchOptions(listener, false);
-
- verify(mThemeBundleProvider).fetch(listener, false);
- }
-
- @Test
- public void removeCustomTheme_ThemeBundleProviderRemovesCustomTheme() {
- CustomTheme customTheme = mock(CustomTheme.class);
- mThemeManager.removeCustomTheme(customTheme);
-
- verify(mThemeBundleProvider).removeCustomTheme(customTheme);
- }
-
- @Test
- public void findThemeByPackages_ThemeBundleProviderFindsEquivalent() {
- CustomTheme theme = mock(CustomTheme.class);
- mThemeManager.findThemeByPackages(theme);
-
- verify(mThemeBundleProvider).findEquivalent(theme);
- }
-
- @Test
- public void storeEmptyTheme_SettingsSecureStoresEmptyTheme() {
- mThemeManager.storeEmptyTheme();
-
- assertEquals(
- new JSONObject().toString(),
- Settings.Secure.getString(mActivity.getContentResolver(), THEME_SETTING));
- }
-
- @Test
- public void getStoredOverlays_GetsFromSettingsSecureWithExpectedName() {
- ThemeBundle theme = getOverlayTheme();
-
- applyTheme(theme);
-
- assertEquals(
- Settings.Secure.getString(mActivity.getContentResolver(), THEME_SETTING),
- mThemeManager.getStoredOverlays());
- }
-
- private ThemeBundle getOverlayTheme() {
- final String bundleColorPackage = "test.package.name_color";
- final String bundleFontPackage = "test.package.name_font";
- final String otherPackage = "other.package.name_font";
-
- mMockOmHelper.addOverlay(bundleColorPackage, ANDROID_PACKAGE,
- OVERLAY_CATEGORY_COLOR, false, 0);
- mMockOmHelper.addOverlay(bundleFontPackage, ANDROID_PACKAGE,
- OVERLAY_CATEGORY_FONT, false, 0);
- mMockOmHelper.addOverlay(otherPackage, ANDROID_PACKAGE,
- OVERLAY_CATEGORY_FONT, false, 0);
-
- return new ThemeBundle.Builder()
- .addOverlayPackage(OVERLAY_CATEGORY_COLOR, bundleColorPackage)
- .addOverlayPackage(OVERLAY_CATEGORY_FONT, bundleFontPackage)
- .build(mActivity);
- }
-
- private void applyTheme(ThemeBundle theme) {
- mThemeManager.apply(theme, new Callback() {
- @Override
- public void onSuccess() {
- }
-
- @Override
- public void onError(@Nullable Throwable throwable) {
- }
- });
- }
-}
diff --git a/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt b/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
index 95d7e35..4d8f32e 100644
--- a/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
+++ b/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
@@ -46,7 +46,6 @@
checkNotNull(selectedClock)
ClockMetadataModel(
clockId = selectedClock.clockId,
- name = selectedClock.name,
isSelected = true,
selectedColorId = selectedColor,
colorToneProgress = colorTone,
@@ -82,10 +81,10 @@
const val CLOCK_ID_3 = "clock3"
val fakeClocks =
listOf(
- ClockMetadataModel(CLOCK_ID_0, "clock0", true, null, 50, null),
- ClockMetadataModel(CLOCK_ID_1, "clock1", false, null, 50, null),
- ClockMetadataModel(CLOCK_ID_2, "clock2", false, null, 50, null),
- ClockMetadataModel(CLOCK_ID_3, "clock3", false, null, 50, null),
+ ClockMetadataModel(CLOCK_ID_0, true, null, 50, null),
+ ClockMetadataModel(CLOCK_ID_1, false, null, 50, null),
+ ClockMetadataModel(CLOCK_ID_2, false, null, 50, null),
+ ClockMetadataModel(CLOCK_ID_3, false, null, 50, null),
)
const val CLOCK_COLOR_ID = "RED"
const val CLOCK_COLOR_TONE_PROGRESS = 87
diff --git a/tests/robotests/src/com/android/customization/picker/clock/ui/FakeClockViewFactory.kt b/tests/robotests/src/com/android/customization/picker/clock/ui/FakeClockViewFactory.kt
new file mode 100644
index 0000000..c2b42c0
--- /dev/null
+++ b/tests/robotests/src/com/android/customization/picker/clock/ui/FakeClockViewFactory.kt
@@ -0,0 +1,93 @@
+package com.android.customization.picker.clock.ui
+
+import android.content.res.Resources
+import android.view.View
+import androidx.lifecycle.LifecycleOwner
+import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
+import com.android.customization.picker.clock.ui.FakeClockViewFactory.Companion.fakeClocks
+import com.android.customization.picker.clock.ui.view.ClockViewFactory
+import com.android.systemui.plugins.ClockConfig
+import com.android.systemui.plugins.ClockController
+import com.android.systemui.plugins.ClockEvents
+import com.android.systemui.plugins.ClockFaceController
+import java.io.PrintWriter
+
+/**
+ * This is a fake [ClockViewFactory]. Only implement the function if it's actually called in a test.
+ */
+class FakeClockViewFactory(
+ val clockControllers: MutableMap<String, ClockController> = fakeClocks.toMutableMap(),
+) : ClockViewFactory {
+
+ class FakeClockController(
+ override var config: ClockConfig,
+ ) : ClockController {
+ override val smallClock: ClockFaceController
+ get() = TODO("Not yet implemented")
+
+ override val largeClock: ClockFaceController
+ get() = TODO("Not yet implemented")
+
+ override val events: ClockEvents
+ get() = TODO("Not yet implemented")
+
+ override fun initialize(resources: Resources, dozeFraction: Float, foldFraction: Float) =
+ TODO("Not yet implemented")
+
+ override fun dump(pw: PrintWriter) = TODO("Not yet implemented")
+ }
+
+ override fun getController(clockId: String): ClockController = clockControllers.get(clockId)!!
+
+ override fun getLargeView(clockId: String): View {
+ TODO("Not yet implemented")
+ }
+
+ override fun getSmallView(clockId: String): View {
+ TODO("Not yet implemented")
+ }
+
+ override fun updateColorForAllClocks(seedColor: Int?) {
+ TODO("Not yet implemented")
+ }
+
+ override fun updateColor(clockId: String, seedColor: Int?) {
+ TODO("Not yet implemented")
+ }
+
+ override fun updateRegionDarkness() {
+ TODO("Not yet implemented")
+ }
+
+ override fun updateTimeFormat(clockId: String) {
+ TODO("Not yet implemented")
+ }
+
+ override fun registerTimeTicker(owner: LifecycleOwner) {
+ TODO("Not yet implemented")
+ }
+
+ override fun onDestroy() {
+ TODO("Not yet implemented")
+ }
+
+ override fun unregisterTimeTicker(owner: LifecycleOwner) {
+ TODO("Not yet implemented")
+ }
+
+ companion object {
+ val fakeClocks =
+ FakeClockPickerRepository.fakeClocks
+ .map { clock ->
+ clock.clockId to
+ FakeClockController(
+ ClockConfig(
+ id = clock.clockId,
+ name = "Name: ${clock.clockId}",
+ description = "Desc: ${clock.clockId}"
+ )
+ )
+ }
+ .toMap()
+ }
+}
diff --git a/tests/robotests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt b/tests/robotests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
index ca6f8c7..813d888 100644
--- a/tests/robotests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
@@ -16,11 +16,14 @@
package com.android.customization.picker.clock.ui.viewmodel
import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
import com.android.customization.picker.clock.data.repository.ClockPickerRepository
import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import com.android.customization.picker.clock.ui.FakeClockViewFactory
+import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.wallpaper.testing.FakeSnapshotStore
import com.android.wallpaper.testing.collectLastValue
import com.google.common.truth.Truth.assertThat
@@ -48,8 +51,7 @@
FakeClockPickerRepository(
listOf(
ClockMetadataModel(
- clockId = "clock0",
- name = "clock0",
+ clockId = FakeClockPickerRepository.CLOCK_ID_0,
isSelected = true,
selectedColorId = null,
colorToneProgress = ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS,
@@ -58,13 +60,16 @@
)
)
}
+
private lateinit var testDispatcher: CoroutineDispatcher
private lateinit var underTest: ClockCarouselViewModel
private lateinit var interactor: ClockPickerInteractor
+ private lateinit var clockViewFactory: ClockViewFactory
@Before
fun setUp() {
testDispatcher = StandardTestDispatcher()
+ clockViewFactory = FakeClockViewFactory()
Dispatchers.setMain(testDispatcher)
}
@@ -78,7 +83,9 @@
underTest =
ClockCarouselViewModel(
getClockPickerInteractor(repositoryWithMultipleClocks),
- testDispatcher
+ backgroundDispatcher = testDispatcher,
+ clockViewFactory = clockViewFactory,
+ resources = InstrumentationRegistry.getInstrumentation().targetContext.resources,
)
val observedSelectedIndex = collectLastValue(underTest.selectedIndex)
advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
diff --git a/themes/res/values-en-rCA/strings.xml b/themes/res/values-en-rCA/strings.xml
index 780a3c9..ae4e8c5 100644
--- a/themes/res/values-en-rCA/strings.xml
+++ b/themes/res/values-en-rCA/strings.xml
@@ -24,6 +24,5 @@
<string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
<string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
<string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
- <!-- no translation found for monochromatic_name (2554823570460886176) -->
- <skip />
+ <string name="monochromatic_name" msgid="2554823570460886176">"Monochromatic"</string>
</resources>