Merge "Updated API use of ColorScheme and TonalPalette" into tm-qpr-dev
diff --git a/Android.bp b/Android.bp
index 64fc327..6d9ff8f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -28,6 +28,14 @@
}
filegroup {
+ name: "ThemePicker_src_overrides",
+ srcs: [
+ "src_override/**/*.java",
+ "src_override/**/*.kt",
+ ],
+}
+
+filegroup {
name: "ThemePicker_Manifest",
srcs: [
"AndroidManifest.xml",
@@ -46,11 +54,20 @@
+ "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
}
-//
-// Build app code.
-//
-android_app {
- name: "ThemePicker",
+genrule {
+ name: "ThemePicker_res_overrides",
+ tools: ["soong_zip"],
+ srcs: [
+ "res_override/**/*",
+ ],
+ out: ["ThemePicker_res_overrides.zip"],
+ cmd: "INPUTS=($(in)) && "
+ + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
+ + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
+}
+
+java_defaults {
+ name: "ThemePicker_defaults",
static_libs: [
"guava",
@@ -73,17 +90,12 @@
srcs: [
":WallpaperPicker2_srcs",
":ThemePicker_srcs",
- "src_override/**/*.java",
- "src_override/**/*.kt",
- ],
-
- resource_dirs: [
- "res_override",
+ ":ThemePicker_src_overrides",
],
use_embedded_native_libs: true,
- resource_zips: [":WallpaperPicker2_res", ":ThemePicker_res"],
+ resource_zips: [":WallpaperPicker2_res", ":ThemePicker_res", ":ThemePicker_res_overrides"],
optimize: {
enabled: false,
@@ -93,6 +105,15 @@
privileged: true,
system_ext_specific: true,
+}
+
+//
+// Build app code.
+//
+android_app {
+ name: "ThemePicker",
+ defaults: ["ThemePicker_defaults"],
+
platform_apis: true,
manifest: "AndroidManifest.xml",
additional_manifests: [":WallpaperPicker2_Manifest"],
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4282a08..4e71bcc 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -10,7 +10,7 @@
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE" />
- <uses-permission android:name="android.permission.ACCESS_KEYGUARD_QUICK_AFFORDANCES" />
+ <uses-permission android:name="android.permission.CUSTOMIZE_SYSTEM_UI" />
<queries>
<!-- Specific intents Wallpaper picker query for -->
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..0bde595
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+ "presubmit": [
+ {
+ "name": "ThemePickerTests",
+ "options": [
+ {
+ "exclude-annotation": "org.junit.Ignore"
+ }
+ ]
+ }
+ ]
+}
diff --git a/res/color/keyguard_quick_affordance_slot_tab_text_color.xml b/res/color/picker_fragment_tab_text_color.xml
similarity index 100%
rename from res/color/keyguard_quick_affordance_slot_tab_text_color.xml
rename to res/color/picker_fragment_tab_text_color.xml
diff --git a/res/drawable/button_background.xml b/res/drawable/button_background.xml
new file mode 100644
index 0000000..24c7253
--- /dev/null
+++ b/res/drawable/button_background.xml
@@ -0,0 +1,20 @@
+<!--
+ 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <corners android:radius="50dp" />
+ <solid android:color="@color/color_accent_primary" />
+</shape>
diff --git a/res/drawable/color_option_section_selected.xml b/res/drawable/color_option_section_selected.xml
new file mode 100644
index 0000000..13451a5
--- /dev/null
+++ b/res/drawable/color_option_section_selected.xml
@@ -0,0 +1,43 @@
+<?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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:height="@dimen/component_color_selected_small_diameter_default"
+ android:width="@dimen/component_color_selected_small_diameter_default"
+ android:gravity="center">
+ <shape
+ android:shape="ring"
+ android:innerRadius="@dimen/component_color_overflow_small_radius_default"
+ android:thickness="2dp"
+ android:useLevel="false">
+ <solid android:color="@color/text_color_primary"/>
+ </shape>
+ </item>
+ <item
+ android:height="@dimen/component_color_selected_small_diameter_default"
+ android:width="@dimen/component_color_selected_small_diameter_default"
+ android:gravity="center">
+ <shape
+ android:shape="ring"
+ android:innerRadius="@dimen/component_color_overflow_small_radius_default"
+ android:thickness="-3dp"
+ android:useLevel="false">
+ <solid android:color="@color/color_surface"/>
+ </shape>
+ </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/color_overflow.xml b/res/drawable/color_overflow.xml
new file mode 100644
index 0000000..90c2684
--- /dev/null
+++ b/res/drawable/color_overflow.xml
@@ -0,0 +1,34 @@
+<?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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:height="@dimen/component_color_overflow_small_diameter_default"
+ android:width="@dimen/component_color_overflow_small_diameter_default"
+ android:gravity="center">
+ <shape
+ android:shape="ring"
+ android:innerRadius="@dimen/component_color_overflow_small_radius_default"
+ android:thickness="-1dp"
+ android:useLevel="false">
+ <solid android:color="@color/color_surface_variant"/>
+ </shape>
+ </item>
+ <item
+ android:drawable="@drawable/ic_more_horiz"
+ android:gravity="center"/>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/color_section_background.xml b/res/drawable/color_section_background.xml
new file mode 100644
index 0000000..f96824b
--- /dev/null
+++ b/res/drawable/color_section_background.xml
@@ -0,0 +1,29 @@
+<?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.
+ ~
+ -->
+
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+
+ <solid android:color="@color/color_surface" />
+
+ <corners
+ android:topLeftRadius="32dp"
+ android:topRightRadius="32dp"
+ android:bottomLeftRadius="8dp"
+ android:bottomRightRadius="8dp" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_clock_24px.xml b/res/drawable/ic_clock_24px.xml
index b3f1fee..946bc51 100644
--- a/res/drawable/ic_clock_24px.xml
+++ b/res/drawable/ic_clock_24px.xml
@@ -20,6 +20,6 @@
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
- android:fillColor="@android:color/white"
+ android:fillColor="?android:textColorPrimary"
android:pathData="M15.3,16.7 L16.7,15.3 13,11.6V7H11V12.4ZM12,22Q9.925,22 8.1,21.212Q6.275,20.425 4.925,19.075Q3.575,17.725 2.788,15.9Q2,14.075 2,12Q2,9.925 2.788,8.1Q3.575,6.275 4.925,4.925Q6.275,3.575 8.1,2.787Q9.925,2 12,2Q14.075,2 15.9,2.787Q17.725,3.575 19.075,4.925Q20.425,6.275 21.212,8.1Q22,9.925 22,12Q22,14.075 21.212,15.9Q20.425,17.725 19.075,19.075Q17.725,20.425 15.9,21.212Q14.075,22 12,22ZM12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12ZM12,20Q15.325,20 17.663,17.663Q20,15.325 20,12Q20,8.675 17.663,6.337Q15.325,4 12,4Q8.675,4 6.338,6.337Q4,8.675 4,12Q4,15.325 6.338,17.663Q8.675,20 12,20Z"/>
</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_more_horiz.xml b/res/drawable/ic_more_horiz.xml
new file mode 100644
index 0000000..7c17df2
--- /dev/null
+++ b/res/drawable/ic_more_horiz.xml
@@ -0,0 +1,25 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24">
+ <path
+ android:fillColor="@color/text_color_primary"
+ android:pathData="M6,14Q5.175,14 4.588,13.412Q4,12.825 4,12Q4,11.175 4.588,10.587Q5.175,10 6,10Q6.825,10 7.412,10.587Q8,11.175 8,12Q8,12.825 7.412,13.412Q6.825,14 6,14ZM12,14Q11.175,14 10.588,13.412Q10,12.825 10,12Q10,11.175 10.588,10.587Q11.175,10 12,10Q12.825,10 13.413,10.587Q14,11.175 14,12Q14,12.825 13.413,13.412Q12.825,14 12,14ZM18,14Q17.175,14 16.587,13.412Q16,12.825 16,12Q16,11.175 16.587,10.587Q17.175,10 18,10Q18.825,10 19.413,10.587Q20,11.175 20,12Q20,12.825 19.413,13.412Q18.825,14 18,14Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/keyguard_quick_affordance_picker_background.xml b/res/drawable/picker_fragment_background.xml
similarity index 100%
rename from res/drawable/keyguard_quick_affordance_picker_background.xml
rename to res/drawable/picker_fragment_background.xml
diff --git a/res/drawable/keyguard_quick_affordance_slot_tab_background.xml b/res/drawable/picker_fragment_tab_background.xml
similarity index 100%
rename from res/drawable/keyguard_quick_affordance_slot_tab_background.xml
rename to res/drawable/picker_fragment_tab_background.xml
diff --git a/res/layout/clock_section_view.xml b/res/layout/clock_section_view.xml
index 8512498..4a651ca 100644
--- a/res/layout/clock_section_view.xml
+++ b/res/layout/clock_section_view.xml
@@ -33,10 +33,11 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/clock_title"
+ android:text="@string/clock_settings_title"
style="@style/SectionTitleTextStyle" />
<TextView
+ android:id="@+id/selected_clock_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/clock_description"
@@ -49,7 +50,5 @@
android:scaleType="center"
android:src="@drawable/ic_clock_24px"
android:background="@drawable/option_border_color"
- android:contentDescription="@string/clock_picker_entry_content_description"
- android:tint="@color/text_color_primary" />
-
+ android:contentDescription="@string/clock_picker_entry_content_description" />
</com.android.customization.picker.clock.ClockSectionView>
\ No newline at end of file
diff --git a/res/layout/color_option_section.xml b/res/layout/color_option_section.xml
new file mode 100644
index 0000000..d10f8e5
--- /dev/null
+++ b/res/layout/color_option_section.xml
@@ -0,0 +1,102 @@
+<?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.
+-->
+<!--
+ This displays the selection outline. It is dynamically sized, constrained remain square and
+ have a maximum size, and be centered within its parent. Defines a layout_weight of 1, and should
+ be used with a Linear Layout parent where weightSum is defined.
+ -->
+<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="0dp"
+ 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:layout_weight="1"
+ app:layout_constraintDimensionRatio="1:1"
+ app:layout_constraintWidth_max="@dimen/component_color_chip_small_diameter_default">
+ <!--
+ This is the color wheel itself, constrained to a maximum size and centered. The
+ constraint percentage is sized to leave a padding for the outer selection outline,
+ proportionate to 2dp for a 40dp color wheel
+ -->
+ <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_constraintDimensionRatio="1:1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_percent="0.909">
+
+ <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" />
+
+ <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>
+
+ <ImageView
+ android:id="@+id/option_selected"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_option_section_selected"
+ android:visibility="gone"/>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/color_option_section_overflow.xml b/res/layout/color_option_section_overflow.xml
new file mode 100644
index 0000000..fb25c35
--- /dev/null
+++ b/res/layout/color_option_section_overflow.xml
@@ -0,0 +1,56 @@
+<?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.
+-->
+<!--
+ This is added to keep sizing consistent with the color section options. For the color
+ section options, this displays the selection outline.
+ -->
+<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="0dp"
+ 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:layout_weight="1"
+ app:layout_constraintDimensionRatio="1:1"
+ app:layout_constraintWidth_max="@dimen/component_color_chip_small_diameter_default">
+
+ <!--
+ This is added to keep sizing consistent with the color section options. For the color
+ section options, this is the color wheel itself.
+ -->
+ <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_constraintDimensionRatio="1:1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_percent="0.909"
+ android:clipChildren="false">
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_overflow" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/color_section_view2.xml b/res/layout/color_section_view2.xml
new file mode 100644
index 0000000..9ad140b
--- /dev/null
+++ b/res/layout/color_section_view2.xml
@@ -0,0 +1,51 @@
+<?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.
+-->
+<com.android.customization.picker.color.ColorSectionView2
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="@dimen/section_bottom_padding"
+ android:paddingHorizontal="@dimen/section_horizontal_padding"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:id="@+id/color_section_option_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:background="@drawable/color_section_background"
+ android:paddingVertical="24dp"
+ android:paddingHorizontal="24dp"
+ android:weightSum="@integer/color_section_num_columns">
+
+ <!--
+ This is just an invisible placeholder put in place so that the parent keeps its height
+ stable as the RecyclerView updates from 0 items to N items. Keeping it stable allows the
+ layout logic to keep the size of the preview container stable as well, which bodes well
+ for setting up the SurfaceView for remote rendering without changing its size after the
+ content is loaded into the RecyclerView.
+
+ It's critical for any TextViews inside the included layout to have text.
+ -->
+ <include
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ layout="@layout/color_option_section_overflow"
+ android:visibility="invisible"
+ android:layout_weight="1"/>
+ </LinearLayout>
+</com.android.customization.picker.color.ColorSectionView2>
diff --git a/res/layout/fragment_clock_custom_picker_demo.xml b/res/layout/fragment_clock_custom_picker_demo.xml
new file mode 100644
index 0000000..c05c4a8
--- /dev/null
+++ b/res/layout/fragment_clock_custom_picker_demo.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <FrameLayout
+ android:id="@+id/section_header_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintBottom_toTopOf="@+id/clock_preview_card_list_demo"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+ <include layout="@layout/section_header" />
+ </FrameLayout>
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/clock_preview_card_list_demo"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/section_header_container"
+ android:clipToPadding="false" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/res/layout/fragment_color_picker.xml b/res/layout/fragment_color_picker.xml
new file mode 100644
index 0000000..d91ac5e
--- /dev/null
+++ b/res/layout/fragment_color_picker.xml
@@ -0,0 +1,124 @@
+<?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:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <FrameLayout
+ android:id="@+id/section_header_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <include layout="@layout/section_header" />
+
+ </FrameLayout>
+
+ <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingTop="36dp"
+ android:paddingBottom="40dp">
+
+ <include
+ android:id="@+id/preview"
+ layout="@layout/wallpaper_preview_card"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"/>
+
+ </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_marginHorizontal="24dp"
+ android:layout_marginBottom="28dp"
+ android:background="@drawable/picker_fragment_background"
+ android:paddingTop="22dp"
+ android:paddingBottom="62dp">
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ >
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/color_type_tabs"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:paddingHorizontal="16dp" />
+
+ <!--
+ This is just an invisible placeholder put in place so that the parent keeps its height
+ stable as the RecyclerView updates from 0 items to N items. Keeping it stable allows the
+ layout logic to keep the size of the preview container stable as well, which bodes well
+ for setting up the SurfaceView for remote rendering without changing its size after the
+ content is loaded into the RecyclerView.
+
+ It's critical for any TextViews inside the included layout to have text.
+ -->
+ <include
+ layout="@layout/picker_fragment_tab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="invisible" />
+
+ </FrameLayout>
+
+ <View
+ android:layout_width="0dp"
+ android:layout_height="22dp" />
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <androidx.viewpager2.widget.ViewPager2
+ android:id="@+id/color_section_view_pager"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/color_options_container_top_margin"
+ android:clipChildren="false"
+ android:clipToPadding="false"/>
+
+ <!--
+ This is just an invisible placeholder put in place so that the parent keeps its height
+ stable as the RecyclerView updates from 0 items to N items. Keeping it stable allows the
+ layout logic to keep the size of the preview container stable as well, which bodes well
+ for setting up the SurfaceView for remote rendering without changing its size after the
+ content is loaded into the RecyclerView.
+
+ It's critical for any TextViews inside the included layout to have text.
+ -->
+ <include
+ layout="@layout/color_option"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="invisible" />
+
+ </FrameLayout>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/fragment_lock_screen_quick_affordances.xml b/res/layout/fragment_lock_screen_quick_affordances.xml
index 9927e6a..714d4fa 100644
--- a/res/layout/fragment_lock_screen_quick_affordances.xml
+++ b/res/layout/fragment_lock_screen_quick_affordances.xml
@@ -15,8 +15,7 @@
~
-->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@@ -30,11 +29,21 @@
</FrameLayout>
- <!-- TODO(b/254858701): plug in the preview here. -->
- <View
+ <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
- android:layout_weight="1" />
+ android:layout_weight="1"
+ android:paddingTop="36dp"
+ android:paddingBottom="40dp">
+
+ <include
+ android:id="@+id/preview"
+ layout="@layout/wallpaper_preview_card"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"/>
+
+ </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -42,27 +51,71 @@
android:orientation="vertical"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="28dp"
- android:background="@drawable/keyguard_quick_affordance_picker_background"
+ android:background="@drawable/picker_fragment_background"
android:paddingTop="22dp"
android:paddingBottom="62dp">
- <androidx.recyclerview.widget.RecyclerView
- android:id="@id/slot_tabs"
+ <FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:clipToPadding="false"
- android:paddingHorizontal="16dp" />
+ >
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@id/slot_tabs"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:clipToPadding="false"
+ android:paddingHorizontal="16dp" />
+
+ <!--
+ This is just an invisible placeholder put in place so that the parent keeps its height
+ stable as the RecyclerView updates from 0 items to N items. Keeping it stable allows the
+ layout logic to keep the size of the preview container stable as well, which bodes well
+ for setting up the SurfaceView for remote rendering without changing its size after the
+ content is loaded into the RecyclerView.
+
+ It's critical for any TextViews inside the included layout to have text.
+ -->
+ <include
+ layout="@layout/picker_fragment_tab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="invisible" />
+
+ </FrameLayout>
<View
android:layout_width="0dp"
android:layout_height="22dp" />
- <androidx.recyclerview.widget.RecyclerView
- android:id="@id/affordances"
+ <FrameLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:clipToPadding="false"
- android:paddingHorizontal="16dp" />
+ android:layout_height="wrap_content">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@id/affordances"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:paddingHorizontal="16dp" />
+
+ <!--
+ This is just an invisible placeholder put in place so that the parent keeps its height
+ stable as the RecyclerView updates from 0 items to N items. Keeping it stable allows the
+ layout logic to keep the size of the preview container stable as well, which bodes well
+ for setting up the SurfaceView for remote rendering without changing its size after the
+ content is loaded into the RecyclerView.
+
+ It's critical for any TextViews inside the included layout to have text.
+ -->
+ <include
+ layout="@layout/keyguard_quick_affordance"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="invisible" />
+
+ </FrameLayout>
</LinearLayout>
diff --git a/res/layout/keyguard_quick_affordance.xml b/res/layout/keyguard_quick_affordance.xml
index 90ba68e..b3b6893 100644
--- a/res/layout/keyguard_quick_affordance.xml
+++ b/res/layout/keyguard_quick_affordance.xml
@@ -18,7 +18,7 @@
<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="@dimen/keyguard_quick_affordance_picker_item_width"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -48,6 +48,8 @@
android:layout_height="wrap_content"
android:textColor="@color/text_color_primary"
android:singleLine="true"
- android:ellipsize="end"/>
+ android:ellipsize="end"
+ android:text="Placeholder for stable size calculation, please do not remove."
+ tools:ignore="HardcodedText" />
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/keyguard_quick_affordance_enablement_dialog.xml b/res/layout/keyguard_quick_affordance_enablement_dialog.xml
new file mode 100644
index 0000000..f3d4d8c
--- /dev/null
+++ b/res/layout/keyguard_quick_affordance_enablement_dialog.xml
@@ -0,0 +1,59 @@
+<?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="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/picker_fragment_background"
+ android:orientation="vertical"
+ android:padding="24dp">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="32dp"
+ android:layout_height="32dp"
+ android:tint="@color/color_accent_primary"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="16dp" />
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.MaterialComponents.Headline4"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="16dp" />
+
+ <TextView
+ android:id="@+id/message"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="38dp" />
+
+ <Button
+ android:id="@+id/button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/ActionPrimaryButton"
+ android:background="@drawable/button_background"
+ android:layout_gravity="end" />
+
+</LinearLayout>
diff --git a/res/layout/notification_section.xml b/res/layout/notification_section.xml
new file mode 100644
index 0000000..713624e
--- /dev/null
+++ b/res/layout/notification_section.xml
@@ -0,0 +1,57 @@
+<?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.
+ ~
+ -->
+<com.android.customization.picker.notifications.ui.view.NotificationSectionView
+ 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"
+ android:background="?selectableItemBackground"
+ android:clickable="true"
+ android:paddingVertical="@dimen/section_top_padding"
+ android:paddingHorizontal="@dimen/section_horizontal_padding"
+ android:orientation="horizontal"
+ android:gravity="center_vertical">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/notifications_section_title"
+ style="@style/SectionTitleTextStyle" />
+
+ <TextView
+ android:id="@+id/subtitle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/SectionSubtitleTextStyle"/>
+ </LinearLayout>
+
+ <Switch
+ android:id="@+id/switcher"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:clickable="false"
+ style="@style/Switch.SettingsLib"
+ tools:ignore="UseSwitchCompatOrMaterialXml" />
+
+</com.android.customization.picker.notifications.ui.view.NotificationSectionView>
diff --git a/res/layout/keyguard_quick_affordance_slot_tab.xml b/res/layout/picker_fragment_tab.xml
similarity index 77%
rename from res/layout/keyguard_quick_affordance_slot_tab.xml
rename to res/layout/picker_fragment_tab.xml
index ba233cd..cd04758 100644
--- a/res/layout/keyguard_quick_affordance_slot_tab.xml
+++ b/res/layout/picker_fragment_tab.xml
@@ -17,13 +17,16 @@
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="@color/keyguard_quick_affordance_slot_tab_text_color"
+ android:textColor="@color/picker_fragment_tab_text_color"
android:paddingVertical="8dp"
android:paddingHorizontal="16dp"
android:minWidth="48dp"
android:minHeight="48dp"
android:gravity="center"
- android:background="@drawable/keyguard_quick_affordance_slot_tab_background" />
+ android:background="@drawable/picker_fragment_tab_background"
+ android:text="Placeholder for stable size calculation, please do not remove."
+ tools:ignore="HardcodedText" />
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 5144dc7..268c491 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Programrooster"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Pas toe"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tik om te wysig"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basiese kleure"</string>
<string name="color_changed" msgid="7029571720331641235">"Kleur het verander"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamies"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Linkerknoppie"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Regterknoppie"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Geen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Bykomende opstelling word benodig"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Kortpaaie"</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">"Geen"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index fbf311f..bbb7d5f 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"የመተግበሪያ ፍርግርግ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ተግብር"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ለማርትዕ መታ ያድርጉ"</string>
@@ -91,26 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"መሰረታዊ ቀለሞች"</string>
<string name="color_changed" msgid="7029571720331641235">"ቀለም ተቀይሯል"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ተለዋዋጭ"</string>
- <!-- no translation found for keyguard_slot_name_bottom_start (6717374042663171860) -->
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
<skip />
- <!-- no translation found for keyguard_slot_name_bottom_end (7636885379738905151) -->
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
<skip />
- <!-- no translation found for keyguard_affordance_none (1751643933430782312) -->
+ <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_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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_title (307756993596011884) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<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) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0b63af9..8c9e691 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"شبكة التطبيقات"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"تطبيق"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"انقُر للتعديل."</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"الألوان الأساسية"</string>
<string name="color_changed" msgid="7029571720331641235">"تم تغيير اللون."</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ألوان ديناميكية"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"الزر الأيسر"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"الزر الأيمن"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"بدون أزرار"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"يجب ضبط إعدادات إضافية"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 9427029..c6c8594 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"এপৰ গ্ৰিড"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"প্ৰয়োগ কৰক"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"সম্পাদনা কৰিবলৈ টিপক"</string>
@@ -91,19 +92,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"প্ৰাথমিক ৰং"</string>
<string name="color_changed" msgid="7029571720331641235">"ৰং সলনি কৰা হৈছে"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ডাইনামিক"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"বাওঁফালৰ বুটাম"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"সোঁফালৰ বুটাম"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"নাই"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"অতিৰিক্ত ছেটআপৰ আৱশ্যক"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 791c879..fe50320 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Əsas rənglər"</string>
<string name="color_changed" msgid="7029571720331641235">"Rəng dəyişdirildi"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamik"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Sol düymə"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Sağ düymə"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Heç bir"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Əlavə ayarlama tələb olunur"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Qısayollar"</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">"Heç bir"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index b7316d1..1e51ed8 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
<string name="color_changed" msgid="7029571720331641235">"Boja je promenjena"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamički"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Levo dugme"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Desno dugme"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Potrebno je dodatno podešavanje"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečice"</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">"Ništa"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index d223bfb..1d9e078 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Сетка праграм"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Ужыць"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Дакраніцеся, каб рэдагаваць"</string>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Асноўныя колеры"</string>
<string name="color_changed" msgid="7029571720331641235">"Колер зменены"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Дынамічны"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Левая кнопка"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Правая кнопка"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Няма"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Патрабуецца дадатковае наладжванне"</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_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>
@@ -102,4 +106,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 1c6dbac..a75ec20 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Решетка с прил."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Прилагане"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Докоснете, за да редактирате"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Основни цветове"</string>
<string name="color_changed" msgid="7029571720331641235">"Цветът бе променен"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамично"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Ляв бутон"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Десен бутон"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Без"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Необходимо е допълнително настройване"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 0059504..b7d09e9 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"অ্যাপ গ্রিড"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"প্রয়োগ করুন"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"এডিট করতে ট্যাপ করুন"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"প্রাথমিক রঙ"</string>
<string name="color_changed" msgid="7029571720331641235">"রঙ পরিবর্তন করা হয়েছে"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ডায়নামিক"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"বাঁদিকের বোতাম"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ডানদিকের বোতাম"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"কোনওটিই নয়"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"অতিরিক্ত সেট-আপ করতে হবে"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index d1dae4e..79f1ac3 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
<string name="color_changed" msgid="7029571720331641235">"Boja je promijenjena"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamički"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Lijevo dugme"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Desno dugme"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Potrebno je dodatno postavljanje"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečice"</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">"Ništa"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 4435442..6873889 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Colors bàsics"</string>
<string name="color_changed" msgid="7029571720331641235">"S\'ha canviat el color"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinàmic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botó esquerre"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botó dret"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Cap"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configuració addicional necessària"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Dreceres"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Dreceres"</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">"Cap"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 824ef8b..5d01f6b 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Základní barvy"</string>
<string name="color_changed" msgid="7029571720331641235">"Barva byla změněna"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamické"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Levé tlačítko"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Pravé tlačítko"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Žádné"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Je potřeba další nastavení"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Zástupci"</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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7777603..c437fe3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Standardfarver"</string>
<string name="color_changed" msgid="7029571720331641235">"Farven er ændret"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisk"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Venstre knap"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Højre knap"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ingen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Der kræves yderligere konfiguration"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Genveje"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Genveje"</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">"Ingen"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index b2a4b45..cc57e75 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Standardfarben"</string>
<string name="color_changed" msgid="7029571720331641235">"Farbe geändert"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisch"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Linke Taste"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Rechte Taste"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Keine"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Zusätzliche Einrichtung erforderlich"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Verknüpfungen"</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">"Keine"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index ae67feb..514ae8d 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Πλέγμα εφαρμ."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Εφαρμογή"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Πατήστε για επεξεργασία"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Βασικά χρώματα"</string>
<string name="color_changed" msgid="7029571720331641235">"Το χρώμα άλλαξε"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Δυναμική"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Κουμπί αριστερά"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Κουμπί δεξιά"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Καμία"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Χρειάζεται πρόσθετη ρύθμιση"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index d04059a..98176a9 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
<string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Left button"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Right button"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Additional setup needed"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 9f43df3..9b77692 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,13 +93,13 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
<string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <!-- no translation found for keyguard_slot_name_bottom_start (6717374042663171860) -->
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
<skip />
- <!-- no translation found for keyguard_slot_name_bottom_end (7636885379738905151) -->
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
<skip />
<!-- no translation found for keyguard_affordance_none (1751643933430782312) -->
<skip />
- <!-- no translation found for keyguard_affordance_enablement_dialog_title (307756993596011884) -->
+ <!-- no translation found for keyguard_affordance_enablement_dialog_title (3389730825561696493) -->
<skip />
<!-- no translation found for keyguard_affordance_enablement_dialog_action_template (8117011931337357438) -->
<skip />
@@ -113,4 +115,10 @@
<skip />
<!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
<skip />
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index d04059a..98176a9 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
<string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Left button"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Right button"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Additional setup needed"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d04059a..98176a9 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
<string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Left button"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Right button"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Additional setup needed"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 24e213d..774f38b 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basic colors"</string>
<string name="color_changed" msgid="7029571720331641235">"Color changed"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Left button"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Right button"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Additional setup needed"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index d465416..2e41871 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Colores básicos"</string>
<string name="color_changed" msgid="7029571720331641235">"Se cambió el color"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botón izquierdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botón derecho"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Se necesitan parámetros de configuración adicionales"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Comb. de teclas"</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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index c7ab534..a9c0e2a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Colores básicos"</string>
<string name="color_changed" msgid="7029571720331641235">"Color cambiado"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botón izquierdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botón derecho"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Se necesitan ajustes adicionales"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index f6f82d7..68f1cc7 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Põhivärvid"</string>
<string name="color_changed" msgid="7029571720331641235">"Värvi muudeti"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dünaamiline"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Vasak nupp"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Parem nupp"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Puudub"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Vajalik on täiendav seadistus"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Otseteed"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Otseteed"</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">"Pole"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index c7e1948..6bdca97 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Oinarrizko koloreak"</string>
<string name="color_changed" msgid="7029571720331641235">"Aldatu da kolorea"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamikoa"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Ezkerreko botoia"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Eskuineko botoia"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Bat ere ez"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Beste ezarpen batzuk konfiguratu behar dira"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Lasterbideak"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Lasterbideak"</string>
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 6b6ef2c..1d63054 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"جدول برنامه"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"اعمال"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"برای ویرایش ضربه بزنید"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"رنگهای اصلی"</string>
<string name="color_changed" msgid="7029571720331641235">"رنگ تغییر کرد"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"پویا"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"دکمه چپ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"دکمه راست"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"هیچکدام"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"راهاندازی اضافهای نیاز است"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index cc21b65..db81144 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Perusvärit"</string>
<string name="color_changed" msgid="7029571720331641235">"Väri vaihdettu"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynaaminen"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Vasen painike"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Oikea painike"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"–"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Käyttöönotto edellyttää lisävaiheita"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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_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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 95965b1..0135308 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
<string name="color_changed" msgid="7029571720331641235">"Couleur changée"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamique"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Bouton gauche"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Bouton droit"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucune"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configuration supplémentaire requise"</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_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>
@@ -102,4 +106,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index d912846..d2b3cf5 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
<string name="color_changed" msgid="7029571720331641235">"Couleur modifiée"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamique"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Bouton gauche"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Bouton droit"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucun"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configuration supplémentaire nécessaire"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Raccourcis"</string>
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 4aac312..91caff1 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
<string name="color_changed" msgid="7029571720331641235">"Cor modificada"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinámica"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botón esquerdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botón dereito"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ningunha"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"É preciso facer axustes adicionais"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Atallos"</string>
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index ff8f549..7a43e61 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ઍપ ગ્રિડ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"લાગુ કરો"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ફેરફાર કરવા માટે ટૅપ કરો"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"મૂળભૂત રંગો"</string>
<string name="color_changed" msgid="7029571720331641235">"રંગ બદલ્યો છે"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ડાઇનૅમિક"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ડાબી બાજુનું બટન"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"જમણી બાજુનું બટન"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"એકપણ નહીં"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"વધારાનું સેટઅપ જરૂરી છે"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4e7306f..95353c8 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ऐप्लिकेशन ग्रिड"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"लागू करें"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"बदलाव करने के लिए टैप करें"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"सामान्य रंग"</string>
<string name="color_changed" msgid="7029571720331641235">"रंग बदल दिया गया है"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"डाइनैमिक"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"बायां बटन"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"दायां बटन"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"कोई नहीं"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"अलग से सेटअप करने की ज़रूरत है"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 8e76df2..d90d5d8 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
<string name="color_changed" msgid="7029571720331641235">"Promijenjena boja"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamično"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Lijevi gumb"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Desni gumb"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Potrebno je dodatno postavljanje"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečaci"</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">"Ništa"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index acad8aa..7c7fd5e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Alapszínek"</string>
<string name="color_changed" msgid="7029571720331641235">"Szín módosítva"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamikus"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Balra gomb"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Jobbra gomb"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nincs"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"További beállítás szükséges"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Gyorsparancsok"</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">"Nincs"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 73ec705..5a157d3 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Հավելվածների ցանց"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Կիրառել"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Հպեք՝ փոփոխելու համար"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Հիմնական գույներ"</string>
<string name="color_changed" msgid="7029571720331641235">"Գույնը փոխվեց"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Դինամիկ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"«Ձախ» կոճակ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"«Աջ» կոճակ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ոչ մեկը"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Պահանջվում է լրացուցիչ կարգավորում"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index ba6ed0c..b9ad887 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Warna dasar"</string>
<string name="color_changed" msgid="7029571720331641235">"Warna diubah"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamis"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Tombol kiri"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Tombol kanan"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Tidak ada"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Perlu penyiapan tambahan"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pintasan"</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">"Tidak ada"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index ca89744..a0a6bba 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Grunnlitir"</string>
<string name="color_changed" msgid="7029571720331641235">"Lit breytt"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Breytilegt"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Vinstri hnappur"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Hægri hnappur"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ekkert"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Þörf á viðbótaruppsetningu"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Flýtileiðir"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Flýtileiðir"</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">"Ekkert"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index dcc2281..6b183a7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Colori di base"</string>
<string name="color_changed" msgid="7029571720331641235">"Colore modificato"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamica"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Puls. sinistro"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Puls. destro"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nessuno"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"È necessaria ulteriore configurazione"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 1aa6c2c..1bbbe6e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"תצוגת האפליקציות"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"אישור"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"יש להקיש כדי לערוך"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"הצבעים הבסיסיים"</string>
<string name="color_changed" msgid="7029571720331641235">"הצבע השתנה"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"דינמי"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"הלחצן השמאלי"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"הלחצן הימני"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ללא"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"נדרשת הגדרה נוספת"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index ace60d0..1e39f2e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"アプリグリッド"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"適用"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"タップして編集"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"基本の色"</string>
<string name="color_changed" msgid="7029571720331641235">"色を変更しました"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"動的"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"左ボタン"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"右ボタン"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"なし"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"追加のセットアップが必要です"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index eb6729b..78e5395 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"აპების ბადე"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"მისადაგება"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"შეეხეთ რედაქტირებისთვის"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ძირითადი ფერები"</string>
<string name="color_changed" msgid="7029571720331641235">"ფერი შეიცვალა"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"დინამიკური"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"მარცხენა ღილაკი"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"მარჯვენა ღილაკი"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"არცერთი"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"საჭიროა დამატებითი დაყენება"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 3fe2670..23ff8d8 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Қолданба торы"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Қолдану"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Өзгерту үшін түртіңіз"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Негізгі түстер"</string>
<string name="color_changed" msgid="7029571720331641235">"Түс өзгертілді."</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамикалық"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Сол жақ түйме"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Оң жақ түйме"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Жоқ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Қосымша реттеу қажет"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 7b0f0d9..9139fb9 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ក្រឡាកម្មវិធី"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ប្រើ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ចុច ដើម្បីកែ"</string>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ពណ៌លំនាំដើម"</string>
<string name="color_changed" msgid="7029571720331641235">"បានផ្លាស់ប្ដូរពណ៌"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ឌីណាមិក"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ប៊ូតុងឆ្វេង"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ប៊ូតុងស្ដាំ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"គ្មាន"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ចាំបាច់ត្រូវរៀបចំបន្ថែម"</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_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>
@@ -102,4 +106,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index fd43a2d..70cc069 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ಆ್ಯಪ್ ಗ್ರಿಡ್"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ಅನ್ವಯಿಸಿ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ಎಡಿಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ಮೂಲ ಬಣ್ಣಗಳು"</string>
<string name="color_changed" msgid="7029571720331641235">"ಬಣ್ಣ ಬದಲಾಗಿದೆ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ಡೈನಾಮಿಕ್"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ಎಡಗಡೆಯ ಬಟನ್"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ಬಲಗಡೆಯ ಬಟನ್"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ಯಾವುದೂ ಅಲ್ಲ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ಹೆಚ್ಚುವರಿ ಸೆಟಪ್ ಮಾಡಬೇಕಾಗಿದೆ"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 24732e5..8ebda91 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"앱 그리드"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"적용"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"탭하여 수정"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"기본 색상"</string>
<string name="color_changed" msgid="7029571720331641235">"색상 변경됨"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"동적"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"왼쪽 버튼"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"오른쪽 버튼"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"없음"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"추가 설정 필요"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 7dbd701..580ec7e 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Колдонмонун торчосу"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Колдонуу"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Өзгөртүү үчүн таптап коюңуз"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Негизги түстөр"</string>
<string name="color_changed" msgid="7029571720331641235">"Түс өзгөртүлдү"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамикалык"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Сол баскыч"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Оң баскыч"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Жок"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Кошумча тууралоо керек"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 8a9cdb2..e4d22dc 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ຕາຕະລາງແອັບ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ນຳໃຊ້"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ແຕະເພື່ອແກ້ໄຂ"</string>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ສີພື້ນຖານ"</string>
<string name="color_changed" msgid="7029571720331641235">"ປ່ຽນສີແລ້ວ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ໄດນາມິກ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ປຸ່ມຊ້າຍ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ປຸ່ມຂວາ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ບໍ່ມີ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ຕ້ອງຕັ້ງຄ່າເພີ່ມເຕີມ"</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_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>
@@ -102,4 +106,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 3e0b45d..d4eb733 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Pagrindinės spalvos"</string>
<string name="color_changed" msgid="7029571720331641235">"Spalva pakeista"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinaminės"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Mygtukas kairėn"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Mygtukas dešinėn"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nėra"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Reikalinga papildoma sąranka"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Šaukiniai"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Šaukiniai"</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">"Nėra"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f9756e6..35f4bc4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Pamatkrāsas"</string>
<string name="color_changed" msgid="7029571720331641235">"Krāsa mainīta"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamiska"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Kreisā poga"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Labā poga"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nav"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Jāveic papildu iestatīšana"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Saīsnes"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Saīsnes"</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">"Nav"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 812dd4d..0faeb0c 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Мрежа"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Примени"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Допрете за да измените"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Основни бои"</string>
<string name="color_changed" msgid="7029571720331641235">"Бојата е променета"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамично"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Лево копче"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Десно копче"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Нема"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Потребно е дополнително поставување"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 8a57b86..80ac895 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"ആപ്പ് ഗ്രിഡ്"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"പ്രയോഗിക്കുക"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"എഡിറ്റ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"അടിസ്ഥാന നിറങ്ങൾ"</string>
<string name="color_changed" msgid="7029571720331641235">"നിറം മാറ്റി"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ഡൈനാമിക്"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ഇടതുവശത്തെ ബട്ടൺ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"വലതുവശത്തെ ബട്ടൺ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ഒന്നുമില്ല"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"കൂടുതൽ സജ്ജീകരണം ആവശ്യമാണ്"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 1ee0c91..4406bed 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Аппын хүснэгт"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Ашиглах"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Засахын тулд товшино уу"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Суурь өнгөнүүд"</string>
<string name="color_changed" msgid="7029571720331641235">"Өнгийг өөрчилсөн"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамик"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Зүүн товчлуур"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Баруун товчлуур"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Байхгүй"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Нэмэлт тохируулга шаардлагатай"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 4ae67da..d0fe7ca 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ॲप ग्रिड"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"लागू करा"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"संपादित करण्यासाठी टॅप करा"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"डीफॉल्ट रंग"</string>
<string name="color_changed" msgid="7029571720331641235">"रंग बदलला आहे"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"सतत बदलणारे"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"डावीकडील बटण"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"उजवीकडील बटण"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"काहीही नाही"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"अतिरिक्त सेटअप आवश्यक आहे"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index e83e617..a18aa9f 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Warna asas"</string>
<string name="color_changed" msgid="7029571720331641235">"Warna ditukar"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamik"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Butang kiri"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Butang kanan"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Tiada"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Persediaan tambahan diperlukan"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pintasan"</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">"Tiada"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 6307c7e..3807ba9 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"အက်ပ်ဇယား"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"အသုံးပြုရန်"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"တည်းဖြတ်ရန် တို့ပါ"</string>
@@ -91,19 +92,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"အခြေခံအရောင်များ"</string>
<string name="color_changed" msgid="7029571720331641235">"အရောင် ပြောင်းလိုက်ပါပြီ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ပြောင်းနိုင်သော"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ဘယ်ခလုတ်"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ညာခလုတ်"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"မရှိ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"နောက်ထပ်စနစ်ထည့်သွင်းမှု လိုအပ်သည်"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 82dc941..2992538 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Grunnleggende farger"</string>
<string name="color_changed" msgid="7029571720331641235">"Fargen er endret"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisk"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Venstreknapp"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Høyreknapp"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ingen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Det er nødvendig med mer konfigurering"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Snarveier"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Snarveier"</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">"Ingen"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index aff2143..3dc98ba 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"एप ग्रिड"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"लागू गर्नुहोस्"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"सम्पादन गर्न ट्याप गर्नुहोस्"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"आधारभूत रङहरू"</string>
<string name="color_changed" msgid="7029571720331641235">"रङ बदलियो"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"गतिशील"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"बायाँतिरको बटन"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"दायाँतिरको बटन"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"कुनै पनि होइन"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"अतिरिक्त सेटअप गर्नु पर्ने हुन्छ"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 8a458c5..07fa236 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -22,6 +22,8 @@
<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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Basiskleuren"</string>
<string name="color_changed" msgid="7029571720331641235">"Kleur gewijzigd"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisch"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Linkerknop"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Rechterknop"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Geen"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Aanvullende instelling nodig"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Snelkoppelingen"</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">"Geen"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 4fa64e1..13b05e6 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"ଆପ୍ ଗ୍ରିଡ୍"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ପ୍ରୟୋଗ କରନ୍ତୁ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ଏଡିଟ କରିବା ପାଇଁ ଟାପ କରନ୍ତୁ"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ମୌଳିକ ରଙ୍ଗଗୁଡ଼ିକ"</string>
<string name="color_changed" msgid="7029571720331641235">"ରଙ୍ଗ ପରିବର୍ତ୍ତନ କରାଯାଇଛି"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ଡାଇନାମିକ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ବାମପଟ ବଟନ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ଡାହାଣପଟ ବଟନ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"କିଛି ନାହିଁ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ଅତିରିକ୍ତ ସେଟଅପ ଆବଶ୍ୟକ"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index ea87a60..32e1e9a 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"ਐਪ ਗ੍ਰਿਡ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ਲਾਗੂ ਕਰੋ"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ਸੰਪਾਦਨ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
@@ -91,19 +92,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ਮੂਲ ਰੰਗ"</string>
<string name="color_changed" msgid="7029571720331641235">"ਰੰਗ ਬਦਲਿਆ ਗਿਆ"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ਪਰਿਵਰਤਨਸ਼ੀਲ"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ਖੱਬਾ ਬਟਨ"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ਸੱਜਾ ਬਟਨ"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ਕੋਈ ਨਹੀਂ"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ਵਧੀਕ ਸੈੱਟਅੱਪ ਦੀ ਲੋੜ ਹੈ"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 50f868f..c288c24 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,19 +92,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Kolory podstawowe"</string>
<string name="color_changed" msgid="7029571720331641235">"Kolor został zmieniony"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamicznie"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Lewy przycisk"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Prawy przycisk"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Brak"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Konieczna jest dodatkowa konfiguracja"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Skróty"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Skróty"</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">"Brak"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4ffe2eb..8c32fb9 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
<string name="color_changed" msgid="7029571720331641235">"Cor alterada"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinâmico"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botão esquerdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botão direito"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nenhum"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configuração adicional necessária"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atalhos"</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">"Nenhum"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index a793fa5..eb5c9dc 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
<string name="color_changed" msgid="7029571720331641235">"Cor trocada"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinâmica"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Botão esquerdo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Botão direito"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Nenhum"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configuração extra necessária"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atalhos"</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">"Nenhum"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 58038dd..9ad6d37 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Culori de bază"</string>
<string name="color_changed" msgid="7029571720331641235">"Culoare modificată"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Butonul stâng"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Butonul drept"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Fără"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Configurare suplimentară necesară"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Comenzi rapide"</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">"Niciunul"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5e6ce49..cea758b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Сетка приложений"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Применить"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Нажмите, чтобы изменить"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Основные цвета"</string>
<string name="color_changed" msgid="7029571720331641235">"Цвет изменен"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамически"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Левая кнопка"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Правая кнопка"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Нет"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Требуется дополнительная настройка"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index a9967c0..c69baf6 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"යෙදුම් ජාලකය"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"යොදන්න"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"සංස්කරණයට තට්ටු කරන්න"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"මූලික වර්ණ"</string>
<string name="color_changed" msgid="7029571720331641235">"වර්ණය වෙනස් විය"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ගතික"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"වම් බොත්තම"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"දකුණු බොත්තම"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"කිසිත් නැත"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"අතිරේක පිහිටුවීම අවශ්යයි"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 7ad74ff..b5cfe98 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Základné farby"</string>
<string name="color_changed" msgid="7029571720331641235">"Farba bola zmenená"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamické"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Ľavé tlačidlo"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Pravé tlačidlo"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Žiadne"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Vyžaduje sa ďalšie nastavenie"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Skratky"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Skratky"</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">"Žiadne"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index e32db99..3fe053a 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Osnovne barve"</string>
<string name="color_changed" msgid="7029571720331641235">"Barva je spremenjena."</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamično"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Levi gumb"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Desni gumb"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Brez"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Potrebna je dodatna nastavitev"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Bližnjice"</string>
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index a44d210..a78c6e2 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Ngjyra bazë"</string>
<string name="color_changed" msgid="7029571720331641235">"Ngjyra ka ndryshuar"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamike"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Butoni i majtë"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Butoni i djathtë"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Asnjë"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Nevojitet konfigurimi shtesë"</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_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>
@@ -102,4 +106,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shkurtoret"</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">"Asnjë"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 26e34ff..ccf00e6 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"Мрежа апл."</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Примени"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Додирните да бисте изменили"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Основне боје"</string>
<string name="color_changed" msgid="7029571720331641235">"Боја је промењена"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамички"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Лево дугме"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Десно дугме"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Ништа"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Потребно је додатно подешавање"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index a4ab931..472a4b5 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Standardfärger"</string>
<string name="color_changed" msgid="7029571720331641235">"Färgen har ändrats"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisk"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Vänsterknapp"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Högerknapp"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Inga"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Ytterligare konfigurering krävs"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Genvägar"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Genvägar"</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">"Inga"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 8d26e46..9262375 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Rangi za msingi"</string>
<string name="color_changed" msgid="7029571720331641235">"Rangi imebadilishwa"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Inayobadilika"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Kitufe cha kushoto"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Kitufe cha kulia"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Hamna"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Mipangilio ya ziada inahitajika"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Njia za mkato"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Njia za mkato"</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">"Hamna"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 07a801f..e71df12 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ஆப்ஸ் கட்டம்"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"பயன்படுத்து"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"\'தீமைத்\' திருத்த தட்டவும்"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"அடிப்படை வண்ணங்கள்"</string>
<string name="color_changed" msgid="7029571720331641235">"வண்ணம் மாற்றப்பட்டது"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"டைனமிக்"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"இடது பட்டன்"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"வலது பட்டன்"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ஏதுமில்லை"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"கூடுதல் அமைவு தேவை"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 57d5383..aa640f5 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"యాప్ గ్రిడ్"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"వర్తింపజేయి"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ఎడిట్ చేయడానికి నొక్కండి"</string>
@@ -56,7 +57,7 @@
<string name="custom_theme" msgid="1618351922263478163">"అనుకూలం"</string>
<string name="custom_theme_title" msgid="2192300350332693631">"అనుకూల <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="custom_theme_fragment_title" msgid="6615547284702040280">"అనుకూల శైలి"</string>
- <string name="custom_theme_delete" msgid="4744494663184126202">"తొలగించు"</string>
+ <string name="custom_theme_delete" msgid="4744494663184126202">"తొలగించండి"</string>
<string name="font_component_title" msgid="8800340833695292049">"ఫాంట్ను ఎంచుకోండి"</string>
<string name="icon_component_title" msgid="5779787138399083903">"చిహ్నాలను ఎంచుకోండి"</string>
<string name="color_component_title" msgid="1194089273921078816">"రంగును ఎంచుకోండి"</string>
@@ -64,12 +65,12 @@
<string name="name_component_title" msgid="532425087968663437">"మీ శైలికి పేరు పెట్టండి"</string>
<string name="icon_component_label" msgid="2625784884001407944">"<xliff:g id="ID_1">%1$d</xliff:g> చిహ్నాలు"</string>
<string name="delete_custom_theme_confirmation" msgid="4452137183628769394">"అనుకూల శైలిని తొలగించాలా?"</string>
- <string name="delete_custom_theme_button" msgid="5102462988130208824">"తొలగించు"</string>
- <string name="cancel" msgid="4651030493668562067">"రద్దు చేయి"</string>
+ <string name="delete_custom_theme_button" msgid="5102462988130208824">"తొలగించండి"</string>
+ <string name="cancel" msgid="4651030493668562067">"రద్దు చేయండి"</string>
<string name="set_theme_wallpaper_dialog_message" msgid="2179661027350908003">"వాల్పేపర్ శైలిని సెట్ చేయండి"</string>
<string name="use_style_instead_title" msgid="1578754995763917502">"బదులుగా <xliff:g id="ID_1">%1$s</xliff:g>ని ఉపయోగించాలా?"</string>
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"ప్రాథమిక రంగులు"</string>
<string name="color_changed" msgid="7029571720331641235">"రంగు మార్చబడింది"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"డైనమిక్"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ఎడమవైపు బటన్"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"కుడివైపు బటన్"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ఏదీ లేదు"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"అదనపు సెటప్ అవసరం"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3371e67..2bf1331 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -22,6 +22,7 @@
<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="grid_title" msgid="1688173478777254123">"ตารางกริดแอป"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"ใช้"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"แตะเพื่อแก้ไข"</string>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"สีพื้นฐาน"</string>
<string name="color_changed" msgid="7029571720331641235">"เปลี่ยนสีแล้ว"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ไดนามิก"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"ปุ่มซ้าย"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"ปุ่มขวา"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"ไม่มี"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"ต้องตั้งค่าเพิ่มเติม"</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_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>
@@ -102,4 +105,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b16d210..57213f7 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Mga basic na kulay"</string>
<string name="color_changed" msgid="7029571720331641235">"Pinalitan ang kulay"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Kaliwang button"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Kanang button"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Wala"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Kailangan ng karagdagang pag-set up"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Mga Shortcut"</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">"Wala"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 647e2c9..cdff3de 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Temel renkler"</string>
<string name="color_changed" msgid="7029571720331641235">"Renk değişti"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamik"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Sol düğmesi"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Sağ düğmesi"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Yok"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Ek kurulum gerekiyor"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Kısayollar"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Kısayollar"</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">"Yok"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 2505609..5e2bb3b 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"Сітка додатків"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"Застосувати"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Торкніться, щоб змінити"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Основні кольори"</string>
<string name="color_changed" msgid="7029571720331641235">"Колір змінено"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Динамічний"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Ліва кнопка"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Права кнопка"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Немає"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Потрібне додаткове налаштування"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 02ea993..62824de 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"ایپ گرڈ"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"لاگو کریں"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ترمیم کرنے کے لیے تھپتھپائيں"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"بنیادی رنگ"</string>
<string name="color_changed" msgid="7029571720331641235">"رنگ کو تبدیل کر دیا گیا"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"ڈائنیمک"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"دایاں بٹن"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"بایاں بٹن"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"کوئی نہیں"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"اضافی سیٹ اپ درکار ہے"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 82c67ba..5570b6d 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Asosiy ranglar"</string>
<string name="color_changed" msgid="7029571720331641235">"Rang oʻzgartirildi"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Dinamik"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Chap tugma"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Oʻng tugma"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Hech biri"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Qoʻshimcha sozlash kerak"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Tezkor tugmalar"</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">"Hech qanday"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 308cb6b..8ac5dc8 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -22,6 +22,7 @@
<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="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>
@@ -91,10 +92,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Màu cơ bản"</string>
<string name="color_changed" msgid="7029571720331641235">"Đã thay đổi màu"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Động"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Nút bên trái"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Nút bên phải"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Không có"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Cần thiết lập thêm"</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_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>
@@ -102,4 +105,10 @@
<string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Lối tắt"</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">"Không có"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-w800dp/integers.xml b/res/values-w800dp/integers.xml
index 23fa48a..cef5c90 100644
--- a/res/values-w800dp/integers.xml
+++ b/res/values-w800dp/integers.xml
@@ -16,4 +16,5 @@
-->
<resources>
<integer name="options_grid_num_columns">6</integer>
+ <integer name="color_section_num_columns">5</integer>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 364bf61..4c81c61 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"应用网格"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"应用"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"点按即可修改"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"基本颜色"</string>
<string name="color_changed" msgid="7029571720331641235">"颜色已更改"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"动态"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"左侧按钮"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"右侧按钮"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"无"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"需要完成其他设置"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 9acfee0..3cedf8a 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"應用程式網格"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"套用"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"輕按即可編輯"</string>
@@ -91,10 +93,12 @@
<string name="preset_color_tab" msgid="3133391839341329314">"基本顏色"</string>
<string name="color_changed" msgid="7029571720331641235">"已經變咗顏色"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"動態"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"左鍵"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"右鍵"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"無"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"需要進行其他設定"</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_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>
@@ -102,4 +106,10 @@
<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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
+ <skip />
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+ <skip />
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index ff06bf8..e3a6f4d 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<string name="grid_title" msgid="1688173478777254123">"應用程式格線"</string>
<string name="apply_theme_btn" msgid="6293081192321303991">"套用"</string>
<string name="edit_custom_theme_lbl" msgid="5211377705710775224">"輕觸這裡即可編輯"</string>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"基本顏色"</string>
<string name="color_changed" msgid="7029571720331641235">"顏色已變更"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"動態"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"左側按鈕"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"右側按鈕"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"無"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"需要進行額外設定"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <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>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b37df47..fd63e08 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -22,6 +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>
+ <!-- no translation found for clock_settings_title (2940654205471453913) -->
+ <skip />
<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>
@@ -91,19 +93,23 @@
<string name="preset_color_tab" msgid="3133391839341329314">"Imibala eyisisekelo"</string>
<string name="color_changed" msgid="7029571720331641235">"Umbala ushintshiwe"</string>
<string name="adaptive_color_title" msgid="1336508599235896205">"Okuguqukayo"</string>
- <string name="keyguard_slot_name_bottom_start" msgid="6717374042663171860">"Inkinobho engakwesobunxele"</string>
- <string name="keyguard_slot_name_bottom_end" msgid="7636885379738905151">"Inkinobho yakwesokudla"</string>
+ <!-- no translation found for keyguard_slot_name_bottom_start (4755278855965391938) -->
+ <skip />
+ <!-- no translation found for keyguard_slot_name_bottom_end (360781114168682042) -->
+ <skip />
<string name="keyguard_affordance_none" msgid="1751643933430782312">"Lutho"</string>
- <string name="keyguard_affordance_enablement_dialog_title" msgid="307756993596011884">"Kudingeka ukusetha okwengeziwe"</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_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>
- <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+ <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Izinqamuleli"</string>
+ <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Izinqamuleli"</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">"Lutho"</string>
+ <!-- no translation found for notifications_section_title (4283049750376871538) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+ <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
<skip />
- <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
- <skip />
- <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+ <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
<skip />
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 64d9941..9099c93 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -133,6 +133,11 @@
<!-- For the color option section -->
<dimen name="color_options_container_top_margin">24dp</dimen>
+ <dimen name="component_color_overflow_small_radius_default">20dp</dimen>
+ <dimen name="component_color_overflow_small_diameter_default">40dp</dimen>
+ <dimen name="component_color_selected_small_radius_default">22dp</dimen>
+ <dimen name="component_color_selected_small_diameter_default">44dp</dimen>
+
<!-- For the color page. -->
<dimen name="color_page_indicator_margin_top">16dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 6e2db17..2129ccd 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -16,4 +16,5 @@
-->
<resources>
<integer name="options_grid_num_columns">4</integer>
+ <integer name="color_section_num_columns">6</integer>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 63fb560..af8dfe1 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -33,6 +33,9 @@
<!-- The content description of clock entry. [CHAR LIMIT=NONE] -->
<string name="clock_picker_entry_content_description">Change a custom clock</string>
+ <!-- Title of a section of the customization picker where the user can configure Clock face. [CHAR LIMIT=15] -->
+ <string name="clock_settings_title">Clock Settings</string>
+
<!-- Title of a section of the customization picker where the user can select a Grid size for
the home screen. [CHAR LIMIT=15] -->
<string name="grid_title">App grid</string>
@@ -273,14 +276,14 @@
buttons can be added to the lock screen. In left-to-right languages, this is the left-hand side
button. In right-to-left languages, this is the right-hand side button. [CHAR LIMIT=16].
-->
- <string name="keyguard_slot_name_bottom_start">Left button</string>
+ <string name="keyguard_slot_name_bottom_start">Left</string>
<!--
Name of the slot on the "end" side of the bottom of the lock screen, where quick affordance
buttons can be added to the lock screen. In left-to-right languages, this is the right-hand side
button. In right-to-left languages, this is the left-hand side button. [CHAR LIMIT=16].
-->
- <string name="keyguard_slot_name_bottom_end">Right button</string>
+ <string name="keyguard_slot_name_bottom_end">Right</string>
<!--
Name for an option to have no quick affordance selected for one of the sides of the lock
@@ -294,7 +297,7 @@
enabled. The dialog contains a list of instructions that the user needs to take in order to
enable the option before it can be selected again. [CHAR LIMIT=NONE].
-->
- <string name="keyguard_affordance_enablement_dialog_title">Additional setup needed</string>
+ <string name="keyguard_affordance_enablement_dialog_title">To select `<xliff:g id="appName" example="Wallet">%1$s</xliff:g>` check the following</string>
<!--
Template for an action that opens a specific app. [CHAR LIMIT=16]
@@ -344,4 +347,30 @@
[CHAR LIMIT=60].
-->
<string name="keyguard_quick_affordance_none_selected">None</string>
+
+ <!--
+ Title for a section in a list of sections in the settings app that allows the user to modify
+ how notifications behave whilst the device is locked.
+
+ [CHAR LIMIT=32].
+ -->
+ <string name="notifications_section_title">Notifications</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 allowing notifications to show on their
+ device's lock screen.
+
+ [CHAR LIMIT=64].
+ -->
+ <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>
</resources>
diff --git a/robolectric_tests/robolectric_gradle_config/robolectric.properties b/robolectric_tests/robolectric_gradle_config/robolectric.properties
deleted file mode 100644
index 2916ca9..0000000
--- a/robolectric_tests/robolectric_gradle_config/robolectric.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Do not include the manifest definition in this version
-# as it is specified directly in the gradle file
-sdk=31
\ No newline at end of file
diff --git a/src/com/android/customization/model/clock/ClockSectionController.java b/src/com/android/customization/model/clock/ClockSectionController.java
deleted file mode 100644
index 545c1c4..0000000
--- a/src/com/android/customization/model/clock/ClockSectionController.java
+++ /dev/null
@@ -1,52 +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.clock;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.picker.clock.ClockCustomDemoFragment;
-import com.android.customization.picker.clock.ClockSectionView;
-import com.android.wallpaper.R;
-import com.android.wallpaper.config.Flags;
-import com.android.wallpaper.model.CustomizationSectionController;
-
-/** A {@link CustomizationSectionController} for clock customization. */
-public class ClockSectionController implements CustomizationSectionController<ClockSectionView> {
-
- private final CustomizationSectionNavigationController mNavigationController;
-
- public ClockSectionController(CustomizationSectionNavigationController navigationController) {
- mNavigationController = navigationController;
- }
-
- @Override
- public boolean isAvailable(@Nullable Context context) {
- return Flags.enableCustomClocks;
- }
-
- @Override
- public ClockSectionView createView(Context context) {
- ClockSectionView view = (ClockSectionView) LayoutInflater.from(context).inflate(
- R.layout.clock_section_view,
- null);
- view.setOnClickListener(v ->
- mNavigationController.navigateTo(new ClockCustomDemoFragment()));
- return view;
- }
-}
diff --git a/src/com/android/customization/model/color/ColorProvider.kt b/src/com/android/customization/model/color/ColorProvider.kt
index c966932..201a53f 100644
--- a/src/com/android/customization/model/color/ColorProvider.kt
+++ b/src/com/android/customization/model/color/ColorProvider.kt
@@ -37,7 +37,6 @@
import com.android.systemui.monet.ColorScheme
import com.android.systemui.monet.Style
import com.android.wallpaper.compat.WallpaperManagerCompat
-import com.android.wallpaper.config.Flags
import com.android.wallpaper.module.InjectorProvider
import java.util.*
import kotlinx.coroutines.CoroutineScope
@@ -287,7 +286,10 @@
Style.TONAL_SPOT
}
- if (style == Style.MONOCHROMATIC && !Flags.isMonochromaticFlagEnabled) {
+ if (
+ style == Style.MONOCHROMATIC &&
+ !InjectorProvider.getInjector().getFlags().isMonochromaticFlagEnabled()
+ ) {
continue
}
diff --git a/src/com/android/customization/model/color/ColorSectionController2.java b/src/com/android/customization/model/color/ColorSectionController2.java
new file mode 100644
index 0000000..257bb94
--- /dev/null
+++ b/src/com/android/customization/model/color/ColorSectionController2.java
@@ -0,0 +1,241 @@
+/*
+ * 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.model.color;
+
+import static com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_HOME;
+import static com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_LOCK;
+import static com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_PRESET;
+
+import android.app.Activity;
+import android.app.WallpaperColors;
+import android.content.Context;
+import android.os.Handler;
+import android.os.SystemClock;
+import android.stats.style.StyleEnums;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.LifecycleOwner;
+
+import com.android.customization.model.CustomizationManager;
+import com.android.customization.model.theme.OverlayManagerCompat;
+import com.android.customization.module.CustomizationInjector;
+import com.android.customization.module.ThemesUserEventLogger;
+import com.android.customization.picker.color.ColorPickerFragment;
+import com.android.customization.picker.color.ColorSectionView2;
+import com.android.wallpaper.R;
+import com.android.wallpaper.model.CustomizationSectionController;
+import com.android.wallpaper.model.WallpaperColorsViewModel;
+import com.android.wallpaper.module.InjectorProvider;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Color section view's controller for the logic of color customization.
+ */
+public class ColorSectionController2 implements CustomizationSectionController<ColorSectionView2> {
+
+ private static final String TAG = "ColorSectionController";
+ private static final long MIN_COLOR_APPLY_PERIOD = 500L;
+
+ private final ThemesUserEventLogger mEventLogger;
+ private final ColorCustomizationManager mColorManager;
+ private final WallpaperColorsViewModel mWallpaperColorsViewModel;
+ private final LifecycleOwner mLifecycleOwner;
+ private final CustomizationSectionNavigationController mSectionNavigationController;
+
+ private List<ColorOption> mWallpaperColorOptions = new ArrayList<>();
+ private List<ColorOption> mPresetColorOptions = new ArrayList<>();
+ private ColorOption mSelectedColor;
+ @Nullable private WallpaperColors mHomeWallpaperColors;
+ @Nullable private WallpaperColors mLockWallpaperColors;
+ // Uses a boolean value to indicate whether wallpaper color is ready because WallpaperColors
+ // maybe be null when it's ready.
+ private boolean mHomeWallpaperColorsReady;
+ private boolean mLockWallpaperColorsReady;
+ private long mLastColorApplyingTime = 0L;
+ private ColorSectionView2 mColorSectionView;
+
+ public ColorSectionController2(Activity activity, WallpaperColorsViewModel viewModel,
+ LifecycleOwner lifecycleOwner,
+ CustomizationSectionNavigationController sectionNavigationController) {
+ CustomizationInjector injector = (CustomizationInjector) InjectorProvider.getInjector();
+ mEventLogger = (ThemesUserEventLogger) injector.getUserEventLogger(activity);
+ mColorManager = ColorCustomizationManager.getInstance(activity,
+ new OverlayManagerCompat(activity));
+ mWallpaperColorsViewModel = viewModel;
+ mLifecycleOwner = lifecycleOwner;
+ mSectionNavigationController = sectionNavigationController;
+ }
+
+ @Override
+ public boolean isAvailable(@Nullable Context context) {
+ return context != null && ColorUtils.isMonetEnabled(context) && mColorManager.isAvailable();
+ }
+
+ @Override
+ public ColorSectionView2 createView(Context context) {
+ mColorSectionView = (ColorSectionView2) LayoutInflater.from(context).inflate(
+ R.layout.color_section_view2, /* root= */ null);
+
+ mWallpaperColorsViewModel.getHomeWallpaperColors().observe(mLifecycleOwner,
+ homeColors -> {
+ mHomeWallpaperColors = homeColors;
+ mHomeWallpaperColorsReady = true;
+ maybeLoadColors();
+ });
+ mWallpaperColorsViewModel.getLockWallpaperColors().observe(mLifecycleOwner,
+ lockColors -> {
+ mLockWallpaperColors = lockColors;
+ mLockWallpaperColorsReady = true;
+ maybeLoadColors();
+ });
+ return mColorSectionView;
+ }
+
+ private void maybeLoadColors() {
+ if (mHomeWallpaperColorsReady && mLockWallpaperColorsReady) {
+ mColorManager.setWallpaperColors(mHomeWallpaperColors, mLockWallpaperColors);
+ loadColorOptions(/* reload= */ false);
+ }
+ }
+
+ private void loadColorOptions(boolean reload) {
+ mColorManager.fetchOptions(new CustomizationManager.OptionsFetchedListener<ColorOption>() {
+ @Override
+ public void onOptionsLoaded(List<ColorOption> options) {
+ List<ColorOption> wallpaperColorOptions = new ArrayList<>();
+ List<ColorOption> presetColorOptions = new ArrayList<>();
+ for (ColorOption option : options) {
+ if (option instanceof ColorSeedOption) {
+ wallpaperColorOptions.add(option);
+ } else if (option instanceof ColorBundle) {
+ presetColorOptions.add(option);
+ }
+ }
+ mWallpaperColorOptions = wallpaperColorOptions;
+ mPresetColorOptions = presetColorOptions;
+ mSelectedColor = findActiveColorOption(mWallpaperColorOptions,
+ mPresetColorOptions);
+
+ mColorSectionView.post(() -> setUpColorSectionView(mWallpaperColorOptions,
+ mPresetColorOptions));
+ }
+
+ @Override
+ public void onError(@Nullable Throwable throwable) {
+ if (throwable != null) {
+ Log.e(TAG, "Error loading theme bundles", throwable);
+ }
+ }
+ }, reload);
+ }
+
+ private void setUpColorSectionView(List<ColorOption> wallpaperColorOptions,
+ List<ColorOption> presetColorOptions) {
+ int wallpaperOptionSize = wallpaperColorOptions.size();
+
+ List<ColorOption> subOptions = wallpaperColorOptions.subList(0,
+ Math.min(5, wallpaperOptionSize));
+ // add additional options based on preset colors if there are less than 5 wallpaper colors
+ List<ColorOption> additionalSubOptions = presetColorOptions.subList(0,
+ Math.min(Math.max(0, 5 - wallpaperOptionSize), presetColorOptions.size()));
+ subOptions.addAll(additionalSubOptions);
+
+ mColorSectionView.setOverflowOnClick(() -> {
+ mSectionNavigationController.navigateTo(new ColorPickerFragment());
+ return null;
+ });
+ mColorSectionView.setColorOptionOnClick(selectedOption -> {
+ if (mSelectedColor.equals(selectedOption)) {
+ return null;
+ }
+ mSelectedColor = (ColorOption) selectedOption;
+ // Post with delay for color option to run ripple.
+ new Handler().postDelayed(()-> applyColor(mSelectedColor), /* delayMillis= */ 100);
+ return null;
+ });
+ mColorSectionView.setItems(subOptions, mColorManager);
+ }
+
+ private ColorOption findActiveColorOption(List<ColorOption> wallpaperColorOptions,
+ List<ColorOption> presetColorOptions) {
+ ColorOption activeColorOption = null;
+ for (ColorOption colorOption : Lists.newArrayList(
+ Iterables.concat(wallpaperColorOptions, presetColorOptions))) {
+ if (colorOption.isActive(mColorManager)) {
+ activeColorOption = colorOption;
+ break;
+ }
+ }
+ // Use the first one option by default. This should not happen as above should have an
+ // active option found.
+ if (activeColorOption == null) {
+ activeColorOption = wallpaperColorOptions.isEmpty()
+ ? presetColorOptions.get(0)
+ : wallpaperColorOptions.get(0);
+ }
+ return activeColorOption;
+ }
+
+ private void applyColor(ColorOption colorOption) {
+ if (SystemClock.elapsedRealtime() - mLastColorApplyingTime < MIN_COLOR_APPLY_PERIOD) {
+ return;
+ }
+ mLastColorApplyingTime = SystemClock.elapsedRealtime();
+ mColorManager.apply(colorOption, new CustomizationManager.Callback() {
+ @Override
+ public void onSuccess() {
+ mColorSectionView.announceForAccessibility(
+ mColorSectionView.getContext().getString(R.string.color_changed));
+ mEventLogger.logColorApplied(getColorAction(colorOption), colorOption);
+ }
+
+ @Override
+ public void onError(@Nullable Throwable throwable) {
+ Log.w(TAG, "Apply theme with error: " + throwable);
+ }
+ });
+ }
+
+ private int getColorAction(ColorOption colorOption) {
+ int action = StyleEnums.DEFAULT_ACTION;
+ boolean isForBoth = mLockWallpaperColors == null || mLockWallpaperColors.equals(
+ mHomeWallpaperColors);
+
+ if (TextUtils.equals(colorOption.getSource(), COLOR_SOURCE_PRESET)) {
+ action = StyleEnums.COLOR_PRESET_APPLIED;
+ } else if (isForBoth) {
+ action = StyleEnums.COLOR_WALLPAPER_HOME_LOCK_APPLIED;
+ } else {
+ switch (colorOption.getSource()) {
+ case COLOR_SOURCE_HOME:
+ action = StyleEnums.COLOR_WALLPAPER_HOME_APPLIED;
+ break;
+ case COLOR_SOURCE_LOCK:
+ action = StyleEnums.COLOR_WALLPAPER_LOCK_APPLIED;
+ break;
+ }
+ }
+ return action;
+ }
+}
diff --git a/src/com/android/customization/module/CustomizationInjector.java b/src/com/android/customization/module/CustomizationInjector.java
deleted file mode 100644
index 2cc1245..0000000
--- a/src/com/android/customization/module/CustomizationInjector.java
+++ /dev/null
@@ -1,41 +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 android.content.Context;
-
-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.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
-import com.android.wallpaper.module.Injector;
-
-public interface CustomizationInjector extends Injector {
-
- CustomizationPreferences getCustomizationPreferences(Context context);
-
- ThemeManager getThemeManager(ThemeBundleProvider provider, FragmentActivity activity,
- OverlayManagerCompat overlayManagerCompat, ThemesUserEventLogger logger);
-
-
- /**
- * Get {@link KeyguardQuickAffordancePickerInteractor}
- */
- KeyguardQuickAffordancePickerInteractor getKeyguardQuickAffordancePickerInteractor(
- Context context);
-}
diff --git a/src/com/android/customization/module/CustomizationInjector.kt b/src/com/android/customization/module/CustomizationInjector.kt
new file mode 100644
index 0000000..2772e56
--- /dev/null
+++ b/src/com/android/customization/module/CustomizationInjector.kt
@@ -0,0 +1,45 @@
+/*
+ * 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 android.content.Context
+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.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.systemui.plugins.PluginManager
+import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.wallpaper.module.Injector
+
+interface CustomizationInjector : Injector {
+ fun getCustomizationPreferences(context: Context): CustomizationPreferences
+
+ fun getThemeManager(
+ provider: ThemeBundleProvider,
+ activity: FragmentActivity,
+ overlayManagerCompat: OverlayManagerCompat,
+ logger: ThemesUserEventLogger
+ ): ThemeManager
+
+ fun getKeyguardQuickAffordancePickerInteractor(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor
+
+ fun getClockRegistry(context: Context): ClockRegistry
+
+ fun getPluginManager(context: Context): PluginManager
+}
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index 7eb8865..46f0334 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -5,13 +5,20 @@
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.ViewModelProvider;
import com.android.customization.model.color.ColorSectionController;
+import com.android.customization.model.color.ColorSectionController2;
import com.android.customization.model.grid.GridOptionsManager;
import com.android.customization.model.grid.GridSectionController;
import com.android.customization.model.mode.DarkModeSectionController;
import com.android.customization.model.themedicon.ThemedIconSectionController;
import com.android.customization.model.themedicon.ThemedIconSwitchProvider;
+import com.android.customization.picker.notifications.ui.section.NotificationSectionController;
+import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel;
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
+import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController;
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
import com.android.wallpaper.model.CustomizationSectionController;
import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController;
import com.android.wallpaper.model.PermissionRequester;
@@ -19,7 +26,12 @@
import com.android.wallpaper.model.WallpaperPreviewNavigator;
import com.android.wallpaper.model.WallpaperSectionController;
import com.android.wallpaper.model.WorkspaceViewModel;
+import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
import com.android.wallpaper.module.CustomizationSections;
+import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController;
+import com.android.wallpaper.picker.customization.ui.section.WallpaperQuickSwitchSectionController;
+import com.android.wallpaper.picker.customization.ui.viewmodel.WallpaperQuickSwitchViewModel;
+import com.android.wallpaper.util.DisplayUtils;
import java.util.ArrayList;
import java.util.List;
@@ -27,6 +39,102 @@
/** {@link CustomizationSections} for the customization picker. */
public final class DefaultCustomizationSections implements CustomizationSections {
+ private final KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
+ private final KeyguardQuickAffordancePickerViewModel.Factory
+ mKeyguardQuickAffordancePickerViewModelFactory;
+ private final NotificationSectionViewModel.Factory mNotificationSectionViewModelFactory;
+
+ public DefaultCustomizationSections(
+ KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor,
+ KeyguardQuickAffordancePickerViewModel.Factory
+ keyguardQuickAffordancePickerViewModelFactory,
+ NotificationSectionViewModel.Factory notificationSectionViewModelFactory) {
+ mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor;
+ mKeyguardQuickAffordancePickerViewModelFactory =
+ keyguardQuickAffordancePickerViewModelFactory;
+ mNotificationSectionViewModelFactory = notificationSectionViewModelFactory;
+ }
+
+ @Override
+ public List<CustomizationSectionController<?>> getRevampedUISectionControllersForScreen(
+ Screen screen,
+ FragmentActivity activity,
+ LifecycleOwner lifecycleOwner,
+ WallpaperColorsViewModel wallpaperColorsViewModel,
+ WorkspaceViewModel workspaceViewModel,
+ PermissionRequester permissionRequester,
+ WallpaperPreviewNavigator wallpaperPreviewNavigator,
+ CustomizationSectionNavigationController sectionNavigationController,
+ @Nullable Bundle savedInstanceState,
+ CurrentWallpaperInfoFactory wallpaperInfoFactory,
+ DisplayUtils displayUtils,
+ WallpaperQuickSwitchViewModel wallpaperQuickSwitchViewModel) {
+ List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
+
+ // Wallpaper section.
+ sectionControllers.add(
+ new ScreenPreviewSectionController(
+ activity,
+ lifecycleOwner,
+ screen,
+ wallpaperInfoFactory,
+ wallpaperColorsViewModel,
+ displayUtils));
+
+ // Theme color section.
+ sectionControllers.add(new ColorSectionController2(
+ activity, wallpaperColorsViewModel, lifecycleOwner, sectionNavigationController));
+
+ // Wallpaper quick switch section.
+ sectionControllers.add(
+ new WallpaperQuickSwitchSectionController(
+ screen,
+ wallpaperQuickSwitchViewModel,
+ lifecycleOwner,
+ sectionNavigationController));
+
+ switch (screen) {
+ case LOCK_SCREEN:
+ // Lock screen quick affordances section.
+ sectionControllers.add(
+ new KeyguardQuickAffordanceSectionController(
+ sectionNavigationController,
+ mKeyguardQuickAffordancePickerInteractor,
+ new ViewModelProvider(
+ activity,
+ mKeyguardQuickAffordancePickerViewModelFactory)
+ .get(KeyguardQuickAffordancePickerViewModel.class),
+ lifecycleOwner));
+
+ // Notifications section.
+ sectionControllers.add(
+ new NotificationSectionController(
+ new ViewModelProvider(
+ activity,
+ mNotificationSectionViewModelFactory)
+ .get(NotificationSectionViewModel.class),
+ lifecycleOwner));
+ break;
+
+ case HOME_SCREEN:
+ // Dark/Light theme section.
+ sectionControllers.add(new DarkModeSectionController(activity,
+ lifecycleOwner.getLifecycle()));
+
+ // Themed app icon section.
+ sectionControllers.add(new ThemedIconSectionController(
+ ThemedIconSwitchProvider.getInstance(activity), workspaceViewModel,
+ savedInstanceState));
+
+ // App grid section.
+ sectionControllers.add(new GridSectionController(
+ GridOptionsManager.getInstance(activity), sectionNavigationController));
+ break;
+ }
+
+ return sectionControllers;
+ }
+
@Override
public List<CustomizationSectionController<?>> getAllSectionControllers(
FragmentActivity activity,
@@ -36,14 +144,15 @@
PermissionRequester permissionRequester,
WallpaperPreviewNavigator wallpaperPreviewNavigator,
CustomizationSectionNavigationController sectionNavigationController,
- @Nullable Bundle savedInstanceState) {
+ @Nullable Bundle savedInstanceState,
+ DisplayUtils displayUtils) {
List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
// Wallpaper section.
sectionControllers.add(new WallpaperSectionController(
activity, lifecycleOwner, permissionRequester, wallpaperColorsViewModel,
workspaceViewModel, sectionNavigationController, wallpaperPreviewNavigator,
- savedInstanceState));
+ savedInstanceState, displayUtils));
// Theme color section.
sectionControllers.add(new ColorSectionController(
diff --git a/src/com/android/customization/module/StatsLogUserEventLogger.java b/src/com/android/customization/module/StatsLogUserEventLogger.java
index 605c173..2b6767b 100644
--- a/src/com/android/customization/module/StatsLogUserEventLogger.java
+++ b/src/com/android/customization/module/StatsLogUserEventLogger.java
@@ -188,6 +188,15 @@
.log();
}
+ @Override
+ public void logEffectProbe(String effect, @EffectStatus int status) {
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_EFFECT_PROBE)
+ .setEffectPreference(status)
+ .setEffectIdHash(getIdHashCode(effect))
+ .log();
+ }
+
@Nullable
private String getThemePackage(ThemeBundle theme, String category) {
Map<String, String> packages = theme.getPackagesByCategory();
diff --git a/src/com/android/customization/module/ThemePickerInjector.java b/src/com/android/customization/module/ThemePickerInjector.java
deleted file mode 100644
index 9a304e9..0000000
--- a/src/com/android/customization/module/ThemePickerInjector.java
+++ /dev/null
@@ -1,173 +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.wallpaper.picker.PreviewFragment.ARG_FULL_SCREEN;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_PREVIEW_MODE;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_TESTING_MODE_ENABLED;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_VIEW_AS_HOME;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_WALLPAPER;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-
-import androidx.fragment.app.Fragment;
-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.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository;
-import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
-import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient;
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClientImpl;
-import com.android.wallpaper.model.LiveWallpaperInfo;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.module.CustomizationSections;
-import com.android.wallpaper.module.FragmentFactory;
-import com.android.wallpaper.module.WallpaperPicker2Injector;
-import com.android.wallpaper.module.WallpaperPreferences;
-import com.android.wallpaper.picker.CustomizationPickerActivity;
-import com.android.wallpaper.picker.ImagePreviewFragment;
-import com.android.wallpaper.picker.LivePreviewFragment;
-import com.android.wallpaper.picker.PreviewFragment;
-
-import kotlinx.coroutines.Dispatchers;
-
-/**
- * A concrete, real implementation of the dependency provider.
- */
-public class ThemePickerInjector extends WallpaperPicker2Injector
- implements CustomizationInjector {
- private CustomizationSections mCustomizationSections;
- private ThemesUserEventLogger mUserEventLogger;
- private WallpaperPreferences mPrefs;
- private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
- private KeyguardQuickAffordancePickerViewModel.Factory
- mKeyguardQuickAffordancePickerViewModelFactory;
- private FragmentFactory mFragmentFactory;
-
- @Override
- public CustomizationSections getCustomizationSections(Activity activity) {
- if (mCustomizationSections == null) {
- mCustomizationSections = new DefaultCustomizationSections();
- }
- return mCustomizationSections;
- }
-
- @Override
- public Intent getDeepLinkRedirectIntent(Context context, Uri uri) {
- Intent intent = new Intent();
- intent.setClass(context, CustomizationPickerActivity.class);
- intent.setData(uri);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- return intent;
- }
-
- @Override
- public String getDownloadableIntentAction() {
- return null;
- }
-
- @Override
- public Fragment getPreviewFragment(
- Context context,
- WallpaperInfo wallpaperInfo,
- int mode,
- boolean viewAsHome,
- boolean viewFullScreen,
- boolean testingModeEnabled) {
- Bundle args = new Bundle();
- args.putParcelable(ARG_WALLPAPER, wallpaperInfo);
- args.putInt(ARG_PREVIEW_MODE, mode);
- args.putBoolean(ARG_VIEW_AS_HOME, viewAsHome);
- args.putBoolean(ARG_FULL_SCREEN, viewFullScreen);
- args.putBoolean(ARG_TESTING_MODE_ENABLED, testingModeEnabled);
- PreviewFragment fragment = wallpaperInfo instanceof LiveWallpaperInfo
- ? new LivePreviewFragment() : new ImagePreviewFragment();
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public synchronized ThemesUserEventLogger getUserEventLogger(Context context) {
- if (mUserEventLogger == null) {
- mUserEventLogger = new StatsLogUserEventLogger(context);
- }
- return mUserEventLogger;
- }
-
- @Override
- public synchronized WallpaperPreferences getPreferences(Context context) {
- if (mPrefs == null) {
- mPrefs = new DefaultCustomizationPreferences(context.getApplicationContext());
- }
- return mPrefs;
- }
-
- //
- // Functions from {@link CustomizationInjector}
- //
- @Override
- public CustomizationPreferences getCustomizationPreferences(Context context) {
- return (CustomizationPreferences) getPreferences(context);
- }
-
- @Override
- public ThemeManager getThemeManager(ThemeBundleProvider provider, FragmentActivity activity,
- OverlayManagerCompat overlayManagerCompat, ThemesUserEventLogger logger) {
- return new ThemeManager(provider, activity, overlayManagerCompat, logger);
- }
-
- @Override
- public KeyguardQuickAffordancePickerInteractor getKeyguardQuickAffordancePickerInteractor(
- Context context) {
- if (mKeyguardQuickAffordancePickerInteractor == null) {
- final KeyguardQuickAffordanceProviderClient client =
- new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
- mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
- new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
- client);
- }
- return mKeyguardQuickAffordancePickerInteractor;
- }
-
- /**
- * Returns a {@link KeyguardQuickAffordancePickerViewModel.Factory}.
- */
- public KeyguardQuickAffordancePickerViewModel.Factory
- getKeyguardQuickAffordancePickerViewModelFactory(Context context) {
- if (mKeyguardQuickAffordancePickerViewModelFactory == null) {
- mKeyguardQuickAffordancePickerViewModelFactory =
- new KeyguardQuickAffordancePickerViewModel.Factory(
- context,
- getKeyguardQuickAffordancePickerInteractor(context));
- }
- return mKeyguardQuickAffordancePickerViewModelFactory;
- }
-
- @Override
- public FragmentFactory getFragmentFactory() {
- if (mFragmentFactory == null) {
- mFragmentFactory = new ThemePickerFragmentFactory();
- }
- return mFragmentFactory;
- }
-}
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
new file mode 100644
index 0000000..b448283
--- /dev/null
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -0,0 +1,335 @@
+/*
+ * 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 android.app.NotificationManager
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.os.Handler
+import android.os.UserHandle
+import android.view.LayoutInflater
+import androidx.activity.ComponentActivity
+import androidx.fragment.app.Fragment
+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.notifications.data.repository.NotificationsRepository
+import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
+import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
+import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
+import com.android.systemui.plugins.Plugin
+import com.android.systemui.plugins.PluginManager
+import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.systemui.shared.clocks.DefaultClockProvider
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
+import com.android.systemui.shared.plugins.PluginActionManager
+import com.android.systemui.shared.plugins.PluginEnabler
+import com.android.systemui.shared.plugins.PluginInstance
+import com.android.systemui.shared.plugins.PluginManagerImpl
+import com.android.systemui.shared.plugins.PluginPrefs
+import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager_Factory
+import com.android.wallpaper.model.LiveWallpaperInfo
+import com.android.wallpaper.model.WallpaperInfo
+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.WallpaperPreferences
+import com.android.wallpaper.picker.CustomizationPickerActivity
+import com.android.wallpaper.picker.ImagePreviewFragment
+import com.android.wallpaper.picker.LivePreviewFragment
+import com.android.wallpaper.picker.PreviewFragment
+import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
+import java.util.concurrent.Executors
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+
+open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInjector {
+ private var customizationSections: CustomizationSections? = null
+ private var userEventLogger: UserEventLogger? = null
+ private var prefs: WallpaperPreferences? = null
+ private var keyguardQuickAffordancePickerInteractor: KeyguardQuickAffordancePickerInteractor? =
+ null
+ private var keyguardQuickAffordancePickerViewModelFactory:
+ KeyguardQuickAffordancePickerViewModel.Factory? =
+ null
+ private var customizationProviderClient: CustomizationProviderClient? = null
+ private var fragmentFactory: FragmentFactory? = null
+ private var keyguardQuickAffordanceSnapshotRestorer: KeyguardQuickAffordanceSnapshotRestorer? =
+ null
+ private var clockRegistry: ClockRegistry? = null
+ private var pluginManager: PluginManager? = null
+ private var notificationsInteractor: NotificationsInteractor? = null
+ private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null
+
+ override fun getCustomizationSections(activity: ComponentActivity): CustomizationSections {
+ return customizationSections
+ ?: DefaultCustomizationSections(
+ getKeyguardQuickAffordancePickerInteractor(activity),
+ getKeyguardQuickAffordancePickerViewModelFactory(activity),
+ NotificationSectionViewModel.Factory(
+ interactor = getNotificationsInteractor(activity),
+ ),
+ )
+ .also { customizationSections = it }
+ }
+
+ override fun getDeepLinkRedirectIntent(context: Context, uri: Uri): Intent {
+ val intent = Intent()
+ intent.setClass(context, CustomizationPickerActivity::class.java)
+ intent.data = uri
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
+ return intent
+ }
+
+ override fun getDownloadableIntentAction(): String? {
+ return null
+ }
+
+ override fun getPreviewFragment(
+ context: Context,
+ wallpaperInfo: WallpaperInfo,
+ mode: Int,
+ viewAsHome: Boolean,
+ viewFullScreen: Boolean,
+ testingModeEnabled: Boolean
+ ): Fragment {
+ return if (wallpaperInfo is LiveWallpaperInfo) LivePreviewFragment()
+ else
+ ImagePreviewFragment().apply {
+ arguments =
+ Bundle().apply {
+ putParcelable(PreviewFragment.ARG_WALLPAPER, wallpaperInfo)
+ putInt(PreviewFragment.ARG_PREVIEW_MODE, mode)
+ putBoolean(PreviewFragment.ARG_VIEW_AS_HOME, viewAsHome)
+ putBoolean(PreviewFragment.ARG_FULL_SCREEN, viewFullScreen)
+ putBoolean(PreviewFragment.ARG_TESTING_MODE_ENABLED, testingModeEnabled)
+ }
+ }
+ }
+
+ @Synchronized
+ override fun getUserEventLogger(context: Context): ThemesUserEventLogger {
+ return if (userEventLogger != null) userEventLogger as ThemesUserEventLogger
+ else StatsLogUserEventLogger(context).also { userEventLogger = it }
+ }
+
+ @Synchronized
+ override fun getPreferences(context: Context): WallpaperPreferences {
+ return prefs
+ ?: DefaultCustomizationPreferences(context.applicationContext).also { prefs = it }
+ }
+
+ override fun getFragmentFactory(): FragmentFactory? {
+ return fragmentFactory ?: ThemePickerFragmentFactory().also { fragmentFactory }
+ }
+
+ override fun getSnapshotRestorers(context: Context): Map<Int, SnapshotRestorer> {
+ return super<WallpaperPicker2Injector>.getSnapshotRestorers(context).toMutableMap().apply {
+ this[KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER] =
+ getKeyguardQuickAffordanceSnapshotRestorer(context)
+ this[KEY_WALLPAPER_SNAPSHOT_RESTORER] = getWallpaperSnapshotRestorer(context)
+ }
+ }
+
+ override fun getCustomizationPreferences(context: Context): CustomizationPreferences {
+ 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 getKeyguardQuickAffordancePickerInteractor(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor {
+ return keyguardQuickAffordancePickerInteractor
+ ?: getKeyguardQuickAffordancePickerInteractorImpl(context).also {
+ keyguardQuickAffordancePickerInteractor = it
+ }
+ }
+
+ fun getKeyguardQuickAffordancePickerViewModelFactory(
+ context: Context
+ ): KeyguardQuickAffordancePickerViewModel.Factory {
+ return keyguardQuickAffordancePickerViewModelFactory
+ ?: KeyguardQuickAffordancePickerViewModel.Factory(
+ context,
+ getKeyguardQuickAffordancePickerInteractor(context),
+ getUndoInteractor(context),
+ getCurrentWallpaperInfoFactory(context),
+ ) { intent ->
+ context.startActivity(intent)
+ }
+ .also { keyguardQuickAffordancePickerViewModelFactory = it }
+ }
+
+ fun getNotificationSectionViewModelFactory(
+ context: Context,
+ ): NotificationSectionViewModel.Factory {
+ return notificationSectionViewModelFactory
+ ?: NotificationSectionViewModel.Factory(
+ interactor = getNotificationsInteractor(context),
+ )
+ .also { notificationSectionViewModelFactory = it }
+ }
+
+ private fun getKeyguardQuickAffordancePickerInteractorImpl(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor {
+ val client = getKeyguardQuickAffordancePickerProviderClient(context)
+ return KeyguardQuickAffordancePickerInteractor(
+ KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO),
+ client
+ ) { getKeyguardQuickAffordanceSnapshotRestorer(context) }
+ }
+
+ protected fun getKeyguardQuickAffordancePickerProviderClient(
+ context: Context
+ ): CustomizationProviderClient {
+ return customizationProviderClient
+ ?: CustomizationProviderClientImpl(context, Dispatchers.IO).also {
+ customizationProviderClient = it
+ }
+ }
+
+ private fun getKeyguardQuickAffordanceSnapshotRestorer(
+ context: Context
+ ): KeyguardQuickAffordanceSnapshotRestorer {
+ return keyguardQuickAffordanceSnapshotRestorer
+ ?: KeyguardQuickAffordanceSnapshotRestorer(
+ getKeyguardQuickAffordancePickerInteractor(context),
+ getKeyguardQuickAffordancePickerProviderClient(context)
+ )
+ .also { keyguardQuickAffordanceSnapshotRestorer = it }
+ }
+
+ override fun getClockRegistry(context: Context): ClockRegistry {
+ return clockRegistry
+ ?: ClockRegistry(
+ context,
+ getPluginManager(context),
+ Handler.getMain(),
+ isEnabled = true,
+ userHandle = UserHandle.USER_SYSTEM,
+ DefaultClockProvider(context, LayoutInflater.from(context), context.resources)
+ )
+ .also { clockRegistry = it }
+ }
+
+ override fun getPluginManager(context: Context): PluginManager {
+ return pluginManager ?: createPluginManager(context).also { pluginManager = it }
+ }
+
+ private fun createPluginManager(context: Context): PluginManager {
+ val privilegedPlugins = listOf<String>()
+ val isDebugDevice = true
+
+ val instanceFactory =
+ PluginInstance.Factory(
+ this::class.java.classLoader,
+ PluginInstance.InstanceFactory<Plugin>(),
+ PluginInstance.VersionChecker(),
+ privilegedPlugins,
+ isDebugDevice,
+ )
+
+ /*
+ * let SystemUI handle plugin, in this class assume plugins are enabled
+ */
+ val pluginEnabler =
+ object : PluginEnabler {
+ override fun setEnabled(component: ComponentName) = Unit
+
+ override fun setDisabled(
+ component: ComponentName,
+ @PluginEnabler.DisableReason reason: Int
+ ) = Unit
+
+ override fun isEnabled(component: ComponentName): Boolean {
+ return true
+ }
+
+ @PluginEnabler.DisableReason
+ override fun getDisableReason(componentName: ComponentName): Int {
+ return PluginEnabler.ENABLED
+ }
+ }
+
+ val pluginActionManager =
+ PluginActionManager.Factory(
+ context,
+ context.packageManager,
+ context.mainExecutor,
+ Executors.newSingleThreadExecutor(),
+ context.getSystemService(NotificationManager::class.java),
+ pluginEnabler,
+ privilegedPlugins,
+ instanceFactory,
+ )
+ return PluginManagerImpl(
+ context,
+ pluginActionManager,
+ isDebugDevice,
+ UncaughtExceptionPreHandlerManager_Factory.create().get(),
+ pluginEnabler,
+ PluginPrefs(context),
+ listOf(),
+ )
+ }
+
+ protected fun getNotificationsInteractor(
+ context: Context,
+ ): NotificationsInteractor {
+ return notificationsInteractor
+ ?: NotificationsInteractor(
+ repository =
+ NotificationsRepository(
+ scope = GlobalScope,
+ backgroundDispatcher = Dispatchers.IO,
+ secureSettingsRepository = getSecureSettingsRepository(context),
+ )
+ )
+ .also { notificationsInteractor = it }
+ }
+
+ companion object {
+ @JvmStatic
+ private val KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER =
+ WallpaperPicker2Injector.MIN_SNAPSHOT_RESTORER_KEY
+ @JvmStatic
+ private val KEY_WALLPAPER_SNAPSHOT_RESTORER = KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER + 1
+
+ /**
+ * When this injector is overridden, this is the minimal value that should be used by
+ * restorers returns in [getSnapshotRestorers].
+ */
+ @JvmStatic protected val MIN_SNAPSHOT_RESTORER_KEY = KEY_WALLPAPER_SNAPSHOT_RESTORER + 1
+ }
+}
diff --git a/src/com/android/customization/picker/WallpaperPreviewer.java b/src/com/android/customization/picker/WallpaperPreviewer.java
index fa7dd81..354eec2 100644
--- a/src/com/android/customization/picker/WallpaperPreviewer.java
+++ b/src/com/android/customization/picker/WallpaperPreviewer.java
@@ -154,14 +154,16 @@
.loadPreviewImage(mActivity,
renderInImageWallpaperSurface ? homeImageWallpaper : mHomePreview,
ResourceUtils.getColorAttr(
- mActivity, android.R.attr.colorSecondary));
+ mActivity, android.R.attr.colorSecondary),
+ /* offsetToStart= */ true);
if (mWallpaper instanceof LiveWallpaperInfo) {
mWallpaper.getThumbAsset(mActivity.getApplicationContext())
.loadPreviewImage(
mActivity,
homeImageWallpaper,
ResourceUtils.getColorAttr(
- mActivity, android.R.attr.colorSecondary));
+ mActivity, android.R.attr.colorSecondary),
+ /* offsetToStart= */ true);
setUpLiveWallpaperPreview(mWallpaper);
} else {
// Ensure live wallpaper connection is disconnected.
diff --git a/src/com/android/customization/picker/clock/ClockCustomDemoFragment.kt b/src/com/android/customization/picker/clock/ClockCustomDemoFragment.kt
index 8648dca..4f65080 100644
--- a/src/com/android/customization/picker/clock/ClockCustomDemoFragment.kt
+++ b/src/com/android/customization/picker/clock/ClockCustomDemoFragment.kt
@@ -1,11 +1,8 @@
package com.android.customization.picker.clock
-import android.app.NotificationManager
-import android.content.ComponentName
import android.content.Context
import android.os.Bundle
-import android.os.Handler
-import android.os.UserHandle
+import android.util.TypedValue
import android.view.ContextThemeWrapper
import android.view.LayoutInflater
import android.view.View
@@ -14,36 +11,23 @@
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout
import android.widget.TextView
+import android.widget.Toast
import androidx.core.view.setPadding
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.android.customization.module.ThemePickerInjector
import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.plugins.ClockMetadata
import com.android.systemui.plugins.ClockProviderPlugin
-import com.android.systemui.plugins.Plugin
import com.android.systemui.plugins.PluginListener
import com.android.systemui.plugins.PluginManager
import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.systemui.shared.clocks.DefaultClockProvider
-import com.android.systemui.shared.plugins.PluginActionManager
-import com.android.systemui.shared.plugins.PluginEnabler
-import com.android.systemui.shared.plugins.PluginEnabler.ENABLED
-import com.android.systemui.shared.plugins.PluginInstance
-import com.android.systemui.shared.plugins.PluginManagerImpl
-import com.android.systemui.shared.plugins.PluginPrefs
-import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager_Factory
import com.android.wallpaper.R
+import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.AppbarFragment
-import java.util.concurrent.Executors
-
-private val TAG = ClockCustomDemoFragment::class.simpleName
class ClockCustomDemoFragment : AppbarFragment() {
@VisibleForTesting lateinit var clockRegistry: ClockRegistry
- val isDebugDevice = true
- val privilegedPlugins = listOf<String>()
- val action = ClockProviderPlugin.ACTION
- lateinit var view: ViewGroup
@VisibleForTesting lateinit var recyclerView: RecyclerView
lateinit var pluginManager: PluginManager
@VisibleForTesting
@@ -51,24 +35,19 @@
object : PluginListener<ClockProviderPlugin> {
override fun onPluginConnected(plugin: ClockProviderPlugin, context: Context) {
val listInUse = clockRegistry.getClocks().filter { "NOT_IN_USE" !in it.clockId }
- recyclerView.adapter = ClockRecyclerAdapter(listInUse, context, clockRegistry)
+ recyclerView.adapter =
+ ClockRecyclerAdapter(listInUse, context) {
+ clockRegistry.currentClockId = it.clockId
+ Toast.makeText(context, "${it.name} selected", Toast.LENGTH_SHORT).show()
+ }
}
}
override fun onAttach(context: Context) {
super.onAttach(context)
- val defaultClockProvider =
- DefaultClockProvider(context, LayoutInflater.from(context), context.resources)
- pluginManager = createPluginManager(context)
- clockRegistry =
- ClockRegistry(
- context,
- pluginManager,
- Handler.getMain(),
- isEnabled = true,
- userHandle = UserHandle.USER_OWNER,
- defaultClockProvider
- )
+ val injector = InjectorProvider.getInjector() as ThemePickerInjector
+ pluginManager = injector.getPluginManager(context)
+ clockRegistry = injector.getClockRegistry(context)
pluginManager.addPluginListener(pluginListener, ClockProviderPlugin::class.java, true)
}
@@ -92,69 +71,10 @@
return getString(R.string.clock_title)
}
- private fun createPluginManager(context: Context): PluginManager {
- val instanceFactory =
- PluginInstance.Factory(
- this::class.java.classLoader,
- PluginInstance.InstanceFactory<Plugin>(),
- PluginInstance.VersionChecker(),
- privilegedPlugins,
- isDebugDevice
- )
-
- /*
- * let SystemUI handle plugin, in this class assume plugins are enabled
- */
- val pluginEnabler =
- object : PluginEnabler {
- override fun setEnabled(component: ComponentName) {}
-
- override fun setDisabled(
- component: ComponentName,
- @PluginEnabler.DisableReason reason: Int
- ) {}
-
- override fun isEnabled(component: ComponentName): Boolean {
- return true
- }
-
- @PluginEnabler.DisableReason
- override fun getDisableReason(componentName: ComponentName): Int {
- return ENABLED
- }
- }
-
- val pluginActionManager =
- PluginActionManager.Factory(
- context,
- context.packageManager,
- context.mainExecutor,
- Executors.newSingleThreadExecutor(),
- context.getSystemService(NotificationManager::class.java),
- pluginEnabler,
- privilegedPlugins,
- instanceFactory
- )
- return PluginManagerImpl(
- context,
- pluginActionManager,
- isDebugDevice,
- uncaughtExceptionPreHandlerManager,
- pluginEnabler,
- PluginPrefs(context),
- listOf()
- )
- }
-
- companion object {
- private val uncaughtExceptionPreHandlerManager =
- UncaughtExceptionPreHandlerManager_Factory.create().get()
- }
-
internal class ClockRecyclerAdapter(
val list: List<ClockMetadata>,
val context: Context,
- val clockRegistry: ClockRegistry
+ val onClockSelected: (ClockMetadata) -> Unit
) : RecyclerView.Adapter<ClockRecyclerAdapter.ViewHolder>() {
class ViewHolder(val view: View, val textView: TextView, val onItemClicked: (Int) -> Unit) :
RecyclerView.ViewHolder(view) {
@@ -169,13 +89,12 @@
TextView(ContextThemeWrapper(viewGroup.context, R.style.SectionTitleTextStyle))
textView.setPadding(ITEM_PADDING)
rootView.addView(textView)
+ val outValue = TypedValue()
+ context.theme.resolveAttribute(android.R.attr.selectableItemBackground, outValue, true)
+ rootView.setBackgroundResource(outValue.resourceId)
val lp = RecyclerView.LayoutParams(MATCH_PARENT, WRAP_CONTENT)
- rootView.setLayoutParams(lp)
- return ViewHolder(
- rootView,
- textView,
- { clockRegistry.currentClockId = list[it].clockId }
- )
+ rootView.layoutParams = lp
+ return ViewHolder(rootView, textView) { onClockSelected(list[it]) }
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
new file mode 100644
index 0000000..52c2430
--- /dev/null
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
@@ -0,0 +1,61 @@
+/*
+ * 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.data.repository
+
+import android.util.Log
+import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import com.android.systemui.plugins.ClockMetadata
+import com.android.systemui.shared.clocks.ClockRegistry
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+
+/**
+ * Repository for accessing application clock settings, as well as selecting and configuring custom
+ * clocks.
+ */
+class ClockPickerRepository(registry: ClockRegistry) {
+
+ /** The currently-selected clock. */
+ val selectedClock: Flow<ClockMetadataModel?> = callbackFlow {
+ fun send() {
+ val model =
+ registry
+ .getClocks()
+ .find { clockMetadata -> clockMetadata.clockId == registry.currentClockId }
+ ?.toModel()
+ if (model == null) {
+ Log.e(TAG, "Currently selected clock ID is not one of the available clocks.")
+ }
+ trySend(model)
+ }
+
+ val listener = ClockRegistry.ClockChangeListener { send() }
+ registry.registerClockChangeListener(listener)
+ send()
+ awaitClose { registry.unregisterClockChangeListener(listener) }
+ }
+
+ private fun ClockMetadata.toModel(): ClockMetadataModel {
+ return ClockMetadataModel(clockId = clockId, name = name)
+ }
+
+ companion object {
+ private const val TAG = "ClockPickerRepository"
+ }
+}
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
new file mode 100644
index 0000000..63b3638
--- /dev/null
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.domain.interactor
+
+import com.android.customization.picker.clock.data.repository.ClockPickerRepository
+import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * Interactor for accessing application clock settings, as well as selecting and configuring custom
+ * clocks.
+ */
+class ClockPickerInteractor(private val repository: ClockPickerRepository) {
+
+ val selectedClock: Flow<ClockMetadataModel?> = repository.selectedClock
+}
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt b/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt
new file mode 100644
index 0000000..7bb3232
--- /dev/null
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt
@@ -0,0 +1,36 @@
+/*
+ * 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.domain.interactor
+
+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
+
+/** Handles state restoration for clocks. */
+class ClocksSnapshotRestorer : SnapshotRestorer {
+ override suspend fun setUpSnapshotRestorer(
+ store: SnapshotStore,
+ ): RestorableSnapshot {
+ // TODO(b/262924055): implement as part of the clock settings screen.
+ return RestorableSnapshot(mapOf())
+ }
+
+ override suspend fun restoreToSnapshot(snapshot: RestorableSnapshot) {
+ // TODO(b/262924055): implement as part of the clock settings screen.
+ }
+}
diff --git a/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt b/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt
new file mode 100644
index 0000000..ea84d2b
--- /dev/null
+++ b/src/com/android/customization/picker/clock/shared/model/ClockMetadataModel.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.shared.model
+
+/** Model for clock metadata. */
+data class ClockMetadataModel(
+ val clockId: String,
+ val name: String,
+)
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockSectionViewBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockSectionViewBinder.kt
new file mode 100644
index 0000000..5a3286d
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockSectionViewBinder.kt
@@ -0,0 +1,50 @@
+/*
+ * 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.binder
+
+import android.view.View
+import android.widget.TextView
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.flowWithLifecycle
+import androidx.lifecycle.lifecycleScope
+import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
+import com.android.wallpaper.R
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+
+object ClockSectionViewBinder {
+ fun bind(
+ view: View,
+ viewModel: ClockSectionViewModel,
+ lifecycleOwner: LifecycleOwner,
+ onClicked: () -> Unit,
+ ) {
+ view.setOnClickListener { onClicked() }
+
+ val selectedClockTextView: TextView = view.requireViewById(R.id.selected_clock_text)
+
+ lifecycleOwner.lifecycleScope.launch {
+ viewModel.selectedClockName
+ .flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED)
+ .collectLatest { selectedClockName ->
+ selectedClockTextView.text = selectedClockName
+ }
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/clock/ui/section/ClockSectionController.kt b/src/com/android/customization/picker/clock/ui/section/ClockSectionController.kt
new file mode 100644
index 0000000..848f226
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/section/ClockSectionController.kt
@@ -0,0 +1,59 @@
+/*
+ * 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.picker.clock.ui.section
+
+import android.content.Context
+import android.view.LayoutInflater
+import androidx.lifecycle.LifecycleOwner
+import com.android.customization.picker.clock.ClockCustomDemoFragment
+import com.android.customization.picker.clock.ClockSectionView
+import com.android.customization.picker.clock.ui.binder.ClockSectionViewBinder
+import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
+import com.android.systemui.shared.customization.data.content.CustomizationProviderContract as Contract
+import com.android.wallpaper.R
+import com.android.wallpaper.model.CustomizationSectionController
+import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
+import kotlinx.coroutines.runBlocking
+
+/** A [CustomizationSectionController] for clock customization. */
+class ClockSectionController(
+ private val navigationController: CustomizationSectionNavigationController,
+ private val customizationProviderClient: CustomizationProviderClient,
+ private val viewModel: ClockSectionViewModel,
+ private val lifecycleOwner: LifecycleOwner,
+) : CustomizationSectionController<ClockSectionView?> {
+ override fun isAvailable(context: Context?): Boolean {
+ return runBlocking { customizationProviderClient.queryFlags() }
+ .firstOrNull { it.name == Contract.FlagsTable.FLAG_NAME_CUSTOM_CLOCKS_ENABLED }
+ ?.value == true
+ }
+
+ override fun createView(context: Context): ClockSectionView {
+ val view =
+ LayoutInflater.from(context)
+ .inflate(
+ R.layout.clock_section_view,
+ null,
+ ) as ClockSectionView
+ ClockSectionViewBinder.bind(
+ view = view,
+ viewModel = viewModel,
+ lifecycleOwner = lifecycleOwner
+ ) { navigationController.navigateTo(ClockCustomDemoFragment()) }
+ return view
+ }
+}
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt
new file mode 100644
index 0000000..f50bb9c
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt
@@ -0,0 +1,28 @@
+/*
+ * 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.viewmodel
+
+import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
+
+/** View model for the clock section view on the lockscreen customization surface. */
+class ClockSectionViewModel(interactor: ClockPickerInteractor) {
+
+ val selectedClockName: Flow<String?> = interactor.selectedClock.map { it?.name }
+}
diff --git a/src/com/android/customization/picker/color/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ColorPickerFragment.kt
new file mode 100644
index 0000000..c8ecb7f
--- /dev/null
+++ b/src/com/android/customization/picker/color/ColorPickerFragment.kt
@@ -0,0 +1,41 @@
+/*
+ * 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.color
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.android.wallpaper.R
+import com.android.wallpaper.picker.AppbarFragment
+
+// TODO (b/262924623): Color Picker Fragment
+class ColorPickerFragment : AppbarFragment() {
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ val view =
+ inflater.inflate(
+ R.layout.fragment_color_picker,
+ container,
+ false,
+ )
+ setUpToolbar(view)
+ return view
+ }
+}
diff --git a/src/com/android/customization/picker/color/ColorSectionView2.kt b/src/com/android/customization/picker/color/ColorSectionView2.kt
new file mode 100644
index 0000000..3e4e4bc
--- /dev/null
+++ b/src/com/android/customization/picker/color/ColorSectionView2.kt
@@ -0,0 +1,93 @@
+/*
+ * 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.color
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.widget.ImageView
+import android.widget.LinearLayout
+import com.android.customization.model.color.ColorCustomizationManager
+import com.android.customization.model.color.ColorOption
+import com.android.wallpaper.R
+import com.android.wallpaper.picker.SectionView
+
+/**
+ * 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) {
+
+ private val items = mutableListOf<ColorOption>()
+ private var onClick: ((ColorOption) -> Unit)? = null
+ private var overflowOnClick: (() -> Unit)? = null
+
+ // TODO (b/262924623): make adjustments for large screen
+ fun setItems(items: List<ColorOption>, manager: ColorCustomizationManager) {
+ this.items.clear()
+ this.items.addAll(items)
+ val optionContainer = findViewById<LinearLayout>(R.id.color_section_option_container)
+ optionContainer.removeAllViews()
+ // Last color option is either the last index of the items list, or the second last index
+ // of column count. Save the last column of the option container for the overflow option
+ val lastOptionIndex = minOf(optionContainer.weightSum.toInt() - 2, items.size - 1)
+ if (items.isNotEmpty()) {
+ for (position in 0..lastOptionIndex) {
+ val item = items[position]
+ val itemView =
+ LayoutInflater.from(context)
+ .inflate(R.layout.color_option_section, optionContainer, false)
+ item.bindThumbnailTile(itemView.findViewById(R.id.option_tile))
+ if (item.isActive(manager)) {
+ val optionSelectedView = itemView.findViewById<ImageView>(R.id.option_selected)
+ optionSelectedView.visibility = VISIBLE
+ }
+ itemView.setOnClickListener { onClick?.invoke(item) }
+ optionContainer.addView(itemView)
+ }
+ }
+ // add overflow option
+ val itemView =
+ LayoutInflater.from(context)
+ .inflate(R.layout.color_option_section_overflow, optionContainer, false)
+ itemView.setOnClickListener { overflowOnClick?.invoke() }
+ optionContainer.addView(itemView)
+ }
+
+ /** Sets the on click callback for a color option. */
+ fun setColorOptionOnClick(onClick: (ColorOption) -> Unit) {
+ this.onClick = onClick
+ if (items.isNotEmpty()) {
+ val optionContainer = findViewById<LinearLayout>(R.id.color_section_option_container)
+ val lastOptionIndex = minOf(optionContainer.childCount - 2, items.size - 1)
+ for (position in 0..lastOptionIndex) {
+ val item = items[position]
+ val itemView = optionContainer.getChildAt(position)
+ itemView.setOnClickListener { onClick.invoke(item) }
+ }
+ }
+ }
+
+ /** Sets the on click callback for the overflow option. */
+ fun setOverflowOnClick(onClick: () -> Unit) {
+ this.overflowOnClick = onClick
+ val optionContainer = findViewById<LinearLayout>(R.id.color_section_option_container)
+ if (optionContainer.childCount > 0) {
+ val itemView = optionContainer.getChildAt(optionContainer.childCount - 1)
+ itemView.setOnClickListener { onClick.invoke() }
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/grid/GridOptionPreviewer.java b/src/com/android/customization/picker/grid/GridOptionPreviewer.java
index 5cf327e..7786d35 100644
--- a/src/com/android/customization/picker/grid/GridOptionPreviewer.java
+++ b/src/com/android/customization/picker/grid/GridOptionPreviewer.java
@@ -22,6 +22,7 @@
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;
@@ -80,7 +81,10 @@
private class GridOptionSurfaceHolderCallback extends WorkspaceSurfaceHolderCallback {
private GridOptionSurfaceHolderCallback(SurfaceView workspaceSurface, Context context) {
- super(workspaceSurface, context);
+ super(
+ workspaceSurface,
+ new PreviewUtils(
+ context, context.getString(R.string.grid_control_metadata_name)));
}
@Override
diff --git a/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt b/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt
new file mode 100644
index 0000000..5b03cbe
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt
@@ -0,0 +1,72 @@
+/*
+ * 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.notifications.data.repository
+
+import android.provider.Settings
+import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
+import com.android.wallpaper.settings.data.repository.SecureSettingsRepository
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.SharedFlow
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.shareIn
+import kotlinx.coroutines.withContext
+
+/** Provides access to state related to notifications. */
+class NotificationsRepository(
+ scope: CoroutineScope,
+ private val backgroundDispatcher: CoroutineDispatcher,
+ private val secureSettingsRepository: SecureSettingsRepository,
+) {
+ /** The current state of the notification setting. */
+ val settings: SharedFlow<NotificationSettingsModel> =
+ secureSettingsRepository
+ .intSetting(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ )
+ .map { lockScreenShowNotificationsInt ->
+ NotificationSettingsModel(
+ isShowNotificationsOnLockScreenEnabled = lockScreenShowNotificationsInt == 1,
+ )
+ }
+ .shareIn(
+ scope = scope,
+ started = SharingStarted.WhileSubscribed(),
+ replay = 1,
+ )
+
+ /** Updates the setting to show or hide notifications on the lock screen. */
+ suspend fun setShowNotificationsOnLockScreenEnabled(isEnabled: Boolean) {
+ withContext(backgroundDispatcher) {
+ secureSettingsRepository.set(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ value = if (isEnabled) 1 else 0,
+ )
+ }
+ }
+
+ suspend fun isShowNotificationsOnLockScreenEnabled(): Boolean {
+ return withContext(backgroundDispatcher) {
+ secureSettingsRepository.get(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ defaultValue = 0,
+ ) == 1
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt
new file mode 100644
index 0000000..24860fb
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt
@@ -0,0 +1,37 @@
+/*
+ * 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.notifications.domain.interactor
+
+import com.android.customization.picker.notifications.data.repository.NotificationsRepository
+import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
+import kotlinx.coroutines.flow.Flow
+
+/** Encapsulates business logic for interacting with notifications. */
+class NotificationsInteractor(
+ private val repository: NotificationsRepository,
+) {
+ /** The current state of the notification setting. */
+ val settings: Flow<NotificationSettingsModel> = repository.settings
+
+ /** Toggles the setting to show or hide notifications on the lock screen. */
+ suspend fun toggleShowNotificationsOnLockScreenEnabled() {
+ repository.setShowNotificationsOnLockScreenEnabled(
+ isEnabled = !repository.isShowNotificationsOnLockScreenEnabled(),
+ )
+ }
+}
diff --git a/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt b/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt
new file mode 100644
index 0000000..7ce388b
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.notifications.shared.model
+
+/** Models notification settings. */
+data class NotificationSettingsModel(
+ /** Whether notifications are shown on the lock screen. */
+ val isShowNotificationsOnLockScreenEnabled: Boolean = false,
+)
diff --git a/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
new file mode 100644
index 0000000..54f9bf6
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
@@ -0,0 +1,59 @@
+/*
+ * 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.notifications.ui.binder
+
+import android.annotation.SuppressLint
+import android.view.View
+import android.widget.Switch
+import android.widget.TextView
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
+import com.android.wallpaper.R
+import kotlinx.coroutines.launch
+
+/**
+ * Binds between view and view-model for a section that lets the user control notification settings.
+ */
+object NotificationSectionBinder {
+ @SuppressLint("UseSwitchCompatOrMaterialCode") // We're using Switch and that's okay for SysUI.
+ fun bind(
+ view: View,
+ viewModel: NotificationSectionViewModel,
+ lifecycleOwner: LifecycleOwner,
+ ) {
+ val subtitle: TextView = view.requireViewById(R.id.subtitle)
+ val switch: Switch = view.requireViewById(R.id.switcher)
+
+ view.setOnClickListener { viewModel.onClicked() }
+
+ lifecycleOwner.lifecycleScope.launch {
+ lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
+ launch {
+ viewModel.subtitleStringResourceId.collect {
+ subtitle.text = view.context.getString(it)
+ }
+ }
+
+ launch { viewModel.isSwitchOn.collect { switch.isChecked = it } }
+ }
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt b/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt
new file mode 100644
index 0000000..6e30c6b
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt
@@ -0,0 +1,57 @@
+/*
+ * 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.notifications.ui.section
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import androidx.lifecycle.LifecycleOwner
+import com.android.customization.picker.notifications.ui.binder.NotificationSectionBinder
+import com.android.customization.picker.notifications.ui.view.NotificationSectionView
+import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
+import com.android.wallpaper.R
+import com.android.wallpaper.model.CustomizationSectionController
+
+/** Controls a section with UI that lets the user toggle notification settings. */
+class NotificationSectionController(
+ private val viewModel: NotificationSectionViewModel,
+ private val lifecycleOwner: LifecycleOwner,
+) : CustomizationSectionController<NotificationSectionView> {
+
+ override fun isAvailable(context: Context?): Boolean {
+ return true
+ }
+
+ @SuppressLint("InflateParams") // We don't care that the parent is null.
+ override fun createView(context: Context?): NotificationSectionView {
+ val view =
+ LayoutInflater.from(context)
+ .inflate(
+ R.layout.notification_section,
+ /* parent= */ null,
+ ) as NotificationSectionView
+
+ NotificationSectionBinder.bind(
+ view = view,
+ viewModel = viewModel,
+ lifecycleOwner = lifecycleOwner,
+ )
+
+ return view
+ }
+}
diff --git a/src/com/android/customization/picker/notifications/ui/view/NotificationSectionView.kt b/src/com/android/customization/picker/notifications/ui/view/NotificationSectionView.kt
new file mode 100644
index 0000000..29cce0a
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/ui/view/NotificationSectionView.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.notifications.ui.view
+
+import android.content.Context
+import android.util.AttributeSet
+import com.android.wallpaper.picker.SectionView
+
+class NotificationSectionView(
+ context: Context?,
+ attrs: AttributeSet?,
+) :
+ SectionView(
+ context,
+ attrs,
+ )
diff --git a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
new file mode 100644
index 0000000..97b0448
--- /dev/null
+++ b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
@@ -0,0 +1,68 @@
+/*
+ * 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.notifications.ui.viewmodel
+
+import androidx.annotation.StringRes
+import androidx.annotation.VisibleForTesting
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.viewModelScope
+import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
+import com.android.wallpaper.R
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.launch
+
+/** Models UI state for a section that lets the user control the notification settings. */
+class NotificationSectionViewModel
+@VisibleForTesting
+constructor(
+ private val interactor: NotificationsInteractor,
+) : ViewModel() {
+
+ /** A string resource ID for the subtitle. */
+ @StringRes
+ val subtitleStringResourceId: Flow<Int> =
+ interactor.settings.map { model ->
+ when (model.isShowNotificationsOnLockScreenEnabled) {
+ true -> R.string.show_notifications_on_lock_screen
+ false -> R.string.hide_notifications_on_lock_screen
+ }
+ }
+
+ /** Whether the switch should be on. */
+ val isSwitchOn: Flow<Boolean> =
+ interactor.settings.map { model -> model.isShowNotificationsOnLockScreenEnabled }
+
+ /** Notifies that the section has been clicked. */
+ fun onClicked() {
+ viewModelScope.launch { interactor.toggleShowNotificationsOnLockScreenEnabled() }
+ }
+
+ class Factory(
+ private val interactor: NotificationsInteractor,
+ ) : ViewModelProvider.Factory {
+ @Suppress("UNCHECKED_CAST")
+ override fun <T : ViewModel> create(modelClass: Class<T>): T {
+ return NotificationSectionViewModel(
+ interactor = interactor,
+ )
+ as T
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
index 5846107..c432bd9 100644
--- a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
+++ b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
@@ -20,8 +20,8 @@
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerAffordanceModel as AffordanceModel
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSelectionModel as SelectionModel
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSlotModel as SlotModel
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient as Client
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderContract as Contract
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient as Client
+import com.android.systemui.shared.customization.data.content.CustomizationProviderContract as Contract
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
@@ -60,8 +60,11 @@
}
private fun List<Client.Flag>.isFeatureEnabled(): Boolean {
- return find { flag -> flag.name == Contract.FlagsTable.FLAG_NAME_FEATURE_ENABLED }?.value ==
- true
+ return find { flag ->
+ flag.name ==
+ Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED
+ }
+ ?.value == true
}
private fun Client.Slot.toModel(): SlotModel {
@@ -80,6 +83,7 @@
enablementInstructions = enablementInstructions ?: emptyList(),
enablementActionText = enablementActionText,
enablementActionComponentName = enablementActionComponentName,
+ configureIntent = configureIntent,
)
}
diff --git a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt
index 87cedf5..fbe303b 100644
--- a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt
+++ b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt
@@ -23,7 +23,8 @@
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerAffordanceModel as AffordanceModel
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSelectionModel as SelectionModel
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSlotModel as SlotModel
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient as Client
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient as Client
+import javax.inject.Provider
import kotlinx.coroutines.flow.Flow
/**
@@ -33,10 +34,8 @@
class KeyguardQuickAffordancePickerInteractor(
private val repository: KeyguardQuickAffordancePickerRepository,
private val client: Client,
+ private val snapshotRestorer: Provider<KeyguardQuickAffordanceSnapshotRestorer>,
) {
- /** Whether the feature is enabled. */
- val isFeatureEnabled: Flow<Boolean> = repository.isFeatureEnabled
-
/** List of slots available on the device. */
val slots: Flow<List<SlotModel>> = repository.slots
@@ -60,6 +59,8 @@
slotId = slotId,
affordanceId = affordanceId,
)
+
+ snapshotRestorer.get().storeSnapshot()
}
/** Unselects an affordance with the given ID from the slot with the given ID. */
@@ -68,6 +69,8 @@
slotId = slotId,
affordanceId = affordanceId,
)
+
+ snapshotRestorer.get().storeSnapshot()
}
/** Unselects all affordances from the slot with the given ID. */
@@ -75,6 +78,8 @@
client.deleteAllSelections(
slotId = slotId,
)
+
+ snapshotRestorer.get().storeSnapshot()
}
/** Returns a [Drawable] for the given resource ID, from the system UI package. */
diff --git a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt
new file mode 100644
index 0000000..2dfa38a
--- /dev/null
+++ b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt
@@ -0,0 +1,76 @@
+/*
+ * 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.picker.quickaffordance.domain.interactor
+
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
+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
+
+/** Handles state restoration for the quick affordances system. */
+class KeyguardQuickAffordanceSnapshotRestorer(
+ private val interactor: KeyguardQuickAffordancePickerInteractor,
+ private val client: CustomizationProviderClient,
+) : SnapshotRestorer {
+
+ private lateinit var snapshotStore: SnapshotStore
+
+ suspend fun storeSnapshot() {
+ snapshotStore.store(snapshot())
+ }
+
+ override suspend fun setUpSnapshotRestorer(
+ store: SnapshotStore,
+ ): RestorableSnapshot {
+ snapshotStore = store
+ return snapshot()
+ }
+
+ override suspend fun restoreToSnapshot(snapshot: RestorableSnapshot) {
+ val selections: List<Pair<String, String>> =
+ checkNotNull(snapshot.args[KEY_SELECTIONS]).split(SELECTION_SEPARATOR).map { selection
+ ->
+ val (slotId, affordanceId) = selection.split(SLOT_AFFORDANCE_SEPARATOR)
+ slotId to affordanceId
+ }
+
+ selections.forEach { (slotId, affordanceId) ->
+ interactor.select(
+ slotId,
+ affordanceId,
+ )
+ }
+ }
+
+ private suspend fun snapshot(): RestorableSnapshot {
+ return RestorableSnapshot(
+ mapOf(
+ KEY_SELECTIONS to
+ client.querySelections().joinToString(SELECTION_SEPARATOR) { selection ->
+ "${selection.slotId}${SLOT_AFFORDANCE_SEPARATOR}${selection.affordanceId}"
+ }
+ )
+ )
+ }
+
+ companion object {
+ private const val KEY_SELECTIONS = "selections"
+ private const val SLOT_AFFORDANCE_SEPARATOR = "->"
+ private const val SELECTION_SEPARATOR = "|"
+ }
+}
diff --git a/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt b/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
index 1b18af7..7b04ff1 100644
--- a/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
@@ -17,6 +17,7 @@
package com.android.customization.picker.quickaffordance.shared.model
+import android.content.Intent
import androidx.annotation.DrawableRes
/** Models a quick affordance. */
@@ -42,4 +43,6 @@
* user to a destination where they can re-enable it.
*/
val enablementActionComponentName: String?,
+ /** Optional [Intent] to use to start an activity to configure this affordance. */
+ val configureIntent: Intent?,
)
diff --git a/src/com/android/customization/picker/quickaffordance/ui/adapter/AffordancesAdapter.kt b/src/com/android/customization/picker/quickaffordance/ui/adapter/AffordancesAdapter.kt
index b0dc350..e11643a 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/adapter/AffordancesAdapter.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/adapter/AffordancesAdapter.kt
@@ -74,6 +74,15 @@
null
}
)
+ holder.itemView.onLongClickListener =
+ if (item.onLongClicked != null) {
+ View.OnLongClickListener {
+ item.onLongClicked.invoke()
+ true
+ }
+ } else {
+ null
+ }
holder.iconContainerView.setBackgroundResource(
if (item.isSelected) {
R.drawable.keyguard_quick_affordance_icon_container_background_selected
diff --git a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
index acafef4..5203ed3 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
@@ -44,7 +44,7 @@
return ViewHolder(
LayoutInflater.from(parent.context)
.inflate(
- R.layout.keyguard_quick_affordance_slot_tab,
+ R.layout.picker_fragment_tab,
parent,
false,
)
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceEnablementDialogBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceEnablementDialogBinder.kt
new file mode 100644
index 0000000..809e09d
--- /dev/null
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceEnablementDialogBinder.kt
@@ -0,0 +1,58 @@
+/*
+ * 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.picker.quickaffordance.ui.binder
+
+import android.view.View
+import android.widget.ImageView
+import android.widget.TextView
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
+import com.android.wallpaper.R
+
+object KeyguardQuickAffordanceEnablementDialogBinder {
+
+ fun bind(
+ view: View,
+ viewModel: KeyguardQuickAffordancePickerViewModel.DialogViewModel,
+ onDismissed: () -> Unit,
+ ) {
+ view.requireViewById<ImageView>(R.id.icon).setImageDrawable(viewModel.icon)
+ view.requireViewById<TextView>(R.id.title).text =
+ view.context.getString(
+ R.string.keyguard_affordance_enablement_dialog_title,
+ viewModel.name
+ )
+ view.requireViewById<TextView>(R.id.message).text = buildString {
+ viewModel.instructions.forEachIndexed { index, instruction ->
+ append(instruction)
+ if (index < viewModel.instructions.size - 1) {
+ append("\n")
+ }
+ }
+ }
+ view.requireViewById<TextView>(R.id.button).apply {
+ text = viewModel.actionText
+ setOnClickListener {
+ if (viewModel.intent != null) {
+ view.context.startActivity(viewModel.intent)
+ } else {
+ onDismissed()
+ }
+ }
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
index 62f2e26..389f8f6 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
@@ -20,8 +20,8 @@
import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
-import android.content.DialogInterface
import android.graphics.Rect
+import android.view.LayoutInflater
import android.view.View
import androidx.core.view.ViewCompat
import androidx.lifecycle.Lifecycle
@@ -88,7 +88,6 @@
onDismissed = viewModel::onDialogDismissed
)
} else {
- dialog?.dismiss()
null
}
}
@@ -102,34 +101,21 @@
request: KeyguardQuickAffordancePickerViewModel.DialogViewModel,
onDismissed: () -> Unit,
): Dialog {
- // TODO(b/254858701): make this dialog prettier and probably use a DialogFragment.
- return AlertDialog.Builder(context, context.themeResId)
- .setTitle(context.getString(R.string.keyguard_affordance_enablement_dialog_title))
- .setMessage(
- buildString {
- append(request.instructionHeader)
- if (request.instructions.isNotEmpty()) {
- append("\n")
- }
- request.instructions.forEachIndexed { index, instruction ->
- append(instruction)
- if (index < request.instructions.size - 1) {
- append("\n")
- }
- }
- }
- )
- .setOnDismissListener { onDismissed.invoke() }
- .setPositiveButton(
- request.actionText,
- if (request.intent != null) {
- DialogInterface.OnClickListener { _, _ ->
- context.startActivity(request.intent)
- }
- } else {
- DialogInterface.OnClickListener { _, _ -> onDismissed() }
- },
- )
+ val view: View =
+ LayoutInflater.from(context)
+ .inflate(
+ R.layout.keyguard_quick_affordance_enablement_dialog,
+ null,
+ )
+ KeyguardQuickAffordanceEnablementDialogBinder.bind(
+ view = view,
+ viewModel = request,
+ onDismissed = onDismissed,
+ )
+
+ return AlertDialog.Builder(context, R.style.LightDialogTheme)
+ .setView(view)
+ .setOnDismissListener { onDismissed() }
.show()
}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerPreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerPreviewBinder.kt
deleted file mode 100644
index 13ee553..0000000
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerPreviewBinder.kt
+++ /dev/null
@@ -1,78 +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.picker.quickaffordance.ui.binder
-
-import android.view.View
-import android.widget.ImageView
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
-import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.wallpaper.R
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.mapNotNull
-import kotlinx.coroutines.launch
-
-object KeyguardQuickAffordancePickerPreviewBinder {
-
- /** Binds view with view-model for a lock screen quick affordance preview experience. */
- @JvmStatic
- fun bind(
- view: View,
- viewModel: KeyguardQuickAffordancePickerViewModel,
- lifecycleOwner: LifecycleOwner,
- ) {
- val startView: ImageView = view.requireViewById(R.id.start_affordance)
- val endView: ImageView = view.requireViewById(R.id.end_affordance)
- lifecycleOwner.lifecycleScope.launch {
- lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
- launch {
- updateView(
- view = startView,
- viewModel = viewModel,
- slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- )
- }
-
- launch {
- updateView(
- view = endView,
- viewModel = viewModel,
- slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END,
- )
- }
- }
- }
- }
-
- private suspend fun updateView(
- view: ImageView,
- viewModel: KeyguardQuickAffordancePickerViewModel,
- slotId: String,
- ) {
- viewModel.slots
- .mapNotNull { slotById -> slotById[slotId] }
- .map { slot -> slot.selectedQuickAffordances.firstOrNull() }
- .collect { affordance ->
- view.setImageDrawable(affordance?.icon)
- view.contentDescription = affordance?.contentDescription
- }
- }
-}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
new file mode 100644
index 0000000..9248d66
--- /dev/null
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
@@ -0,0 +1,71 @@
+/*
+ * 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.picker.quickaffordance.ui.binder
+
+import android.app.Activity
+import android.os.Bundle
+import androidx.cardview.widget.CardView
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.flowWithLifecycle
+import androidx.lifecycle.lifecycleScope
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
+import com.android.wallpaper.R
+import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
+import kotlinx.coroutines.launch
+
+object KeyguardQuickAffordancePreviewBinder {
+
+ /** Binds view for the preview of the lock screen. */
+ @JvmStatic
+ fun bind(
+ activity: Activity,
+ previewView: CardView,
+ viewModel: KeyguardQuickAffordancePickerViewModel,
+ lifecycleOwner: LifecycleOwner,
+ offsetToStart: Boolean,
+ ) {
+ val binding =
+ ScreenPreviewBinder.bind(
+ activity = activity,
+ previewView = previewView,
+ viewModel = viewModel.preview,
+ lifecycleOwner = lifecycleOwner,
+ offsetToStart = offsetToStart,
+ )
+
+ previewView.contentDescription =
+ previewView.context.getString(
+ R.string.lockscreen_wallpaper_preview_card_content_description
+ )
+
+ lifecycleOwner.lifecycleScope.launch {
+ viewModel.selectedSlotId
+ .flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED)
+ .collect { slotId ->
+ binding.sendMessage(
+ KeyguardQuickAffordancePreviewConstants.MESSAGE_ID_SLOT_SELECTED,
+ Bundle().apply {
+ putString(KeyguardQuickAffordancePreviewConstants.KEY_SLOT_ID, slotId)
+ },
+ )
+ }
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt b/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
index c99c6e8..51b98ef 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
@@ -25,10 +25,15 @@
import androidx.lifecycle.get
import com.android.customization.module.ThemePickerInjector
import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePickerBinder
+import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePreviewBinder
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
import com.android.wallpaper.R
import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.AppbarFragment
+import com.android.wallpaper.picker.undo.ui.binder.RevertToolbarButtonBinder
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+@OptIn(ExperimentalCoroutinesApi::class)
class KeyguardQuickAffordancePickerFragment : AppbarFragment() {
companion object {
const val DESTINATION_ID = "quick_affordances"
@@ -51,14 +56,30 @@
)
setUpToolbar(view)
val injector = InjectorProvider.getInjector() as ThemePickerInjector
+ val viewModel: KeyguardQuickAffordancePickerViewModel =
+ ViewModelProvider(
+ requireActivity(),
+ injector.getKeyguardQuickAffordancePickerViewModelFactory(requireContext()),
+ )
+ .get()
+ setUpToolbarMenu(R.menu.undoable_customization_menu)
+ RevertToolbarButtonBinder.bind(
+ view = view.requireViewById(toolbarId),
+ viewModel = viewModel.undo,
+ lifecycleOwner = this,
+ )
+
+ KeyguardQuickAffordancePreviewBinder.bind(
+ activity = requireActivity(),
+ previewView = view.requireViewById(R.id.preview),
+ viewModel = viewModel,
+ lifecycleOwner = this,
+ offsetToStart =
+ injector.getDisplayUtils(requireActivity()).isOnWallpaperDisplay(requireActivity())
+ )
KeyguardQuickAffordancePickerBinder.bind(
view = view,
- viewModel =
- ViewModelProvider(
- requireActivity(),
- injector.getKeyguardQuickAffordancePickerViewModelFactory(requireContext()),
- )
- .get(),
+ viewModel = viewModel,
lifecycleOwner = this,
)
return view
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 7ea776b..1b3dbe3 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -21,40 +21,88 @@
import android.content.Context
import android.content.Intent
import android.graphics.drawable.Drawable
+import android.os.Bundle
import androidx.annotation.DrawableRes
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.systemui.shared.customization.data.content.CustomizationProviderContract
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderContract as Contract
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
import com.android.wallpaper.R
+import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
+import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
+import com.android.wallpaper.picker.undo.ui.viewmodel.UndoViewModel
+import com.android.wallpaper.util.PreviewUtils
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
+import kotlinx.coroutines.suspendCancellableCoroutine
/** Models UI state for a lock screen quick affordance picker experience. */
@OptIn(ExperimentalCoroutinesApi::class)
class KeyguardQuickAffordancePickerViewModel
private constructor(
context: Context,
- private val interactor: KeyguardQuickAffordancePickerInteractor,
+ private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+ undoInteractor: UndoInteractor,
+ private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
+ activityStarter: (Intent) -> Unit,
) : ViewModel() {
@SuppressLint("StaticFieldLeak") private val applicationContext = context.applicationContext
- private val selectedSlotId = MutableStateFlow<String?>(null)
+ val preview =
+ ScreenPreviewViewModel(
+ previewUtils =
+ PreviewUtils(
+ context = applicationContext,
+ authority =
+ applicationContext.getString(
+ R.string.lock_screen_preview_provider_authority,
+ ),
+ ),
+ initialExtrasProvider = {
+ Bundle().apply {
+ putString(
+ KeyguardQuickAffordancePreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
+ selectedSlotId.value,
+ )
+ }
+ },
+ wallpaperInfoProvider = {
+ suspendCancellableCoroutine { continuation ->
+ wallpaperInfoFactory.createCurrentWallpaperInfos(
+ { homeWallpaper, lockWallpaper, _ ->
+ continuation.resume(lockWallpaper ?: homeWallpaper, null)
+ },
+ /* forceRefresh= */ true,
+ )
+ }
+ },
+ )
+
+ val undo: UndoViewModel =
+ UndoViewModel(
+ interactor = undoInteractor,
+ )
+
+ private val _selectedSlotId = MutableStateFlow<String?>(null)
+ val selectedSlotId: StateFlow<String?> = _selectedSlotId.asStateFlow()
/** View-models for each slot, keyed by slot ID. */
val slots: Flow<Map<String, KeyguardQuickAffordanceSlotViewModel>> =
combine(
- interactor.slots,
- interactor.affordances,
- interactor.selections,
+ quickAffordanceInteractor.slots,
+ quickAffordanceInteractor.affordances,
+ quickAffordanceInteractor.selections,
selectedSlotId,
) { slots, affordances, selections, selectedSlotIdOrNull ->
slots
@@ -82,6 +130,7 @@
contentDescription = affordanceModel.name,
isSelected = true,
onClicked = null,
+ onLongClicked = null,
isEnabled = affordanceModel.isEnabled,
)
},
@@ -90,7 +139,7 @@
if (isSelected) {
null
} else {
- { this.selectedSlotId.value = slot.id }
+ { _selectedSlotId.tryEmit(slot.id) }
},
)
}
@@ -100,9 +149,9 @@
/** The list of all available quick affordances for the selected slot. */
val quickAffordances: Flow<List<KeyguardQuickAffordanceViewModel>> =
combine(
- interactor.slots,
- interactor.affordances,
- interactor.selections,
+ quickAffordanceInteractor.slots,
+ quickAffordanceInteractor.affordances,
+ quickAffordanceInteractor.selections,
selectedSlotId,
) { slots, affordances, selections, selectedSlotIdOrNull ->
val selectedSlot =
@@ -120,8 +169,9 @@
) +
affordances.map { affordance ->
val isSelected = selectedAffordanceIds.contains(affordance.id)
+ val affordanceIcon = getAffordanceIcon(affordance.iconResourceId)
KeyguardQuickAffordanceViewModel(
- icon = getAffordanceIcon(affordance.iconResourceId),
+ icon = affordanceIcon,
contentDescription = affordance.name,
isSelected = isSelected,
onClicked =
@@ -129,12 +179,12 @@
{
viewModelScope.launch {
if (isSelected) {
- interactor.unselect(
+ quickAffordanceInteractor.unselect(
slotId = selectedSlot.id,
affordanceId = affordance.id,
)
} else {
- interactor.select(
+ quickAffordanceInteractor.select(
slotId = selectedSlot.id,
affordanceId = affordance.id,
)
@@ -144,19 +194,21 @@
} else {
{
showEnablementDialog(
- instructionHeader =
- affordance.enablementInstructions.first(),
- instructions =
- affordance.enablementInstructions.subList(
- 1,
- affordance.enablementInstructions.size
- ),
+ icon = affordanceIcon,
+ name = affordance.name,
+ instructions = affordance.enablementInstructions,
actionText = affordance.enablementActionText,
actionComponentName =
affordance.enablementActionComponentName,
)
}
},
+ onLongClicked =
+ if (affordance.configureIntent != null) {
+ { activityStarter(affordance.configureIntent) }
+ } else {
+ null
+ },
isEnabled = affordance.isEnabled,
)
}
@@ -202,14 +254,16 @@
}
private fun showEnablementDialog(
- instructionHeader: String,
+ icon: Drawable,
+ name: String,
instructions: List<String>,
actionText: String?,
actionComponentName: String?,
) {
_dialog.value =
DialogViewModel(
- instructionHeader = instructionHeader,
+ icon = icon,
+ name = name,
instructions = instructions,
actionText = actionText
?: applicationContext.getString(
@@ -227,7 +281,9 @@
return KeyguardQuickAffordanceViewModel.none(
context = applicationContext,
isSelected = isSelected,
- onSelected = { viewModelScope.launch { interactor.unselectAll(slotId) } },
+ onSelected = {
+ viewModelScope.launch { quickAffordanceInteractor.unselectAll(slotId) }
+ },
)
}
@@ -244,7 +300,7 @@
}
private suspend fun getAffordanceIcon(@DrawableRes iconResourceId: Int): Drawable {
- return interactor.getAffordanceIcon(iconResourceId)
+ return quickAffordanceInteractor.getAffordanceIcon(iconResourceId)
}
private fun String?.toIntent(): Intent? {
@@ -252,11 +308,15 @@
return null
}
- val splitUp = split(Contract.AffordanceTable.COMPONENT_NAME_SEPARATOR)
+ val splitUp =
+ split(
+ CustomizationProviderContract.LockScreenQuickAffordances.AffordanceTable
+ .COMPONENT_NAME_SEPARATOR
+ )
check(splitUp.size == 1 || splitUp.size == 2) {
"Illegal component name \"$this\". Must be either just an action or a package and an" +
" action separated by a" +
- " \"${Contract.AffordanceTable.COMPONENT_NAME_SEPARATOR}\"!"
+ " \"${CustomizationProviderContract.LockScreenQuickAffordances.AffordanceTable.COMPONENT_NAME_SEPARATOR}\"!"
}
return Intent(splitUp.last()).apply {
@@ -268,8 +328,11 @@
/** Encapsulates a request to show a dialog. */
data class DialogViewModel(
- /** The header for the instructions section. */
- val instructionHeader: String,
+ /** An icon to show. */
+ val icon: Drawable,
+
+ /** Name of the affordance. */
+ val name: String,
/** The set of instructions to show below the header. */
val instructions: List<String>,
@@ -316,13 +379,19 @@
class Factory(
private val context: Context,
- private val interactor: KeyguardQuickAffordancePickerInteractor,
+ private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+ private val undoInteractor: UndoInteractor,
+ private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
+ private val activityStarter: (Intent) -> Unit,
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
return KeyguardQuickAffordancePickerViewModel(
context = context,
- interactor = interactor,
+ quickAffordanceInteractor = quickAffordanceInteractor,
+ undoInteractor = undoInteractor,
+ wallpaperInfoFactory = wallpaperInfoFactory,
+ activityStarter = activityStarter,
)
as T
}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordanceViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordanceViewModel.kt
index d720b0c..8f6d327 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordanceViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordanceViewModel.kt
@@ -38,6 +38,9 @@
/** Notifies that the quick affordance has been clicked by the user. */
val onClicked: (() -> Unit)?,
+
+ /** Notifies that the quick affordance has been long-clicked by the user. */
+ val onLongClicked: (() -> Unit)?,
) {
companion object {
@SuppressLint("UseCompatLoadingForDrawables")
@@ -56,6 +59,7 @@
} else {
onSelected
},
+ onLongClicked = null,
isEnabled = true,
)
}
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index 8805caf..fc665b9 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -183,6 +183,16 @@
@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);
}
diff --git a/src_override/com/android/wallpaper/config/Flags.java b/src_override/com/android/wallpaper/config/Flags.java
index 42731de..d35d88f 100644
--- a/src_override/com/android/wallpaper/config/Flags.java
+++ b/src_override/com/android/wallpaper/config/Flags.java
@@ -16,5 +16,4 @@
package com.android.wallpaper.config;
public class Flags extends BaseFlags {
- public static boolean enableCustomClocks = false;
}
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..9fed740
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,47 @@
+// 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.
+//
+
+//
+// Build rule for WallpaperPicker2 tests
+//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_test {
+ name: "ThemePickerTests",
+
+ defaults: ["ThemePicker_defaults"],
+ srcs: [
+ "src/**/*.java",
+ "src/**/*.kt",
+ ],
+ static_libs: [
+ "WallpaperPicker2TestLib",
+ "androidx.test.rules",
+ "junit",
+ "kotlinx_coroutines_test",
+ "truth-prebuilt",
+ ],
+ libs: [
+ "android.test.runner",
+ "android.test.base",
+ "android.test.mock",
+ ],
+
+ kotlincflags: ["-Xjvm-default=enable"],
+ platform_apis: true,
+ test_suites: ["device-tests"],
+}
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
new file mode 100644
index 0000000..2fd6b3f
--- /dev/null
+++ b/tests/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.wallpaper">
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.wallpaper"
+ android:label="Tests for ThemePicker" />
+
+</manifest>
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
new file mode 100644
index 0000000..be2119b
--- /dev/null
+++ b/tests/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+<configuration description="Runs Tests for ThemePicker.">
+ <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+ <option name="test-file-name" value="ThemePickerTests.apk" />
+ </target_preparer>
+
+ <option name="test-suite-tag" value="apct" />
+ <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="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java b/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java
index c96e7f8..eeff531 100644
--- a/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java
+++ b/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java
@@ -20,7 +20,7 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
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 89ca676..04ac024 100644
--- a/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java
+++ b/tests/robotests/src/com/android/customization/model/grid/GridOptionsManagerTest.java
@@ -17,7 +17,7 @@
import static junit.framework.TestCase.fail;
-import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
diff --git a/robolectric_tests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt b/tests/robotests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt
similarity index 96%
rename from robolectric_tests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt
rename to tests/robotests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt
index 5f4c134..ad3dd1c 100644
--- a/robolectric_tests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt
+++ b/tests/robotests/src/com/android/customization/picker/clock/ClockCustomDemoFragmentTest.kt
@@ -8,10 +8,10 @@
import androidx.recyclerview.widget.RecyclerView
import com.android.systemui.plugins.ClockId
import com.android.systemui.plugins.ClockMetadata
+import com.android.systemui.plugins.ClockProvider
import com.android.systemui.plugins.ClockProviderPlugin
import com.android.systemui.plugins.PluginManager
import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.systemui.shared.clocks.DefaultClockProvider
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@@ -33,7 +33,7 @@
@Mock private lateinit var mockPluginManager: PluginManager
@Mock private lateinit var mockHandler: Handler
@Mock private lateinit var fakePlugin: ClockProviderPlugin
- @Mock private lateinit var defaultClockProvider: DefaultClockProvider
+ @Mock private lateinit var defaultClockProvider: ClockProvider
private var settingValue: String = ""
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepositoryTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepositoryTest.kt
index 4a88f3b..3f22ced 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepositoryTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepositoryTest.kt
@@ -19,7 +19,8 @@
import androidx.test.filters.SmallTest
import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
-import com.android.systemui.shared.quickaffordance.data.content.FakeKeyguardQuickAffordanceProviderClient
+import com.android.systemui.shared.customization.data.content.CustomizationProviderContract
+import com.android.systemui.shared.customization.data.content.FakeCustomizationProviderClient
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -44,11 +45,11 @@
private lateinit var underTest: KeyguardQuickAffordancePickerRepository
private lateinit var testScope: TestScope
- private lateinit var client: FakeKeyguardQuickAffordanceProviderClient
+ private lateinit var client: FakeCustomizationProviderClient
@Before
fun setUp() {
- client = FakeKeyguardQuickAffordanceProviderClient()
+ client = FakeCustomizationProviderClient()
val coroutineDispatcher = UnconfinedTestDispatcher()
testScope = TestScope(coroutineDispatcher)
Dispatchers.setMain(coroutineDispatcher)
@@ -69,10 +70,8 @@
fun `isFeatureEnabled - enabled`() =
testScope.runTest {
client.setFlag(
- com.android.systemui.shared.quickaffordance.data.content
- .KeyguardQuickAffordanceProviderContract
- .FlagsTable
- .FLAG_NAME_FEATURE_ENABLED,
+ CustomizationProviderContract.FlagsTable
+ .FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED,
true,
)
val values = mutableListOf<Boolean>()
@@ -87,10 +86,8 @@
fun `isFeatureEnabled - not enabled`() =
testScope.runTest {
client.setFlag(
- com.android.systemui.shared.quickaffordance.data.content
- .KeyguardQuickAffordanceProviderContract
- .FlagsTable
- .FLAG_NAME_FEATURE_ENABLED,
+ CustomizationProviderContract.FlagsTable
+ .FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED,
false,
)
val values = mutableListOf<Boolean>()
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractorTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractorTest.kt
index d8a136d..4879fb0 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractorTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractorTest.kt
@@ -20,16 +20,18 @@
import androidx.test.filters.SmallTest
import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer
import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSelectionModel
+import com.android.systemui.shared.customization.data.content.FakeCustomizationProviderClient
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.systemui.shared.quickaffordance.data.content.FakeKeyguardQuickAffordanceProviderClient
+import com.android.wallpaper.testing.FakeSnapshotStore
+import com.android.wallpaper.testing.collectLastValue
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.toList
-import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
@@ -47,22 +49,29 @@
private lateinit var underTest: KeyguardQuickAffordancePickerInteractor
private lateinit var testScope: TestScope
- private lateinit var client: FakeKeyguardQuickAffordanceProviderClient
+ private lateinit var client: FakeCustomizationProviderClient
@Before
fun setUp() {
- val coroutineDispatcher = UnconfinedTestDispatcher()
- testScope = TestScope(coroutineDispatcher)
- Dispatchers.setMain(coroutineDispatcher)
- client = FakeKeyguardQuickAffordanceProviderClient()
+ val testDispatcher = StandardTestDispatcher()
+ testScope = TestScope(testDispatcher)
+ Dispatchers.setMain(testDispatcher)
+ client = FakeCustomizationProviderClient()
underTest =
KeyguardQuickAffordancePickerInteractor(
repository =
KeyguardQuickAffordancePickerRepository(
client = client,
- backgroundDispatcher = coroutineDispatcher,
+ backgroundDispatcher = testDispatcher,
),
client = client,
+ snapshotRestorer = {
+ KeyguardQuickAffordanceSnapshotRestorer(
+ interactor = underTest,
+ client = client,
+ )
+ .apply { runBlocking { setUpSnapshotRestorer(FakeSnapshotStore()) } }
+ },
)
}
@@ -74,85 +83,76 @@
@Test
fun select() =
testScope.runTest {
- val selections = mutableListOf<List<KeyguardQuickAffordancePickerSelectionModel>>()
- val job = launch { underTest.selections.toList(selections) }
+ val selections = collectLastValue(underTest.selections)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_1,
)
- assertThat(selections.last())
+ assertThat(selections())
.isEqualTo(
listOf(
KeyguardQuickAffordancePickerSelectionModel(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_1,
),
)
)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_2,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_2,
)
- assertThat(selections.last())
+ assertThat(selections())
.isEqualTo(
listOf(
KeyguardQuickAffordancePickerSelectionModel(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_2,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_2,
),
)
)
-
- job.cancel()
}
@Test
fun unselect() =
testScope.runTest {
- val selections = mutableListOf<List<KeyguardQuickAffordancePickerSelectionModel>>()
- val job = launch { underTest.selections.toList(selections) }
+ val selections = collectLastValue(underTest.selections)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_1,
)
underTest.unselect(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_1,
)
- assertThat(selections.last()).isEmpty()
-
- job.cancel()
+ assertThat(selections()).isEmpty()
}
@Test
fun unselectAll() =
testScope.runTest {
client.setSlotCapacity(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END, 3)
- val selections = mutableListOf<List<KeyguardQuickAffordancePickerSelectionModel>>()
- val job = launch { underTest.selections.toList(selections) }
+ val selections = collectLastValue(underTest.selections)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_1,
)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_2,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_2,
)
underTest.select(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END,
- affordanceId = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3,
+ affordanceId = FakeCustomizationProviderClient.AFFORDANCE_3,
)
underTest.unselectAll(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END,
)
- assertThat(selections.last()).isEmpty()
-
- job.cancel()
+ assertThat(selections()).isEmpty()
}
}
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index d446e1b..be118ee 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -18,25 +18,34 @@
package com.android.customization.model.picker.quickaffordance.ui.viewmodel
import android.content.Context
+import android.content.Intent
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordanceSlotViewModel
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordanceSummaryViewModel
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordanceViewModel
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
+import com.android.systemui.shared.customization.data.content.FakeCustomizationProviderClient
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.systemui.shared.quickaffordance.data.content.FakeKeyguardQuickAffordanceProviderClient
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient
+import com.android.wallpaper.module.InjectorProvider
+import com.android.wallpaper.picker.undo.data.repository.UndoRepository
+import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
+import com.android.wallpaper.testing.FAKE_RESTORERS
+import com.android.wallpaper.testing.FakeSnapshotStore
+import com.android.wallpaper.testing.TestCurrentWallpaperInfoFactory
+import com.android.wallpaper.testing.TestInjector
+import com.android.wallpaper.testing.collectLastValue
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.toList
-import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
@@ -55,28 +64,49 @@
private lateinit var context: Context
private lateinit var testScope: TestScope
- private lateinit var client: FakeKeyguardQuickAffordanceProviderClient
+ private lateinit var client: FakeCustomizationProviderClient
+ private lateinit var quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor
+
+ private var latestStartedActivityIntent: Intent? = null
@Before
fun setUp() {
+ InjectorProvider.setInjector(TestInjector())
context = InstrumentationRegistry.getInstrumentation().targetContext
- val coroutineDispatcher = UnconfinedTestDispatcher()
- testScope = TestScope(coroutineDispatcher)
- Dispatchers.setMain(coroutineDispatcher)
- client = FakeKeyguardQuickAffordanceProviderClient()
+ val testDispatcher = StandardTestDispatcher()
+ testScope = TestScope(testDispatcher)
+ Dispatchers.setMain(testDispatcher)
+ client = FakeCustomizationProviderClient()
+ quickAffordanceInteractor =
+ KeyguardQuickAffordancePickerInteractor(
+ repository =
+ KeyguardQuickAffordancePickerRepository(
+ client = client,
+ backgroundDispatcher = testDispatcher,
+ ),
+ client = client,
+ snapshotRestorer = {
+ KeyguardQuickAffordanceSnapshotRestorer(
+ interactor = quickAffordanceInteractor,
+ client = client,
+ )
+ .apply { runBlocking { setUpSnapshotRestorer(FakeSnapshotStore()) } }
+ },
+ )
+ val undoInteractor =
+ UndoInteractor(
+ scope = testScope.backgroundScope,
+ repository = UndoRepository(),
+ restorerByOwnerId = FAKE_RESTORERS,
+ )
underTest =
KeyguardQuickAffordancePickerViewModel.Factory(
context = context,
- interactor =
- KeyguardQuickAffordancePickerInteractor(
- repository =
- KeyguardQuickAffordancePickerRepository(
- client = client,
- backgroundDispatcher = coroutineDispatcher,
- ),
- client = client,
- ),
+ quickAffordanceInteractor = quickAffordanceInteractor,
+ undoInteractor = undoInteractor,
+ wallpaperInfoFactory = TestCurrentWallpaperInfoFactory(context),
+ activityStarter = { intent -> latestStartedActivityIntent = intent },
)
.create(KeyguardQuickAffordancePickerViewModel::class.java)
}
@@ -89,23 +119,18 @@
@Test
fun `Select an affordance for each side`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
-
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
// Initially, the first slot is selected with the "none" affordance selected.
assertPickerUiState(
- slots = slots.last(),
- affordances = quickAffordances.last(),
+ slots = slots(),
+ affordances = quickAffordances(),
selectedSlotText = "Left button",
selectedAffordanceText = "None",
)
assertPreviewUiState(
- slots = slots.last(),
+ slots = slots(),
expectedAffordanceNameBySlotId =
mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to null,
@@ -114,123 +139,109 @@
)
// Select "affordance 1" for the first slot.
- quickAffordances.last()[1].onClicked?.invoke()
+ quickAffordances()?.get(1)?.onClicked?.invoke()
assertPickerUiState(
- slots = slots.last(),
- affordances = quickAffordances.last(),
+ slots = slots(),
+ affordances = quickAffordances(),
selectedSlotText = "Left button",
- selectedAffordanceText = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ selectedAffordanceText = FakeCustomizationProviderClient.AFFORDANCE_1,
)
assertPreviewUiState(
- slots = slots.last(),
+ slots = slots(),
expectedAffordanceNameBySlotId =
mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ FakeCustomizationProviderClient.AFFORDANCE_1,
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to null,
),
)
// Select an affordance for the second slot.
// First, switch to the second slot:
- slots.last()[KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END]?.onClicked?.invoke()
+ slots()?.get(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END)?.onClicked?.invoke()
// Second, select the "affordance 3" affordance:
- quickAffordances.last()[3].onClicked?.invoke()
+ quickAffordances()?.get(3)?.onClicked?.invoke()
assertPickerUiState(
- slots = slots.last(),
- affordances = quickAffordances.last(),
+ slots = slots(),
+ affordances = quickAffordances(),
selectedSlotText = "Right button",
- selectedAffordanceText = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3,
+ selectedAffordanceText = FakeCustomizationProviderClient.AFFORDANCE_3,
)
assertPreviewUiState(
- slots = slots.last(),
+ slots = slots(),
expectedAffordanceNameBySlotId =
mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ FakeCustomizationProviderClient.AFFORDANCE_1,
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3,
+ FakeCustomizationProviderClient.AFFORDANCE_3,
),
)
// Select a different affordance for the second slot.
- quickAffordances.last()[2].onClicked?.invoke()
+ quickAffordances()?.get(2)?.onClicked?.invoke()
assertPickerUiState(
- slots = slots.last(),
- affordances = quickAffordances.last(),
+ slots = slots(),
+ affordances = quickAffordances(),
selectedSlotText = "Right button",
- selectedAffordanceText = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_2,
+ selectedAffordanceText = FakeCustomizationProviderClient.AFFORDANCE_2,
)
assertPreviewUiState(
- slots = slots.last(),
+ slots = slots(),
expectedAffordanceNameBySlotId =
mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
+ FakeCustomizationProviderClient.AFFORDANCE_1,
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_2,
+ FakeCustomizationProviderClient.AFFORDANCE_2,
),
)
-
- jobs.forEach { it.cancel() }
}
@Test
fun `Unselect - AKA selecting the none affordance - on one side`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
-
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
// Select "affordance 1" for the first slot.
- quickAffordances.last()[1].onClicked?.invoke()
+ quickAffordances()?.get(1)?.onClicked?.invoke()
// Select an affordance for the second slot.
// First, switch to the second slot:
- slots.last()[KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END]?.onClicked?.invoke()
+ slots()?.get(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END)?.onClicked?.invoke()
// Second, select the "affordance 3" affordance:
- quickAffordances.last()[3].onClicked?.invoke()
+ quickAffordances()?.get(3)?.onClicked?.invoke()
// Switch back to the first slot:
- slots.last()[KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START]?.onClicked?.invoke()
+ slots()?.get(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START)?.onClicked?.invoke()
// Select the "none" affordance, which is always in position 0:
- quickAffordances.last()[0].onClicked?.invoke()
+ quickAffordances()?.get(0)?.onClicked?.invoke()
assertPickerUiState(
- slots = slots.last(),
- affordances = quickAffordances.last(),
+ slots = slots(),
+ affordances = quickAffordances(),
selectedSlotText = "Left button",
selectedAffordanceText = "None",
)
assertPreviewUiState(
- slots = slots.last(),
+ slots = slots(),
expectedAffordanceNameBySlotId =
mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to null,
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to
- FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3,
+ FakeCustomizationProviderClient.AFFORDANCE_3,
),
)
-
- jobs.forEach { it.cancel() }
}
@Test
fun `Show enablement dialog when selecting a disabled affordance`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
- val dialog = mutableListOf<KeyguardQuickAffordancePickerViewModel.DialogViewModel?>()
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+ val dialog = collectLastValue(underTest.dialog)
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- add(launch { underTest.dialog.toList(dialog) })
- }
- val enablementInstructions = listOf("header", "enablementInstructions")
+ val enablementInstructions = listOf("instruction1", "instruction2")
val enablementActionText = "enablementActionText"
val packageName = "packageName"
val action = "action"
@@ -238,10 +249,10 @@
// Lets add a disabled affordance to the picker:
val affordanceIndex =
client.addAffordance(
- KeyguardQuickAffordanceProviderClient.Affordance(
+ CustomizationProviderClient.Affordance(
id = "disabled",
name = "disabled",
- iconResourceId = 0,
+ iconResourceId = 1,
isEnabled = false,
enablementInstructions = enablementInstructions,
enablementActionText = enablementActionText,
@@ -250,129 +261,126 @@
)
// Lets try to select that disabled affordance:
- quickAffordances.last()[affordanceIndex + 1].onClicked?.invoke()
+ quickAffordances()?.get(affordanceIndex + 1)?.onClicked?.invoke()
// We expect there to be a dialog that should be shown:
- assertThat(dialog.last()?.instructionHeader).isEqualTo(enablementInstructions[0])
- assertThat(dialog.last()?.instructions)
- .isEqualTo(enablementInstructions.subList(1, enablementInstructions.size))
- assertThat(dialog.last()?.actionText).isEqualTo(enablementActionText)
- assertThat(dialog.last()?.intent?.`package`).isEqualTo(packageName)
- assertThat(dialog.last()?.intent?.action).isEqualTo(action)
+ assertThat(dialog()?.icon).isEqualTo(FakeCustomizationProviderClient.ICON_1)
+ assertThat(dialog()?.instructions).isEqualTo(enablementInstructions)
+ assertThat(dialog()?.actionText).isEqualTo(enablementActionText)
+ assertThat(dialog()?.intent?.`package`).isEqualTo(packageName)
+ assertThat(dialog()?.intent?.action).isEqualTo(action)
// Once we report that the dialog has been dismissed by the user, we expect there to be
// no
// dialog to be shown:
underTest.onDialogDismissed()
- assertThat(dialog.last()).isNull()
+ assertThat(dialog()).isNull()
+ }
- jobs.forEach { it.cancel() }
+ @Test
+ fun `Start settings activity when long-pressing an affordance`() =
+ testScope.runTest {
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+
+ // Lets add a configurable affordance to the picker:
+ val configureIntent = Intent("some.action")
+ val affordanceIndex =
+ client.addAffordance(
+ CustomizationProviderClient.Affordance(
+ id = "affordance",
+ name = "affordance",
+ iconResourceId = 1,
+ isEnabled = true,
+ configureIntent = configureIntent,
+ )
+ )
+
+ // Lets try to long-click the affordance:
+ quickAffordances()?.get(affordanceIndex + 1)?.onLongClicked?.invoke()
+
+ assertThat(latestStartedActivityIntent).isEqualTo(configureIntent)
}
@Test
fun `summary - affordance selected in both bottom-start and bottom-end`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
- val summary = mutableListOf<KeyguardQuickAffordanceSummaryViewModel>()
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- add(launch { underTest.summary.toList(summary) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+ val summary = collectLastValue(underTest.summary)
// Select "affordance 1" for the first slot.
- quickAffordances.last()[1].onClicked?.invoke()
+ quickAffordances()?.get(1)?.onClicked?.invoke()
// Select an affordance for the second slot.
// First, switch to the second slot:
- slots.last()[KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END]?.onClicked?.invoke()
+ slots()?.get(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END)?.onClicked?.invoke()
// Second, select the "affordance 3" affordance:
- quickAffordances.last()[3].onClicked?.invoke()
+ quickAffordances()?.get(3)?.onClicked?.invoke()
- assertThat(summary.last())
+ assertThat(summary())
.isEqualTo(
KeyguardQuickAffordanceSummaryViewModel(
description =
- "${FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1}," +
- " ${FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3}",
- icon1 = FakeKeyguardQuickAffordanceProviderClient.ICON_1,
- icon2 = FakeKeyguardQuickAffordanceProviderClient.ICON_3,
+ "${FakeCustomizationProviderClient.AFFORDANCE_1}," +
+ " ${FakeCustomizationProviderClient.AFFORDANCE_3}",
+ icon1 = FakeCustomizationProviderClient.ICON_1,
+ icon2 = FakeCustomizationProviderClient.ICON_3,
)
)
- jobs.forEach { it.cancel() }
}
@Test
fun `summary - affordance selected only on bottom-start`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
- val summary = mutableListOf<KeyguardQuickAffordanceSummaryViewModel>()
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- add(launch { underTest.summary.toList(summary) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+ val summary = collectLastValue(underTest.summary)
// Select "affordance 1" for the first slot.
- quickAffordances.last()[1].onClicked?.invoke()
+ quickAffordances()?.get(1)?.onClicked?.invoke()
- assertThat(summary.last())
+ assertThat(summary())
.isEqualTo(
KeyguardQuickAffordanceSummaryViewModel(
- description = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_1,
- icon1 = FakeKeyguardQuickAffordanceProviderClient.ICON_1,
+ description = FakeCustomizationProviderClient.AFFORDANCE_1,
+ icon1 = FakeCustomizationProviderClient.ICON_1,
icon2 = null,
)
)
- jobs.forEach { it.cancel() }
}
@Test
fun `summary - affordance selected only on bottom-end`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
- val summary = mutableListOf<KeyguardQuickAffordanceSummaryViewModel>()
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- add(launch { underTest.summary.toList(summary) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+ val summary = collectLastValue(underTest.summary)
// Select an affordance for the second slot.
// First, switch to the second slot:
- slots.last()[KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END]?.onClicked?.invoke()
+ slots()?.get(KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END)?.onClicked?.invoke()
// Second, select the "affordance 3" affordance:
- quickAffordances.last()[3].onClicked?.invoke()
+ quickAffordances()?.get(3)?.onClicked?.invoke()
- assertThat(summary.last())
+ assertThat(summary())
.isEqualTo(
KeyguardQuickAffordanceSummaryViewModel(
- description = FakeKeyguardQuickAffordanceProviderClient.AFFORDANCE_3,
+ description = FakeCustomizationProviderClient.AFFORDANCE_3,
icon1 = null,
- icon2 = FakeKeyguardQuickAffordanceProviderClient.ICON_3,
+ icon2 = FakeCustomizationProviderClient.ICON_3,
)
)
- jobs.forEach { it.cancel() }
}
@Test
fun `summary - no affordances selected`() =
testScope.runTest {
- val slots = mutableListOf<Map<String, KeyguardQuickAffordanceSlotViewModel>>()
- val quickAffordances = mutableListOf<List<KeyguardQuickAffordanceViewModel>>()
- val summary = mutableListOf<KeyguardQuickAffordanceSummaryViewModel>()
- val jobs = buildList {
- add(launch { underTest.slots.toList(slots) })
- add(launch { underTest.quickAffordances.toList(quickAffordances) })
- add(launch { underTest.summary.toList(summary) })
- }
+ val slots = collectLastValue(underTest.slots)
+ val quickAffordances = collectLastValue(underTest.quickAffordances)
+ val summary = collectLastValue(underTest.summary)
- assertThat(summary.last().description).isEqualTo("None")
- assertThat(summary.last().icon1).isNotNull()
- assertThat(summary.last().icon2).isNull()
- jobs.forEach { it.cancel() }
+ assertThat(summary()?.description).isEqualTo("None")
+ assertThat(summary()?.icon1).isNotNull()
+ assertThat(summary()?.icon2).isNull()
}
/**
@@ -385,8 +393,8 @@
* @param selectedAffordanceText The text of the affordance that's expected to be selected
*/
private fun assertPickerUiState(
- slots: Map<String, KeyguardQuickAffordanceSlotViewModel>,
- affordances: List<KeyguardQuickAffordanceViewModel>,
+ slots: Map<String, KeyguardQuickAffordanceSlotViewModel>?,
+ affordances: List<KeyguardQuickAffordanceViewModel>?,
selectedSlotText: String,
selectedAffordanceText: String,
) {
@@ -402,7 +410,8 @@
)
var foundSelectedAffordance = false
- affordances.forEach { affordance ->
+ assertThat(affordances).isNotNull()
+ affordances?.forEach { affordance ->
val nameMatchesSelectedName = affordance.contentDescription == selectedAffordanceText
assertWithMessage(
"Expected affordance with name \"${affordance.contentDescription}\" to have" +
@@ -423,11 +432,11 @@
* @param isSelected Whether that slot should be selected
*/
private fun assertSlotTabUiState(
- slots: Map<String, KeyguardQuickAffordanceSlotViewModel>,
+ slots: Map<String, KeyguardQuickAffordanceSlotViewModel>?,
slotId: String,
isSelected: Boolean,
) {
- val viewModel = slots[slotId] ?: error("No slot with ID \"$slotId\"!")
+ val viewModel = slots?.get(slotId) ?: error("No slot with ID \"$slotId\"!")
assertThat(viewModel.isSelected).isEqualTo(isSelected)
}
@@ -439,10 +448,11 @@
* slot ID or `null` if it's expected for there to be no affordance for that slot in the preview
*/
private fun assertPreviewUiState(
- slots: Map<String, KeyguardQuickAffordanceSlotViewModel>,
+ slots: Map<String, KeyguardQuickAffordanceSlotViewModel>?,
expectedAffordanceNameBySlotId: Map<String, String?>,
) {
- slots.forEach { (slotId, slotViewModel) ->
+ assertThat(slots).isNotNull()
+ slots?.forEach { (slotId, slotViewModel) ->
val expectedAffordanceName = expectedAffordanceNameBySlotId[slotId]
val actualAffordanceName =
slotViewModel.selectedQuickAffordances.firstOrNull()?.contentDescription
diff --git a/tests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt b/tests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt
new file mode 100644
index 0000000..e29bd33
--- /dev/null
+++ b/tests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt
@@ -0,0 +1,96 @@
+/*
+ * 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.notifications.data.repository
+
+import android.provider.Settings
+import androidx.test.filters.SmallTest
+import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
+import com.android.wallpaper.testing.FakeSecureSettingsRepository
+import com.android.wallpaper.testing.collectLastValue
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(JUnit4::class)
+class NotificationsRepositoryTest {
+
+ private lateinit var underTest: NotificationsRepository
+
+ private lateinit var testScope: TestScope
+ private lateinit var secureSettingsRepository: FakeSecureSettingsRepository
+
+ @Before
+ fun setUp() {
+ val testDispatcher = StandardTestDispatcher()
+ testScope = TestScope(testDispatcher)
+ secureSettingsRepository = FakeSecureSettingsRepository()
+
+ underTest =
+ NotificationsRepository(
+ scope = testScope.backgroundScope,
+ backgroundDispatcher = testDispatcher,
+ secureSettingsRepository = secureSettingsRepository,
+ )
+ }
+
+ @Test
+ fun settings() =
+ testScope.runTest {
+ val settings = collectLastValue(underTest.settings)
+
+ secureSettingsRepository.set(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ value = 1,
+ )
+ assertThat(settings())
+ .isEqualTo(NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = true))
+
+ secureSettingsRepository.set(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ value = 0,
+ )
+ assertThat(settings())
+ .isEqualTo(
+ NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = false)
+ )
+ }
+
+ @Test
+ fun setShowNotificationsOnLockScreenEnabled() =
+ testScope.runTest {
+ val settings = collectLastValue(underTest.settings)
+
+ underTest.setShowNotificationsOnLockScreenEnabled(isEnabled = true)
+ assertThat(settings())
+ .isEqualTo(NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = true))
+
+ underTest.setShowNotificationsOnLockScreenEnabled(isEnabled = false)
+ assertThat(settings())
+ .isEqualTo(
+ NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = false)
+ )
+ }
+}
diff --git a/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt b/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
new file mode 100644
index 0000000..c74f848
--- /dev/null
+++ b/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
@@ -0,0 +1,89 @@
+/*
+ * 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.notifications.ui.viewmodel
+
+import androidx.test.filters.SmallTest
+import com.android.customization.picker.notifications.data.repository.NotificationsRepository
+import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
+import com.android.wallpaper.testing.FakeSecureSettingsRepository
+import com.android.wallpaper.testing.collectLastValue
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.resetMain
+import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.test.setMain
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(JUnit4::class)
+class NotificationSectionViewModelTest {
+
+ private lateinit var underTest: NotificationSectionViewModel
+
+ private lateinit var testScope: TestScope
+
+ @Before
+ fun setUp() {
+ val testDispatcher = StandardTestDispatcher()
+ Dispatchers.setMain(testDispatcher)
+ testScope = TestScope(testDispatcher)
+ underTest =
+ NotificationSectionViewModel(
+ interactor =
+ NotificationsInteractor(
+ repository =
+ NotificationsRepository(
+ scope = testScope.backgroundScope,
+ backgroundDispatcher = testDispatcher,
+ secureSettingsRepository = FakeSecureSettingsRepository(),
+ )
+ )
+ )
+ }
+
+ @After
+ fun tearDown() {
+ Dispatchers.resetMain()
+ }
+
+ @Test
+ fun `toggles back and forth`() =
+ testScope.runTest {
+ val subtitleStringResId = collectLastValue(underTest.subtitleStringResourceId)
+ val isSwitchOn = collectLastValue(underTest.isSwitchOn)
+
+ val initialSubtitleStringRes = subtitleStringResId()
+ val initialIsSwitchOn = isSwitchOn()
+
+ underTest.onClicked()
+ assertThat(subtitleStringResId()).isNotEqualTo(initialSubtitleStringRes)
+ assertThat(isSwitchOn()).isNotEqualTo(initialIsSwitchOn)
+
+ underTest.onClicked()
+ assertThat(subtitleStringResId()).isEqualTo(initialSubtitleStringRes)
+ assertThat(isSwitchOn()).isEqualTo(initialIsSwitchOn)
+ }
+}
diff --git a/tests/src/com/android/customization/testing/TestCustomizationInjector.java b/tests/src/com/android/customization/testing/TestCustomizationInjector.java
deleted file mode 100644
index 15898c1..0000000
--- a/tests/src/com/android/customization/testing/TestCustomizationInjector.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.android.customization.testing;
-
-import android.content.Context;
-
-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.CustomizationInjector;
-import com.android.customization.module.CustomizationPreferences;
-import com.android.customization.module.ThemesUserEventLogger;
-import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository;
-import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
-import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient;
-import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClientImpl;
-import com.android.wallpaper.module.DrawableLayerResolver;
-import com.android.wallpaper.module.PackageStatusNotifier;
-import com.android.wallpaper.module.UserEventLogger;
-import com.android.wallpaper.testing.TestInjector;
-
-import kotlinx.coroutines.Dispatchers;
-
-/**
- * Test implementation of the dependency injector.
- */
-public class TestCustomizationInjector extends TestInjector implements CustomizationInjector {
- private CustomizationPreferences mCustomizationPreferences;
- private ThemeManager mThemeManager;
- private PackageStatusNotifier mPackageStatusNotifier;
- private DrawableLayerResolver mDrawableLayerResolver;
- private UserEventLogger mUserEventLogger;
- private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
- private KeyguardQuickAffordancePickerViewModel.Factory
- mKeyguardQuickAffordancePickerViewModelFactory;
-
- @Override
- public CustomizationPreferences getCustomizationPreferences(Context context) {
- if (mCustomizationPreferences == null) {
- mCustomizationPreferences = new TestDefaultCustomizationPreferences(context);
- }
- return mCustomizationPreferences;
- }
-
- @Override
- public ThemeManager getThemeManager(
- ThemeBundleProvider provider,
- FragmentActivity activity,
- OverlayManagerCompat overlayManagerCompat,
- ThemesUserEventLogger logger) {
- if (mThemeManager == null) {
- mThemeManager = new TestThemeManager(provider, activity, overlayManagerCompat, logger);
- }
- return mThemeManager;
- }
-
- @Override
- public PackageStatusNotifier getPackageStatusNotifier(Context context) {
- if (mPackageStatusNotifier == null) {
- mPackageStatusNotifier = new TestPackageStatusNotifier();
- }
- return mPackageStatusNotifier;
- }
-
- @Override
- public DrawableLayerResolver getDrawableLayerResolver() {
- if (mDrawableLayerResolver == null) {
- mDrawableLayerResolver = new TestDrawableLayerResolver();
- }
- return mDrawableLayerResolver;
- }
-
- @Override
- public UserEventLogger getUserEventLogger(Context unused) {
- if (mUserEventLogger == null) {
- mUserEventLogger = new TestThemesUserEventLogger();
- }
- return mUserEventLogger;
- }
-
- @Override
- public KeyguardQuickAffordancePickerInteractor getKeyguardQuickAffordancePickerInteractor(
- Context context) {
- if (mKeyguardQuickAffordancePickerInteractor == null) {
- final KeyguardQuickAffordanceProviderClient client =
- new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
- mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
- new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
- client);
- }
- return mKeyguardQuickAffordancePickerInteractor;
- }
-}
diff --git a/tests/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/src/com/android/customization/testing/TestCustomizationInjector.kt
new file mode 100644
index 0000000..afc7131
--- /dev/null
+++ b/tests/src/com/android/customization/testing/TestCustomizationInjector.kt
@@ -0,0 +1,151 @@
+package com.android.customization.testing
+
+import android.content.Context
+import android.os.Handler
+import android.os.UserHandle
+import android.view.LayoutInflater
+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.CustomizationInjector
+import com.android.customization.module.CustomizationPreferences
+import com.android.customization.module.ThemesUserEventLogger
+import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer
+import com.android.systemui.plugins.PluginManager
+import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.systemui.shared.clocks.DefaultClockProvider
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
+import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
+import com.android.wallpaper.config.BaseFlags
+import com.android.wallpaper.module.DrawableLayerResolver
+import com.android.wallpaper.module.PackageStatusNotifier
+import com.android.wallpaper.module.UserEventLogger
+import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
+import com.android.wallpaper.testing.TestInjector
+import java.util.HashMap
+import kotlinx.coroutines.Dispatchers.IO
+
+/** Test implementation of the dependency injector. */
+class TestCustomizationInjector : TestInjector(), CustomizationInjector {
+ private var customizationPreferences: CustomizationPreferences? = null
+ private var themeManager: ThemeManager? = null
+ private var packageStatusNotifier: PackageStatusNotifier? = null
+ private var drawableLayerResolver: DrawableLayerResolver? = null
+ private var userEventLogger: UserEventLogger? = null
+ private var keyguardQuickAffordancePickerInteractor: KeyguardQuickAffordancePickerInteractor? =
+ null
+ private var flags: BaseFlags? = null
+ private var customizationProviderClient: CustomizationProviderClient? = null
+ private var keyguardQuickAffordanceSnapshotRestorer: KeyguardQuickAffordanceSnapshotRestorer? =
+ null
+ private var clockRegistry: ClockRegistry? = null
+ private var pluginManager: PluginManager? = null
+
+ override fun getCustomizationPreferences(context: Context): CustomizationPreferences {
+ return customizationPreferences
+ ?: TestDefaultCustomizationPreferences(context).also { customizationPreferences = it }
+ }
+
+ override fun getThemeManager(
+ provider: ThemeBundleProvider,
+ activity: FragmentActivity,
+ overlayManagerCompat: OverlayManagerCompat,
+ logger: ThemesUserEventLogger
+ ): ThemeManager {
+ return themeManager
+ ?: TestThemeManager(provider, activity, overlayManagerCompat, logger).also {
+ themeManager = it
+ }
+ }
+
+ override fun getPackageStatusNotifier(context: Context): PackageStatusNotifier {
+ return packageStatusNotifier
+ ?: TestPackageStatusNotifier().also {
+ packageStatusNotifier = TestPackageStatusNotifier()
+ }
+ }
+
+ override fun getDrawableLayerResolver(): DrawableLayerResolver {
+ return drawableLayerResolver
+ ?: TestDrawableLayerResolver().also { drawableLayerResolver = it }
+ }
+
+ override fun getUserEventLogger(context: Context): UserEventLogger {
+ return userEventLogger ?: TestThemesUserEventLogger().also { userEventLogger = it }
+ }
+
+ override fun getKeyguardQuickAffordancePickerInteractor(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor {
+ return keyguardQuickAffordancePickerInteractor
+ ?: createCustomizationProviderClient(context).also {
+ keyguardQuickAffordancePickerInteractor = it
+ }
+ }
+
+ private fun createCustomizationProviderClient(
+ context: Context
+ ): KeyguardQuickAffordancePickerInteractor {
+ val client: CustomizationProviderClient = CustomizationProviderClientImpl(context, IO)
+ return KeyguardQuickAffordancePickerInteractor(
+ KeyguardQuickAffordancePickerRepository(client, IO),
+ client
+ ) { getKeyguardQuickAffordanceSnapshotRestorer(context) }
+ }
+
+ override fun getFlags(): BaseFlags {
+ return flags ?: object : BaseFlags() {}.also { flags = it }
+ }
+
+ override fun getSnapshotRestorers(context: Context): Map<Int, SnapshotRestorer> {
+ val restorers: MutableMap<Int, SnapshotRestorer> = HashMap()
+ restorers[KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER] =
+ getKeyguardQuickAffordanceSnapshotRestorer(context)
+ return restorers
+ }
+
+ /** Returns the [CustomizationProviderClient]. */
+ private fun getKeyguardQuickAffordancePickerProviderClient(
+ context: Context
+ ): CustomizationProviderClient {
+ return customizationProviderClient
+ ?: CustomizationProviderClientImpl(context, IO).also {
+ customizationProviderClient = it
+ }
+ }
+
+ private fun getKeyguardQuickAffordanceSnapshotRestorer(
+ context: Context
+ ): KeyguardQuickAffordanceSnapshotRestorer {
+ return keyguardQuickAffordanceSnapshotRestorer
+ ?: KeyguardQuickAffordanceSnapshotRestorer(
+ getKeyguardQuickAffordancePickerInteractor(context),
+ getKeyguardQuickAffordancePickerProviderClient(context)
+ )
+ .also { keyguardQuickAffordanceSnapshotRestorer = it }
+ }
+
+ override fun getClockRegistry(context: Context): ClockRegistry {
+ return clockRegistry
+ ?: ClockRegistry(
+ context,
+ getPluginManager(context),
+ Handler.getMain(),
+ isEnabled = true,
+ userHandle = UserHandle.USER_SYSTEM,
+ DefaultClockProvider(context, LayoutInflater.from(context), context.resources)
+ )
+ .also { clockRegistry = it }
+ }
+
+ override fun getPluginManager(context: Context): PluginManager {
+ return pluginManager ?: TestPluginManager().also { pluginManager = it }
+ }
+
+ companion object {
+ private const val KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER = 1
+ }
+}
diff --git a/tests/src/com/android/customization/testing/TestPluginManager.kt b/tests/src/com/android/customization/testing/TestPluginManager.kt
new file mode 100644
index 0000000..167d8dd
--- /dev/null
+++ b/tests/src/com/android/customization/testing/TestPluginManager.kt
@@ -0,0 +1,36 @@
+package com.android.customization.testing
+
+import com.android.systemui.plugins.Plugin
+import com.android.systemui.plugins.PluginListener
+import com.android.systemui.plugins.PluginManager
+
+class TestPluginManager : PluginManager {
+ override fun getPrivilegedPlugins(): Array<String> {
+ return emptyArray()
+ }
+
+ override fun <T : Plugin?> addPluginListener(listener: PluginListener<T>, cls: Class<T>) {}
+ override fun <T : Plugin?> addPluginListener(
+ listener: PluginListener<T>,
+ cls: Class<T>,
+ allowMultiple: Boolean
+ ) {}
+
+ override fun <T : Plugin?> addPluginListener(
+ action: String,
+ listener: PluginListener<T>,
+ cls: Class<T>
+ ) {}
+
+ override fun <T : Plugin?> addPluginListener(
+ action: String,
+ listener: PluginListener<T>,
+ cls: Class<T>,
+ allowMultiple: Boolean
+ ) {}
+
+ override fun removePluginListener(listener: PluginListener<*>?) {}
+ override fun <T> dependsOn(p: Plugin, cls: Class<T>): Boolean {
+ return false
+ }
+}