Merge "Temporarily use reflection to get notification badge icon type" into ub-launcher3-dorval
diff --git a/protos/launcher_log.proto b/protos/launcher_log.proto
index 17dec37..909a429 100644
--- a/protos/launcher_log.proto
+++ b/protos/launcher_log.proto
@@ -79,6 +79,7 @@
PREDICTION = 7;
SEARCHRESULT = 8;
DEEPSHORTCUTS = 9;
+ PINITEM = 10; // confirmation screen
}
// Used to define what type of control a Target would represent.
@@ -124,6 +125,10 @@
enum Command {
HOME_INTENT = 0;
BACK = 1;
+ ENTRY = 2; // Indicates entry to one of Launcher container type target
+ // not using the HOME_INTENT
+ CANCEL = 3; // Indicates that a confirmation screen was cancelled
+ CONFIRM = 4; // Indicates thata confirmation screen was accepted
}
optional Type type = 1;
optional Touch touch = 2;
diff --git a/res/layout/deep_shortcut.xml b/res/layout/deep_shortcut.xml
index b2ed709..60131e4 100644
--- a/res/layout/deep_shortcut.xml
+++ b/res/layout/deep_shortcut.xml
@@ -22,7 +22,7 @@
<com.android.launcher3.shortcuts.DeepShortcutTextView
style="@style/BaseIcon"
- android:id="@+id/deep_shortcut"
+ android:id="@+id/bubble_text"
android:background="?android:attr/selectableItemBackground"
android:gravity="start|center_vertical"
android:textAlignment="viewStart"
@@ -34,8 +34,7 @@
android:fontFamily="sans-serif"
launcher:layoutHorizontal="true"
launcher:iconDisplay="shortcut_popup"
- launcher:iconSizeOverride="@dimen/deep_shortcut_icon_size"
- android:elevation="@dimen/deep_shortcuts_elevation" />
+ launcher:iconSizeOverride="@dimen/deep_shortcut_icon_size" />
<View
android:id="@+id/icon"
diff --git a/res/layout/system_shortcut.xml b/res/layout/system_shortcut.xml
new file mode 100644
index 0000000..3baddc4
--- /dev/null
+++ b/res/layout/system_shortcut.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.launcher3.shortcuts.DeepShortcutView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:launcher="http://schemas.android.com/apk/res-auto"
+ android:layout_width="@dimen/bg_popup_item_width"
+ android:layout_height="@dimen/bg_popup_item_height" >
+
+ <com.android.launcher3.BubbleTextView
+ style="@style/BaseIcon"
+ android:id="@+id/bubble_text"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="start|center_vertical"
+ android:textAlignment="viewStart"
+ android:paddingStart="@dimen/bg_popup_item_height"
+ android:paddingEnd="@dimen/deep_shortcut_padding_end"
+ android:textSize="14sp"
+ android:fontFamily="sans-serif"
+ launcher:layoutHorizontal="true" />
+
+ <View
+ android:id="@+id/icon"
+ android:layout_width="@dimen/system_shortcut_icon_size"
+ android:layout_height="@dimen/system_shortcut_icon_size"
+ android:layout_margin="@dimen/system_shortcut_padding_start"
+ android:layout_gravity="start" />
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="@dimen/deep_shortcuts_divider_width"
+ android:layout_height="@dimen/popup_item_divider_height"
+ android:layout_gravity="end|bottom"
+ android:visibility="gone"
+ android:background="?android:attr/listDivider" />
+
+</com.android.launcher3.shortcuts.DeepShortcutView>
diff --git a/res/layout/system_shortcut_icon_only.xml b/res/layout/system_shortcut_icon_only.xml
new file mode 100644
index 0000000..02d4ef8
--- /dev/null
+++ b/res/layout/system_shortcut_icon_only.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/deep_shortcut_icon_size"
+ android:layout_height="@dimen/deep_shortcut_icon_size"
+ android:background="?android:attr/selectableItemBackground"
+ android:layout_marginEnd="@dimen/deep_shortcut_padding_start"
+ android:padding="4dp" />
diff --git a/res/layout/system_shortcut_icons.xml b/res/layout/system_shortcut_icons.xml
new file mode 100644
index 0000000..bf0a251
--- /dev/null
+++ b/res/layout/system_shortcut_icons.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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:id="@+id/system_shortcut_icons"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/bg_popup_item_height"
+ android:paddingEnd="@dimen/deep_shortcut_padding_start"
+ android:orientation="horizontal"
+ android:gravity="end|center_vertical"
+ android:background="@color/notification_header_background_color" />
diff --git a/res/layout/widgets_and_more.xml b/res/layout/widgets_and_more.xml
new file mode 100644
index 0000000..7a6d006
--- /dev/null
+++ b/res/layout/widgets_and_more.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.launcher3.widget.WidgetsAndMore
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:background="?android:attr/colorPrimary"
+ android:elevation="@dimen/deep_shortcuts_elevation"
+ android:layout_gravity="bottom">
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:gravity="center_horizontal|bottom"
+ android:fontFamily="sans-serif"
+ android:textStyle="bold"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="20sp"/>
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:gravity="center_horizontal|top"
+ android:fontFamily="sans-serif"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="16sp"
+ android:text="@string/long_press_widget_to_add"/>
+
+ <TextView
+ android:id="@+id/widgets_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="16sp"
+ android:textStyle="bold"
+ android:text="@string/widget_button_text"/>
+
+ <include layout="@layout/widgets_scroll_container"
+ android:id="@+id/widgets"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/widget_row_padding"
+ android:layout_marginBottom="@dimen/widget_row_padding"/>
+
+ <TextView
+ android:id="@+id/shortcuts_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="16sp"
+ android:textStyle="bold"
+ android:text="@string/widgets_bottom_sheet_custom_shortcuts_section_title"/>
+
+ <include layout="@layout/widgets_scroll_container"
+ android:id="@+id/shortcuts"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/widget_row_padding"
+ android:layout_marginBottom="@dimen/widget_row_padding" />
+
+</com.android.launcher3.widget.WidgetsAndMore>
\ No newline at end of file
diff --git a/res/layout/widgets_list_row_view.xml b/res/layout/widgets_list_row_view.xml
index 4067503..b6e0a0b 100644
--- a/res/layout/widgets_list_row_view.xml
+++ b/res/layout/widgets_list_row_view.xml
@@ -47,19 +47,5 @@
launcher:iconSizeOverride="@dimen/widget_section_icon_size"
launcher:layoutHorizontal="true" />
- <HorizontalScrollView
- android:id="@+id/widgets_scroll_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="?android:attr/colorPrimaryDark"
- android:scrollbars="none">
- <LinearLayout
- android:id="@+id/widgets_cell_list"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="@dimen/widget_row_padding"
- android:paddingEnd="0dp"
- android:orientation="horizontal"
- android:showDividers="none"/>
- </HorizontalScrollView>
+ <include layout="@layout/widgets_scroll_container" />
</LinearLayout>
diff --git a/res/layout/widgets_scroll_container.xml b/res/layout/widgets_scroll_container.xml
new file mode 100644
index 0000000..33c981a
--- /dev/null
+++ b/res/layout/widgets_scroll_container.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<HorizontalScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/widgets_scroll_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?android:attr/colorPrimaryDark"
+ android:scrollbars="none">
+ <LinearLayout
+ android:id="@+id/widgets_cell_list"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingStart="0dp"
+ android:paddingEnd="0dp"
+ android:orientation="horizontal"
+ android:showDividers="none"/>
+</HorizontalScrollView>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 7d4a697..5d4b767 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dubbeltik en hou om \'n legstuk op te tel of gebruik gepasmaakte handelinge."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed by %2$d hoog"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Raak en hou om op tuisskerm te plaas"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Plaas outomaties"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Deursoek programme"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Laai tans programme …"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Geen programme gevind wat met \"<xliff:g id="QUERY">%1$s</xliff:g>\" ooreenstem nie"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 9f07b44..1c21247 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"አንድ ንዑስ ፕሮግራም ለመምረጥ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ አድርገው ይያዙ።"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ስፋት በ%2$d ከፍታ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"በመነሻ ማያ ገጽ ላይ ለማስቀመጥ ነካ ያድርጉ እና ይያዙ"</string>
- <string name="place_automatically" msgid="1502491650329146581">"በራስ-ሰር ያስቀምጡ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"መተግበሪያዎችን ይፈልጉ"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"መተግበሪያዎችን በመጫን ላይ..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"ከ«<xliff:g id="QUERY">%1$s</xliff:g>» ጋር የሚዛመዱ ምንም መተግበሪያዎች አልተገኙም"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index fcadbe1..d4563cd 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"انقر نقرًا مزدوجًا مع الاستمرار لاختيار أداة أو استخدم الإجراءات المخصصة."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"العرض %1$d الطول %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"المس الرمز مع الاستمرار لوضعه على الشاشة الرئيسية"</string>
- <string name="place_automatically" msgid="1502491650329146581">"إضافة الرمز إلى الشاشة الرئيسية تلقائيًا"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"البحث في التطبيقات"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"جارٍ تحميل التطبيقات…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"لم يتم العثور على أية تطبيقات تتطابق مع \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index e37cdf9..f1e4c54 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Vidceti götürmək üçün & iki dəfə toxunub saxlayın və ya fərdi fəaliyyətləri istifadə edin."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d hündürlük %1$d enində"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Əsas ekranda yerləşdirmək üçün toxunub saxlayın"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Avtomatik yerləşdirin"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Tətbiq Axtarın"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Tətbiqlər endirilir..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" sorğusuna uyğun Tətbiqlər tapılmadı"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 8d16653..ba7d1ae 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -33,9 +33,9 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dvaput dodirnite i zadržite da biste izabrali vidžet ili koristite prilagođene radnje."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"širina od %1$d i visina od %2$d"</string>
- <!-- no translation found for add_item_request_drag_hint (8662194377800507270) -->
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
<skip />
- <!-- no translation found for place_automatically (1502491650329146581) -->
+ <!-- no translation found for place_automatically (8064208734425456485) -->
<skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Pretražite aplikacije"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Aplikacije se učitavaju..."</string>
@@ -77,6 +77,8 @@
<string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotaciju početnog ekrana"</string>
<string name="allow_rotation_desc" msgid="8662546029078692509">"Kada se telefon rotira"</string>
<string name="allow_rotation_blocked_desc" msgid="3212602545192996253">"Aktuelno podešavanje prikaza ne dozvoljava rotaciju"</string>
+ <string name="auto_add_shortcuts_label" msgid="8222286205987725611">"Dodaj ikonu na početni ekran"</string>
+ <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
<string name="abandoned_clean_this" msgid="7610119707847920412">"Ukloni"</string>
<string name="abandoned_search" msgid="891119232568284442">"Pretraži"</string>
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index f1b3aee..e283cc4 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -33,9 +33,9 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Дакраніцеся двойчы і ўтрымлівайце, каб выбраць віджэт або выкарыстоўваць карыстальніцкія дзеянні."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Шырына: %1$d, вышыня: %2$d"</string>
- <!-- no translation found for add_item_request_drag_hint (8662194377800507270) -->
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
<skip />
- <!-- no translation found for place_automatically (1502491650329146581) -->
+ <!-- no translation found for place_automatically (8064208734425456485) -->
<skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Пошук у Праграмах"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Ідзе загрузка праграм…"</string>
@@ -77,6 +77,8 @@
<string name="allow_rotation_title" msgid="7728578836261442095">"Дазволіць паварот галоўнага экрана"</string>
<string name="allow_rotation_desc" msgid="8662546029078692509">"Пры павароце тэлефона"</string>
<string name="allow_rotation_blocked_desc" msgid="3212602545192996253">"Бягучая налада дысплэя не прадугледжвае паварот"</string>
+ <string name="auto_add_shortcuts_label" msgid="8222286205987725611">"Дадаць значок на Галоўны экран"</string>
+ <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Для новых праграм"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Невядома"</string>
<string name="abandoned_clean_this" msgid="7610119707847920412">"Выдаліць"</string>
<string name="abandoned_search" msgid="891119232568284442">"Шукаць"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 0f1b24a..6cfef5c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Докоснете двукратно и задръжте за избор на приспособление или използвайте персонализирани действия."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d и височина %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Докоснете и задръжте, за да поставите на началния екран"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Автоматично поставяне"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Търсене в приложенията"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Приложенията се зареждат…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Няма намерени приложения, съответстващи на „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index eaad010..4d4fd5b 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"কোনো উইজেট বেছে নিতে দুবার-আলতো চেপে ধরে থাকুন অথবা কাস্টম ক্রিয়াগুলি ব্যবহার করুন৷"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d উচ্চতা অনুযায়ী %1$d প্রস্থ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"হোম স্ক্রিনে রাখতে টাচ করে ধরে থাকুন"</string>
- <string name="place_automatically" msgid="1502491650329146581">"স্বয়ংক্রিয়ভাবে রাখুন"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"অ্যাপ্লিকেশানগুলি অনুসন্ধান করুন"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"অ্যাপ্লিকেশানগুলি লোড হচ্ছে..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" এর সাথে মেলে এমন কোনো অ্যাপ্লিকেশান পাওয়া যায়নি"</string>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 4a658d2..0dd2026 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -33,9 +33,9 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dvaput dodirnite & i držite da biste uzeli vidžet ili koristite prilagođene radnje."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, visina %2$d"</string>
- <!-- no translation found for add_item_request_drag_hint (8662194377800507270) -->
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
<skip />
- <!-- no translation found for place_automatically (1502491650329146581) -->
+ <!-- no translation found for place_automatically (8064208734425456485) -->
<skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Pretraži aplikacije"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Aplikacije se učitavaju…"</string>
@@ -77,6 +77,8 @@
<string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotiranje početnog ekrana"</string>
<string name="allow_rotation_desc" msgid="8662546029078692509">"Kada se telefon zarotira"</string>
<string name="allow_rotation_blocked_desc" msgid="3212602545192996253">"Trenutne postavke ekrana ne dozvoljavaju rotiranje"</string>
+ <string name="auto_add_shortcuts_label" msgid="8222286205987725611">"Dodajte ikonu na početni ekran"</string>
+ <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
<string name="abandoned_clean_this" msgid="7610119707847920412">"Ukloni"</string>
<string name="abandoned_search" msgid="891119232568284442">"Traži"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index dfbfe8c..c408995 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Fes doble toc i mantén premut per seleccionar un widget o per utilitzar les accions personalitzades."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d d\'amplada per %2$d d\'alçada"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Toca i mantén premut l\'element per col·locar-lo a la pantalla d\'inici"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Col·loca automàticament"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Cerca a les aplicacions"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"S\'estan carregant les aplicacions..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No s\'ha trobat cap aplicació que coincideixi amb <xliff:g id="QUERY">%1$s</xliff:g>"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 6f19c0e..6e7ae2d 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dvojitým klepnutím a podržením vyberte widget, případně použijte vlastní akce."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"šířka %1$d, výška %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Chcete-li položku umístit na plochu, klepněte na ni a podržte ji"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Umístit automaticky"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Hledat aplikace"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Načítání aplikací…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Dotazu „<xliff:g id="QUERY">%1$s</xliff:g>“ neodpovídají žádné aplikace"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 2186fb4..7e5eb51 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Tryk to gange, og hold fingeren nede for at vælge en widget eller bruge tilpassede handlinger."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i bredden og %2$d i højden"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Tryk, og hold fingeren nede for at placere på startskærmen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Placer automatisk"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Søg i Apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Indlæser apps…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Der blev ikke fundet nogen apps, som matcher \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f97f028..dd28868 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Zum Hinzufügen auf Widget doppeltippen und gedrückt halten oder benutzerdefinierte Aktionen verwenden."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breit und %2$d hoch"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Zum Hinzufügen zum Startbildschirm gedrückt halten"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Automatisch hinzufügen"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"In Apps suchen"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Apps werden geladen..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Keine Apps für \"<xliff:g id="QUERY">%1$s</xliff:g>\" gefunden"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index e045d2b..8296ba4 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Πατήστε δύο φορές παρατεταμένα για επιλογή γραφικού στοιχείου ή χρήση προσαρμοσμένων ενεργειών."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Πλάτος %1$d επί ύψος %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Αγγίξτε παρατεταμένα για να το τοποθετήσετε στην αρχική οθόνη"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Αυτόματη τοποθέτηση"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Αναζήτηση εφαρμογών"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Φόρτωση εφαρμογών…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Δεν βρέθηκαν εφαρμογές για το ερώτημα \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index d6c837b..c44aa9d 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Double-tap & hold to pick up a widget or use customised actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Touch & hold to place on home screen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Place automatically"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Search Apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Loading Apps…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No Apps found matching \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index d6c837b..c44aa9d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Double-tap & hold to pick up a widget or use customised actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Touch & hold to place on home screen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Place automatically"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Search Apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Loading Apps…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No Apps found matching \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d6c837b..c44aa9d 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Double-tap & hold to pick up a widget or use customised actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Touch & hold to place on home screen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Place automatically"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Search Apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Loading Apps…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No Apps found matching \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 1a7b561..466e0b3 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Presiona dos veces y mantén presionado para elegir un widget o usa una acción personalizada."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Mantén presionado para ubicarlo en la pantalla principal"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Ubicar de manera automática"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Buscar aplicaciones"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Cargando aplicaciones…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No hay aplicaciones que coincidan con <xliff:g id="QUERY">%1$s</xliff:g>."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 9b80c56..4fd0ed9 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Toca dos veces y mantén pulsado el widget que quieras seleccionar o utiliza acciones personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Mantén pulsado el elemento para añadirlo a la pantalla de inicio"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Añadir automáticamente"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Busca aplicaciones"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Cargando aplicaciones…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"No se han encontrado aplicaciones que contengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 07834dc..91e7b3b 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Topeltpuudutage ja hoidke vidina valimiseks või kohandatud toimingute kasutamiseks."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lai ja %2$d kõrge"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Puudutage pikalt avaekraanile paigutamiseks"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Paiguta automaatselt"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Otsige rakendustest"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Rakenduste laadimine ..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Päringule „<xliff:g id="QUERY">%1$s</xliff:g>” ei vastanud ükski rakendus"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 17ce6d0..9c70d62 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Sakatu birritan eta eduki sakatuta widgeta aukeratzeko edo ekintza pertsonalizatuak erabiltzeko."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d zabal eta %2$d luze"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Eduki sakatuta jarri nahi duzun tokia hasierako pantailan"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Jarri automatikoki"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Bilatu aplikazioetan"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Aplikazioak kargatzen…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Ez da aurkitu \"<xliff:g id="QUERY">%1$s</xliff:g>\" bilaketarekin bat datorren aplikaziorik"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9bbecca..358b680 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"برای انتخاب یک ابزارک، دو ضربه سریع بزنید و نگهدارید یا از اقدامات سفارشی استفاده کنید."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d عرض در %2$d طول"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"برای قرار دادن در صفحه اصلی لمس کنید و نگهدارید"</string>
- <string name="place_automatically" msgid="1502491650329146581">"افزودن خودکار"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"جستجوی برنامهها"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"در حال بارگیری برنامهها..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"هیچ برنامهای مطابق با «<xliff:g id="QUERY">%1$s</xliff:g>» پیدا نشد"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6595f86..c54d546 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Valitse widget tai käytä muokattuja toimintoja kaksoisnapauttamalla ja painamalla kohdetta pitkään."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Leveys: %1$d, korkeus: %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Sijoita aloitusnäytölle koskettamalla pitkään."</string>
- <string name="place_automatically" msgid="1502491650329146581">"Sijoita automaattisesti"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Sovellushaku"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Ladataan sovelluksia…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"”<xliff:g id="QUERY">%1$s</xliff:g>” ei palauttanut sovelluksia."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 5d9f041..b595e23 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Touchez 2x un widget et maintenez doigt dessus pour l’ajouter ou utiliser des actions personnalisées"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur sur %2$d de hauteur"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Maintenez le doigt sur l\'élément pour le placer sur l\'écran d\'accueil"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Placer automatiquement"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Rechercher des applications"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Chargement des applications en cours..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Aucune application trouvée correspondant à « <xliff:g id="QUERY">%1$s</xliff:g> »"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 2090262..d6c9a04 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Appuyez 2 fois et maintenez la pression pour sélectionner widget ou utilisez actions personnalisées."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur et %2$d de hauteur"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Appuyez de manière prolongée pour placer l\'élément sur l\'écran d\'accueil"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Placer automatiquement"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Rechercher dans les applications"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Chargement des applications en cours…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Aucune application ne correspond à la requête \"<xliff:g id="QUERY">%1$s</xliff:g>\"."</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index fbadfe0..a05fc85 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Toca dúas veces e mantén premido para seleccionar un widget ou utiliza accións personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largo por %2$d de alto"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Mantén premido o elemento para colocalo na pantalla de inicio"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Colocar automaticamente"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Aplicacións de busca"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Cargando aplicacións..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Non se atoparon aplicacións que coincidan con \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 557896f..1932e40 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"વિજેટ ચૂંટવા અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરવા માટે બે વાર ટેપ કરો અને પકડી રાખો."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d પહોળાઈ X %2$d ઊંચાઈ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"હોમ સ્ક્રીન પર મૂકવા માટે ટચ કરો અને પકડો"</string>
- <string name="place_automatically" msgid="1502491650329146581">"આપમેળે મૂકો"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"શોધ ઍપ્લિકેશનો"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ઍપ્લિકેશનો લોડ કરી રહ્યું છે…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" થી મેળ ખાતી કોઈ ઍપ્લિકેશનો મળી નથી"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index ad33aca..eb29709 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"कोई विजेट चुनने के लिए डबल टैप करके रखें या कस्टम कार्रवाइयां चुनें."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौड़ाई गुणा %2$d ऊंचाई"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"होम स्क्रीन पर रखने के लिए स्पर्श करके रखें"</string>
- <string name="place_automatically" msgid="1502491650329146581">"अपने आप रखें"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ऐप्स खोजें"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ऐप्स लोड हो रहे हैं..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" से मिलान करने वाला कोई ऐप नहीं मिला"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 0e01e72..8a62f4e 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dodirnite dvaput i držite kako biste podigli widget ili pokušajte prilagođenim radnjama."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d širine i %2$d visine"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Dodirnite i zadržite stavku da biste je postavili na početni zaslon"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Postavi automatski"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Pretraži aplikacije"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Učitavanje aplikacija…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nema aplikacija podudarnih s upitom \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index bcbe52f..b44d231 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Modul mozgatásához koppintson rá duplán és tartsa lenyomva, vagy használjon egyéni műveleteket."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d széles és %2$d magas"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Tartsa lenyomva, hogy elhelyezhesse a kezdőképernyőn"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Automatikus elhelyezés"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Alkalmazások keresése"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Alkalmazások betöltése…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Egy alkalmazás sem található a(z) „<xliff:g id="QUERY">%1$s</xliff:g>” lekérdezésre."</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index f3a034f..96b4ad0 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Կրկնակի հպեք և պահեք՝ վիջեթ ավելացնելու համար կամ օգտվեք հարմարեցրած գործողություններից:"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Լայնությունը՝ %1$d, բարձրությունը՝ %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Հպեք և պահեք՝ գլխավոր էկրանին ավելացնելու համար"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Ավելացնել ավտոմատ կերպով"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Հավելվածների որոնում"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Հավելվածների բեռնում…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"«<xliff:g id="QUERY">%1$s</xliff:g>» հարցմանը համապատասխանող հավելվածներ չեն գտնվել"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index c56fc2b..f4f2788 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Ketuk dua kalip & tahan untuk mengambil widget atau menggunakan tindakan khusus."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"lebar %1$d x tinggi %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Sentuh & tahan untuk ditempatkan di layar utama"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Tempatkan otomatis"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Telusuri Apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Memuat Aplikasi..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Tidak ditemukan Aplikasi yang cocok dengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 249704e..b6e1e78 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Ýttu tvisvar og haltu fingri á græju til að grípa hana eða notaðu sérsniðnar aðgerðir."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d á breidd og %2$d á hæð"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Haltu inni til að setja á heimaskjáinn"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Staðsetja sjálfkrafa"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Leita í forritum"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Hleður forrit…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Ekki fundust forrit sem samsvara „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 18e28c9..ad8556f 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Tocca due volte e tieni premuto per scegliere un widget o per utilizzare azioni personalizzate."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d di larghezza per %2$d di altezza"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Tieni premuto per posizionare l\'elemento nella schermata Home"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Posiziona automaticamente"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Cerca app"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Caricamento di app…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nessuna app trovata corrispondente a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 059f849..6310738 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"הקש פעמיים וגע נגיעה רציפה בווידג\'ט כדי לבחור בו, או השתמש בפעולות מותאמות אישית."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"רוחב %1$d על גובה %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"גע והחזק כדי למקם במסך דף הבית"</string>
- <string name="place_automatically" msgid="1502491650329146581">"מקם אוטומטית"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"חפש אפליקציות"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"טוען אפליקציות…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"לא נמצאו אפליקציות התואמות ל-\"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index f45af77..6ad4345 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ダブルタップ後に押し続けてウィジェットを選択するか、カスタム操作を使用してください。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$dx%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"幅 %1$d、高さ %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"押し続けると、ホーム画面に追加できます"</string>
- <string name="place_automatically" msgid="1502491650329146581">"自動的に追加"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"アプリを検索"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"アプリを読み込んでいます…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"「<xliff:g id="QUERY">%1$s</xliff:g>」に一致するアプリは見つかりませんでした"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 21f440b..4696ca0 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ორმაგად შეეხეთ და გეჭიროთ ვიჯეტის ასარჩევად ან მორგებული მოქმედებების გამოსაყენებლად."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"სიგრძე: %1$d, სიგანე: %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ხანგრძლივად შეეხეთ მთავარ ეკრანზე განსათავსებლად"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ავტომატურად განთავსება"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"აპების ძიება"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"აპები იტვირთება..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"„<xliff:g id="QUERY">%1$s</xliff:g>“-ის თანხვედრი აპები არ მოიძებნა"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 7fc61b9..5d7a57c 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Виджетті таңдау немесе арнаулы әрекеттерді таңдау үшін екі рет түртіп, ұстап тұрыңыз."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ені: %1$d, биіктігі: %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Басып тұрып, негізгі экранда қойылатын жерге апарыңыз"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Автоматты қою"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Қолданбаларды іздеу"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Қолданбалар жүктелуде…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"«<xliff:g id="QUERY">%1$s</xliff:g>» сұрауына сәйкес келетін қолданбалар жоқ"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 8b271e5..926f3ed 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ប៉ះពីរដង ហើយចុចឲ្យជាប់ដើម្បីជ្រើសយកធាតុក្រាហ្វិក ឬប្រើសកម្មភាពផ្ទាល់ខ្លួន។"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ទទឺង %1$d គុណនឹងកម្ពស់ %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"សង្កត់ឲ្យជាប់ដើម្បីដាក់វានៅលើអេក្រង់ដើម"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ដាក់ដោយស្វ័យប្រវត្តិ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ស្វែងរកកម្មវិធី"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"កំពុងដំណើរការកម្មវិធី..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"គ្មានកម្មវិធីដែលត្រូវជាមួយ \"<xliff:g id="QUERY">%1$s</xliff:g>\" ទេ"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 209bdab..16e039d 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ಡಬಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ವಿಜೆಟ್ ಆರಿಸಿಕೊಳ್ಳಲು ಹೋಲ್ಡ್ ಮಾಡಿ ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಿ"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ಅಗಲ ಮತ್ತು %2$d ಎತ್ತರ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ಮುಖಪುಟ ಪರದೆಯ ಮೇಲೆ ಇಡಲು ಟಚ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಇಡಿ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ಅಪ್ಲಿಕೇಷನ್ಗಳನ್ನು ಹುಡುಕಿ"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ಹೊಂದಿಕೆಯ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಂಡುಬಂದಿಲ್ಲ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 08b73f8..bb4f0c0 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"위젯을 선택하려면 두 번 탭한 다음 길게 터치하거나 맞춤 액션을 사용합니다."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"너비 %1$d, 높이 %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"길게 터치하여 홈 화면에 추가"</string>
- <string name="place_automatically" msgid="1502491650329146581">"자동으로 추가"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"앱 검색"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"앱 로드 중..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\'<xliff:g id="QUERY">%1$s</xliff:g>\'와(과) 일치하는 앱이 없습니다."</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index e5465aa..aa77658 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Виджет тандоо үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Туурасы: %1$d, бийиктиги: %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Басып туруп, башкы экранга сүйрөп барып, таштаңыз"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Автоматтык түрдө жайгаштыруу"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Колдонмолорду издөө"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Колдонмолор жүктөлүүдө…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" дал келген колдонмолор табылган жок"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 7783c7a..cd9ac5a 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ແຕະຄ້າງໄວ້ ເພື່ອເລືອກວິດເຈັດ ຫຼື ໃຊ້ການດຳເນີນການກຳນົດເອງ."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ກວ້າງ %1$d ຄູນສູງ %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ແຕະຄ້າງໄວ້ເພື່ອວາງໄວ້ໜ້າຫຼັກ"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ວາງອັດຕະໂນມັດ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ຊອກຫາແອັບ"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ກຳລັງໂຫລດແອັບ..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"ບໍ່ພົບແອັບໃດທີ່ກົງກັນ \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index b44549a..e3b7ae6 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dukart palieskite ir laikykite, kad pasirinktumėte valdiklį ar naudotumėte tinkintus veiksmus."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plotis ir %2$d aukštis"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Palieskite ir palaikykite, kad padėtumėte pagrindiniame ekrane"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Padėti automatiškai"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Ieškoti programų"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Įkeliamos programos..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nerasta jokių užklausą „<xliff:g id="QUERY">%1$s</xliff:g>“ atitinkančių programų"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index a623294..974f254 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Lai atlasītu logrīku, veiciet dubultskārienu uz tā un turiet to vai arī veiciet pielāgotas darbības."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plats un %2$d augsts"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Sākuma ekrānā pieskarieties kādai vietai un turiet"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Novietot automātiski"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Meklēt lietotnes"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Notiek lietotņu ielāde…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Vaicājumam “<xliff:g id="QUERY">%1$s</xliff:g>” neatbilda neviena lietotne."</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index e6ca38f..dd4b3ae 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Допрете двапати и задржете за да изберете додаток или да користите приспособени дејства."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d широк на %2$d висок"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Допрете и задржете за да поставите на почетниот екран"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Постави автоматски"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Пребарување апликации"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Се вчитуваат апликации…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Не се најдени апликации што одговараат на „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 8ec29d3..7a13d1d 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"വിജറ്റ് തിരഞ്ഞെടുക്കാനോ ഇഷ്ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കാനോ രണ്ടുതവണ ടാപ്പുചെയ്ത് പിടിക്കുക."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d വീതിയും %2$d ഉയരവും"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ഹോം സ്ക്രീനിൽ സ്ഥാപിക്കാൻ സ്പർശിച്ച് പിടിക്കുക"</string>
- <string name="place_automatically" msgid="1502491650329146581">"സ്വയമേവ സ്ഥാപിക്കുക"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ആപ്പുകളെ തിരയുക"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ആപ്പ്സ് ലോഡുചെയ്യുന്നു..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" എന്നതുമായി പൊരുത്തപ്പെടുന്ന ആപ്പ്സൊന്നും കണ്ടെത്തിയില്ല"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index c8dfdd5..d631f7b 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Жижиг хэрэгсэл авах болон тохируулсан үйлдлийг ашиглахын тулд 2 удаа товшоод барина уу."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d өргөн %2$d өндөр"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Нүүр дэлгэцэд байршуулахын тулд дараад, хүлээнэ үү"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Автоматаар байршуулах"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Апп хайх"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Аппликейшныг ачаалж байна..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"-д нийцэх апп олдсонгүй"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 4056b03..c80a410 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"एक विजेट निवडण्यासाठी दोनदा टॅप करा आणि धरून ठेवा किंवा सानुकूल क्रिया वापरा."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d रूंद बाय %2$d उंच"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"मुख्यपृष्ठावर ठेवण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
- <string name="place_automatically" msgid="1502491650329146581">"स्वयंचलितपणे ठेवा"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"अॅप्स शोधा"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"अॅप्स लोड करीत आहे..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" शी जुळणारे कोणतेही अॅप्स आढळले नाहीत"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 9ec1813..cc4fc58 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Ketik dua kali & tahan untuk mengambil widget atau menggunakan tindakan tersuai"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Lebar %1$d kali tinggi %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Sentuh & tahan untuk meletakkan pada skrin utama"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Letakkan secara automatik"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Cari Apl"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Memuatkan Apl…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Tiada Apl yang ditemui sepadan dengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 5da5f65..1c11314 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ဝစ်ဂျက်တစ်ခုကိုရယူရန် သို့မဟုတ် စိတ်ကြိုက်လုပ်ဆောင်မှုများကို အသုံးပြုရန် နှစ်ချက်တို့ပြီး ကိုင်ထားပါ။"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"အလျား %1$d နှင့် အမြင့် %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ပင်မစာမျက်နှာတွင် ထားရန် ထိပြီး ဖိထားပါ"</string>
- <string name="place_automatically" msgid="1502491650329146581">"အလိုအလျောက် ထားရန်"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ရှာဖွေမှု အက်ပ်များ"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"အက်ပ်များ ရယူနေစဉ်..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" နှင့်ကိုက်ညီသည့် အပ်ဖ်များမတွေ့ပါ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 694c6fc..9536050 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dobbelttrykk og hold inne for å velge en modul eller bruke tilpassede handlinger."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bredde x %2$d høyde"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Trykk og hold for å plassere på startskjermen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Plassér automatisk"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Søk i apper"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Laster inn apper …"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Fant ingen apper som samsvarer med «<xliff:g id="QUERY">%1$s</xliff:g>»"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 01ec5bd..ab0ce24 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"विजेटलाई छान्न वा आफू अनुकूल कार्यहरू प्रयोग गर्न डबल ट्याप गरी होल्ड गर्नुहोस्।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौडाइ गुणा %2$d उचाइ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"गृह स्क्रिनमा राख्न छुनुहोस् र थिची राख्नुहोस्"</string>
- <string name="place_automatically" msgid="1502491650329146581">"स्वतः राख्नुहोस्"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"अनुप्रयोगहरू खोज्नुहोस्"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"अनुप्रयोगहरू लोड गरिँदै..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" सँग मिल्दो कुनै अनुप्रयोगहरू फेला परेनन्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index a477893..be1dfe0 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Dubbeltik en blijf aanraken om een widget toe te voegen of aangepaste acties te gebruiken."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed en %2$d hoog"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Tik op een item en houd dit vast om het op het startscherm te plaatsen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Automatisch plaatsen"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Apps zoeken"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Apps laden…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Er zijn geen apps gevonden die overeenkomen met \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 71d9942..df5b407 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"ਡਬਲ-ਟੈਪ & ਇੱਕ ਵਿਜੇਟ ਚੁਣਨ ਲਈ ਹੋਲਡ ਕਰੋ ਅਤੇ ਕਸਟਮ ਕਿਰਿਆਵਾਂ ਵਰਤੋ।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ਚੌੜਾਈ ਅਤੇ %2$d ਲੰਬਾਈ"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ਮੁੱਖ ਸਕ੍ਰੀਨ \'ਤੇ ਰੱਖਣ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ਸਵੈਚਲਿਤ ਤਰੀਕੇ ਨਾਲ ਰੱਖੋ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ਐਪਸ ਖੋਜੋ"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ਐਪਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ਨਾਲ ਮਿਲਦੀਆਂ ਕੋਈ ਵੀ ਐਪਾਂ ਨਹੀਂ ਮਿਲੀਆਂ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 4225d37..fcae3d2 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Kliknij dwukrotnie i przytrzymaj, by wybrać widżet lub użyć działań niestandardowych."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Szerokość %1$d, wysokość %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Kliknij i przytrzymaj, by umieścić na ekranie głównym"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Umieść automatycznie"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Szukaj w aplikacjach"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Wczytuję aplikacje…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nie znaleziono aplikacji pasujących do zapytania „<xliff:g id="QUERY">%1$s</xliff:g>”"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4754bb8..b451db4 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Toque duas vezes sem soltar para escolher um widget ou utilize ações personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Toque sem soltar para colocar no ecrã principal"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Colocar automaticamente"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Pesquisar aplicações"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"A carregar aplicações..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Não foram encontradas aplic. que correspondam a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 2f15b40..b38e1b2 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Toque duas vezes e segure para selecionar um widget ou usar ações personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Toque e segure-o para posicionar na tela inicial"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Posicionar automaticamente"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Pesquisar apps"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Carregando apps…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nenhum app encontrado que corresponda a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 8bb73f2..b922bce 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Atingeți de două ori și mențineți apăsat ca să alegeți un widget sau folosiți acțiuni personalizate."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lățime și %2$d înălțime"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Atingeți lung pentru a plasa pe ecranul de pornire"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Plasare automată"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Căutați aplicații"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Se încarcă aplicațiile..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nu s-a găsit nicio aplicație pentru „<xliff:g id="QUERY">%1$s</xliff:g>”"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index bfecf59..c8d9109 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Чтобы выбрать виджет, нажмите на него дважды и не отпускайте или выполните предложенные действия."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d, высота %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Нажмите и удерживайте, чтобы добавить на главный экран"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Добавить на главный экран автоматически"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Поиск приложений"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Загрузка…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"По запросу \"<xliff:g id="QUERY">%1$s</xliff:g>\" ничего не найдено"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index a5d34ca..ba11ad5 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"විජට් එකක් අහුලා ගැනීමට හෝ අභිරුචි ක්රියා කිරීමට ඩබල් ටැප් කර අල්ලා ගෙන සිටින්න."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"පළල %1$d උස %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"මුල් පිටු තිරයෙහි තැබීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න"</string>
- <string name="place_automatically" msgid="1502491650329146581">"ස්වයංක්රියව තබන්න"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"යෙදුම් සෙවීම"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"යෙදුම් පූරණය වෙමින්…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" සමග ගැළපෙන යෙදුම් හමු නොවිණි"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 239bf29..0789a41 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Miniaplikáciu pridáte dvojitým klepnutím a pridržaním alebo pomocou vlastných akcií."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"šírka %1$d, výška %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Klepnutím a podržaním umiestníte na plochu"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Umiestniť automaticky"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Hľadať aplikácie"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Načítavajú sa aplikácie..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nenašli sa žiadne aplikácie zodpovedajúce dopytu <xliff:g id="QUERY">%1$s</xliff:g>"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b245c54..405047c 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Če želite izbrati pripomoček ali uporabiti dejanja po meri, se ga dvakrat dotaknite in ga pridržite."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, višina %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Dotaknite se elementa in ga pridržite, da ga postavite na začetni zaslon"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Postavi samodejno"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Iskanje po aplikacijah"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Nalaganje aplikacij …"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Ni aplikacij, ki bi ustrezale poizvedbi »<xliff:g id="QUERY">%1$s</xliff:g>«"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 4adac7f..de459e9 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Prek dy herë dhe mbaj shtypur për të zgjedhur një miniaplikacion ose për të përdorur veprimet e personalizuara."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i gjerë me %2$d i lartë"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Prek dhe mbaj të shtypur për të vendosur në ekranin bazë"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Vendos automatikisht"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Kërko për aplikacione"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Po ngarkon aplikacionet..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Nuk u gjet asnjë aplikacion që përputhet me \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index f6a28da..8b3f9c1 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Двапут додирните и задржите да бисте изабрали виџет или користите прилагођене радње."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ширина од %1$d и висина од %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Додирните и задржите да бисте поставили на почетни екран"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Постави аутоматски"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Претражите апликације"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Апликације се учитавају..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Није пронађена ниједна апликација за „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index c740167..c2368eb 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Tryck två gånger och håll kvar om du vill ta upp en widget eller använda anpassade åtgärder."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bred gånger %2$d hög"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Placera på startskärmen genom att trycka länge"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Placera automatiskt"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Sök efter appar"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Läser in appar …"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Det gick inte att hitta några appar som matchar <xliff:g id="QUERY">%1$s</xliff:g>"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0c677ec..2494f23 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Gonga mara mbili na ushikilie ile uchague wijeti au utumie vitendo maalum."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Upana wa %1$d na kimo cha %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Gusa na ushikilie ili uweke kwenye skrini ya kwanza"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Weka kiotomatiki"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Tafuta Programu"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Inapakia Programu..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Haikupata programu zinazolingana na \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 15e0c20..d21f02d 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"விட்ஜெட்டைத் தேர்ந்தெடுக்க இருமுறை தட்டிப் பிடிக்கவும் அல்லது தனிப்பயன் செயல்களைப் பயன்படுத்தவும்."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d அகலத்திற்கு %2$d உயரம்"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"முகப்புத் திரையில் சேர்க்க, அதைத் தொட்டுப் பிடித்திருக்கவும்"</string>
- <string name="place_automatically" msgid="1502491650329146581">"தானாகவே சேர்"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"பயன்பாடுகளில் தேடுக"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"பயன்பாடுகளை ஏற்றுகிறது..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" உடன் பொருந்தும் பயன்பாடுகள் இல்லை"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 9c1c3e1..54ace89 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"విడ్జెట్ను ఎంచుకోవడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కి, ఉంచండి."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d వెడల్పు X %2$d ఎత్తు"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"హోమ్ స్క్రీన్లో ఉంచడానికి నొక్కి & పట్టుకోండి"</string>
- <string name="place_automatically" msgid="1502491650329146581">"స్వయంచాలకంగా ఉంచండి"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"అనువర్తనాలను శోధించండి"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"అనువర్తనాలను లోడ్ చేస్తోంది…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"కి సరిపోలే అనువర్తనాలేవీ కనుగొనబడలేదు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 39c60aa..6276361 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"แตะ 2 ครั้งค้างไว้เพื่อเลือกวิดเจ็ตหรือใช้การกระทำที่กำหนดเอง"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"กว้าง %1$d x สูง %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"แตะค้างไว้เพื่อวางบนหน้าจอหลัก"</string>
- <string name="place_automatically" msgid="1502491650329146581">"วางโดยอัตโนมัติ"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ค้นหาแอป"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"กำลังโหลดแอป…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"ไม่พบแอปที่ตรงกับ \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 1838865..0b3cf50 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"I-double tap nang matagal upang pumili ng widget o gumamit ng mga custom na pagkilos."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ang lapad at %2$d ang taas"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Pindutin nang matagal upang ilagay sa home screen"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Awtomatikong ilagay"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Mga App sa Paghahanap"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Nilo-load ang Mga App…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Walang nakitang Mga App na tumutugma sa \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 6136082..66f9be9 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Bir widget\'ı seçmek veya özel işlemleri kullanmak için iki kez hafifçe dokunun ve basılı tutun."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"genişlik: %1$d, yükseklik: %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Ana ekrana yerleştirmek için dokunun ve basılı tutun"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Otomatik olarak yerleştir"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Uygulamalarda Ara"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Uygulamalar Yükleniyor…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ile eşleşen uygulama bulunamadı"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index bc36a50..381fdb4 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Двічі натисніть і утримуйте, щоб вибрати віджет, або виконайте іншу дію."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина – %1$d, висота – %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Натисніть і утримуйте, щоб додати на головний екран"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Додати автоматично"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Пошук додатків"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Завантаження додатків…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Немає додатків для запиту \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 0bd45c8..b61747b 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"کوئی ویجٹ منتخب کرنے یا حسب ضرورت کاروائیاں استعمال کرنے کیلئے دو بار تھپتھپائیں اور پکڑے رکھیں۔"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d چوڑا اور %2$d اونچا"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"ہوم اسکرین پر رکھنے کیلئے ٹچ کریں اور دبائے رکھیں"</string>
- <string name="place_automatically" msgid="1502491650329146581">"خودکار طور پر رکھیں"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"ایپس تلاش کریں"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"ایپس لوڈ ہو رہی ہیں…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" سے مماثل کوئی ایپس نہیں ملیں"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index fd5d013..afe26ff 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Ikki marta bosib va bosib turgan holatda vidjetni tanlang yoki maxsus amaldan foydalaning."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Eni %1$d, bo‘yi %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Bosh ekranga chiqarish uchun bosib turing"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Avtomatik joylashtirish"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Ilovalar ichidan qidirish"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Ilovalar yuklanmoqda…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"“<xliff:g id="QUERY">%1$s</xliff:g>” so‘rovi bo‘yicha hech narsa topilmadi"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 9b9d04c..0df7a4b 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Nhấn đúp và giữ để chọn tiện ích hoặc sử dụng tác vụ tùy chỉnh."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Rộng %1$d x cao %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Chạm và giữ để đặt lên màn hình chính"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Tự động đặt"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Tìm kiếm ứng dụng"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Đang tải ứng dụng..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Không tìm thấy ứng dụng nào phù hợp với \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 545bf4a..e4f58fe 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"点按两次并按住小部件即可选择小部件,您也可以使用自定义操作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"宽 %1$d,高 %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"触摸并按住即可放在主屏幕上"</string>
- <string name="place_automatically" msgid="1502491650329146581">"自动放置"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"搜索应用"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"正在加载应用…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"未找到与“<xliff:g id="QUERY">%1$s</xliff:g>”相符的应用"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 7afb3ae..44c7f18 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"連扲兩下,然後扲住,就可以新增小工具,或者執行自訂操作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d 闊,%2$d 高"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"輕觸並按住即可放在主畫面上"</string>
- <string name="place_automatically" msgid="1502491650329146581">"自動放置"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"搜尋應用程式"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"正在載入應用程式…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"無法找到與「<xliff:g id="QUERY">%1$s</xliff:g>」相符的應用程式"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 4425c66..94c919f 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"輕觸兩下並按住小工具即可選取,您也可以使用自訂動作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"寬度為 %1$d,高度為 %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"按住即可放在主螢幕上"</string>
- <string name="place_automatically" msgid="1502491650329146581">"自動放置"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"搜尋應用程式"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"正在載入應用程式…"</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"找不到符合「<xliff:g id="QUERY">%1$s</xliff:g>」的應用程式"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 0be9ebc..e6facfd 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -33,8 +33,10 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"Thepha kabili bese uyabamba ukuze uthathe iwijethi noma sebenzisa izenzo ezingokwezifiso."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ububanzi ngokungu-%2$d ukuya phezulu"</string>
- <string name="add_item_request_drag_hint" msgid="8662194377800507270">"Thinta uphinde ubambe ukuze ubeke kusikrini sasekhaya"</string>
- <string name="place_automatically" msgid="1502491650329146581">"Beka ngokuzenzakalela"</string>
+ <!-- no translation found for add_item_request_drag_hint (5899764264480397019) -->
+ <skip />
+ <!-- no translation found for place_automatically (8064208734425456485) -->
+ <skip />
<string name="all_apps_search_bar_hint" msgid="7084713969757597256">"Sesha Izinhlelo Zokusebenza"</string>
<string name="all_apps_loading_message" msgid="7557140873644765180">"Ilayisha izinhlelo zokusebenza..."</string>
<string name="all_apps_no_search_results" msgid="6332185285860416787">"Azikho izinhlelo zokusebenza ezitholakele ezifana ne-\"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 83a44d7..028c982 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -35,10 +35,14 @@
<color name="spring_loaded_panel_color">#40FFFFFF</color>
<color name="spring_loaded_highlighted_panel_border_color">#FFF</color>
+ <!-- Notifications -->
<color name="notification_icon_default_color">#757575</color> <!-- Gray 600 -->
<color name="notification_header_background_color">#F5F5F5</color> <!-- Gray 100 -->
<color name="notification_background_color">#FFF</color>
<color name="notification_color_beneath">#E0E0E0</color> <!-- Gray 300 -->
<color name="divider_color">@color/notification_color_beneath</color>
<color name="icon_background">#E0E0E0</color> <!-- Gray 300 -->
+
+ <!-- System shortcuts -->
+ <color name="system_shortcuts_icon_color">@android:color/tertiary_text_light</color>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 132ae07..7b1d247 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -172,6 +172,8 @@
<dimen name="deep_shortcuts_arrow_horizontal_offset">19dp</dimen>
<!-- popup_item_width - icon_size - padding_start - drawable_padding -->
<dimen name="deep_shortcuts_divider_width">158dp</dimen>
+ <dimen name="system_shortcut_icon_size">28dp</dimen>
+ <dimen name="system_shortcut_padding_start">10dp</dimen>
<!-- Icon badges (with notification counts) -->
<dimen name="badge_size">24dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 423a772..99ff581 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -53,9 +53,9 @@
<!-- Accessibility spoken message format for the dimensions of a widget in the drawer -->
<string name="widget_accessible_dims_format">%1$d wide by %2$d high</string>
<!-- Message to tell the user to press and hold a widget/icon to add it -->
- <string name="add_item_request_drag_hint">Touch & hold to place on home screen</string>
+ <string name="add_item_request_drag_hint">Touch & hold to place manually</string>
<!-- Button label to automatically add icon on home screen [CHAR_LIMIT=50] -->
- <string name="place_automatically">Place automatically</string>
+ <string name="place_automatically">Add automatically</string>
<!-- All Apps -->
<!-- Search bar text in the apps view. [CHAR_LIMIT=50] -->
@@ -203,6 +203,10 @@
<!-- Title for an app whose download has been started. -->
<string name="app_waiting_download_title"><xliff:g id="name" example="Messenger">%1$s</xliff:g> waiting to install</string>
+ <!-- Strings for widgets & more in the popup container/bottom sheet -->
+ <string name="widgets_and_more" translatable="false">Widgets & more</string>
+ <string name="widgets_bottom_sheet_custom_shortcuts_section_title" translatable="false">Custom shortcuts</string>
+
<!-- Strings for accessibility actions -->
<!-- Accessibility action to add an app to workspace. [CHAR_LIMIT=30] -->
<string name="action_add_to_workspace">Add to Home screen</string>
diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java
index bd12686..1f12034 100644
--- a/src/com/android/launcher3/AbstractFloatingView.java
+++ b/src/com/android/launcher3/AbstractFloatingView.java
@@ -16,9 +16,11 @@
package com.android.launcher3;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.support.annotation.IntDef;
import android.util.AttributeSet;
+import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
@@ -32,11 +34,16 @@
*/
public abstract class AbstractFloatingView extends LinearLayout {
- @IntDef(flag = true, value = {TYPE_FOLDER, TYPE_POPUP_CONTAINER_WITH_ARROW})
+ @IntDef(flag = true, value = {
+ TYPE_FOLDER,
+ TYPE_POPUP_CONTAINER_WITH_ARROW,
+ TYPE_WIDGETS_AND_MORE
+ })
@Retention(RetentionPolicy.SOURCE)
public @interface FloatingViewType {}
public static final int TYPE_FOLDER = 1 << 0;
public static final int TYPE_POPUP_CONTAINER_WITH_ARROW = 1 << 1;
+ public static final int TYPE_WIDGETS_AND_MORE = 1 << 2;
protected boolean mIsOpen;
@@ -48,6 +55,15 @@
super(context, attrs, defStyleAttr);
}
+ /**
+ * We need to handle touch events to prevent them from falling through to the workspace below.
+ */
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ return true;
+ }
+
public final void close(boolean animate) {
animate &= !Utilities.isPowerSaverOn(getContext());
handleClose(animate);
@@ -76,6 +92,9 @@
return mIsOpen;
}
+ protected void onWidgetsBound() {
+ }
+
protected abstract boolean isOfType(@FloatingViewType int type);
protected static <T extends AbstractFloatingView> T getOpenView(
@@ -119,7 +138,8 @@
}
public static AbstractFloatingView getTopOpenView(Launcher launcher) {
- return getOpenView(launcher, TYPE_FOLDER | TYPE_POPUP_CONTAINER_WITH_ARROW);
+ return getOpenView(launcher, TYPE_FOLDER | TYPE_POPUP_CONTAINER_WITH_ARROW
+ | TYPE_WIDGETS_AND_MORE);
}
public abstract int getLogContainerType();
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 84a5930..4eeb3c0 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -49,7 +49,6 @@
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Parcelable;
import android.os.Process;
import android.os.StrictMode;
import android.os.SystemClock;
@@ -89,7 +88,6 @@
import com.android.launcher3.compat.AppWidgetManagerCompat;
import com.android.launcher3.compat.LauncherAppsCompat;
import com.android.launcher3.compat.PinItemRequestCompat;
-import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.config.ProviderConfig;
import com.android.launcher3.dragndrop.DragController;
@@ -444,6 +442,11 @@
mSharedPrefs.registerOnSharedPreferenceChangeListener(mRotationPrefChangeHandler);
}
+ if (PinItemDragListener.handleDragRequest(this, getIntent())) {
+ // Temporarily enable the rotation
+ mRotationEnabled = true;
+ }
+
// On large interfaces, or on devices that a user has specifically enabled screen rotation,
// we want the screen to auto-rotate based on the current orientation
setOrientation();
@@ -1452,7 +1455,7 @@
ShortcutInfo info = null;
if (Utilities.isAtLeastO()) {
info = LauncherAppsCompat.createShortcutInfoFromPinItemRequest(
- this, PinItemRequestCompat.getPinItemRequest(data));
+ this, PinItemRequestCompat.getPinItemRequest(data), 0);
}
if (info == null) {
@@ -1769,15 +1772,8 @@
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onHomeIntent();
}
-
- Parcelable dragExtra = intent
- .getParcelableExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER);
- if (dragExtra instanceof PinItemDragListener) {
- PinItemDragListener dragListener = (PinItemDragListener) dragExtra;
- dragListener.setLauncher(this);
- mDragLayer.setOnDragListener(dragListener);
- }
}
+ PinItemDragListener.handleDragRequest(this, intent);
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onNewIntent(intent);
@@ -3920,11 +3916,24 @@
mWidgetsView.setWidgets(allWidgets);
mAllWidgets = null;
}
+
+ AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(this);
+ if (topView != null) {
+ topView.onWidgetsBound();
+ }
+ }
+
+ public List<WidgetItem> getWidgetsForPackageUser(PackageUserKey packageUserKey) {
+ return mWidgetsView.getWidgetsForPackageUser(packageUserKey);
}
@Override
public void notifyWidgetProvidersChanged() {
- if (mWorkspace.getState().shouldUpdateWidget) {
+ notifyWidgetProvidersChanged(false);
+ }
+
+ public void notifyWidgetProvidersChanged(boolean force) {
+ if (force || mWorkspace.getState().shouldUpdateWidget) {
mModel.refreshAndBindWidgetsAndShortcuts(this, mWidgetsView.isEmpty());
}
}
@@ -4099,22 +4108,16 @@
return ((Launcher) ((ContextWrapper) context).getBaseContext());
}
- private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener, Runnable {
+ private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(key)) {
- mRotationEnabled = Utilities.isAllowRotationPrefEnabled(getApplicationContext());
- if (!waitUntilResume(this, true)) {
- run();
- }
+ // Finish this instance of the activity. When the activity is recreated,
+ // it will initialize the rotation preference again.
+ finish();
}
}
-
- @Override
- public void run() {
- setOrientation();
- }
}
}
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java
index 0e91062..49e68d7 100644
--- a/src/com/android/launcher3/WidgetPreviewLoader.java
+++ b/src/com/android/launcher3/WidgetPreviewLoader.java
@@ -91,11 +91,12 @@
* @return a request id which can be used to cancel the request.
*/
public CancellationSignal getPreview(WidgetItem item, int previewWidth,
- int previewHeight, WidgetCell caller) {
+ int previewHeight, WidgetCell caller, boolean animate) {
String size = previewWidth + "x" + previewHeight;
WidgetCacheKey key = new WidgetCacheKey(item.componentName, item.user, size);
- PreviewLoadTask task = new PreviewLoadTask(key, item, previewWidth, previewHeight, caller);
+ PreviewLoadTask task = new PreviewLoadTask(key, item, previewWidth, previewHeight, caller,
+ animate);
task.executeOnExecutor(Utilities.THREAD_POOL_EXECUTOR);
CancellationSignal signal = new CancellationSignal();
@@ -521,17 +522,19 @@
private final int mPreviewHeight;
private final int mPreviewWidth;
private final WidgetCell mCaller;
+ private final boolean mAnimatePreviewIn;
private final BaseActivity mActivity;
@Thunk long[] mVersions;
@Thunk Bitmap mBitmapToRecycle;
PreviewLoadTask(WidgetCacheKey key, WidgetItem info, int previewWidth,
- int previewHeight, WidgetCell caller) {
+ int previewHeight, WidgetCell caller, boolean animate) {
mKey = key;
mInfo = info;
mPreviewHeight = previewHeight;
mPreviewWidth = previewWidth;
mCaller = caller;
+ mAnimatePreviewIn = animate;
mActivity = BaseActivity.fromContext(mCaller.getContext());
if (DEBUG) {
Log.d(TAG, String.format("%s, %s, %d, %d",
@@ -587,7 +590,7 @@
@Override
protected void onPostExecute(final Bitmap preview) {
- mCaller.applyPreview(preview);
+ mCaller.applyPreview(preview, mAnimatePreviewIn);
// Write the generated preview to the DB in the worker thread
if (mVersions != null) {
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java
index 2eb5b02..4580b81 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompat.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java
@@ -27,10 +27,12 @@
import android.support.annotation.Nullable;
import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherModel;
import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.Utilities;
import com.android.launcher3.graphics.LauncherIcons;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
+import com.android.launcher3.util.LooperExecuter;
import java.util.List;
@@ -100,10 +102,32 @@
*/
@Nullable
public static ShortcutInfo createShortcutInfoFromPinItemRequest(
- Context context, PinItemRequestCompat request) {
+ Context context, final PinItemRequestCompat request, final long acceptDelay) {
if (request != null &&
request.getRequestType() == PinItemRequestCompat.REQUEST_TYPE_SHORTCUT &&
- request.isValid() && request.accept()) {
+ request.isValid()) {
+
+ if (acceptDelay <= 0) {
+ if (!request.accept()) {
+ return null;
+ }
+ } else {
+ // Block the worker thread until the accept() is called.
+ new LooperExecuter(LauncherModel.getWorkerLooper()).execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(acceptDelay);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ if (request.isValid()) {
+ request.accept();
+ }
+ }
+ });
+ }
+
ShortcutInfoCompat compat = new ShortcutInfoCompat(request.getShortcutInfo());
ShortcutInfo info = new ShortcutInfo(compat, context);
// Apply the unbadged icon and fetch the actual icon asynchronously.
diff --git a/src/com/android/launcher3/compat/ShortcutConfigActivityInfo.java b/src/com/android/launcher3/compat/ShortcutConfigActivityInfo.java
index ebe95d6..4a55e8c 100644
--- a/src/com/android/launcher3/compat/ShortcutConfigActivityInfo.java
+++ b/src/com/android/launcher3/compat/ShortcutConfigActivityInfo.java
@@ -33,6 +33,7 @@
import android.widget.Toast;
import com.android.launcher3.IconCache;
+import com.android.launcher3.LauncherSettings;
import com.android.launcher3.R;
import com.android.launcher3.ShortcutInfo;
@@ -61,6 +62,10 @@
return mUser;
}
+ public int getItemType() {
+ return LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
+ }
+
public abstract CharSequence getLabel();
public abstract Drawable getFullResIcon(IconCache cache);
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index c2a4820..09592a8 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -16,6 +16,11 @@
package com.android.launcher3.dragndrop;
+import static com.android.launcher3.logging.LoggerUtils.newCommandAction;
+import static com.android.launcher3.logging.LoggerUtils.newContainerTarget;
+import static com.android.launcher3.logging.LoggerUtils.newItemTarget;
+import static com.android.launcher3.logging.LoggerUtils.newLauncherEvent;
+
import android.annotation.TargetApi;
import android.app.ActivityOptions;
import android.appwidget.AppWidgetHost;
@@ -23,6 +28,7 @@
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.Intent;
+import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.PointF;
@@ -31,7 +37,9 @@
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.*;
+import android.view.View.DragShadowBuilder;
+import android.view.View.OnLongClickListener;
+import android.view.View.OnTouchListener;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.InstallShortcutReceiver;
@@ -40,10 +48,14 @@
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
import com.android.launcher3.compat.AppWidgetManagerCompat;
import com.android.launcher3.compat.PinItemRequestCompat;
import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
+import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
+import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
+import com.android.launcher3.widget.PendingAddShortcutInfo;
import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.WidgetHostViewLoader;
import com.android.launcher3.widget.WidgetImageView;
@@ -102,6 +114,12 @@
mWidgetCell.setOnTouchListener(this);
mWidgetCell.setOnLongClickListener(this);
+
+ // savedInstanceState is null when the activity is created the first time (i.e., avoids
+ // duplicate logging during rotation)
+ if (savedInstanceState == null) {
+ logCommand(Action.Command.ENTRY);
+ }
}
@Override
@@ -132,6 +150,16 @@
.setPackage(getPackageName())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER, listener);
+
+ if (!getResources().getBoolean(R.bool.allow_rotation) &&
+ !Utilities.isAllowRotationPrefEnabled(this) &&
+ (getResources().getConfiguration().orientation ==
+ Configuration.ORIENTATION_LANDSCAPE && !isInMultiWindowMode())) {
+ // If we are starting the drag in landscape even though home is locked in portrait,
+ // restart the home activity to temporarily allow rotation.
+ homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ }
+
startActivity(homeIntent,
ActivityOptions.makeCustomAnimation(this, 0, android.R.anim.fade_out).toBundle());
@@ -154,7 +182,10 @@
}
private void setupShortcut() {
- WidgetItem item = new WidgetItem(new PinShortcutRequestActivityInfo(mRequest, this));
+ PinShortcutRequestActivityInfo shortcutInfo =
+ new PinShortcutRequestActivityInfo(mRequest, this);
+ WidgetItem item = new WidgetItem(shortcutInfo);
+ mWidgetCell.getWidgetView().setTag(new PendingAddShortcutInfo(shortcutInfo));
mWidgetCell.applyFromCellItem(item, mApp.getWidgetCache());
mWidgetCell.ensurePreview();
}
@@ -177,6 +208,7 @@
mWidgetOptions = WidgetHostViewLoader.getDefaultOptionsForWidget(this, mPendingWidgetInfo);
WidgetItem item = new WidgetItem(widgetInfo, getPackageManager(), mIdp);
+ mWidgetCell.getWidgetView().setTag(mPendingWidgetInfo);
mWidgetCell.applyFromCellItem(item, mApp.getWidgetCache());
mWidgetCell.ensurePreview();
return true;
@@ -186,6 +218,7 @@
* Called when the cancel button is clicked.
*/
public void onCancelClick(View v) {
+ logCommand(Action.Command.CANCEL);
finish();
}
@@ -196,6 +229,7 @@
if (mRequest.getRequestType() == PinItemRequestCompat.REQUEST_TYPE_SHORTCUT) {
InstallShortcutReceiver.queueShortcut(
new ShortcutInfoCompat(mRequest.getShortcutInfo()), this);
+ logCommand(Action.Command.CONFIRM);
mRequest.accept();
finish();
return;
@@ -223,10 +257,17 @@
InstallShortcutReceiver.queueWidget(mRequest.getAppWidgetProviderInfo(this), widgetId, this);
mWidgetOptions.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
mRequest.accept(mWidgetOptions);
+ logCommand(Action.Command.CONFIRM);
finish();
}
@Override
+ public void onBackPressed() {
+ logCommand(Action.Command.BACK);
+ super.onBackPressed();
+ }
+
+ @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_BIND_APPWIDGET) {
int widgetId = data != null
@@ -256,4 +297,11 @@
mPendingBindWidgetId = savedInstanceState
.getInt(STATE_EXTRA_WIDGET_ID, mPendingBindWidgetId);
}
+
+ private void logCommand(int command) {
+ getUserEventDispatcher().dispatchUserEvent(newLauncherEvent(
+ newCommandAction(command),
+ newItemTarget(mWidgetCell.getWidgetView()),
+ newContainerTarget(ContainerType.PINITEM)), null);
+ }
}
diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java
index 23a2577..b04d5b7 100644
--- a/src/com/android/launcher3/dragndrop/DragLayer.java
+++ b/src/com/android/launcher3/dragndrop/DragLayer.java
@@ -61,6 +61,7 @@
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.TouchController;
+import com.android.launcher3.widget.WidgetsAndMore;
import java.util.ArrayList;
@@ -246,6 +247,12 @@
return true;
}
+ WidgetsAndMore widgetsAndMore = WidgetsAndMore.getOpen(mLauncher);
+ if (widgetsAndMore != null && widgetsAndMore.onControllerInterceptTouchEvent(ev)) {
+ mActiveController = widgetsAndMore;
+ return true;
+ }
+
if (mPinchListener != null && mPinchListener.onControllerInterceptTouchEvent(ev)) {
// Stop listening for scrolling etc. (onTouchEvent() handles the rest of the pinch.)
mActiveController = mPinchListener;
diff --git a/src/com/android/launcher3/dragndrop/PinItemDragListener.java b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
index fd252a2..4b402f4 100644
--- a/src/com/android/launcher3/dragndrop/PinItemDragListener.java
+++ b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
@@ -18,6 +18,7 @@
import android.appwidget.AppWidgetManager;
import android.content.ClipDescription;
+import android.content.Intent;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
@@ -42,6 +43,7 @@
import com.android.launcher3.compat.PinItemRequestCompat;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.userevent.nano.LauncherLogProto;
+import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.widget.PendingAddShortcutInfo;
import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.PendingItemDragHelper;
@@ -240,10 +242,17 @@
@Override
public void fillInLogContainerData(View v, ItemInfo info, LauncherLogProto.Target target,
LauncherLogProto.Target targetParent) {
- // TODO: We should probably log something
+ targetParent.containerType = ContainerType.PINITEM;
}
private void postCleanup() {
+ if (mLauncher != null) {
+ // Remove any drag params from the launcher intent since the drag operation is complete.
+ Intent newIntent = new Intent(mLauncher.getIntent());
+ newIntent.removeExtra(EXTRA_PIN_ITEM_DRAG_LISTENER);
+ mLauncher.setIntent(newIntent);
+ }
+
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
@@ -267,6 +276,21 @@
return null;
}
+ public static boolean handleDragRequest(Launcher launcher, Intent intent) {
+ if (intent == null || !Intent.ACTION_MAIN.equals(intent.getAction())) {
+ return false;
+ }
+ Parcelable dragExtra = intent.getParcelableExtra(EXTRA_PIN_ITEM_DRAG_LISTENER);
+ if (dragExtra instanceof PinItemDragListener) {
+ PinItemDragListener dragListener = (PinItemDragListener) dragExtra;
+ dragListener.setLauncher(launcher);
+
+ launcher.getDragLayer().setOnDragListener(dragListener);
+ return true;
+ }
+ return false;
+ }
+
public static final Parcelable.Creator<PinItemDragListener> CREATOR =
new Parcelable.Creator<PinItemDragListener>() {
public PinItemDragListener createFromParcel(Parcel source) {
diff --git a/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java b/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
index 6a8c19f..bb5ac5b 100644
--- a/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
+++ b/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
@@ -26,7 +26,10 @@
import android.os.Build;
import com.android.launcher3.IconCache;
+import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.R;
import com.android.launcher3.compat.LauncherAppsCompat;
import com.android.launcher3.compat.PinItemRequestCompat;
import com.android.launcher3.compat.ShortcutConfigActivityInfo;
@@ -55,6 +58,11 @@
}
@Override
+ public int getItemType() {
+ return LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT;
+ }
+
+ @Override
public CharSequence getLabel() {
return mInfo.getShortLabel();
}
@@ -67,7 +75,13 @@
@Override
public com.android.launcher3.ShortcutInfo createShortcutInfo() {
- return LauncherAppsCompat.createShortcutInfoFromPinItemRequest(mContext, mRequest);
+ // Total duration for the drop animation to complete.
+ long duration = mContext.getResources().getInteger(R.integer.config_dropAnimMaxDuration) +
+ Launcher.EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT +
+ mContext.getResources().getInteger(R.integer.config_overlayTransitionTime) / 2;
+ // Delay the actual accept() call until the drop animation is complete.
+ return LauncherAppsCompat.createShortcutInfoFromPinItemRequest(
+ mContext, mRequest, duration);
}
@Override
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index 3d2ffb4..93c9ea8 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -388,15 +388,6 @@
return mFolderIcon;
}
- /**
- * We need to handle touch events to prevent them from falling through to the workspace below.
- */
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- return true;
- }
-
public void setDragController(DragController dragController) {
mDragController = dragController;
}
diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
index b2018b9..b92814f 100644
--- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java
+++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
@@ -22,7 +22,6 @@
import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
-import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Resources;
@@ -66,6 +65,7 @@
import com.android.launcher3.graphics.TriangleShape;
import com.android.launcher3.notification.NotificationItemView;
import com.android.launcher3.notification.NotificationKeyData;
+import com.android.launcher3.shortcuts.DeepShortcutManager;
import com.android.launcher3.shortcuts.DeepShortcutView;
import com.android.launcher3.shortcuts.ShortcutsItemView;
import com.android.launcher3.util.PackageUserKey;
@@ -138,19 +138,21 @@
return null;
}
ItemInfo itemInfo = (ItemInfo) icon.getTag();
+ if (!DeepShortcutManager.supportsShortcuts(itemInfo)) {
+ return null;
+ }
+
List<String> shortcutIds = launcher.getPopupDataProvider().getShortcutIdsForItem(itemInfo);
List<NotificationKeyData> notificationKeys = launcher.getPopupDataProvider()
.getNotificationKeysForItem(itemInfo);
- if (shortcutIds.size() > 0 || notificationKeys.size() > 0) {
- final PopupContainerWithArrow container =
- (PopupContainerWithArrow) launcher.getLayoutInflater().inflate(
- R.layout.popup_container, launcher.getDragLayer(), false);
- container.setVisibility(View.INVISIBLE);
- launcher.getDragLayer().addView(container);
- container.populateAndShow(icon, shortcutIds, notificationKeys);
- return container;
- }
- return null;
+
+ final PopupContainerWithArrow container =
+ (PopupContainerWithArrow) launcher.getLayoutInflater().inflate(
+ R.layout.popup_container, launcher.getDragLayer(), false);
+ container.setVisibility(View.INVISIBLE);
+ launcher.getDragLayer().addView(container);
+ container.populateAndShow(icon, shortcutIds, notificationKeys);
+ return container;
}
public void populateAndShow(final BubbleTextView originalIcon, final List<String> shortcutIds,
@@ -187,6 +189,9 @@
List<DeepShortcutView> shortcutViews = mShortcutsItemView == null
? Collections.EMPTY_LIST
: mShortcutsItemView.getDeepShortcutViews(reverseOrder);
+ List<View> systemShortcutViews = mShortcutsItemView == null
+ ? Collections.EMPTY_LIST
+ : mShortcutsItemView.getSystemShortcutViews(reverseOrder);
if (mNotificationItemView != null) {
BadgeInfo badgeInfo = mLauncher.getPopupDataProvider()
.getBadgeInfoForItem(originalItemInfo);
@@ -208,7 +213,8 @@
final Looper workerLooper = LauncherModel.getWorkerLooper();
new Handler(workerLooper).postAtFrontOfQueue(PopupPopulator.createUpdateRunnable(
mLauncher, originalItemInfo, new Handler(Looper.getMainLooper()),
- this, shortcutIds, shortcutViews, notificationKeys, mNotificationItemView));
+ this, shortcutIds, shortcutViews, notificationKeys, mNotificationItemView,
+ systemShortcutViews));
}
private void addDummyViews(BubbleTextView originalIcon,
@@ -216,9 +222,12 @@
final Resources res = getResources();
final int spacing = res.getDimensionPixelSize(R.dimen.popup_items_spacing);
final LayoutInflater inflater = mLauncher.getLayoutInflater();
+
int numItems = itemTypesToPopulate.length;
for (int i = 0; i < numItems; i++) {
PopupPopulator.Item itemTypeToPopulate = itemTypesToPopulate[i];
+ PopupPopulator.Item nextItemTypeToPopulate =
+ i < numItems - 1 ? itemTypesToPopulate[i + 1] : null;
final View item = inflater.inflate(itemTypeToPopulate.layoutId, this, false);
if (itemTypeToPopulate == PopupPopulator.Item.NOTIFICATION) {
@@ -228,23 +237,23 @@
item.findViewById(R.id.footer).getLayoutParams().height = footerHeight;
}
- boolean itemIsFollowedByDifferentType = i < numItems - 1
- && itemTypesToPopulate[i + 1] != itemTypeToPopulate;
+ boolean shouldAddBottomMargin = nextItemTypeToPopulate != null
+ && itemTypeToPopulate.isShortcut ^ nextItemTypeToPopulate.isShortcut;
item.setAccessibilityDelegate(mAccessibilityDelegate);
- if (itemTypeToPopulate == PopupPopulator.Item.SHORTCUT) {
+ if (itemTypeToPopulate.isShortcut) {
if (mShortcutsItemView == null) {
mShortcutsItemView = (ShortcutsItemView) inflater.inflate(
R.layout.shortcuts_item, this, false);
addView(mShortcutsItemView);
}
- mShortcutsItemView.addDeepShortcutView((DeepShortcutView) item);
- if (itemIsFollowedByDifferentType) {
+ mShortcutsItemView.addShortcutView(item, itemTypeToPopulate, mIsAboveIcon);
+ if (shouldAddBottomMargin) {
((LayoutParams) mShortcutsItemView.getLayoutParams()).bottomMargin = spacing;
}
} else {
addView(item);
- if (itemIsFollowedByDifferentType) {
+ if (shouldAddBottomMargin) {
((LayoutParams) item.getLayoutParams()).bottomMargin = spacing;
}
}
@@ -531,15 +540,6 @@
}
/**
- * We need to handle touch events to prevent them from falling through to the workspace below.
- */
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- return true;
- }
-
- /**
* Updates the notification header to reflect the badge info. Since this can be called
* for any badge info (not necessarily the one associated with this app), we first
* check that the ItemInfo matches the one of this popup.
@@ -611,6 +611,16 @@
badgeInfo.getNotificationKeys()));
}
+ @Override
+ protected void onWidgetsBound() {
+ enableWidgets();
+ }
+
+ public boolean enableWidgets() {
+ return mShortcutsItemView != null && mShortcutsItemView.enableWidgets(
+ (ItemInfo) mOriginalIcon.getTag());
+ }
+
private ObjectAnimator createArrowScaleAnim(float scale) {
return LauncherAnimUtils.ofPropertyValuesHolder(
mArrow, new PropertyListBuilder().scale(scale).build());
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index 9c4faed..b101bc5 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -48,6 +48,12 @@
private static final boolean LOGD = false;
private static final String TAG = "PopupDataProvider";
+ /** Note that these are in order of priority. */
+ public static final SystemShortcut[] SYSTEM_SHORTCUTS = new SystemShortcut[] {
+ new SystemShortcut.Widgets(),
+ new SystemShortcut.AppInfo(),
+ };
+
private final Launcher mLauncher;
/** Maps launcher activity components to their list of shortcut ids. */
diff --git a/src/com/android/launcher3/popup/PopupItemView.java b/src/com/android/launcher3/popup/PopupItemView.java
index b839d99..71daae9 100644
--- a/src/com/android/launcher3/popup/PopupItemView.java
+++ b/src/com/android/launcher3/popup/PopupItemView.java
@@ -156,7 +156,8 @@
* Returns the position of the center of the icon relative to the container.
*/
public Point getIconCenter() {
- sTempPoint.y = sTempPoint.x = getMeasuredHeight() / 2;
+ sTempPoint.y = getMeasuredHeight() / 2;
+ sTempPoint.x = getResources().getDimensionPixelSize(R.dimen.bg_popup_item_height) / 2;
if (Utilities.isRtl(getResources())) {
sTempPoint.x = getMeasuredWidth() - sTempPoint.x;
}
diff --git a/src/com/android/launcher3/popup/PopupPopulator.java b/src/com/android/launcher3/popup/PopupPopulator.java
index 9b2141f..a9f219b 100644
--- a/src/com/android/launcher3/popup/PopupPopulator.java
+++ b/src/com/android/launcher3/popup/PopupPopulator.java
@@ -17,12 +17,15 @@
package com.android.launcher3.popup;
import android.content.ComponentName;
+import android.content.res.Resources;
import android.os.Handler;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.view.View;
+import android.widget.ImageView;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.Launcher;
@@ -52,13 +55,17 @@
@VisibleForTesting static final int NUM_DYNAMIC = 2;
public enum Item {
- SHORTCUT(R.layout.deep_shortcut),
- NOTIFICATION(R.layout.notification);
+ SHORTCUT(R.layout.deep_shortcut, true),
+ NOTIFICATION(R.layout.notification, false),
+ SYSTEM_SHORTCUT(R.layout.system_shortcut, true),
+ SYSTEM_SHORTCUT_ICON(R.layout.system_shortcut_icon_only, true);
public final int layoutId;
+ public final boolean isShortcut;
- Item(int layoutId) {
+ Item(int layoutId, boolean isShortcut) {
this.layoutId = layoutId;
+ this.isShortcut = isShortcut;
}
}
@@ -66,7 +73,8 @@
@NonNull List<NotificationKeyData> notificationKeys) {
boolean hasNotifications = notificationKeys.size() > 0;
int numNotificationItems = hasNotifications ? 1 : 0;
- int numItems = Math.min(MAX_ITEMS, shortcutIds.size() + numNotificationItems);
+ int numItems = Math.min(MAX_ITEMS, shortcutIds.size() + numNotificationItems)
+ + PopupDataProvider.SYSTEM_SHORTCUTS.length;
Item[] items = new Item[numItems];
for (int i = 0; i < numItems; i++) {
items[i] = Item.SHORTCUT;
@@ -75,6 +83,11 @@
// The notification layout is always first.
items[0] = Item.NOTIFICATION;
}
+ // The system shortcuts are always last.
+ boolean iconsOnly = !shortcutIds.isEmpty();
+ for (int i = 0; i < PopupDataProvider.SYSTEM_SHORTCUTS.length; i++) {
+ items[numItems - 1 - i] = iconsOnly ? Item.SYSTEM_SHORTCUT_ICON : Item.SYSTEM_SHORTCUT;
+ }
return items;
}
@@ -159,11 +172,11 @@
return filteredShortcuts;
}
- public static Runnable createUpdateRunnable(final Launcher launcher, ItemInfo originalInfo,
+ public static Runnable createUpdateRunnable(final Launcher launcher, final ItemInfo originalInfo,
final Handler uiHandler, final PopupContainerWithArrow container,
final List<String> shortcutIds, final List<DeepShortcutView> shortcutViews,
final List<NotificationKeyData> notificationKeys,
- final NotificationItemView notificationView) {
+ final NotificationItemView notificationView, final List<View> systemShortcutViews) {
final ComponentName activity = originalInfo.getTargetComponent();
final UserHandle user = originalInfo.user;
return new Runnable() {
@@ -195,11 +208,20 @@
uiHandler.post(new UpdateShortcutChild(container, shortcutViews.get(i),
si, shortcut));
}
+
+ // This ensures that mLauncher.getWidgetsForPackageUser()
+ // doesn't return null (it puts all the widgets in memory).
+ launcher.notifyWidgetProvidersChanged(true /* force */);
+ for (int i = 0; i < PopupDataProvider.SYSTEM_SHORTCUTS.length; i++) {
+ final SystemShortcut systemShortcut = PopupDataProvider.SYSTEM_SHORTCUTS[i];
+ uiHandler.post(new UpdateSystemShortcutChild(container,
+ systemShortcutViews.get(i), systemShortcut, launcher, originalInfo));
+ }
}
};
}
- /** Updates the child of this container at the given index based on the given shortcut info. */
+ /** Updates the shortcut child of this container based on the given shortcut info. */
private static class UpdateShortcutChild implements Runnable {
private final PopupContainerWithArrow mContainer;
private final DeepShortcutView mShortcutChild;
@@ -221,7 +243,7 @@
}
}
- /** Updates the child of this container at the given index based on the given shortcut info. */
+ /** Updates the notification child based on the given notification info. */
private static class UpdateNotificationChild implements Runnable {
private NotificationItemView mNotificationView;
private List<NotificationInfo> mNotificationInfos;
@@ -237,4 +259,50 @@
mNotificationView.applyNotificationInfos(mNotificationInfos);
}
}
+
+ /** Updates the system shortcut child based on the given shortcut info. */
+ private static class UpdateSystemShortcutChild implements Runnable {
+ private static final float DISABLED_ALPHA = 0.38f;
+
+ private final PopupContainerWithArrow mContainer;
+ private final View mSystemShortcutChild;
+ private final SystemShortcut mSystemShortcutInfo;
+ private final Launcher mLauncher;
+ private final ItemInfo mItemInfo;
+
+ public UpdateSystemShortcutChild(PopupContainerWithArrow container, View systemShortcutChild,
+ SystemShortcut systemShortcut, Launcher launcher, ItemInfo originalInfo) {
+ mContainer = container;
+ mSystemShortcutChild = systemShortcutChild;
+ mSystemShortcutInfo = systemShortcut;
+ mLauncher = launcher;
+ mItemInfo = originalInfo;
+ }
+
+ @Override
+ public void run() {
+ final Resources res = mSystemShortcutChild.getResources();
+ if (mSystemShortcutChild instanceof DeepShortcutView) {
+ final DeepShortcutView shortcutView = (DeepShortcutView) mSystemShortcutChild;
+ shortcutView.getIconView().setBackground(mSystemShortcutInfo.getIcon(res));
+ shortcutView.getBubbleText().setText(mSystemShortcutInfo.getLabel(res));
+ } else if (mSystemShortcutChild instanceof ImageView) {
+ final ImageView shortcutIcon = (ImageView) mSystemShortcutChild;
+ shortcutIcon.setImageDrawable(mSystemShortcutInfo.getIcon(res));
+ shortcutIcon.setContentDescription(mSystemShortcutInfo.getLabel(res));
+ }
+ if (!(mSystemShortcutInfo instanceof SystemShortcut.Widgets)) {
+ mSystemShortcutChild.setOnClickListener(mSystemShortcutInfo
+ .getOnClickListener(mLauncher, mItemInfo));
+ } else {
+ mSystemShortcutChild.setTag(mSystemShortcutInfo);
+ // Widgets might not be enabled right away.
+ if (mContainer.enableWidgets()) {
+ return;
+ }
+ // Disable Widgets (we might be able to re-enable when widgets are bound).
+ mSystemShortcutChild.setAlpha(DISABLED_ALPHA);
+ }
+ }
+ }
}
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
new file mode 100644
index 0000000..d94db43
--- /dev/null
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -0,0 +1,89 @@
+package com.android.launcher3.popup;
+
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+import com.android.launcher3.InfoDropTarget;
+import com.android.launcher3.ItemInfo;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
+import com.android.launcher3.model.WidgetItem;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.widget.WidgetsAndMore;
+
+import java.util.List;
+
+/**
+ * Represents a system shortcut for a given app. The shortcut should have a static label and
+ * icon, and an onClickListener that depends on the item that the shortcut services.
+ *
+ * Example system shortcuts, defined as inner classes, include Widgets and AppInfo.
+ */
+public abstract class SystemShortcut {
+ private final int mIconResId;
+ private final int mLabelResId;
+
+ public SystemShortcut(int iconResId, int labelResId) {
+ mIconResId = iconResId;
+ mLabelResId = labelResId;
+ }
+
+ public Drawable getIcon(Resources resources) {
+ Drawable icon = resources.getDrawable(mIconResId);
+ icon.setTint(resources.getColor(R.color.system_shortcuts_icon_color));
+ return icon;
+ }
+
+ public String getLabel(Resources resources) {
+ return resources.getString(mLabelResId);
+ }
+
+ public abstract View.OnClickListener getOnClickListener(final Launcher launcher,
+ final ItemInfo itemInfo);
+
+
+ public static class Widgets extends SystemShortcut {
+
+ public Widgets() {
+ super(R.drawable.ic_widget, R.string.widgets_and_more);
+ }
+
+ @Override
+ public View.OnClickListener getOnClickListener(final Launcher launcher,
+ final ItemInfo itemInfo) {
+ final List<WidgetItem> widgets = launcher.getWidgetsForPackageUser(new PackageUserKey(
+ itemInfo.getTargetComponent().getPackageName(), itemInfo.user));
+ if (widgets == null) {
+ return null;
+ }
+ return new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ PopupContainerWithArrow.getOpen(launcher).close(true);
+ WidgetsAndMore widgetsAndMore =
+ (WidgetsAndMore) launcher.getLayoutInflater().inflate(
+ R.layout.widgets_and_more, launcher.getDragLayer(), false);
+ widgetsAndMore.populateAndShow(itemInfo);
+ }
+ };
+ }
+ }
+
+ public static class AppInfo extends SystemShortcut {
+ public AppInfo() {
+ super(R.drawable.ic_info_launcher, R.string.app_info_drop_target_label);
+ }
+
+ @Override
+ public View.OnClickListener getOnClickListener(final Launcher launcher,
+ final ItemInfo itemInfo) {
+ return new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ InfoDropTarget.startDetailsActivityForInfo(itemInfo, launcher, null);
+ }
+ };
+ }
+ }
+}
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutView.java b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
index 47a023e..75a4886 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutView.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
@@ -24,6 +24,7 @@
import android.view.View;
import android.widget.FrameLayout;
+import com.android.launcher3.BubbleTextView;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.ShortcutInfo;
@@ -39,7 +40,7 @@
private final Rect mPillRect;
- private DeepShortcutTextView mBubbleText;
+ private BubbleTextView mBubbleText;
private View mIconView;
private ShortcutInfo mInfo;
@@ -62,11 +63,11 @@
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- mBubbleText = (DeepShortcutTextView) findViewById(R.id.deep_shortcut);
+ mBubbleText = findViewById(R.id.bubble_text);
mIconView = findViewById(R.id.icon);
}
- public DeepShortcutTextView getBubbleText() {
+ public BubbleTextView getBubbleText() {
return mBubbleText;
}
diff --git a/src/com/android/launcher3/shortcuts/ShortcutsItemView.java b/src/com/android/launcher3/shortcuts/ShortcutsItemView.java
index 349c4c9..2255007 100644
--- a/src/com/android/launcher3/shortcuts/ShortcutsItemView.java
+++ b/src/com/android/launcher3/shortcuts/ShortcutsItemView.java
@@ -36,21 +36,28 @@
import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider;
import com.android.launcher3.popup.PopupContainerWithArrow;
import com.android.launcher3.popup.PopupItemView;
+import com.android.launcher3.popup.PopupPopulator;
+import com.android.launcher3.popup.SystemShortcut;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
- * A {@link PopupItemView} that contains all of the {@link DeepShortcutView}s for an app.
+ * A {@link PopupItemView} that contains all of the {@link DeepShortcutView}s for an app,
+ * as well as the system shortcuts such as Widgets and App Info.
*/
public class ShortcutsItemView extends PopupItemView implements View.OnLongClickListener,
View.OnTouchListener, LogContainerProvider {
private Launcher mLauncher;
- private LinearLayout mDeepShortcutsLayout;
+ private LinearLayout mShortcutsLayout;
+ private LinearLayout mSystemShortcutIcons;
private final Point mIconShift = new Point();
private final Point mIconLastTouchPos = new Point();
+ private final List<DeepShortcutView> mDeepShortcutViews = new ArrayList<>();
+ private final List<View> mSystemShortcutViews = new ArrayList<>();
public ShortcutsItemView(Context context) {
this(context, null, 0);
@@ -69,7 +76,7 @@
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- mDeepShortcutsLayout = (LinearLayout) findViewById(R.id.deep_shortcuts);
+ mShortcutsLayout = findViewById(R.id.deep_shortcuts);
}
@Override
@@ -111,42 +118,81 @@
return false;
}
- public void addDeepShortcutView(DeepShortcutView deepShortcutView) {
- if (getNumDeepShortcuts() > 0) {
- getDeepShortcutAt(getNumDeepShortcuts() - 1).findViewById(R.id.divider)
- .setVisibility(VISIBLE);
+ public void addShortcutView(View shortcutView, PopupPopulator.Item shortcutType,
+ boolean isAboveIcon) {
+ if (shortcutType == PopupPopulator.Item.SHORTCUT) {
+ mDeepShortcutViews.add((DeepShortcutView) shortcutView);
+ } else {
+ mSystemShortcutViews.add(shortcutView);
}
- mDeepShortcutsLayout.addView(deepShortcutView);
- }
-
- private DeepShortcutView getDeepShortcutAt(int index) {
- return (DeepShortcutView) mDeepShortcutsLayout.getChildAt(index);
- }
-
- private int getNumDeepShortcuts() {
- return mDeepShortcutsLayout.getChildCount();
+ if (shortcutType == PopupPopulator.Item.SYSTEM_SHORTCUT_ICON) {
+ // System shortcut icons are added to a header that is separate from the full shortcuts.
+ if (mSystemShortcutIcons == null) {
+ mSystemShortcutIcons = (LinearLayout) mLauncher.getLayoutInflater().inflate(
+ R.layout.system_shortcut_icons, mShortcutsLayout, false);
+ if (isAboveIcon) {
+ mShortcutsLayout.addView(mSystemShortcutIcons, 0);
+ } else {
+ mShortcutsLayout.addView(mSystemShortcutIcons);
+ }
+ }
+ mSystemShortcutIcons.addView(shortcutView);
+ } else {
+ if (mShortcutsLayout.getChildCount() > 0) {
+ View prevChild = mShortcutsLayout.getChildAt(mShortcutsLayout.getChildCount() - 1);
+ if (prevChild instanceof DeepShortcutView) {
+ prevChild.findViewById(R.id.divider).setVisibility(VISIBLE);
+ }
+ }
+ mShortcutsLayout.addView(shortcutView);
+ }
}
public List<DeepShortcutView> getDeepShortcutViews(boolean reverseOrder) {
- int numDeepShortcuts = getNumDeepShortcuts();
- List<DeepShortcutView> deepShortcutViews = new ArrayList<>(numDeepShortcuts);
- for (int i = 0; i < numDeepShortcuts; i++) {
- DeepShortcutView deepShortcut = getDeepShortcutAt(i);
- if (reverseOrder) {
- deepShortcutViews.add(0, deepShortcut);
- } else {
- deepShortcutViews.add(deepShortcut);
+ if (reverseOrder) {
+ Collections.reverse(mDeepShortcutViews);
+ }
+ return mDeepShortcutViews;
+ }
+
+ public List<View> getSystemShortcutViews(boolean reverseOrder) {
+ if (reverseOrder) {
+ Collections.reverse(mSystemShortcutViews);
+ }
+ return mSystemShortcutViews;
+ }
+
+ /**
+ * Sets the onClickListener on widgets system shortcut child, and updates alpha to 1.
+ * @return whether widgets is enabled, i.e. the onClickListener is not null.
+ */
+ public boolean enableWidgets(ItemInfo itemInfo) {
+ for (View systemShortcut : mSystemShortcutViews) {
+ if (systemShortcut.getTag() instanceof SystemShortcut.Widgets) {
+ View.OnClickListener onClickListener =
+ ((SystemShortcut.Widgets) systemShortcut.getTag()).getOnClickListener(
+ mLauncher, itemInfo);
+ if (onClickListener != null) {
+ systemShortcut.setAlpha(1f);
+ systemShortcut.setOnClickListener(onClickListener);
+ return true;
+ }
+ return false;
}
}
- return deepShortcutViews;
+ return false;
}
@Override
public Animator createOpenAnimation(boolean isContainerAboveIcon, boolean pivotLeft) {
AnimatorSet openAnimation = LauncherAnimUtils.createAnimatorSet();
openAnimation.play(super.createOpenAnimation(isContainerAboveIcon, pivotLeft));
- for (int i = 0; i < getNumDeepShortcuts(); i++) {
- View deepShortcutIcon = getDeepShortcutAt(i).getIconView();
+ for (int i = 0; i < mShortcutsLayout.getChildCount(); i++) {
+ if (!(mShortcutsLayout.getChildAt(i) instanceof DeepShortcutView)) {
+ continue;
+ }
+ DeepShortcutView shortcutView = ((DeepShortcutView) mShortcutsLayout.getChildAt(i));
+ View deepShortcutIcon = shortcutView.getIconView();
deepShortcutIcon.setScaleX(0);
deepShortcutIcon.setScaleY(0);
openAnimation.play(LauncherAnimUtils.ofPropertyValuesHolder(
@@ -160,8 +206,12 @@
long duration) {
AnimatorSet closeAnimation = LauncherAnimUtils.createAnimatorSet();
closeAnimation.play(super.createCloseAnimation(isContainerAboveIcon, pivotLeft, duration));
- for (int i = 0; i < getNumDeepShortcuts(); i++) {
- View deepShortcutIcon = getDeepShortcutAt(i).getIconView();
+ for (int i = 0; i < mShortcutsLayout.getChildCount(); i++) {
+ if (!(mShortcutsLayout.getChildAt(i) instanceof DeepShortcutView)) {
+ continue;
+ }
+ DeepShortcutView shortcutView = ((DeepShortcutView) mShortcutsLayout.getChildAt(i));
+ View deepShortcutIcon = shortcutView.getIconView();
deepShortcutIcon.setScaleX(1);
deepShortcutIcon.setScaleY(1);
closeAnimation.play(LauncherAnimUtils.ofPropertyValuesHolder(
diff --git a/src/com/android/launcher3/util/PackageUserKey.java b/src/com/android/launcher3/util/PackageUserKey.java
index 3fb2401..1ce2822 100644
--- a/src/com/android/launcher3/util/PackageUserKey.java
+++ b/src/com/android/launcher3/util/PackageUserKey.java
@@ -11,8 +11,8 @@
/** Creates a hash key based on package name and user. */
public class PackageUserKey {
- private String mPackageName;
- private UserHandle mUser;
+ public String mPackageName;
+ public UserHandle mUser;
private int mHashCode;
public static PackageUserKey fromItemInfo(ItemInfo info) {
diff --git a/src/com/android/launcher3/widget/PendingAddShortcutInfo.java b/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
index 7eeb8bf..e8f13a1 100644
--- a/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
+++ b/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
@@ -32,6 +32,6 @@
this.activityInfo = activityInfo;
componentName = activityInfo.getComponent();
user = activityInfo.getUser();
- itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
+ itemType = activityInfo.getItemType();
}
}
diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java
index 3bf622e..40dbd52 100644
--- a/src/com/android/launcher3/widget/WidgetCell.java
+++ b/src/com/android/launcher3/widget/WidgetCell.java
@@ -73,6 +73,7 @@
private StylusEventHelper mStylusEventHelper;
protected CancellationSignal mActiveRequest;
+ private boolean mAnimatePreview = true;
protected final BaseActivity mActivity;
@@ -149,22 +150,38 @@
return mWidgetImage;
}
+ public void setAnimatePreview(boolean shouldAnimate) {
+ mAnimatePreview = shouldAnimate;
+ }
+
public void applyPreview(Bitmap bitmap) {
+ applyPreview(bitmap, true);
+ }
+
+ public void applyPreview(Bitmap bitmap, boolean animate) {
if (bitmap != null) {
mWidgetImage.setBitmap(bitmap,
DrawableFactory.get(getContext()).getBadgeForUser(mItem.user, getContext()));
- mWidgetImage.setAlpha(0f);
- ViewPropertyAnimator anim = mWidgetImage.animate();
- anim.alpha(1.0f).setDuration(FADE_IN_DURATION_MS);
+ if (mAnimatePreview) {
+ mWidgetImage.setAlpha(0f);
+ ViewPropertyAnimator anim = mWidgetImage.animate();
+ anim.alpha(1.0f).setDuration(FADE_IN_DURATION_MS);
+ } else {
+ mWidgetImage.setAlpha(1f);
+ }
}
}
public void ensurePreview() {
+ ensurePreview(true);
+ }
+
+ public void ensurePreview(boolean animate) {
if (mActiveRequest != null) {
return;
}
mActiveRequest = mWidgetPreviewLoader.getPreview(
- mItem, mPresetPreviewSize, mPresetPreviewSize, this);
+ mItem, mPresetPreviewSize, mPresetPreviewSize, this, animate);
}
@Override
diff --git a/src/com/android/launcher3/widget/WidgetsAndMore.java b/src/com/android/launcher3/widget/WidgetsAndMore.java
new file mode 100644
index 0000000..1aea534
--- /dev/null
+++ b/src/com/android/launcher3/widget/WidgetsAndMore.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2017 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.launcher3.widget;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.graphics.Rect;
+import android.support.v4.view.animation.FastOutSlowInInterpolator;
+import android.util.AttributeSet;
+import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Interpolator;
+import android.widget.TextView;
+
+import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.DropTarget;
+import com.android.launcher3.Insettable;
+import com.android.launcher3.ItemInfo;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherAnimUtils;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.allapps.VerticalPullDetector;
+import com.android.launcher3.anim.PropertyListBuilder;
+import com.android.launcher3.dragndrop.DragController;
+import com.android.launcher3.dragndrop.DragOptions;
+import com.android.launcher3.model.WidgetItem;
+import com.android.launcher3.userevent.nano.LauncherLogProto;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.util.TouchController;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import static android.R.attr.bottom;
+
+/**
+ * Bottom sheet for the "Widgets & more" long-press option.
+ */
+public class WidgetsAndMore extends AbstractFloatingView implements Insettable, TouchController,
+ VerticalPullDetector.Listener, View.OnClickListener, View.OnLongClickListener,
+ DragController.DragListener {
+
+ private int mTranslationYOpen;
+ private int mTranslationYClosed;
+ private float mTranslationYRange;
+
+ private Launcher mLauncher;
+ private ItemInfo mOriginalItemInfo;
+ private ObjectAnimator mOpenCloseAnimator;
+ private Interpolator mFastOutSlowInInterpolator;
+ private VerticalPullDetector.ScrollInterpolator mScrollInterpolator;
+ private Rect mInsets;
+ private boolean mWasNavBarLight;
+ private VerticalPullDetector mVerticalPullDetector;
+
+ public WidgetsAndMore(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public WidgetsAndMore(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(new ContextThemeWrapper(context, R.style.WidgetContainerTheme), attrs, defStyleAttr);
+ setWillNotDraw(false);
+ mLauncher = Launcher.getLauncher(context);
+ mOpenCloseAnimator = LauncherAnimUtils.ofPropertyValuesHolder(this);
+ mFastOutSlowInInterpolator = new FastOutSlowInInterpolator();
+ mScrollInterpolator = new VerticalPullDetector.ScrollInterpolator();
+ mInsets = new Rect();
+ mVerticalPullDetector = new VerticalPullDetector(context);
+ mVerticalPullDetector.setListener(this);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ mTranslationYOpen = 0;
+ mTranslationYClosed = getMeasuredHeight();
+ mTranslationYRange = mTranslationYClosed - mTranslationYOpen;
+ }
+
+ public void populateAndShow(ItemInfo itemInfo) {
+ mOriginalItemInfo = itemInfo;
+ ((TextView) findViewById(R.id.title)).setText(mOriginalItemInfo.title);
+
+ onWidgetsBound();
+
+ mWasNavBarLight = (mLauncher.getWindow().getDecorView().getSystemUiVisibility()
+ & View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR) != 0;
+ mLauncher.getDragLayer().addView(this);
+ measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
+ setTranslationY(mTranslationYClosed);
+ mIsOpen = false;
+ open(true);
+ }
+
+ @Override
+ protected void onWidgetsBound() {
+ List<WidgetItem> widgets = mLauncher.getWidgetsForPackageUser(new PackageUserKey(
+ mOriginalItemInfo.getTargetComponent().getPackageName(), mOriginalItemInfo.user));
+ List<WidgetItem> shortcuts = new ArrayList<>();
+ // Transfer configurable widgets to shortcuts
+ Iterator<WidgetItem> widgetsIter = widgets.iterator();
+ WidgetItem nextWidget;
+ while (widgetsIter.hasNext()) {
+ nextWidget = widgetsIter.next();
+ if (nextWidget.activityInfo != null) {
+ shortcuts.add(nextWidget);
+ widgetsIter.remove();
+ }
+ }
+
+ ViewGroup widgetRow = (ViewGroup) findViewById(R.id.widgets);
+ ViewGroup widgetCells = (ViewGroup) widgetRow.findViewById(R.id.widgets_cell_list);
+
+ ViewGroup shortcutRow = (ViewGroup) findViewById(R.id.shortcuts);
+ ViewGroup shortcutCells = (ViewGroup) shortcutRow.findViewById(R.id.widgets_cell_list);
+
+ widgetCells.removeAllViews();
+ shortcutCells.removeAllViews();
+
+ for (int i = 0; i < widgets.size(); i++) {
+ addItemCell(widgetCells);
+ if (i < widgets.size() - 1) {
+ addDivider(widgetCells);
+ }
+ }
+ for (int i = 0; i < shortcuts.size(); i++) {
+ addItemCell(shortcutCells);
+ if (i < shortcuts.size() - 1) {
+ addDivider(shortcutCells);
+ }
+ }
+
+ // Bind the views in the horizontal tray regions.
+ if (widgetCells.getChildCount() > 0) {
+ for (int i = 0; i < widgets.size(); i++) {
+ WidgetCell widget = (WidgetCell) widgetCells.getChildAt(i*2); // skip dividers
+ widget.applyFromCellItem(widgets.get(i), LauncherAppState.getInstance(mLauncher)
+ .getWidgetCache());
+ widget.ensurePreview();
+ widget.setVisibility(View.VISIBLE);
+ }
+ } else {
+ removeView(findViewById(R.id.widgets_header));
+ }
+ if (shortcutCells.getChildCount() > 0) {
+ for (int i = 0; i < shortcuts.size(); i++) {
+ WidgetCell shortcut = (WidgetCell) shortcutCells.getChildAt(i*2); // skip dividers
+ shortcut.applyFromCellItem(shortcuts.get(i), LauncherAppState.getInstance(mLauncher)
+ .getWidgetCache());
+ shortcut.ensurePreview();
+ shortcut.setVisibility(View.VISIBLE);
+ }
+ } else {
+ removeView(findViewById(R.id.shortcuts_header));
+ }
+ }
+
+ private void addDivider(ViewGroup parent) {
+ LayoutInflater.from(getContext()).inflate(R.layout.widget_list_divider, parent, true);
+ }
+
+ private void addItemCell(ViewGroup parent) {
+ WidgetCell widget = (WidgetCell) LayoutInflater.from(getContext()).inflate(
+ R.layout.widget_cell, parent, false);
+
+ widget.setOnClickListener(this);
+ widget.setOnLongClickListener(this);
+ widget.setAnimatePreview(false);
+
+ parent.addView(widget);
+ }
+
+ @Override
+ public void onClick(View view) {
+ mLauncher.getWidgetsView().handleClick();
+ }
+
+ @Override
+ public boolean onLongClick(View view) {
+ mLauncher.getDragController().addDragListener(this);
+ return mLauncher.getWidgetsView().handleLongClick(view);
+ }
+
+ private void open(boolean animate) {
+ if (mIsOpen || mOpenCloseAnimator.isRunning()) {
+ return;
+ }
+ mIsOpen = true;
+ setLightNavBar(true);
+ if (animate) {
+ mOpenCloseAnimator.setValues(new PropertyListBuilder()
+ .translationY(mTranslationYOpen).build());
+ mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mVerticalPullDetector.finishedScrolling();
+ }
+ });
+ mOpenCloseAnimator.setInterpolator(mFastOutSlowInInterpolator);
+ mOpenCloseAnimator.start();
+ } else {
+ setTranslationY(mTranslationYOpen);
+ }
+ }
+
+ @Override
+ protected void handleClose(boolean animate) {
+ if (!mIsOpen || mOpenCloseAnimator.isRunning()) {
+ return;
+ }
+ if (animate) {
+ mOpenCloseAnimator.setValues(new PropertyListBuilder()
+ .translationY(mTranslationYClosed).build());
+ mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mIsOpen = false;
+ mVerticalPullDetector.finishedScrolling();
+ ((ViewGroup) getParent()).removeView(WidgetsAndMore.this);
+ setLightNavBar(mWasNavBarLight);
+ }
+ });
+ mOpenCloseAnimator.setInterpolator(mVerticalPullDetector.isIdleState()
+ ? mFastOutSlowInInterpolator : mScrollInterpolator);
+ mOpenCloseAnimator.start();
+ } else {
+ setTranslationY(mTranslationYClosed);
+ setLightNavBar(mWasNavBarLight);
+ mIsOpen = false;
+ }
+ }
+
+ private void setLightNavBar(boolean lightNavBar) {
+ mLauncher.activateLightSystemBars(lightNavBar, false /* statusBar */, true /* navBar */);
+ }
+
+ @Override
+ protected boolean isOfType(@FloatingViewType int type) {
+ return (type & TYPE_WIDGETS_AND_MORE) != 0;
+ }
+
+ @Override
+ public int getLogContainerType() {
+ return LauncherLogProto.ContainerType.WIDGETS; // TODO: be more specific
+ }
+
+ /**
+ * Returns a WidgetsAndMore which is already open or null
+ */
+ public static WidgetsAndMore getOpen(Launcher launcher) {
+ return getOpenView(launcher, TYPE_WIDGETS_AND_MORE);
+ }
+
+ @Override
+ public void setInsets(Rect insets) {
+ // Extend behind left, right, and bottom insets.
+ int leftInset = insets.left - mInsets.left;
+ int rightInset = insets.right - mInsets.right;
+ int bottomInset = insets.bottom - mInsets.bottom;
+ mInsets.set(insets);
+ setPadding(getPaddingLeft() + leftInset, getPaddingTop(),
+ getPaddingRight() + rightInset, getPaddingBottom() + bottomInset);
+ }
+
+ /* VerticalPullDetector.Listener */
+
+ @Override
+ public void onDragStart(boolean start) {
+ }
+
+ @Override
+ public boolean onDrag(float displacement, float velocity) {
+ setTranslationY(Utilities.boundToRange(displacement, mTranslationYOpen,
+ mTranslationYClosed));
+ return true;
+ }
+
+ @Override
+ public void onDragEnd(float velocity, boolean fling) {
+ if ((fling && velocity > 0) || getTranslationY() > (mTranslationYRange) / 2) {
+ mScrollInterpolator.setVelocityAtZero(velocity);
+ mOpenCloseAnimator.setDuration(mVerticalPullDetector.calculateDuration(velocity,
+ (mTranslationYClosed - getTranslationY()) / mTranslationYRange));
+ close(true);
+ } else {
+ mIsOpen = false;
+ mOpenCloseAnimator.setDuration(mVerticalPullDetector.calculateDuration(velocity,
+ (getTranslationY() - mTranslationYOpen) / mTranslationYRange));
+ open(true);
+ }
+ }
+
+ @Override
+ public boolean onControllerTouchEvent(MotionEvent ev) {
+ return mVerticalPullDetector.onTouchEvent(ev);
+ }
+
+ @Override
+ public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
+ int directionsToDetectScroll = mVerticalPullDetector.isIdleState() ?
+ VerticalPullDetector.DIRECTION_DOWN : 0;
+ mVerticalPullDetector.setDetectableScrollConditions(
+ directionsToDetectScroll, false);
+ mVerticalPullDetector.onTouchEvent(ev);
+ return mVerticalPullDetector.isDraggingOrSettling();
+ }
+
+ /* DragListener */
+
+ @Override
+ public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
+ // A widget or custom shortcut was dragged.
+ close(true);
+ }
+
+ @Override
+ public void onDragEnd() {
+ }
+}
diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java
index b2321a7..4e296bf 100644
--- a/src/com/android/launcher3/widget/WidgetsContainerView.java
+++ b/src/com/android/launcher3/widget/WidgetsContainerView.java
@@ -29,13 +29,10 @@
import com.android.launcher3.DeleteDropTarget;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget.DragObject;
-import com.android.launcher3.IconCache;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.Launcher;
-import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
-import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.model.PackageItemInfo;
@@ -43,8 +40,11 @@
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.MultiHashMap;
+import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.util.Thunk;
+import java.util.List;
+
/**
* The widgets list view container.
*/
@@ -55,8 +55,6 @@
/* Global instances that are used inside this container. */
@Thunk Launcher mLauncher;
- private DragController mDragController;
- private IconCache mIconCache;
/* Recycler view related member variables */
private WidgetsRecyclerView mRecyclerView;
@@ -76,9 +74,7 @@
public WidgetsContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mLauncher = Launcher.getLauncher(context);
- mDragController = mLauncher.getDragController();
mAdapter = new WidgetsListAdapter(this, this, context);
- mIconCache = LauncherAppState.getInstance(context).getIconCache();
if (LOGD) {
Log.d(TAG, "WidgetsContainerView constructor");
}
@@ -116,6 +112,10 @@
|| mLauncher.getWorkspace().isSwitchingState()
|| !(v instanceof WidgetCell)) return;
+ handleClick();
+ }
+
+ public void handleClick() {
// Let the user know that they have to long press to add a widget
if (mWidgetInstructionToast != null) {
mWidgetInstructionToast.cancel();
@@ -130,14 +130,19 @@
@Override
public boolean onLongClick(View v) {
+ // When we have exited the widget tray, disregard long clicks
+ if (!mLauncher.isWidgetsViewVisible()) return false;
+ return handleLongClick(v);
+ }
+
+ public boolean handleLongClick(View v) {
if (LOGD) {
Log.d(TAG, String.format("onLongClick [v=%s]", v));
}
// Return early if this is not initiated from a touch
if (!v.isInTouchMode()) return false;
- // When we have exited all apps or are in transition, disregard long clicks
- if (!mLauncher.isWidgetsViewVisible() ||
- mLauncher.getWorkspace().isSwitchingState()) return false;
+ // When we are in transition, disregard long clicks
+ if (mLauncher.getWorkspace().isSwitchingState()) return false;
// Return if global dragging is not enabled
if (!mLauncher.isDraggingEnabled()) return false;
@@ -241,6 +246,10 @@
return mAdapter.getItemCount() == 0;
}
+ public List<WidgetItem> getWidgetsForPackageUser(PackageUserKey packageUserKey) {
+ return mAdapter.copyWidgetsForPackageUser(packageUserKey);
+ }
+
@Override
public void fillInLogContainerData(View v, ItemInfo info, Target target, Target targetParent) {
targetParent.containerType = ContainerType.WIDGETS;
diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java
index 38210fc..a1eb0ab 100644
--- a/src/com/android/launcher3/widget/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java
@@ -22,7 +22,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.LinearLayout;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
@@ -32,10 +31,12 @@
import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.util.LabelComparator;
import com.android.launcher3.util.MultiHashMap;
+import com.android.launcher3.util.PackageUserKey;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -99,6 +100,26 @@
return mEntries.get(pos).titleSectionName;
}
+ /**
+ * Copies and returns the widgets associated with the package and user of the ComponentKey.
+ */
+ public List<WidgetItem> copyWidgetsForPackageUser(PackageUserKey packageUserKey) {
+ for (WidgetListRowEntry entry : mEntries) {
+ if (entry.pkgItem.packageName.equals(packageUserKey.mPackageName)) {
+ ArrayList<WidgetItem> widgets = new ArrayList<>(entry.widgets);
+ // Remove widgets not associated with the correct user.
+ Iterator<WidgetItem> iterator = widgets.iterator();
+ while (iterator.hasNext()) {
+ if (!iterator.next().user.equals(packageUserKey.mUser)) {
+ iterator.remove();
+ }
+ }
+ return widgets.isEmpty() ? null : widgets;
+ }
+ }
+ return null;
+ }
+
@Override
public void onBindViewHolder(WidgetsRowViewHolder holder, int pos) {
WidgetListRowEntry entry = mEntries.get(pos);
diff --git a/tests/src/com/android/launcher3/ui/ShortcutsLaunchTest.java b/tests/src/com/android/launcher3/ui/ShortcutsLaunchTest.java
index ee3a628..3a0b613 100644
--- a/tests/src/com/android/launcher3/ui/ShortcutsLaunchTest.java
+++ b/tests/src/com/android/launcher3/ui/ShortcutsLaunchTest.java
@@ -60,7 +60,7 @@
// Verify that launching a shortcut opens a page with the same text
assertTrue(deepShortcutsContainer.getChildCount() > 0);
UiObject2 shortcut = deepShortcutsContainer.getChildren().get(0)
- .findObject(getSelectorForId(R.id.deep_shortcut));
+ .findObject(getSelectorForId(R.id.bubble_text));
shortcut.click();
assertTrue(mDevice.wait(Until.hasObject(By.pkg(
mSettingsApp.getComponentName().getPackageName())
diff --git a/tests/src/com/android/launcher3/ui/ShortcutsToHomeTest.java b/tests/src/com/android/launcher3/ui/ShortcutsToHomeTest.java
index 061e865..5d86d1e 100644
--- a/tests/src/com/android/launcher3/ui/ShortcutsToHomeTest.java
+++ b/tests/src/com/android/launcher3/ui/ShortcutsToHomeTest.java
@@ -61,7 +61,7 @@
// Drag the first shortcut to the home screen.
assertTrue(deepShortcutsContainer.getChildCount() > 0);
UiObject2 shortcut = deepShortcutsContainer.getChildren().get(0)
- .findObject(getSelectorForId(R.id.deep_shortcut));
+ .findObject(getSelectorForId(R.id.bubble_text));
String shortcutName = shortcut.getText();
dragToWorkspace(shortcut, false);