summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/DocumentsUI/res/values-hi/strings.xml8
-rw-r--r--packages/DocumentsUI/res/values-my-rMM/strings.xml2
-rw-r--r--packages/DocumentsUI/res/values-zh-rTW/strings.xml2
-rw-r--r--packages/ExternalStorageProvider/res/values-hi/strings.xml4
-rw-r--r--packages/ExternalStorageProvider/res/values-my-rMM/strings.xml2
-rw-r--r--packages/Keyguard/res/values-bn-rBD/strings.xml46
-rw-r--r--packages/Keyguard/res/values-hi/strings.xml24
-rw-r--r--packages/Keyguard/res/values-sw/strings.xml4
-rw-r--r--packages/Keyguard/res/values-zh-rCN/strings.xml32
-rw-r--r--packages/Keyguard/res/values-zh-rHK/strings.xml14
-rw-r--r--packages/PrintSpooler/res/values-af/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-am/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ar/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-bg/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-bn-rBD/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ca/strings.xml10
-rw-r--r--packages/PrintSpooler/res/values-cs/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-da/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-de/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-el/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-en-rGB/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-en-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-es-rUS/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-es/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-et-rEE/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-eu-rES/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-fa/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-fi/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-fr-rCA/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-fr/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-gl-rES/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-hi/strings.xml10
-rw-r--r--packages/PrintSpooler/res/values-hr/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-hu/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-hy-rAM/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-in/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-is-rIS/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-it/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-iw/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ja/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ka-rGE/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-kk-rKZ/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-km-rKH/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-kn-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ko/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ky-rKG/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-lo-rLA/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-lt/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-lv/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-mk-rMK/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ml-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-mn-rMN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-mr-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ms-rMY/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-my-rMM/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-nb/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ne-rNP/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-nl/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-pl/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-pt-rPT/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-pt/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ro/strings.xml15
-rw-r--r--packages/PrintSpooler/res/values-ru/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-si-rLK/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-sk/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-sl/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-sr/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-sv/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-sw/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ta-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-te-rIN/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-th/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-tl/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-tr/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-uk/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-ur-rPK/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-uz-rUZ/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-vi/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-zh-rCN/strings.xml15
-rw-r--r--packages/PrintSpooler/res/values-zh-rHK/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-zh-rTW/strings.xml8
-rw-r--r--packages/PrintSpooler/res/values-zu/strings.xml8
-rw-r--r--packages/Shell/AndroidManifest.xml1
-rw-r--r--packages/Shell/res/values-cs/strings.xml2
-rw-r--r--packages/Shell/res/values-lt/strings.xml8
-rw-r--r--packages/Shell/res/values-zh-rHK/strings.xml2
-rw-r--r--packages/SystemUI/res/anim/search_launch_enter.xml18
-rw-r--r--packages/SystemUI/res/drawable/search_panel_card_bg.xml21
-rw-r--r--packages/SystemUI/res/layout-sw600dp/navigation_bar.xml17
-rw-r--r--packages/SystemUI/res/layout/navigation_bar.xml14
-rw-r--r--packages/SystemUI/res/layout/status_bar_search_panel.xml11
-rw-r--r--packages/SystemUI/res/values-land/dimens.xml2
-rw-r--r--packages/SystemUI/res/values-land/styles.xml12
-rw-r--r--packages/SystemUI/res/values-sw600dp/styles.xml10
-rw-r--r--packages/SystemUI/res/values/colors.xml3
-rw-r--r--packages/SystemUI/res/values/config.xml20
-rw-r--r--packages/SystemUI/res/values/dimens.xml19
-rw-r--r--packages/SystemUI/res/values/styles.xml11
-rw-r--r--packages/SystemUI/src/com/android/systemui/SearchPanelCircleView.java592
-rw-r--r--packages/SystemUI/src/com/android/systemui/SearchPanelView.java161
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java116
-rw-r--r--packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/Constants.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/BitmapLruCache.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/DrawableLruCache.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/KeyStoreLruCache.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/StringLruCache.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java92
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarViewTaskSwitchHelper.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java151
121 files changed, 1764 insertions, 489 deletions
diff --git a/packages/DocumentsUI/res/values-hi/strings.xml b/packages/DocumentsUI/res/values-hi/strings.xml
index c4dc652..e4967e1 100644
--- a/packages/DocumentsUI/res/values-hi/strings.xml
+++ b/packages/DocumentsUI/res/values-hi/strings.xml
@@ -30,9 +30,9 @@
<string name="menu_share" msgid="3075149983979628146">"साझा करें"</string>
<string name="menu_delete" msgid="8138799623850614177">"हटाएं"</string>
<string name="menu_select" msgid="8711270657353563424">"\"<xliff:g id="DIRECTORY">^1</xliff:g>\" चुनें"</string>
- <string name="menu_advanced_show" product="nosdcard" msgid="4693652895715631401">"आंतरिक संग्रहण दिखाएं"</string>
+ <string name="menu_advanced_show" product="nosdcard" msgid="4693652895715631401">"आंतरिक मेमोरी दिखाएं"</string>
<string name="menu_advanced_show" product="default" msgid="5792182900084144261">"SD कार्ड दिखाएं"</string>
- <string name="menu_advanced_hide" product="nosdcard" msgid="4218809952721972589">"आंतरिक संग्रहण छिपाएं"</string>
+ <string name="menu_advanced_hide" product="nosdcard" msgid="4218809952721972589">"आंतरिक मेमोरी छिपाएं"</string>
<string name="menu_advanced_hide" product="default" msgid="4845869969015718848">"SD कार्ड छिपाएं"</string>
<string name="menu_file_size_show" msgid="3240323619260823076">"फ़ाइल आकार दिखाएं"</string>
<string name="menu_file_size_hide" msgid="8881975928502581042">"फ़ाइल आकार छिपाएं"</string>
@@ -46,8 +46,8 @@
<string name="create_error" msgid="3735649141335444215">"फ़ोल्डर बनाने में विफल"</string>
<string name="query_error" msgid="1222448261663503501">"दस्तावेजों के लिए क्वेरी करने में विफल रहा"</string>
<string name="root_recent" msgid="4470053704320518133">"हाल ही के"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> रिक्त"</string>
- <string name="root_type_service" msgid="2178854894416775409">"संग्रहण सेवाएं"</string>
+ <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> खाली"</string>
+ <string name="root_type_service" msgid="2178854894416775409">"मेमोरी सेवाएं"</string>
<string name="root_type_shortcut" msgid="3318760609471618093">"शॉर्टकट"</string>
<string name="root_type_device" msgid="7121342474653483538">"उपकरण"</string>
<string name="root_type_apps" msgid="8838065367985945189">"अधिक ऐप्स"</string>
diff --git a/packages/DocumentsUI/res/values-my-rMM/strings.xml b/packages/DocumentsUI/res/values-my-rMM/strings.xml
index 98b3a90..50f8363 100644
--- a/packages/DocumentsUI/res/values-my-rMM/strings.xml
+++ b/packages/DocumentsUI/res/values-my-rMM/strings.xml
@@ -26,7 +26,7 @@
<string name="menu_search" msgid="3816712084502856974">"ရှာဖွေရန်"</string>
<string name="menu_settings" msgid="6008033148948428823">"ဆက်တင်များ"</string>
<string name="menu_open" msgid="432922957274920903">"ဖွင့်ရန်"</string>
- <string name="menu_save" msgid="2394743337684426338">"သိမ်းဆည်းရန်"</string>
+ <string name="menu_save" msgid="2394743337684426338">"သိမ်းပါ"</string>
<string name="menu_share" msgid="3075149983979628146">"မျှဝေခြင်း"</string>
<string name="menu_delete" msgid="8138799623850614177">"ဖျက်ပစ်ရန်"</string>
<string name="menu_select" msgid="8711270657353563424">"ရွေးရန်\"<xliff:g id="DIRECTORY">^1</xliff:g>\""</string>
diff --git a/packages/DocumentsUI/res/values-zh-rTW/strings.xml b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
index a37dbe8..464a13e 100644
--- a/packages/DocumentsUI/res/values-zh-rTW/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
@@ -45,7 +45,7 @@
<string name="save_error" msgid="6167009778003223664">"無法儲存文件"</string>
<string name="create_error" msgid="3735649141335444215">"無法建立資料夾"</string>
<string name="query_error" msgid="1222448261663503501">"無法查詢文件"</string>
- <string name="root_recent" msgid="4470053704320518133">"最近存取過"</string>
+ <string name="root_recent" msgid="4470053704320518133">"最近"</string>
<string name="root_available_bytes" msgid="8568452858617033281">"可用空間:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
<string name="root_type_service" msgid="2178854894416775409">"儲存空間服務"</string>
<string name="root_type_shortcut" msgid="3318760609471618093">"捷徑"</string>
diff --git a/packages/ExternalStorageProvider/res/values-hi/strings.xml b/packages/ExternalStorageProvider/res/values-hi/strings.xml
index 1227bd4..8538081 100644
--- a/packages/ExternalStorageProvider/res/values-hi/strings.xml
+++ b/packages/ExternalStorageProvider/res/values-hi/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="7123375275748530234">"बाहरी संग्रहण"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"मोबाइल संग्रहण"</string>
+ <string name="app_label" msgid="7123375275748530234">"बाहरी मेमोरी"</string>
+ <string name="root_internal_storage" msgid="827844243068584127">"मोबाइल मेमोरी"</string>
<string name="root_documents" msgid="4051252304075469250">"दस्तावेज़"</string>
</resources>
diff --git a/packages/ExternalStorageProvider/res/values-my-rMM/strings.xml b/packages/ExternalStorageProvider/res/values-my-rMM/strings.xml
index 643fb92..dc9d684 100644
--- a/packages/ExternalStorageProvider/res/values-my-rMM/strings.xml
+++ b/packages/ExternalStorageProvider/res/values-my-rMM/strings.xml
@@ -17,6 +17,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="7123375275748530234">"ပြင်ပသိုလှောင်ရာပစ္စည်း"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"စက်အတွင်းသိမ်းဆည်းရန်နေရာ"</string>
+ <string name="root_internal_storage" msgid="827844243068584127">"စက်တွင်း သိုလှောင်ထားမှု"</string>
<string name="root_documents" msgid="4051252304075469250">"စာရွက်စာတန်းများ"</string>
</resources>
diff --git a/packages/Keyguard/res/values-bn-rBD/strings.xml b/packages/Keyguard/res/values-bn-rBD/strings.xml
index 0473e48..e315f7a 100644
--- a/packages/Keyguard/res/values-bn-rBD/strings.xml
+++ b/packages/Keyguard/res/values-bn-rBD/strings.xml
@@ -22,9 +22,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="719438068451601849">"কীগার্ড"</string>
<string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN কোড লিখুন"</string>
- <string name="keyguard_password_enter_puk_code" msgid="3035856550289724338">"SIM PUK এবং নতুন PIN কোড লিখুন"</string>
- <string name="keyguard_password_enter_puk_prompt" msgid="1801941051094974609">"SIM PUK কোড"</string>
- <string name="keyguard_password_enter_pin_prompt" msgid="3201151840570492538">"নতুন SIM PIN কোড"</string>
+ <string name="keyguard_password_enter_puk_code" msgid="3035856550289724338">"সিম PUK এবং নতুন PIN কোড লিখুন"</string>
+ <string name="keyguard_password_enter_puk_prompt" msgid="1801941051094974609">"সিম PUK কোড"</string>
+ <string name="keyguard_password_enter_pin_prompt" msgid="3201151840570492538">"নতুন সিম PIN কোড"</string>
<string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"পাসওয়ার্ড লিখতে স্পর্শ করুন"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"আনলক করতে পাসওয়ার্ড লিখুন"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"আনলক করতে PIN লিখুন"</string>
@@ -36,16 +36,16 @@
<string name="keyguard_low_battery" msgid="8143808018719173859">"আপনার চার্জার সংযুক্ত করুন৷"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"আনলক করতে মেনু টিপুন৷"</string>
<string name="keyguard_network_locked_message" msgid="9169717779058037168">"নেটওয়ার্ক লক হয়েছে"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"কোনো SIM কার্ড নেই"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"ট্যাবলেটের মধ্যে কোনো SIM কার্ড নেই৷"</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"ফোনের মধ্যে কোনো SIM কার্ড নেই৷"</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"একটি SIM কার্ড ঢোকান৷"</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM কার্ডটি অনুপস্থিত বা পাঠযোগ্য নয়৷ একটি SIM কার্ড ঢোকান৷"</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"অব্যবহারযোগ্য SIM কার্ড৷"</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"আপনার SIM কার্ড স্থায়ীভাবে অক্ষম করা হয়েছে৷\n অন্য একটি SIM কার্ড পেতে আপনার ওয়্যারলেস পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন৷"</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM কার্ড লক করা আছে৷"</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM কার্ডটি PUK কোড দিয়ে লক করা আছে৷"</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"SIM কার্ড আনলক করা হচ্ছে…"</string>
+ <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"কোনো সিম কার্ড নেই"</string>
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"ট্যাবলেটের মধ্যে কোনো সিম কার্ড নেই৷"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"ফোনের মধ্যে কোনো সিম কার্ড নেই৷"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"একটি সিম কার্ড ঢোকান৷"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"সিম কার্ডটি অনুপস্থিত বা পাঠযোগ্য নয়৷ একটি সিম কার্ড ঢোকান৷"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"অব্যবহারযোগ্য সিম কার্ড৷"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"আপনার সিম কার্ড স্থায়ীভাবে অক্ষম করা হয়েছে৷\n অন্য একটি সিম কার্ড পেতে আপনার ওয়্যারলেস পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন৷"</string>
+ <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"সিম কার্ড লক করা আছে৷"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"সিম কার্ডটি PUK কোড দিয়ে লক করা আছে৷"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"সিম কার্ড আনলক করা হচ্ছে…"</string>
<string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s৷ %3$d এর %2$d উইজেট৷"</string>
<string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"উইজেট যোগ করুন"</string>
<string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"খালি"</string>
@@ -106,13 +106,13 @@
<string name="kg_wrong_pin" msgid="1131306510833563801">"ভুল PIN"</string>
<string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
<string name="kg_pattern_instructions" msgid="398978611683075868">"আপনার প্যাটার্ন আঁকুন"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN লিখুন"</string>
+ <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"সিম PIN লিখুন"</string>
<string name="kg_pin_instructions" msgid="2377242233495111557">"PIN লিখুন"</string>
<string name="kg_password_instructions" msgid="5753646556186936819">"পাসওয়ার্ড লিখুন"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM এখন অক্ষম করা হয়েছে৷ অবিরত থাকতে PUK কোডটি লিখুন৷ বিশদ বিবরণের জন্য ক্যারিয়ারের সাথে যোগাযোগ করুন৷"</string>
+ <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"সিম এখন অক্ষম করা হয়েছে৷ অবিরত থাকতে PUK কোডটি লিখুন৷ বিশদ বিবরণের জন্য ক্যারিয়ারের সাথে যোগাযোগ করুন৷"</string>
<string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"কাঙ্ক্ষিত PIN কোড লিখুন"</string>
<string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"কাঙ্ক্ষিত PIN কোড নিশ্চিত করুন"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM কার্ড আনলক করা হচ্ছে…"</string>
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"সিম কার্ড আনলক করা হচ্ছে…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"৪ থেকে ৮টি সংখ্যার একটি PIN লিখুন৷"</string>
<string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK কোডটিকে ৮টি বা তার বেশি সংখ্য বিশিষ্ট হতে হবে৷"</string>
<string name="kg_invalid_puk" msgid="3638289409676051243">"সঠিক PUK কোড পুনরায় লিখুন৷ বার বার প্রচেষ্টা করা হলে তা স্থায়ীভাবে সিমটিকে অক্ষম করে দেবে৷"</string>
@@ -136,18 +136,18 @@
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"আপনি আপনার আনলকের প্যাটার্ন আঁকার ক্ষেত্রে <xliff:g id="NUMBER_0">%d</xliff:g> বার ভুল করেছেন৷ আর <xliff:g id="NUMBER_1">%d</xliff:g> বার অসফল প্রচেষ্টা করা হলে আপনাকে একটি ইমেল অ্যাকাউন্ট মারফত আপনার ফোন আনলক করতে বলা হবে৷\n\n <xliff:g id="NUMBER_2">%d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
<string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"সরান"</string>
- <string name="kg_password_wrong_pin_code_pukked" msgid="30531039455764924">"ভুল SIM PIN কোড, আপনার ডিভাইসটি আনলক করতে এখন আপনাকে অবশ্যই আপনার ক্যারিয়ারের সাথে যোগাযোগ করতে হবে৷"</string>
+ <string name="kg_password_wrong_pin_code_pukked" msgid="30531039455764924">"ভুল সিম PIN কোড, আপনার ডিভাইসটি আনলক করতে এখন আপনাকে অবশ্যই আপনার ক্যারিয়ারের সাথে যোগাযোগ করতে হবে৷"</string>
<plurals name="kg_password_wrong_pin_code">
- <item quantity="one" msgid="8134313997799638254">"ভুল SIM PIN কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে, তার পরে আপনার ডিভাইসটি আনলক করতে আপনাকে অবশ্যই আপনার ক্যারিয়ারের সাথে যোগাযোগ করতে হবে৷"</item>
- <item quantity="other" msgid="2215723361575359486">"ভুল SIM PIN কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে৷"</item>
+ <item quantity="one" msgid="8134313997799638254">"ভুল সিম PIN কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে, তার পরে আপনার ডিভাইসটি আনলক করতে আপনাকে অবশ্যই আপনার ক্যারিয়ারের সাথে যোগাযোগ করতে হবে৷"</item>
+ <item quantity="other" msgid="2215723361575359486">"ভুল সিম PIN কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে৷"</item>
</plurals>
<string name="kg_password_wrong_puk_code_dead" msgid="7077536808291316208">"SIMটি ব্যবহারের অযোগ্য৷ আপনার ক্যারিয়ারের সাথে যোগাযোগ করুন৷"</string>
<plurals name="kg_password_wrong_puk_code">
- <item quantity="one" msgid="3256893607561060649">"ভুল SIM PUK কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে এটির পরেই আপনার SIM স্থায়ীভাবে অব্যবহারযোগ্য হবে৷"</item>
- <item quantity="other" msgid="5477305226026342036">"ভুল SIM PUK কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে এটির পরেই আপনার SIM স্থায়ীভাবে অব্যবহারযোগ্য হবে৷"</item>
+ <item quantity="one" msgid="3256893607561060649">"ভুল সিম PUK কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে এটির পরেই আপনার সিম স্থায়ীভাবে অব্যবহারযোগ্য হবে৷"</item>
+ <item quantity="other" msgid="5477305226026342036">"ভুল সিম PUK কোড, আপনার কাছে আর <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে এটির পরেই আপনার সিম স্থায়ীভাবে অব্যবহারযোগ্য হবে৷"</item>
</plurals>
- <string name="kg_password_pin_failed" msgid="6268288093558031564">"SIM PIN ক্রিয়াকলাপটি ব্যর্থ হয়েছে!"</string>
- <string name="kg_password_puk_failed" msgid="2838824369502455984">"SIM PUK ক্রিয়াকলাপটি ব্যর্থ হয়েছে!"</string>
+ <string name="kg_password_pin_failed" msgid="6268288093558031564">"সিম PIN ক্রিয়াকলাপটি ব্যর্থ হয়েছে!"</string>
+ <string name="kg_password_puk_failed" msgid="2838824369502455984">"সিম PUK ক্রিয়াকলাপটি ব্যর্থ হয়েছে!"</string>
<string name="kg_pin_accepted" msgid="1448241673570020097">"কোড স্বীকৃত হয়েছে!"</string>
<string name="keyguard_transport_prev_description" msgid="8229108430245669854">"পূর্ববর্তী ট্র্যাকে যাওয়ার বোতাম"</string>
<string name="keyguard_transport_next_description" msgid="4299258300283778305">"পরবর্তী ট্র্যাকে যাওয়ার বোতাম"</string>
diff --git a/packages/Keyguard/res/values-hi/strings.xml b/packages/Keyguard/res/values-hi/strings.xml
index 423c276..b8c3358 100644
--- a/packages/Keyguard/res/values-hi/strings.xml
+++ b/packages/Keyguard/res/values-hi/strings.xml
@@ -36,19 +36,19 @@
<string name="keyguard_low_battery" msgid="8143808018719173859">"अपना चार्जर कनेक्‍ट करें."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"अनलॉक करने के लिए मेनू दबाएं."</string>
<string name="keyguard_network_locked_message" msgid="9169717779058037168">"नेटवर्क लॉक किया गया"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"कोई SIM कार्ड नहीं है"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"टेबलेट में कोई SIM कार्ड नहीं है."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"फ़ोन में कोई SIM कार्ड नहीं है."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"SIM कार्ड डालें."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM कार्ड गुम है या पढ़ने योग्‍य नहीं है. SIM कार्ड डालें."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"अनुपयोगी SIM कार्ड."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"आपका SIM कार्ड स्‍थायी रूप से अक्षम कर दिया गया है.\n दूसरे SIM कार्ड के लिए अपने वायरलेस सेवा प्रदाता से संपर्क करें."</string>
+ <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"कोई सिम कार्ड नहीं है"</string>
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"टेबलेट में कोई सिम कार्ड नहीं है."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"फ़ोन में कोई सिम कार्ड नहीं है."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"सिम कार्ड डालें."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"सिम कार्ड गुम है या पढ़ने योग्‍य नहीं है. सिम कार्ड डालें."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"अनुपयोगी सिम कार्ड."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"आपका सिम कार्ड स्‍थायी रूप से अक्षम कर दिया गया है.\n दूसरे सिम कार्ड के लिए अपने वायरलेस सेवा प्रदाता से संपर्क करें."</string>
<string name="keyguard_sim_locked_message" msgid="6875773413306380902">"सिम कार्ड लॉक है."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM कार्ड PUK द्वारा लॉक किया हुआ है."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"SIM कार्ड अनलॉक हो रहा है…"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"सिम कार्ड PUK द्वारा लॉक किया हुआ है."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"सिम कार्ड अनलॉक हो रहा है…"</string>
<string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %3$d विजेट में से %2$d."</string>
<string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"विजेट जोड़ें"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"रिक्त"</string>
+ <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"खाली"</string>
<string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"अनलॉक क्षेत्र को विस्तृत कर दिया गया."</string>
<string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"अनलॉक क्षेत्र को संक्षिप्त कर दिया गया."</string>
<string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> विजेट."</string>
@@ -83,7 +83,7 @@
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
<string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"रद्द करें"</string>
+ <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"रहने दें"</string>
<string name="keyboardview_keycode_delete" msgid="3337914833206635744">"हटाएं"</string>
<string name="keyboardview_keycode_done" msgid="1992571118466679775">"पूर्ण"</string>
<string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mode change"</string>
@@ -112,7 +112,7 @@
<string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"सिम अब अक्षम हो गई है. जारी रखने के लिए PUK कोड डालें. विवरण के लिए कैरियर से संपर्क करें."</string>
<string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"इच्छित पिन कोड डालें"</string>
<string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"इच्छित पिन कोड की पुष्टि करें"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM कार्ड अनलॉक कर रहा है…"</string>
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"सिम कार्ड अनलॉक कर रहा है…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"ऐसा PIN लिखें, जो 4 से 8 अंकों का हो."</string>
<string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK कोड 8 या अधिक संख्या वाला होना चाहिए."</string>
<string name="kg_invalid_puk" msgid="3638289409676051243">"सही PUK कोड पुन: डालें. बार-बार प्रयास करने से सिम स्थायी रूप से अक्षम हो जाएगी."</string>
diff --git a/packages/Keyguard/res/values-sw/strings.xml b/packages/Keyguard/res/values-sw/strings.xml
index 814dc90..7b4f46b 100644
--- a/packages/Keyguard/res/values-sw/strings.xml
+++ b/packages/Keyguard/res/values-sw/strings.xml
@@ -39,8 +39,8 @@
<string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"Hakuna SIM kadi"</string>
<string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Hakuna SIM kadi katika kompyuta ndogo."</string>
<string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Hakuna SIM kadi kwenye simu."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Ingiza SIM kadi."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM kadi haiko au haisomeki. Ingiza SIM kadi."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Weka SIM kadi."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM kadi haiko au haisomeki. Weka SIM kadi."</string>
<string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"SIM kadi isiyotumika."</string>
<string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"SIM kadi yako imefungwa kabisa.\n Wasiliana na mtoa huduma wako wa pasi waya ili upate SIM kadi nyingine."</string>
<string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM kadi imefungwa."</string>
diff --git a/packages/Keyguard/res/values-zh-rCN/strings.xml b/packages/Keyguard/res/values-zh-rCN/strings.xml
index 8e8c4c8..295df9c 100644
--- a/packages/Keyguard/res/values-zh-rCN/strings.xml
+++ b/packages/Keyguard/res/values-zh-rCN/strings.xml
@@ -21,14 +21,14 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="719438068451601849">"Keyguard"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"输入 PIN 码"</string>
- <string name="keyguard_password_enter_puk_code" msgid="3035856550289724338">"请输入SIM卡PUK码和新的 PIN 码"</string>
+ <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"输入PIN码"</string>
+ <string name="keyguard_password_enter_puk_code" msgid="3035856550289724338">"请输入SIM卡PUK码和新的PIN码"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1801941051094974609">"SIM卡PUK码"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="3201151840570492538">"新SIM卡PIN码"</string>
<string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"触摸可输入密码"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"输入密码以解锁"</string>
- <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"输入 PIN 进行解锁"</string>
- <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 码有误。"</string>
+ <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"输入PIN码进行解锁"</string>
+ <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN码有误。"</string>
<string name="keyguard_label_text" msgid="861796461028298424">"要解锁,请先按 MENU 再按 0。"</string>
<string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超过“人脸解锁”尝试次数上限"</string>
<string name="keyguard_charged" msgid="3272223906073492454">"充电完成"</string>
@@ -62,7 +62,7 @@
<string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"滑动解锁。"</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"图案解锁。"</string>
<string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"人脸解锁。"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN 解锁。"</string>
+ <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN码解锁。"</string>
<string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"密码解锁。"</string>
<string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"图案区域。"</string>
<string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"滑动区域。"</string>
@@ -103,20 +103,20 @@
<string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘记了图案"</string>
<string name="kg_wrong_pattern" msgid="1850806070801358830">"图案错误"</string>
<string name="kg_wrong_password" msgid="2333281762128113157">"密码错误"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN 有误"</string>
+ <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN码有误"</string>
<string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"请在 <xliff:g id="NUMBER">%d</xliff:g> 秒后重试。"</string>
<string name="kg_pattern_instructions" msgid="398978611683075868">"绘制您的图案"</string>
<string name="kg_sim_pin_instructions" msgid="2319508550934557331">"输入SIM卡PIN码"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"输入 PIN"</string>
+ <string name="kg_pin_instructions" msgid="2377242233495111557">"输入PIN码"</string>
<string name="kg_password_instructions" msgid="5753646556186936819">"输入密码"</string>
<string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM卡已被停用,需要输入PUK码才能继续使用。有关详情,请联系您的运营商。"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"请输入所需 PIN 码"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"请确认所需 PIN 码"</string>
+ <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"请输入所需的PIN码"</string>
+ <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"请确认所需的PIN码"</string>
<string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"正在解锁SIM卡..."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"请输入 4 至 8 位数的 PIN。"</string>
+ <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"请输入4至8位数的PIN码。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK码应至少包含8位数字。"</string>
<string name="kg_invalid_puk" msgid="3638289409676051243">"请重新输入正确的PUK码。如果尝试错误次数过多,SIM卡将永久停用。"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 码不匹配"</string>
+ <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN码不匹配"</string>
<string name="kg_login_too_many_attempts" msgid="6486842094005698475">"图案尝试次数过多"</string>
<string name="kg_login_instructions" msgid="1100551261265506448">"要解锁,请登录您的Google帐户。"</string>
<string name="kg_login_username_hint" msgid="5718534272070920364">"用户名(电子邮件地址)"</string>
@@ -125,13 +125,13 @@
<string name="kg_login_invalid_input" msgid="5754664119319872197">"用户名或密码无效。"</string>
<string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘记了用户名或密码?\n请访问 "<b>"google.com/accounts/recovery"</b>"。"</string>
<string name="kg_login_checking_password" msgid="1052685197710252395">"正在检查帐户…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地输入了 PIN。\n\n请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string>
+ <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您已经<xliff:g id="NUMBER_0">%d</xliff:g>次输错了PIN码。\n\n请在<xliff:g id="NUMBER_1">%d</xliff:g>秒后重试。"</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地输入了密码。\n\n请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。\n\n请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地尝试解锁平板电脑。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,平板电脑就会重置为出厂默认设置,而且所有用户数据都会丢失。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地尝试解锁手机。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,手机就会重置为出厂默认设置,而且所有用户数据都会丢失。"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您已经 <xliff:g id="NUMBER">%d</xliff:g> 次错误地尝试解锁平板电脑。平板电脑现在将重置为出厂默认设置。"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您已经 <xliff:g id="NUMBER">%d</xliff:g> 次错误地尝试解锁手机。手机现在将重置为出厂默认设置。"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您已经<xliff:g id="NUMBER_0">%d</xliff:g>次错误地尝试解锁平板电脑。如果再尝试<xliff:g id="NUMBER_1">%d</xliff:g>次后仍不成功,平板电脑就会恢复为出厂默认设置,而且所有用户数据都会丢失。"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您已经<xliff:g id="NUMBER_0">%d</xliff:g>次错误地尝试解锁手机。如果再尝试<xliff:g id="NUMBER_1">%d</xliff:g>次后仍不成功,手机就会恢复为出厂默认设置,而且所有用户数据都会丢失。"</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您已经<xliff:g id="NUMBER">%d</xliff:g>次错误地尝试解锁平板电脑。平板电脑现在将恢复为出厂默认设置。"</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您已经<xliff:g id="NUMBER">%d</xliff:g>次错误地尝试解锁手机。手机现在将恢复为出厂默认设置。"</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁平板电脑。\n\n请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁手机。\n\n请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
<string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
diff --git a/packages/Keyguard/res/values-zh-rHK/strings.xml b/packages/Keyguard/res/values-zh-rHK/strings.xml
index 064c6df..f196ffd 100644
--- a/packages/Keyguard/res/values-zh-rHK/strings.xml
+++ b/packages/Keyguard/res/values-zh-rHK/strings.xml
@@ -52,7 +52,7 @@
<string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"解鎖區域已展開。"</string>
<string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"解鎖區域已收合。"</string>
<string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小工具。"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"用戶選取工具"</string>
+ <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"使用者選取工具"</string>
<string name="keyguard_accessibility_camera" msgid="8904231194181114603">"相機"</string>
<string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"媒體控制"</string>
<string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"已開始為小工具重新排列次序。"</string>
@@ -98,7 +98,7 @@
<string name="description_direction_down" msgid="5087739728639014595">"向下滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
<string name="description_direction_left" msgid="7207478719805562165">"向左滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
<string name="description_direction_right" msgid="8034433242579600980">"向右滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
- <string name="user_switched" msgid="3768006783166984410">"目前的用戶是<xliff:g id="NAME">%1$s</xliff:g>。"</string>
+ <string name="user_switched" msgid="3768006783166984410">"目前的使用者是<xliff:g id="NAME">%1$s</xliff:g>。"</string>
<string name="kg_emergency_call_label" msgid="684946192523830531">"緊急電話"</string>
<string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘記圖案"</string>
<string name="kg_wrong_pattern" msgid="1850806070801358830">"圖案錯誤"</string>
@@ -119,17 +119,17 @@
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 碼不符"</string>
<string name="kg_login_too_many_attempts" msgid="6486842094005698475">"圖案嘗試次數過多"</string>
<string name="kg_login_instructions" msgid="1100551261265506448">"如要解鎖,請以 Google 帳戶登入。"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"用戶名稱 (電子郵件)"</string>
+ <string name="kg_login_username_hint" msgid="5718534272070920364">"使用者名稱 (電子郵件)"</string>
<string name="kg_login_password_hint" msgid="9057289103827298549">"密碼"</string>
<string name="kg_login_submit_button" msgid="5355904582674054702">"登入"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"無效的用戶名稱或密碼。"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘記用戶名稱或密碼?\n請瀏覽 "<b>"google.com/accounts/recovery"</b>"。"</string>
+ <string name="kg_login_invalid_input" msgid="5754664119319872197">"無效的使用者名稱或密碼。"</string>
+ <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘記使用者名稱或密碼?\n請瀏覽 "<b>"google.com/accounts/recovery"</b>"。"</string>
<string name="kg_login_checking_password" msgid="1052685197710252395">"正在檢查帳戶…"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您已輸入錯誤的 PIN 碼 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"您已輸入錯誤的密碼 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的平板電腦。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,平板電腦將回復原廠設定,所有用戶資料均會失去。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的手機。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,手機將回復原廠設定,所有用戶資料均會失去。"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的平板電腦。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,平板電腦將回復原廠設定,所有使用者資料均會失去。"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的手機。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,手機將回復原廠設定,所有使用者資料均會失去。"</string>
<string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您嘗試了 <xliff:g id="NUMBER">%d</xliff:g> 次仍未能成功解開這部上鎖的平板電腦。平板電腦現在將回復原廠設定。"</string>
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您嘗試了 <xliff:g id="NUMBER">%d</xliff:g> 次仍未能成功解開這部上鎖的手機。手機現在將回復原廠設定。"</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統會要求您透過電郵帳戶解開上鎖的平板電腦。\n\n請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string>
diff --git a/packages/PrintSpooler/res/values-af/strings.xml b/packages/PrintSpooler/res/values-af/strings.xml
index 2e2b425..1a840e3 100644
--- a/packages/PrintSpooler/res/values-af/strings.xml
+++ b/packages/PrintSpooler/res/values-af/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alle drukkers…"</string>
<string name="print_dialog" msgid="32628687461331979">"Drukdialoog"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Bladsy <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> van <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Opsomming, kopieë <xliff:g id="COPIES">%1$s</xliff:g>, papiergrootte <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Vou handvatsel uit"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Vou handvatsel in"</string>
+ <string name="print_button" msgid="645164566271246268">"Druk"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Stoor na PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Drukopsies uitgevou"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Drukopsies ingevou"</string>
<string name="search" msgid="5421724265322228497">"Deursoek"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alle drukkers"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Voeg diens by"</string>
diff --git a/packages/PrintSpooler/res/values-am/strings.xml b/packages/PrintSpooler/res/values-am/strings.xml
index 986d2ac..683d585 100644
--- a/packages/PrintSpooler/res/values-am/strings.xml
+++ b/packages/PrintSpooler/res/values-am/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"ሁሉም አታሚዎች…"</string>
<string name="print_dialog" msgid="32628687461331979">"የህትመት መገናኛ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"ገጽ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ከ<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"ማጠቃለያ፣ ቅጂዎች <xliff:g id="COPIES">%1$s</xliff:g>፣ የወረቀት መጠን <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"እጀታን ወደ ውጪ ላክ"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"እጀታን ሰብስብ"</string>
+ <string name="print_button" msgid="645164566271246268">"አትም"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"ወደ ፔዲኤፍ አስቀምጥ"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"የህትመት አማራጮች ተዘርግተዋል"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"የህትመት አማራጮች ተሰብስበዋል"</string>
<string name="search" msgid="5421724265322228497">"ፍለጋ"</string>
<string name="all_printers_label" msgid="3178848870161526399">"ሁሉም አታሚዎች"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"አገልግሎት አክል"</string>
diff --git a/packages/PrintSpooler/res/values-ar/strings.xml b/packages/PrintSpooler/res/values-ar/strings.xml
index 82b5e03..0a7d301 100644
--- a/packages/PrintSpooler/res/values-ar/strings.xml
+++ b/packages/PrintSpooler/res/values-ar/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"جميع الطابعات…"</string>
<string name="print_dialog" msgid="32628687461331979">"مربع حوار الطباعة"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"الصفحة <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> من <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"الملخص، النسخ <xliff:g id="COPIES">%1$s</xliff:g>، حجم الورق <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"مقبض التوسيع"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"مقبض التصغير"</string>
+ <string name="print_button" msgid="645164566271246268">"طباعة"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"‏حفظ بتنسيق PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"تم توسيع خيارات الطباعة"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"تم تصغير خيارات الطباعة"</string>
<string name="search" msgid="5421724265322228497">"بحث"</string>
<string name="all_printers_label" msgid="3178848870161526399">"جميع الطابعات"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"إضافة خدمة"</string>
diff --git a/packages/PrintSpooler/res/values-bg/strings.xml b/packages/PrintSpooler/res/values-bg/strings.xml
index c5f82fd..8792349 100644
--- a/packages/PrintSpooler/res/values-bg/strings.xml
+++ b/packages/PrintSpooler/res/values-bg/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Всички принтери…"</string>
<string name="print_dialog" msgid="32628687461331979">"Диалогов прозорец за отпечатване"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Страница <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> от <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Обобщена информация: копия – <xliff:g id="COPIES">%1$s</xliff:g>, размер на хартията – <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Манипулатор за разгъване"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Манипулатор за свиване"</string>
+ <string name="print_button" msgid="645164566271246268">"Печат"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Запазване като PDF файл"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Опциите за отпечатване са разгънати"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Опциите за отпечатване са свити"</string>
<string name="search" msgid="5421724265322228497">"Търсене"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Всички принтери"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Добавяне на услуга"</string>
diff --git a/packages/PrintSpooler/res/values-bn-rBD/strings.xml b/packages/PrintSpooler/res/values-bn-rBD/strings.xml
index 35a7285..5c5fabf 100644
--- a/packages/PrintSpooler/res/values-bn-rBD/strings.xml
+++ b/packages/PrintSpooler/res/values-bn-rBD/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"সমস্ত মুদ্রক…"</string>
<string name="print_dialog" msgid="32628687461331979">"মুদ্রণ ডায়লগ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g>টির মধ্যে <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> নম্বর পৃষ্ঠা"</string>
+ <string name="summary_template" msgid="8899734908625669193">"সারাংশ, <xliff:g id="COPIES">%1$s</xliff:g>টি অনুলিপি, কাগজের আকার <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"প্রসারিত করার হ্যান্ডেল"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"সঙ্কুচিত করার হ্যান্ডেল"</string>
+ <string name="print_button" msgid="645164566271246268">"মুদ্রণ করুন"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF হিসাবে সংরক্ষণ করুন"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"মুদ্রণ বিকল্প প্রসারিত হয়েছে"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"মুদ্রণ বিকল্প সংকুচিত হয়েছে"</string>
<string name="search" msgid="5421724265322228497">"অনুসন্ধান করুন"</string>
<string name="all_printers_label" msgid="3178848870161526399">"সমস্ত মুদ্রক"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"পরিষেবা যোগ করুন"</string>
diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml
index a650d7e..6d66b86 100644
--- a/packages/PrintSpooler/res/values-ca/strings.xml
+++ b/packages/PrintSpooler/res/values-ca/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Totes les impressores…"</string>
<string name="print_dialog" msgid="32628687461331979">"Diàleg d\'impressió"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Pàgina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de: <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resum; còpies: <xliff:g id="COPIES">%1$s</xliff:g>; mida del paper: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Desplega l\'ansa"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Replega l\'ansa"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimeix"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Desa en PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"S\'han desplegat les opcions d\'impressió."</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"S\'han replegat les opcions d\'impressió."</string>
<string name="search" msgid="5421724265322228497">"Cerca"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Totes les impressores"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Afegeix un servei"</string>
@@ -44,7 +52,7 @@
<string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"S\'ha amagat el quadre de cerca"</string>
<string name="print_add_printer" msgid="1088656468360653455">"Afegeix una impressora"</string>
<string name="print_select_printer" msgid="7388760939873368698">"Selecciona una impressora"</string>
- <string name="print_forget_printer" msgid="5035287497291910766">"Oblida la impressora"</string>
+ <string name="print_forget_printer" msgid="5035287497291910766">"Esborra la impressora"</string>
<plurals name="print_search_result_count_utterance">
<item quantity="one" msgid="4484953260685964252">"S\'ha trobat <xliff:g id="COUNT">%1$s</xliff:g> impressora"</item>
<item quantity="other" msgid="6533817036607128241">"S\'han trobat <xliff:g id="COUNT">%1$s</xliff:g> impressores"</item>
diff --git a/packages/PrintSpooler/res/values-cs/strings.xml b/packages/PrintSpooler/res/values-cs/strings.xml
index 1b84568..791e485 100644
--- a/packages/PrintSpooler/res/values-cs/strings.xml
+++ b/packages/PrintSpooler/res/values-cs/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Všechny tiskárny…"</string>
<string name="print_dialog" msgid="32628687461331979">"Dialog tisku"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Stránka <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> z <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Souhrn, počet kopií: <xliff:g id="COPIES">%1$s</xliff:g>, velikost papíru: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Úchyt k rozbalení"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Úchyt ke sbalení"</string>
+ <string name="print_button" msgid="645164566271246268">"Tisk"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Uložit do souboru PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Možnosti tisku jsou rozbaleny"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Možnosti tisku jsou sbaleny"</string>
<string name="search" msgid="5421724265322228497">"Hledat"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Všechny tiskárny"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Přidat službu"</string>
diff --git a/packages/PrintSpooler/res/values-da/strings.xml b/packages/PrintSpooler/res/values-da/strings.xml
index 0e6fef6..c4a383e 100644
--- a/packages/PrintSpooler/res/values-da/strings.xml
+++ b/packages/PrintSpooler/res/values-da/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alle printere..."</string>
<string name="print_dialog" msgid="32628687461331979">"Udskriftsdialog"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> af <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Side <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ud af <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Opsummering, kopier <xliff:g id="COPIES">%1$s</xliff:g>, papirstørrelse <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Håndtag til visning"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Håndtag til skjuling"</string>
+ <string name="print_button" msgid="645164566271246268">"Udskriv"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Gem som PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Valgmuligheder for udskrift vises"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Valgmulgheder for udskrift er skjult"</string>
<string name="search" msgid="5421724265322228497">"Søg"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alle printere"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Tilføj tjeneste"</string>
diff --git a/packages/PrintSpooler/res/values-de/strings.xml b/packages/PrintSpooler/res/values-de/strings.xml
index cd17d0d..43be3dc 100644
--- a/packages/PrintSpooler/res/values-de/strings.xml
+++ b/packages/PrintSpooler/res/values-de/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alle Drucker…"</string>
<string name="print_dialog" msgid="32628687461331979">"Druckdialogfeld"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Seite <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> von <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Zusammenfassung: Kopien: <xliff:g id="COPIES">%1$s</xliff:g>, Papierformat <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Steuerelement zum Einblenden"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Steuerelement zum Ausblenden"</string>
+ <string name="print_button" msgid="645164566271246268">"Drucken"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Als PDF speichern"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Druckoptionen eingeblendet"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Druckoptionen ausgeblendet"</string>
<string name="search" msgid="5421724265322228497">"Suchen"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alle Drucker"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Dienst hinzufügen"</string>
diff --git a/packages/PrintSpooler/res/values-el/strings.xml b/packages/PrintSpooler/res/values-el/strings.xml
index 2ea3cb8..25f609b 100644
--- a/packages/PrintSpooler/res/values-el/strings.xml
+++ b/packages/PrintSpooler/res/values-el/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Όλοι οι εκτυπωτές…"</string>
<string name="print_dialog" msgid="32628687461331979">"Πλαίσιο διαλόγου εκτύπωσης"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Σελίδα <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> από <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Σύνοψη, αντίγραφα <xliff:g id="COPIES">%1$s</xliff:g>, μέγεθος χαρτιού <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Επέκταση λαβής"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Σύμπτυξη λαβής"</string>
+ <string name="print_button" msgid="645164566271246268">"Εκτύπωση"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Αποθήκευση σε PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Έγινε επέκταση των επιλογών εκτύπωσης"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Έγινε σύμπτυξη των επιλογών εκτύπωσης"</string>
<string name="search" msgid="5421724265322228497">"Αναζήτηση"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Όλοι οι εκτυπωτές"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Προσθήκη υπηρεσίας"</string>
diff --git a/packages/PrintSpooler/res/values-en-rGB/strings.xml b/packages/PrintSpooler/res/values-en-rGB/strings.xml
index df8cca2..2198c7a 100644
--- a/packages/PrintSpooler/res/values-en-rGB/strings.xml
+++ b/packages/PrintSpooler/res/values-en-rGB/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"All printers…"</string>
<string name="print_dialog" msgid="32628687461331979">"Print dialogue"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Summary, copies <xliff:g id="COPIES">%1$s</xliff:g>, paper size <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Expand handle"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Collapse handle"</string>
+ <string name="print_button" msgid="645164566271246268">"Print"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Save to PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Print options expanded"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Print options collapsed"</string>
<string name="search" msgid="5421724265322228497">"Search"</string>
<string name="all_printers_label" msgid="3178848870161526399">"All printers"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string>
diff --git a/packages/PrintSpooler/res/values-en-rIN/strings.xml b/packages/PrintSpooler/res/values-en-rIN/strings.xml
index df8cca2..2198c7a 100644
--- a/packages/PrintSpooler/res/values-en-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-en-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"All printers…"</string>
<string name="print_dialog" msgid="32628687461331979">"Print dialogue"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Summary, copies <xliff:g id="COPIES">%1$s</xliff:g>, paper size <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Expand handle"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Collapse handle"</string>
+ <string name="print_button" msgid="645164566271246268">"Print"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Save to PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Print options expanded"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Print options collapsed"</string>
<string name="search" msgid="5421724265322228497">"Search"</string>
<string name="all_printers_label" msgid="3178848870161526399">"All printers"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string>
diff --git a/packages/PrintSpooler/res/values-es-rUS/strings.xml b/packages/PrintSpooler/res/values-es-rUS/strings.xml
index 9825fe3..167f7d8 100644
--- a/packages/PrintSpooler/res/values-es-rUS/strings.xml
+++ b/packages/PrintSpooler/res/values-es-rUS/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string>
<string name="print_dialog" msgid="32628687461331979">"Cuadro de diálogo de impresión"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resumen, <xliff:g id="COPIES">%1$s</xliff:g> copias, tamaño de papel <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Controlador para expandir"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Controlador para contraer"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Guardar como PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opciones de impresión expandidas"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opciones de impresión contraídas"</string>
<string name="search" msgid="5421724265322228497">"Buscar"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Agregar servicio"</string>
diff --git a/packages/PrintSpooler/res/values-es/strings.xml b/packages/PrintSpooler/res/values-es/strings.xml
index 5c49ef0d..b0ab529 100644
--- a/packages/PrintSpooler/res/values-es/strings.xml
+++ b/packages/PrintSpooler/res/values-es/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string>
<string name="print_dialog" msgid="32628687461331979">"Cuadro de diálogo de impresión"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resumen, copias (<xliff:g id="COPIES">%1$s</xliff:g>), tamaño del papel (<xliff:g id="PAPER_SIZE">%2$s</xliff:g>)"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Controlador para ampliar"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Controlador para contraer"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Guardar en PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opciones de impresión ampliadas"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opciones de impresión contraídas"</string>
<string name="search" msgid="5421724265322228497">"Buscar"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Añadir servicio"</string>
diff --git a/packages/PrintSpooler/res/values-et-rEE/strings.xml b/packages/PrintSpooler/res/values-et-rEE/strings.xml
index efb03dd..6e75bbb 100644
--- a/packages/PrintSpooler/res/values-et-rEE/strings.xml
+++ b/packages/PrintSpooler/res/values-et-rEE/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Kõik printerid …"</string>
<string name="print_dialog" msgid="32628687461331979">"Printimisdialoog"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>-st"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g> lehest"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Kokkuvõte, koopiad <xliff:g id="COPIES">%1$s</xliff:g>, paberi suurus <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Laiendamispide"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Ahendamispide"</string>
+ <string name="print_button" msgid="645164566271246268">"Prindi"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF-i salvestamine"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Prindivalikud on laiendatud"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Prindivalikud on ahendatud"</string>
<string name="search" msgid="5421724265322228497">"Otsing"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Kõik printerid"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Lisa teenus"</string>
diff --git a/packages/PrintSpooler/res/values-eu-rES/strings.xml b/packages/PrintSpooler/res/values-eu-rES/strings.xml
index 69a04ad..b2c2b9c 100644
--- a/packages/PrintSpooler/res/values-eu-rES/strings.xml
+++ b/packages/PrintSpooler/res/values-eu-rES/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Inprimagailu guztiak…"</string>
<string name="print_dialog" msgid="32628687461331979">"Inprimatzeko elkarrizketa-koadroa"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g> orria"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Laburpena, <xliff:g id="COPIES">%1$s</xliff:g> kopia, <xliff:g id="PAPER_SIZE">%2$s</xliff:g> paper-tamaina"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Zabaldu heldulekua"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Tolestu heldulekua"</string>
+ <string name="print_button" msgid="645164566271246268">"Inprimatu"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Gorde PDF gisa"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Inprimaketa-aukerak zabalduta daude"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Inprimaketa-aukerak tolestuta daude"</string>
<string name="search" msgid="5421724265322228497">"Bilatu"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Inprimagailu guztiak"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Gehitu zerbitzua"</string>
diff --git a/packages/PrintSpooler/res/values-fa/strings.xml b/packages/PrintSpooler/res/values-fa/strings.xml
index e178cba..d35a063 100644
--- a/packages/PrintSpooler/res/values-fa/strings.xml
+++ b/packages/PrintSpooler/res/values-fa/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"همه چاپگرها..."</string>
<string name="print_dialog" msgid="32628687461331979">"چاپ گفتگو"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"صفحه <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> از <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"خلاصه، تعداد نسخه <xliff:g id="COPIES">%1$s</xliff:g>، اندازه کاغذ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"بزرگ کردن لیست گزینه‌ها"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"کوچک کردن لیست گزینه‌ها"</string>
+ <string name="print_button" msgid="645164566271246268">"چاپ"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"‏ذخیره در PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"گزینه‌های چاپ بزرگ شد"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"گزینه‌های چاپ کوچک شد"</string>
<string name="search" msgid="5421724265322228497">"جستجو"</string>
<string name="all_printers_label" msgid="3178848870161526399">"همه چاپگرها"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"افزودن سرویس"</string>
diff --git a/packages/PrintSpooler/res/values-fi/strings.xml b/packages/PrintSpooler/res/values-fi/strings.xml
index dcda41f..8e540f9 100644
--- a/packages/PrintSpooler/res/values-fi/strings.xml
+++ b/packages/PrintSpooler/res/values-fi/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Kaikki tulostimet…"</string>
<string name="print_dialog" msgid="32628687461331979">"Tulostusikkuna"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Sivu <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Yhteenveto, kopioita <xliff:g id="COPIES">%1$s</xliff:g>, paperikoko <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Laajennuskahva"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Tiivistyskahva"</string>
+ <string name="print_button" msgid="645164566271246268">"Tulosta"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Tallenna PDF-muodossa"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Tulostusasetukset on laajennettu"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Tulostusasetukset on tiivistetty"</string>
<string name="search" msgid="5421724265322228497">"Haku"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Kaikki tulostimet"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Lisää palvelu"</string>
diff --git a/packages/PrintSpooler/res/values-fr-rCA/strings.xml b/packages/PrintSpooler/res/values-fr-rCA/strings.xml
index 9b72da1..279a467 100644
--- a/packages/PrintSpooler/res/values-fr-rCA/strings.xml
+++ b/packages/PrintSpooler/res/values-fr-rCA/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string>
<string name="print_dialog" msgid="32628687461331979">"Boîte de dialogue d\'impression"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> sur <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Résumé, copies (<xliff:g id="COPIES">%1$s</xliff:g>), taille du papier (<xliff:g id="PAPER_SIZE">%2$s</xliff:g>)"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Poignée de développement"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Poignée de réduction"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimer"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Enregistrer au format PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Options d\'impression développées"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Options d\'impression réduites"</string>
<string name="search" msgid="5421724265322228497">"Rechercher"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Ajouter le service"</string>
diff --git a/packages/PrintSpooler/res/values-fr/strings.xml b/packages/PrintSpooler/res/values-fr/strings.xml
index 601ea51..ebfd5de 100644
--- a/packages/PrintSpooler/res/values-fr/strings.xml
+++ b/packages/PrintSpooler/res/values-fr/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Toutes les imprim."</string>
<string name="print_dialog" msgid="32628687461331979">"Boîte de dialogue d\'impression"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> sur <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Résumé, copies (<xliff:g id="COPIES">%1$s</xliff:g>), taille du papier (<xliff:g id="PAPER_SIZE">%2$s</xliff:g>)"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Poignée de développement"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Poignée de réduction"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimer"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Enregistrer au format PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Les options d\'impression ont été développées."</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Les options d\'impression ont été réduites."</string>
<string name="search" msgid="5421724265322228497">"Rechercher"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Ajouter un service"</string>
diff --git a/packages/PrintSpooler/res/values-gl-rES/strings.xml b/packages/PrintSpooler/res/values-gl-rES/strings.xml
index 9b180cc..6e542ea 100644
--- a/packages/PrintSpooler/res/values-gl-rES/strings.xml
+++ b/packages/PrintSpooler/res/values-gl-rES/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Todas as impresoras..."</string>
<string name="print_dialog" msgid="32628687461331979">"Diálogo de impresión"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Páxina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resumo, copias <xliff:g id="COPIES">%1$s</xliff:g>, tamaño do papel <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Amplía a agarradoira"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Contrae a agarradoira"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Gardar en PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opcións de impresión ampliadas"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opcións de impresión contraídas"</string>
<string name="search" msgid="5421724265322228497">"Buscar"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Todas as impresoras"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Engadir servizo"</string>
diff --git a/packages/PrintSpooler/res/values-hi/strings.xml b/packages/PrintSpooler/res/values-hi/strings.xml
index 581995a..9186f64 100644
--- a/packages/PrintSpooler/res/values-hi/strings.xml
+++ b/packages/PrintSpooler/res/values-hi/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"सभी प्रिंटर..."</string>
<string name="print_dialog" msgid="32628687461331979">"प्रिंट डॉयलॉग"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> में से पृष्ठ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"सारांश, प्रतियां <xliff:g id="COPIES">%1$s</xliff:g>, काग़ज़ का आकार <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"हैंडल विस्तृत करें"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"हैंडल संक्षिप्त करें"</string>
+ <string name="print_button" msgid="645164566271246268">"प्रिंट करें"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF में सहेजें"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"प्रिंट विकल्पों को विस्तृत किया गया"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"प्रिंट विकल्पों को संक्षिप्त किया गया"</string>
<string name="search" msgid="5421724265322228497">"खोजें"</string>
<string name="all_printers_label" msgid="3178848870161526399">"सभी प्रिंटर"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"सेवा जोड़ें"</string>
@@ -60,7 +68,7 @@
<item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> प्रिंट कार्य"</item>
<item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> प्रिंट कार्य"</item>
</plurals>
- <string name="cancel" msgid="4373674107267141885">"रद्द करें"</string>
+ <string name="cancel" msgid="4373674107267141885">"रहने दें"</string>
<string name="restart" msgid="2472034227037808749">"पुन: आरंभ करें"</string>
<string name="no_connection_to_printer" msgid="2159246915977282728">"प्रिंटर के लिए कोई कनेक्शन नहीं"</string>
<string name="reason_unknown" msgid="5507940196503246139">"अज्ञात"</string>
diff --git a/packages/PrintSpooler/res/values-hr/strings.xml b/packages/PrintSpooler/res/values-hr/strings.xml
index 3b82f85..8132d21 100644
--- a/packages/PrintSpooler/res/values-hr/strings.xml
+++ b/packages/PrintSpooler/res/values-hr/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Svi pisači…"</string>
<string name="print_dialog" msgid="32628687461331979">"Dijaloški okvir za ispis"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Stranica <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> od <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Sažetak, kopije <xliff:g id="COPIES">%1$s</xliff:g>, veličina papira <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Ručica za proširenje"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Ručica za sažimanje"</string>
+ <string name="print_button" msgid="645164566271246268">"Ispis"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Spremanje u PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opcije ispisa proširene"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opcije ispisa sažete"</string>
<string name="search" msgid="5421724265322228497">"Pretraživanje"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Svi pisači"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Dodaj uslugu"</string>
diff --git a/packages/PrintSpooler/res/values-hu/strings.xml b/packages/PrintSpooler/res/values-hu/strings.xml
index 63f7169..3ebc450 100644
--- a/packages/PrintSpooler/res/values-hu/strings.xml
+++ b/packages/PrintSpooler/res/values-hu/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Az összes nyomtató…"</string>
<string name="print_dialog" msgid="32628687461331979">"Nyomtatási párbeszédablak"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>./<xliff:g id="PAGE_COUNT">%2$d</xliff:g> oldal"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Összegzés, <xliff:g id="COPIES">%1$s</xliff:g> példány, papírméret: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"„Kibontás” fogantyú"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"„Összecsukás” fogantyú"</string>
+ <string name="print_button" msgid="645164566271246268">"Nyomtatás"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Mentés PDF-be"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Nyomtatási lehetőségek kibontva"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Nyomtatási lehetőségek összecsukva"</string>
<string name="search" msgid="5421724265322228497">"Keresés"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Az összes nyomtató"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Szolgáltatás hozzáadása"</string>
diff --git a/packages/PrintSpooler/res/values-hy-rAM/strings.xml b/packages/PrintSpooler/res/values-hy-rAM/strings.xml
index f77a7e8..5ef15a5 100644
--- a/packages/PrintSpooler/res/values-hy-rAM/strings.xml
+++ b/packages/PrintSpooler/res/values-hy-rAM/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Բոլոր տպիչները..."</string>
<string name="print_dialog" msgid="32628687461331979">"Տպելու երկխոսության պատուհան"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Էջ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>՝ <xliff:g id="PAGE_COUNT">%2$d</xliff:g>-ից"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Ամփոփում, պատճենները՝ <xliff:g id="COPIES">%1$s</xliff:g> , թղթի չափը՝ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Ընդարձակման կարգավորում"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Կոծկման կարգավորում"</string>
+ <string name="print_button" msgid="645164566271246268">"Տպել"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Պահել որպես PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Տպելու կարգավորումները կոծկված են"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Տպելու կարգավորումներն ընդարձակված են"</string>
<string name="search" msgid="5421724265322228497">"Որոնել"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Բոլոր տպիչները"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Ավելացնել ծառայություն"</string>
diff --git a/packages/PrintSpooler/res/values-in/strings.xml b/packages/PrintSpooler/res/values-in/strings.xml
index fa47da3..9714b0f 100644
--- a/packages/PrintSpooler/res/values-in/strings.xml
+++ b/packages/PrintSpooler/res/values-in/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Semua printer…"</string>
<string name="print_dialog" msgid="32628687461331979">"Cetak dialog"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Halaman <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> dari <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Ringkasan, salinan <xliff:g id="COPIES">%1$s</xliff:g>, ukuran kertas <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Luaskan gagang"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Ciutkan gagang"</string>
+ <string name="print_button" msgid="645164566271246268">"Cetak"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Simpan ke PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opsi cetak diluaskan"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opsi cetak diciutkan"</string>
<string name="search" msgid="5421724265322228497">"Cari"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Semua printer"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan layanan"</string>
diff --git a/packages/PrintSpooler/res/values-is-rIS/strings.xml b/packages/PrintSpooler/res/values-is-rIS/strings.xml
index d18b8b5..41a047d 100644
--- a/packages/PrintSpooler/res/values-is-rIS/strings.xml
+++ b/packages/PrintSpooler/res/values-is-rIS/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Allir prentarar…"</string>
<string name="print_dialog" msgid="32628687461331979">"Prentgluggi"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Síða <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> af <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Yfirlit, <xliff:g id="COPIES">%1$s</xliff:g> eintök, pappírsstærð <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Stækkunarhandfang"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Minnkunarhandfang"</string>
+ <string name="print_button" msgid="645164566271246268">"Prenta"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Vista sem PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Prentvalkostir stækkaðir"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Prentvalkostir minnkaðir"</string>
<string name="search" msgid="5421724265322228497">"Leita"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Allir prentarar"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Bæta við þjónustu"</string>
diff --git a/packages/PrintSpooler/res/values-it/strings.xml b/packages/PrintSpooler/res/values-it/strings.xml
index 28f51ac..3653c56 100644
--- a/packages/PrintSpooler/res/values-it/strings.xml
+++ b/packages/PrintSpooler/res/values-it/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Tutte le stampanti…"</string>
<string name="print_dialog" msgid="32628687461331979">"Finestra di dialogo Stampa"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Pagina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> di <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Riepilogo, copie <xliff:g id="COPIES">%1$s</xliff:g>, <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Punto di controllo per l\'espansione"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Punto di controllo per la compressione"</string>
+ <string name="print_button" msgid="645164566271246268">"Stampa"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Salva come PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opzioni di stampa espanse"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opzioni di stampa compresse"</string>
<string name="search" msgid="5421724265322228497">"Cerca"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Tutte le stampanti"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Aggiungi servizio"</string>
diff --git a/packages/PrintSpooler/res/values-iw/strings.xml b/packages/PrintSpooler/res/values-iw/strings.xml
index 5bc339c..ba293a0 100644
--- a/packages/PrintSpooler/res/values-iw/strings.xml
+++ b/packages/PrintSpooler/res/values-iw/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"כל המדפסות…"</string>
<string name="print_dialog" msgid="32628687461331979">"תיבת דו שיח של מדפסת"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"עמוד <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> מתוך <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"סיכום, עותקים <xliff:g id="COPIES">%1$s</xliff:g>, גודל נייר <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ידית הרחבה"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ידית כיווץ"</string>
+ <string name="print_button" msgid="645164566271246268">"הדפס"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"‏שמור כ-PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"אפשרויות ההדפסה הורחבו"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"אפשרויות ההדפסה כווצו"</string>
<string name="search" msgid="5421724265322228497">"חפש"</string>
<string name="all_printers_label" msgid="3178848870161526399">"כל המדפסות"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"הוסף שירות"</string>
diff --git a/packages/PrintSpooler/res/values-ja/strings.xml b/packages/PrintSpooler/res/values-ja/strings.xml
index 828c255..f3fed3b 100644
--- a/packages/PrintSpooler/res/values-ja/strings.xml
+++ b/packages/PrintSpooler/res/values-ja/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"すべてのプリンタ…"</string>
<string name="print_dialog" msgid="32628687461331979">"印刷ダイアログ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>ページ"</string>
+ <string name="summary_template" msgid="8899734908625669193">"概要、部数<xliff:g id="COPIES">%1$s</xliff:g>、用紙サイズ<xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"展開ハンドル"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"折りたたみハンドル"</string>
+ <string name="print_button" msgid="645164566271246268">"印刷"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDFに保存"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"印刷オプションを展開しました"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"印刷オプションを折りたたみました"</string>
<string name="search" msgid="5421724265322228497">"検索"</string>
<string name="all_printers_label" msgid="3178848870161526399">"すべてのプリンタ"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"サービスを追加"</string>
diff --git a/packages/PrintSpooler/res/values-ka-rGE/strings.xml b/packages/PrintSpooler/res/values-ka-rGE/strings.xml
index d885765..061e9fb 100644
--- a/packages/PrintSpooler/res/values-ka-rGE/strings.xml
+++ b/packages/PrintSpooler/res/values-ka-rGE/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"ყველა პრინტერი…"</string>
<string name="print_dialog" msgid="32628687461331979">"ბეჭდვის სარკმელი"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"გვერდი <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>-დან"</string>
+ <string name="summary_template" msgid="8899734908625669193">"შეჯამება, ასლები <xliff:g id="COPIES">%1$s</xliff:g>, გვერდის ზომა <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"გაშლის სახელური"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ჩაკეცვის სახელური"</string>
+ <string name="print_button" msgid="645164566271246268">"ბეჭდვა"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF-ში შენახვა"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ბეჭდვის პარამეტრები გაშლილია"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ბეჭდვის პარამეტრები ჩაკეცილია"</string>
<string name="search" msgid="5421724265322228497">"ძიება"</string>
<string name="all_printers_label" msgid="3178848870161526399">"ყველა პრინტერი"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"სერვისის დამატება"</string>
diff --git a/packages/PrintSpooler/res/values-kk-rKZ/strings.xml b/packages/PrintSpooler/res/values-kk-rKZ/strings.xml
index 8c6a34fd..b02714b 100644
--- a/packages/PrintSpooler/res/values-kk-rKZ/strings.xml
+++ b/packages/PrintSpooler/res/values-kk-rKZ/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Барлық принтерлер…"</string>
<string name="print_dialog" msgid="32628687461331979">"Басу терезесі"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> ішінен <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> бет"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Жиынтық мәліметтер, көшірмелер <xliff:g id="COPIES">%1$s</xliff:g>, қағаз өлшемі <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Кеңейту таңбалауышы"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Тасалау таңбалауышы"</string>
+ <string name="print_button" msgid="645164566271246268">"Басып шығару"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF пішімінде сақтау"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Басып шығару опциялары кеңейтілді"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Басып шығару опциялары тасаланды"</string>
<string name="search" msgid="5421724265322228497">"Іздеу"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Барлық принтерлер"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Қызмет қосу"</string>
diff --git a/packages/PrintSpooler/res/values-km-rKH/strings.xml b/packages/PrintSpooler/res/values-km-rKH/strings.xml
index bf82957..63d710a 100644
--- a/packages/PrintSpooler/res/values-km-rKH/strings.xml
+++ b/packages/PrintSpooler/res/values-km-rKH/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"ម៉ាស៊ីន​បោះពុម្ព​ទាំងអស់ ..."</string>
<string name="print_dialog" msgid="32628687461331979">"ប្រអប់​បោះពុម្ព"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"ទំព័រ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> នៃ <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"សង្ខេប, ច្បាប់​ចម្លង <xliff:g id="COPIES">%1$s</xliff:g>, ទំហំ​ក្រដាស <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ពង្រីក​​ចំណុច​ទាញ"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"បង្រួម​ចំណុច​ទាញ"</string>
+ <string name="print_button" msgid="645164566271246268">"បោះពុម្ព"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"រក្សាទុក​ជា PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"បាន​ពង្រីក​ជម្រើស​បោះពុម្ព"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"បាន​បង្រួម​ជម្រើស​បោះពុម្ព"</string>
<string name="search" msgid="5421724265322228497">"ស្វែងរក"</string>
<string name="all_printers_label" msgid="3178848870161526399">"ម៉ាស៊ីន​បោះពុម្ព​ទាំងអស់"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"បន្ថែម​សេវាកម្ម"</string>
diff --git a/packages/PrintSpooler/res/values-kn-rIN/strings.xml b/packages/PrintSpooler/res/values-kn-rIN/strings.xml
index 7f848e4..3950866 100644
--- a/packages/PrintSpooler/res/values-kn-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-kn-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"ಎಲ್ಲಾ ಮುದ್ರಕಗಳು…"</string>
<string name="print_dialog" msgid="32628687461331979">"ಮುದ್ರಣ ಸಂವಾದ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"ಪುಟ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"ಸಾರಾಂಶ, ನಕಲುಗಳು <xliff:g id="COPIES">%1$s</xliff:g>, ಪೇಪರ್ ಗಾತ್ರ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ಹ್ಯಾಂಡಲ್ ವಿಸ್ತರಿಸಿ"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ಹ್ಯಾಂಡಲ್ ಮುಚ್ಚಿರಿ"</string>
+ <string name="print_button" msgid="645164566271246268">"ಮುದ್ರಿಸು"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF ಗೆ ಉಳಿಸು"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ಪ್ರಿಂಟ್ ಆಯ್ಕೆಗಳನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ಪ್ರಿಂಟ್ ಆಯ್ಕೆಗಳನ್ನು ಮುಚ್ಚಲಾಗಿದೆ"</string>
<string name="search" msgid="5421724265322228497">"ಹುಡುಕು"</string>
<string name="all_printers_label" msgid="3178848870161526399">"ಎಲ್ಲಾ ಮುದ್ರಕಗಳು"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"ಸೇವೆಯನ್ನು ಸೇರಿಸು"</string>
diff --git a/packages/PrintSpooler/res/values-ko/strings.xml b/packages/PrintSpooler/res/values-ko/strings.xml
index 1ccd25a..f1a4869 100644
--- a/packages/PrintSpooler/res/values-ko/strings.xml
+++ b/packages/PrintSpooler/res/values-ko/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"모든 프린터…"</string>
<string name="print_dialog" msgid="32628687461331979">"인쇄 대화상자"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"전체 <xliff:g id="PAGE_COUNT">%2$d</xliff:g>페이지 중 현재 <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>페이지"</string>
+ <string name="summary_template" msgid="8899734908625669193">"요약, 매수 <xliff:g id="COPIES">%1$s</xliff:g>, 용지 크기 <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"펼치기 핸들"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"접기 핸들"</string>
+ <string name="print_button" msgid="645164566271246268">"인쇄"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF에 저장"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"인쇄 옵션 펼침"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"인쇄 옵션 접힘"</string>
<string name="search" msgid="5421724265322228497">"검색"</string>
<string name="all_printers_label" msgid="3178848870161526399">"모든 프린터"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"서비스 추가"</string>
diff --git a/packages/PrintSpooler/res/values-ky-rKG/strings.xml b/packages/PrintSpooler/res/values-ky-rKG/strings.xml
index f60f994..602f660 100644
--- a/packages/PrintSpooler/res/values-ky-rKG/strings.xml
+++ b/packages/PrintSpooler/res/values-ky-rKG/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Бардык принтерлер…"</string>
<string name="print_dialog" msgid="32628687461331979">"Басуу баарлашуусу"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> ичинен <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>-бет"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Корутунду, <xliff:g id="COPIES">%1$s</xliff:g> көчүрмө, барак өлчөмү <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Тутканы жаюу"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Тутканы жыйноо"</string>
+ <string name="print_button" msgid="645164566271246268">"Басуу"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF\'ке сактоо"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Басып чыгаруу параметрлери жайылды"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Басып чыгаруу параметрлери жыйналды"</string>
<string name="search" msgid="5421724265322228497">"Издөө"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Бардык принтерлер"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Кызматты кошуу"</string>
diff --git a/packages/PrintSpooler/res/values-lo-rLA/strings.xml b/packages/PrintSpooler/res/values-lo-rLA/strings.xml
index 555f92f..349ac31 100644
--- a/packages/PrintSpooler/res/values-lo-rLA/strings.xml
+++ b/packages/PrintSpooler/res/values-lo-rLA/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"ທຸກເຄື່ອງພິມ..."</string>
<string name="print_dialog" msgid="32628687461331979">"ໜ້າຕ່າງການພິມ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"ໜ້າທີ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ໃນ <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"ສະ​ຫຼຸບ​, ສໍາ​ເນົາ <xliff:g id="COPIES">%1$s</xliff:g> , ຂະ​ຫນາດ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ຂະ​ຫຍາຍ​ໂຕ​ຈັບ"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ປິດ​ໂຕ​ຈັດ​ການ"</string>
+ <string name="print_button" msgid="645164566271246268">"ພິມ"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"ບັນທຶກເປັນ PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ຕົວ​ເລືອກ​ການ​ພິມຖືກ​ເປີດແລ້ວ"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ຕົວ​ເລືອກ​ການ​ພິມຖືກ​ປິດແລ້ວ"</string>
<string name="search" msgid="5421724265322228497">"ຊອກຫາ"</string>
<string name="all_printers_label" msgid="3178848870161526399">"ທຸກເຄື່ອງພິມ"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"ເພີ່ມບໍລິການ"</string>
diff --git a/packages/PrintSpooler/res/values-lt/strings.xml b/packages/PrintSpooler/res/values-lt/strings.xml
index 51bcde3..6262a15 100644
--- a/packages/PrintSpooler/res/values-lt/strings.xml
+++ b/packages/PrintSpooler/res/values-lt/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Visi spausdintuvai…"</string>
<string name="print_dialog" msgid="32628687461331979">"Spausdinimo dialogo langas"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> psl. iš <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Suvestinė, kopijų: <xliff:g id="COPIES">%1$s</xliff:g>, popieriaus dydis: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Išskleidimo rankenėlė"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Sutraukimo rankenėlė"</string>
+ <string name="print_button" msgid="645164566271246268">"Spausdinti"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Išsaugoti kaip PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Spausdinimo parinktys išskleistos"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Spausdinimo parinktys sutrauktos"</string>
<string name="search" msgid="5421724265322228497">"Ieškoti"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Visi spausdintuvai"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Pridėti paslaugą"</string>
diff --git a/packages/PrintSpooler/res/values-lv/strings.xml b/packages/PrintSpooler/res/values-lv/strings.xml
index 9cddeab..3a60ee5 100644
--- a/packages/PrintSpooler/res/values-lv/strings.xml
+++ b/packages/PrintSpooler/res/values-lv/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Visi printeri…"</string>
<string name="print_dialog" msgid="32628687461331979">"Drukāšanas dialoglodziņš"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. no <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. lapa no <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Kopsavilkums, kopiju skaits: <xliff:g id="COPIES">%1$s</xliff:g>, papīra izmērs: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Izvēršanas turis"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Sakļaušanas turis"</string>
+ <string name="print_button" msgid="645164566271246268">"Drukāt"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Saglabāt kā PDF failu"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Drukāšanas opcijas ir izvērstas."</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Drukāšanas opcijas ir sakļautas."</string>
<string name="search" msgid="5421724265322228497">"Meklēt"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Visi printeri"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Pievienot pakalpojumu"</string>
diff --git a/packages/PrintSpooler/res/values-mk-rMK/strings.xml b/packages/PrintSpooler/res/values-mk-rMK/strings.xml
index eee7c6b..91b5763 100644
--- a/packages/PrintSpooler/res/values-mk-rMK/strings.xml
+++ b/packages/PrintSpooler/res/values-mk-rMK/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Сите печатачи..."</string>
<string name="print_dialog" msgid="32628687461331979">"Дијалог рамка Печати"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Страница <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> од <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Краток преглед, копии <xliff:g id="COPIES">%1$s</xliff:g>, големина на хартија <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Рачка за прикажување"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Рачка за сокривање"</string>
+ <string name="print_button" msgid="645164566271246268">"Печати"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Зачувај во PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Опциите на печатачот се прикажани"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Опциите на печатачот се сокриени"</string>
<string name="search" msgid="5421724265322228497">"Пребарај"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Сите печатачи"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Додај услуга"</string>
diff --git a/packages/PrintSpooler/res/values-ml-rIN/strings.xml b/packages/PrintSpooler/res/values-ml-rIN/strings.xml
index 9093af1..a06ca7d 100644
--- a/packages/PrintSpooler/res/values-ml-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-ml-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"എല്ലാ പ്രിന്ററുകളും..."</string>
<string name="print_dialog" msgid="32628687461331979">"പ്രിന്റ് സംഭാഷണം"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g> പേജ്"</string>
+ <string name="summary_template" msgid="8899734908625669193">"സംഗ്രഹം, പകർപ്പുകൾ <xliff:g id="COPIES">%1$s</xliff:g>, പേപ്പർ വലുപ്പം <xliff:g id="PAPER_SIZE">%2$s</xliff:g> എന്നിവ"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"വിപുലീകരണം കൈകാര്യം ചെയ്യുക"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ചുരുക്കുന്നത് കൈകാര്യം ചെയ്യുക"</string>
+ <string name="print_button" msgid="645164566271246268">"പ്രിന്റുചെയ്യുക"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF-ൽ സംരക്ഷിക്കുക"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"പ്രിന്റ് ചെയ്യാനുള്ള ഓപ്‌ഷനുകൾ വിപുലീകരിച്ചു"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"പ്രിന്റ് ചെയ്യാനുള്ള ഓപ്‌ഷനുകൾ ചുരുക്കി"</string>
<string name="search" msgid="5421724265322228497">"തിരയൽ"</string>
<string name="all_printers_label" msgid="3178848870161526399">"എല്ലാ പ്രിന്ററുകളും"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"സേവനം ചേർക്കുക"</string>
diff --git a/packages/PrintSpooler/res/values-mn-rMN/strings.xml b/packages/PrintSpooler/res/values-mn-rMN/strings.xml
index 5239ff5..022adda 100644
--- a/packages/PrintSpooler/res/values-mn-rMN/strings.xml
+++ b/packages/PrintSpooler/res/values-mn-rMN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Бүх принтерүүд…"</string>
<string name="print_dialog" msgid="32628687461331979">"Хэвлэх диалоги"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g>-с <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> хуудас"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Дүгнэлт, <xliff:g id="COPIES">%1$s</xliff:g> хувь, цаасны хэмжээ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Бариулыг дэлгэх"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Бариулыг хумих"</string>
+ <string name="print_button" msgid="645164566271246268">"Хэвлэх"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF-т хадгалах"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Хэвлэх тохируулгыг дэлгэсэн"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Хэвлэх тохируулгыг хумисан"</string>
<string name="search" msgid="5421724265322228497">"Хайх"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Бүх принтерүүд"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Үйлчилгээ нэмэх"</string>
diff --git a/packages/PrintSpooler/res/values-mr-rIN/strings.xml b/packages/PrintSpooler/res/values-mr-rIN/strings.xml
index 6afe957..1fade66 100644
--- a/packages/PrintSpooler/res/values-mr-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-mr-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"सर्व प्रिंटर..."</string>
<string name="print_dialog" msgid="32628687461331979">"मुद्रण संवाद"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> पैकी <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> पृष्‍ठ"</string>
+ <string name="summary_template" msgid="8899734908625669193">"सारांश, प्रती <xliff:g id="COPIES">%1$s</xliff:g>, कागद आकार <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"विस्तृत करण्याचे हँडल"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"संक्षिप्त करण्याचे हँडल"</string>
+ <string name="print_button" msgid="645164566271246268">"मुद्रण करा"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF वर जतन करा"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"मुद्रण पर्याय विस्तृत झाले"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"मुद्रण पर्याय संक्षिप्त झाले"</string>
<string name="search" msgid="5421724265322228497">"शोध"</string>
<string name="all_printers_label" msgid="3178848870161526399">"सर्व प्रिंटर"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"सेवा जोडा"</string>
diff --git a/packages/PrintSpooler/res/values-ms-rMY/strings.xml b/packages/PrintSpooler/res/values-ms-rMY/strings.xml
index f327334..a392b76 100644
--- a/packages/PrintSpooler/res/values-ms-rMY/strings.xml
+++ b/packages/PrintSpooler/res/values-ms-rMY/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Semua pencetak..."</string>
<string name="print_dialog" msgid="32628687461331979">"Dialog cetakan"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Halaman <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> daripada <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Ringkasan, salinan <xliff:g id="COPIES">%1$s</xliff:g>, saiz kertas <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Pemegang untuk mengembangkan"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Pemegang untuk meruntuhkan"</string>
+ <string name="print_button" msgid="645164566271246268">"Cetak"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Simpan ke PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Pilihan cetakan dikembangkan"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Pilihan cetakan diruntuhkan"</string>
<string name="search" msgid="5421724265322228497">"Cari"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Semua pencetak"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan perkhidmatan"</string>
diff --git a/packages/PrintSpooler/res/values-my-rMM/strings.xml b/packages/PrintSpooler/res/values-my-rMM/strings.xml
index 04da765..d6eb380 100644
--- a/packages/PrintSpooler/res/values-my-rMM/strings.xml
+++ b/packages/PrintSpooler/res/values-my-rMM/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"စာထုတ်စက် အားလုံး"</string>
<string name="print_dialog" msgid="32628687461331979">"စာထုတ်ရန် အချက်ပြခြင်း"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g>ထဲက စာမျက်နှာ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"အကျဉ်းချုပ်၊ ကော်ပီများ<xliff:g id="COPIES">%1$s</xliff:g>၊ စက္ကူ ဆိုက် <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ချဲ့ရန် လက်"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ခေါက်ရန် လက်"</string>
+ <string name="print_button" msgid="645164566271246268">"စာထုတ်ရန်"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF သို့ သိမ်းဆည်းခဲ့"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ပရင့်ထုတ် ရွေးစရာများကို ချဲ့ထား"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ပရင့်ထုတ် ရွေးစရာများကို ခေါက်ထား"</string>
<string name="search" msgid="5421724265322228497">"ရှာဖွေခြင်း"</string>
<string name="all_printers_label" msgid="3178848870161526399">"စာထုတ်စက် အားလုံး"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"ဆားဗစ် အသစ်ထည့်ရန်"</string>
diff --git a/packages/PrintSpooler/res/values-nb/strings.xml b/packages/PrintSpooler/res/values-nb/strings.xml
index 2380a2c..bf11068 100644
--- a/packages/PrintSpooler/res/values-nb/strings.xml
+++ b/packages/PrintSpooler/res/values-nb/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alle skrivere"</string>
<string name="print_dialog" msgid="32628687461331979">"Skriv ut dialog"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Side <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> av <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Oppsummering, <xliff:g id="COPIES">%1$s</xliff:g> kopier, papirstørrelse <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Håndtaket for å utvide"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Håndtaket for å skjule"</string>
+ <string name="print_button" msgid="645164566271246268">"Skriv ut"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Lagre som PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Skriveralternativene er utvidet"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Skriveralternativene er skjult"</string>
<string name="search" msgid="5421724265322228497">"Søk"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alle skrivere"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Legg til tjeneste"</string>
diff --git a/packages/PrintSpooler/res/values-ne-rNP/strings.xml b/packages/PrintSpooler/res/values-ne-rNP/strings.xml
index 110f698..eb97530 100644
--- a/packages/PrintSpooler/res/values-ne-rNP/strings.xml
+++ b/packages/PrintSpooler/res/values-ne-rNP/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"सबै प्रिन्टरहरू..."</string>
<string name="print_dialog" msgid="32628687461331979">"सम्वाद छाप्नुहोस्"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> को <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> पृष्ठ"</string>
+ <string name="summary_template" msgid="8899734908625669193">"सारांश, प्रतिहरू <xliff:g id="COPIES">%1$s</xliff:g> , कागज आकार <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ह्यान्डल विस्तार गर्नुहोस्"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ह्यान्डल कोल्याप्स गर्नुहोस्"</string>
+ <string name="print_button" msgid="645164566271246268">"प्रिन्ट गर्नुहोस्"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF सुरक्षित गर्नुहोस्"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"विस्तार गरेका विकल्पहरू प्रिन्ट गर्नुहोस्"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"कोल्याप्स गरेका विकल्पहरू प्रिन्ट गर्नुहोस्"</string>
<string name="search" msgid="5421724265322228497">"खोज्नुहोस्"</string>
<string name="all_printers_label" msgid="3178848870161526399">"सबै प्रिन्टरहरू"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"सेवा थप्नुहोस्"</string>
diff --git a/packages/PrintSpooler/res/values-nl/strings.xml b/packages/PrintSpooler/res/values-nl/strings.xml
index ca3654f..5ea52a0 100644
--- a/packages/PrintSpooler/res/values-nl/strings.xml
+++ b/packages/PrintSpooler/res/values-nl/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alle printers…"</string>
<string name="print_dialog" msgid="32628687461331979">"Afdrukdialoogvenster"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Pagina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> van <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Overzicht, <xliff:g id="COPIES">%1$s</xliff:g> exemplaren, papierformaat <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Handgreep voor uitvouwen"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Handgreep voor samenvouwen"</string>
+ <string name="print_button" msgid="645164566271246268">"Afdrukken"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Opslaan naar pdf"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Afdrukopties uitgevouwen"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Afdrukopties samengevouwen"</string>
<string name="search" msgid="5421724265322228497">"Zoeken"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alle printers"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Service toevoegen"</string>
diff --git a/packages/PrintSpooler/res/values-pl/strings.xml b/packages/PrintSpooler/res/values-pl/strings.xml
index 6835428..609e6e9 100644
--- a/packages/PrintSpooler/res/values-pl/strings.xml
+++ b/packages/PrintSpooler/res/values-pl/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Wszystkie drukarki…"</string>
<string name="print_dialog" msgid="32628687461331979">"Okno drukowania"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Strona <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> z <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Posumowanie, liczba kopii <xliff:g id="COPIES">%1$s</xliff:g>, rozmiar papieru <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Uchwyt rozwijający"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Uchwyt zwijający"</string>
+ <string name="print_button" msgid="645164566271246268">"Drukuj"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Zapisz jako PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opcje wydruku są rozwinięte"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opcje wydruku są zwinięte"</string>
<string name="search" msgid="5421724265322228497">"Szukaj"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Wszystkie drukarki"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Dodaj usługę"</string>
diff --git a/packages/PrintSpooler/res/values-pt-rPT/strings.xml b/packages/PrintSpooler/res/values-pt-rPT/strings.xml
index ec6d162..d115b29 100644
--- a/packages/PrintSpooler/res/values-pt-rPT/strings.xml
+++ b/packages/PrintSpooler/res/values-pt-rPT/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Todas as impressoras..."</string>
<string name="print_dialog" msgid="32628687461331979">"Caixa de diálogo de impressão"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resumo, cópias <xliff:g id="COPIES">%1$s</xliff:g>, tamanho do papel <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Expandir alça"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Fechar alça"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Guardar como PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opções de impressão expandidas"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opções de impressão fechadas"</string>
<string name="search" msgid="5421724265322228497">"Pesquisar"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string>
diff --git a/packages/PrintSpooler/res/values-pt/strings.xml b/packages/PrintSpooler/res/values-pt/strings.xml
index 8ef07a8..b2541df 100644
--- a/packages/PrintSpooler/res/values-pt/strings.xml
+++ b/packages/PrintSpooler/res/values-pt/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Todas as impressoras…"</string>
<string name="print_dialog" msgid="32628687461331979">"Diálogo de impressão"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Resumo, cópias <xliff:g id="COPIES">%1$s</xliff:g>, tamanho do papel <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Expandir alça"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Recolher alça"</string>
+ <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Salvar como PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Opções de impressão expandidas"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Opções de impressão recolhidas"</string>
<string name="search" msgid="5421724265322228497">"Pesquisar"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string>
diff --git a/packages/PrintSpooler/res/values-ro/strings.xml b/packages/PrintSpooler/res/values-ro/strings.xml
index 64e1dc9..3f5cb3c 100644
--- a/packages/PrintSpooler/res/values-ro/strings.xml
+++ b/packages/PrintSpooler/res/values-ro/strings.xml
@@ -37,6 +37,21 @@
<string name="all_printers" msgid="5018829726861876202">"Toate imprimantele..."</string>
<string name="print_dialog" msgid="32628687461331979">"Caseta de dialog de printare"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <!-- no translation found for page_description_template (6831239682256197161) -->
+ <skip />
+ <!-- no translation found for summary_template (8899734908625669193) -->
+ <skip />
+ <!-- no translation found for expand_handle (7282974448109280522) -->
+ <skip />
+ <!-- no translation found for collapse_handle (6886637989442507451) -->
+ <skip />
+ <string name="print_button" msgid="645164566271246268">"Printați"</string>
+ <!-- no translation found for savetopdf_button (2976186791686924743) -->
+ <skip />
+ <!-- no translation found for print_options_expanded (6944679157471691859) -->
+ <skip />
+ <!-- no translation found for print_options_collapsed (7455930445670414332) -->
+ <skip />
<string name="search" msgid="5421724265322228497">"Căutați"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Toate imprimantele"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Adăugați un serviciu"</string>
diff --git a/packages/PrintSpooler/res/values-ru/strings.xml b/packages/PrintSpooler/res/values-ru/strings.xml
index 6abc571..c2a19bb 100644
--- a/packages/PrintSpooler/res/values-ru/strings.xml
+++ b/packages/PrintSpooler/res/values-ru/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Все принтеры"</string>
<string name="print_dialog" msgid="32628687461331979">"Диалоговое окно печати"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Страница <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. Всего: <xliff:g id="PAGE_COUNT">%2$d</xliff:g>."</string>
+ <string name="summary_template" msgid="8899734908625669193">"Общие сведения. Количество копий: <xliff:g id="COPIES">%1$s</xliff:g>. Размер бумаги: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>."</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Развернуть."</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Свернуть."</string>
+ <string name="print_button" msgid="645164566271246268">"Печать"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Сохранить в формате PDF."</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Параметры печати показаны."</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Параметры печати скрыты."</string>
<string name="search" msgid="5421724265322228497">"Поиск"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Все принтеры"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Добавить службу печати"</string>
diff --git a/packages/PrintSpooler/res/values-si-rLK/strings.xml b/packages/PrintSpooler/res/values-si-rLK/strings.xml
index f6cc5e2..386ce8d 100644
--- a/packages/PrintSpooler/res/values-si-rLK/strings.xml
+++ b/packages/PrintSpooler/res/values-si-rLK/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"සියලු මුද්‍රණ යන්ත්‍ර…"</string>
<string name="print_dialog" msgid="32628687461331979">"මුද්‍රණ සංවාද කොටුව"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"පිටු <xliff:g id="PAGE_COUNT">%2$d</xliff:g> න් <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"සාරාංශය, පිටපත් <xliff:g id="COPIES">%1$s</xliff:g>, පිටුවේ ප්‍රමණය <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"විහිදන මිට"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"හකුළන මිට"</string>
+ <string name="print_button" msgid="645164566271246268">"මුද්‍රණය කරන්න"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF වෙත සුරකින්න"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"විහිදන ලද විකල්ප මුද්‍රණය කරන්න"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"හකුළන ලද විකල්ප මුද්‍රණය කරන්න"</string>
<string name="search" msgid="5421724265322228497">"සෙවීම"</string>
<string name="all_printers_label" msgid="3178848870161526399">"සියලු මුද්‍රණ යන්ත්‍ර"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"සේවාව එක් කිරීම"</string>
diff --git a/packages/PrintSpooler/res/values-sk/strings.xml b/packages/PrintSpooler/res/values-sk/strings.xml
index 439aae4..5be2034 100644
--- a/packages/PrintSpooler/res/values-sk/strings.xml
+++ b/packages/PrintSpooler/res/values-sk/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Všetky tlačiarne..."</string>
<string name="print_dialog" msgid="32628687461331979">"Dialógové okno tlače"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Stránka <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> z <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Súhrn, počet kópií: <xliff:g id="COPIES">%1$s</xliff:g>, veľkosť papiera: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Obslužný nástroj na rozbalenie"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Obslužný nástroj na zbalenie"</string>
+ <string name="print_button" msgid="645164566271246268">"Tlačiť"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Uložiť do súboru PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Možnosti tlače sú rozbalené"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Možnosti tlače sú zbalené"</string>
<string name="search" msgid="5421724265322228497">"VYHĽADÁVANIE"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Všetky tlačiarne"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Pridať službu"</string>
diff --git a/packages/PrintSpooler/res/values-sl/strings.xml b/packages/PrintSpooler/res/values-sl/strings.xml
index c991444..ee15103 100644
--- a/packages/PrintSpooler/res/values-sl/strings.xml
+++ b/packages/PrintSpooler/res/values-sl/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Vsi tiskalniki …"</string>
<string name="print_dialog" msgid="32628687461331979">"Pogovorno okno za tiskanje"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Stran <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> od <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Povzetek, št. kopij <xliff:g id="COPIES">%1$s</xliff:g>, velikost papirja <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Ročica za razširitev"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Ročica za strnitev"</string>
+ <string name="print_button" msgid="645164566271246268">"Natisni"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Shrani v PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Možnosti tiskanja razširjene"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Možnosti tiskanja strnjene"</string>
<string name="search" msgid="5421724265322228497">"Iskanje"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Vsi tiskalniki"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Dodaj storitev"</string>
diff --git a/packages/PrintSpooler/res/values-sr/strings.xml b/packages/PrintSpooler/res/values-sr/strings.xml
index de0dfac..6ca94aa 100644
--- a/packages/PrintSpooler/res/values-sr/strings.xml
+++ b/packages/PrintSpooler/res/values-sr/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Сви штампачи…"</string>
<string name="print_dialog" msgid="32628687461331979">"Дијалог за штампање"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. страница од <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Резиме, копије (<xliff:g id="COPIES">%1$s</xliff:g>), величина папира <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Регулатор за ширење"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Регулатор за скупљање"</string>
+ <string name="print_button" msgid="645164566271246268">"Штампај"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Сачувај у PDF-у"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Опције штампања су проширене"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Опције штампања су скупљене"</string>
<string name="search" msgid="5421724265322228497">"Претражи"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Сви штампачи"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Додај услугу"</string>
diff --git a/packages/PrintSpooler/res/values-sv/strings.xml b/packages/PrintSpooler/res/values-sv/strings.xml
index 8a0ef60..4c439be 100644
--- a/packages/PrintSpooler/res/values-sv/strings.xml
+++ b/packages/PrintSpooler/res/values-sv/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Alla skrivare ..."</string>
<string name="print_dialog" msgid="32628687461331979">"Dialogrutan Skriv ut"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Sidan <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> av <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Sammanfattning, antal kopior <xliff:g id="COPIES">%1$s</xliff:g>, pappersformat <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Handtag som expanderar utskriftsalternativen"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Handtag som komprimerar utskriftsalternativen"</string>
+ <string name="print_button" msgid="645164566271246268">"Skriv ut"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Spara som PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Utskriftsalternativen har expanderats"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Utskriftsalternativen har komprimerats"</string>
<string name="search" msgid="5421724265322228497">"Sök"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Alla skrivare"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Lägg till tjänst"</string>
diff --git a/packages/PrintSpooler/res/values-sw/strings.xml b/packages/PrintSpooler/res/values-sw/strings.xml
index 0116b67..e454704 100644
--- a/packages/PrintSpooler/res/values-sw/strings.xml
+++ b/packages/PrintSpooler/res/values-sw/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Printa zote..."</string>
<string name="print_dialog" msgid="32628687461331979">"Chapisha mazungumzo"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Ukurasa wa <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> kati ya <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Muhtasari, nakala <xliff:g id="COPIES">%1$s</xliff:g>, ukubwa wa karatasi <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Panua kishikio"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Kunja kishikio"</string>
+ <string name="print_button" msgid="645164566271246268">"Chapisha"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Hifadhi kwenye PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Chaguo za kuchapisha zimepanuliwa"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Chaguo za kuchapisha zimekunjwa"</string>
<string name="search" msgid="5421724265322228497">"Tafuta"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Printa zote"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Ongeza huduma"</string>
diff --git a/packages/PrintSpooler/res/values-ta-rIN/strings.xml b/packages/PrintSpooler/res/values-ta-rIN/strings.xml
index 39eead8..0421bd6 100644
--- a/packages/PrintSpooler/res/values-ta-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-ta-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"எல்லா அச்சுப்பொறிகளும்…"</string>
<string name="print_dialog" msgid="32628687461331979">"அச்சிடல் செய்தி"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"பக்கம்: <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"சுருக்கம், நகல்கள் <xliff:g id="COPIES">%1$s</xliff:g>, தாள் அளவு <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ஹேண்டிலை விரிவாக்கு"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ஹேண்டிலைச் சுருக்கு"</string>
+ <string name="print_button" msgid="645164566271246268">"அச்சிடு"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF ஆகச் சேமி"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"அச்சு விருப்பங்கள் விரிவாக்கப்பட்டன"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"அச்சு விருப்பங்கள் சுருக்கப்பட்டன"</string>
<string name="search" msgid="5421724265322228497">"தேடு"</string>
<string name="all_printers_label" msgid="3178848870161526399">"எல்லா அச்சுப்பொறிகளும்"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"சேவையைச் சேர்"</string>
diff --git a/packages/PrintSpooler/res/values-te-rIN/strings.xml b/packages/PrintSpooler/res/values-te-rIN/strings.xml
index 3ad4d1d..edb6e60 100644
--- a/packages/PrintSpooler/res/values-te-rIN/strings.xml
+++ b/packages/PrintSpooler/res/values-te-rIN/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"అన్ని ప్రింటర్‌లు…"</string>
<string name="print_dialog" msgid="32628687461331979">"ముద్రణ డైలాగ్"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g>లో <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>వ పేజీ"</string>
+ <string name="summary_template" msgid="8899734908625669193">"సారాంశం, కాపీలు <xliff:g id="COPIES">%1$s</xliff:g>, కాగితం పరిమాణం <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"విస్తరణ హ్యాండిల్"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"కుదింపు హ్యాండిల్"</string>
+ <string name="print_button" msgid="645164566271246268">"ముద్రించు"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF వలె సేవ్ చేయి"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ముద్రణ ఎంపికలు విస్తరించబడ్డాయి"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ముద్రణ ఎంపికలు కుదించబడ్డాయి"</string>
<string name="search" msgid="5421724265322228497">"శోధించు"</string>
<string name="all_printers_label" msgid="3178848870161526399">"అన్ని ప్రింటర్‌లు"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"సేవను జోడించు"</string>
diff --git a/packages/PrintSpooler/res/values-th/strings.xml b/packages/PrintSpooler/res/values-th/strings.xml
index d1d45fe..cfffa0b 100644
--- a/packages/PrintSpooler/res/values-th/strings.xml
+++ b/packages/PrintSpooler/res/values-th/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"เครื่องพิมพ์ทั้งหมด…"</string>
<string name="print_dialog" msgid="32628687461331979">"ช่องโต้ตอบการพิมพ์"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"หน้า <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> จาก <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"สรุป สำเนา <xliff:g id="COPIES">%1$s</xliff:g>, ขนาดกระดาษ <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"ปุ่มขยาย"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"ปุ่มยุบ"</string>
+ <string name="print_button" msgid="645164566271246268">"พิมพ์"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"บันทึกไปยัง PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"ขยายตัวเลือกการพิมพ์แล้ว"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"ยุบตัวเลือกการพิมพ์แล้ว"</string>
<string name="search" msgid="5421724265322228497">"ค้นหา"</string>
<string name="all_printers_label" msgid="3178848870161526399">"เครื่องพิมพ์ทั้งหมด"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"เพิ่มบริการ"</string>
diff --git a/packages/PrintSpooler/res/values-tl/strings.xml b/packages/PrintSpooler/res/values-tl/strings.xml
index 70365e7..dfb0450 100644
--- a/packages/PrintSpooler/res/values-tl/strings.xml
+++ b/packages/PrintSpooler/res/values-tl/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Lahat ng printer…"</string>
<string name="print_dialog" msgid="32628687461331979">"Dialog ng pag-print"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ng <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Buod, mga kopya <xliff:g id="COPIES">%1$s</xliff:g>, laki ng papel <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Palakihin ang handle"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Paliitin ang handle"</string>
+ <string name="print_button" msgid="645164566271246268">"I-print"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"I-save sa PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Pinalaki ang mga opsyon sa pag-print"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Pinaliit ang mga opsyon sa pag-print"</string>
<string name="search" msgid="5421724265322228497">"Hanapin"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Lahat ng printer"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Magdagdag ng serbisyo"</string>
diff --git a/packages/PrintSpooler/res/values-tr/strings.xml b/packages/PrintSpooler/res/values-tr/strings.xml
index ea803f6..50befba 100644
--- a/packages/PrintSpooler/res/values-tr/strings.xml
+++ b/packages/PrintSpooler/res/values-tr/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Tüm yazıcılar…"</string>
<string name="print_dialog" msgid="32628687461331979">"Yazdırma iletişim kutusu"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Sayfa <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Özet. Kopya sayısı: <xliff:g id="COPIES">%1$s</xliff:g>, kağıt boyutu: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Genişletme tutacağı"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Daraltma tutacağı"</string>
+ <string name="print_button" msgid="645164566271246268">"Yazdır"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF\'ye kaydet"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Yazdırma seçenekleri genişletildi"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Yazdırma seçenekleri daraltıldı"</string>
<string name="search" msgid="5421724265322228497">"Ara"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Tüm yazıcılar"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Hizmet ekle"</string>
diff --git a/packages/PrintSpooler/res/values-uk/strings.xml b/packages/PrintSpooler/res/values-uk/strings.xml
index 09af096..8a924e6 100644
--- a/packages/PrintSpooler/res/values-uk/strings.xml
+++ b/packages/PrintSpooler/res/values-uk/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Усі принтери…"</string>
<string name="print_dialog" msgid="32628687461331979">"Діалогове вікно друку"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> з <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Сторінка <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> з <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Підсумок – копій: <xliff:g id="COPIES">%1$s</xliff:g>, розмір паперу: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Кнопка розгортання"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Кнопка згортання"</string>
+ <string name="print_button" msgid="645164566271246268">"Друк"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Зберегти у форматі PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Параметри друку розгорнуто"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Параметри друку згорнуто"</string>
<string name="search" msgid="5421724265322228497">"Пошук"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Усі принтери"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Додати службу"</string>
diff --git a/packages/PrintSpooler/res/values-ur-rPK/strings.xml b/packages/PrintSpooler/res/values-ur-rPK/strings.xml
index 1ff57a7..722d027 100644
--- a/packages/PrintSpooler/res/values-ur-rPK/strings.xml
+++ b/packages/PrintSpooler/res/values-ur-rPK/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"سبھی پرنٹرز…"</string>
<string name="print_dialog" msgid="32628687461331979">"پرنٹ ڈائلاگ"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"صفحہ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> از <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"خلاصہ، کاپیاں <xliff:g id="COPIES">%1$s</xliff:g>، کاغذ کا سائز <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"پھیلانے والا ہینڈل"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"سکیڑنے والا ہینڈل"</string>
+ <string name="print_button" msgid="645164566271246268">"پرنٹ کریں"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"‏PDF میں محفوظ کریں"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"پرنٹ کے اختیارات پھیلا دیے گئے"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"پرنٹ کے اختیارات سکیڑ دیے گئے"</string>
<string name="search" msgid="5421724265322228497">"تلاش کریں"</string>
<string name="all_printers_label" msgid="3178848870161526399">"سبھی پرنٹرز"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"سروس شامل کریں"</string>
diff --git a/packages/PrintSpooler/res/values-uz-rUZ/strings.xml b/packages/PrintSpooler/res/values-uz-rUZ/strings.xml
index 8ab3410..f62728f 100644
--- a/packages/PrintSpooler/res/values-uz-rUZ/strings.xml
+++ b/packages/PrintSpooler/res/values-uz-rUZ/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Barcha printerlar…"</string>
<string name="print_dialog" msgid="32628687461331979">"Chop etish oynasi"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Sahifa: <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Xulosa: nusxalar soni – <xliff:g id="COPIES">%1$s</xliff:g>, qog‘oz o‘lchami – <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Dastakni yoyish"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Dastakni yig‘ish"</string>
+ <string name="print_button" msgid="645164566271246268">"Chop etish"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF sifatida saqlash"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Chop qilish tanlamalari yoyildi"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Chop qilish tanlamalari yig‘ildi"</string>
<string name="search" msgid="5421724265322228497">"Izlash"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Barcha printerlar"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Xizmat qo‘shish"</string>
diff --git a/packages/PrintSpooler/res/values-vi/strings.xml b/packages/PrintSpooler/res/values-vi/strings.xml
index 4c0e6c9..fa0d26e 100644
--- a/packages/PrintSpooler/res/values-vi/strings.xml
+++ b/packages/PrintSpooler/res/values-vi/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Tất cả máy in…"</string>
<string name="print_dialog" msgid="32628687461331979">"Hộp thoại in"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Trang <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Tóm tắt, số bản sao <xliff:g id="COPIES">%1$s</xliff:g>, khổ giấy <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Mở rộng điều khiển"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Thu gọn điều khiển"</string>
+ <string name="print_button" msgid="645164566271246268">"In"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Lưu ở dạng PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Đã mở rộng các tùy chọn in"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Đã thu gọn các tùy chọn in"</string>
<string name="search" msgid="5421724265322228497">"Tìm kiếm"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Tất cả máy in"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Thêm dịch vụ"</string>
diff --git a/packages/PrintSpooler/res/values-zh-rCN/strings.xml b/packages/PrintSpooler/res/values-zh-rCN/strings.xml
index 1db47cf..7a000c5 100644
--- a/packages/PrintSpooler/res/values-zh-rCN/strings.xml
+++ b/packages/PrintSpooler/res/values-zh-rCN/strings.xml
@@ -37,6 +37,21 @@
<string name="all_printers" msgid="5018829726861876202">"所有打印机…"</string>
<string name="print_dialog" msgid="32628687461331979">"打印对话框"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <!-- no translation found for page_description_template (6831239682256197161) -->
+ <skip />
+ <!-- no translation found for summary_template (8899734908625669193) -->
+ <skip />
+ <!-- no translation found for expand_handle (7282974448109280522) -->
+ <skip />
+ <!-- no translation found for collapse_handle (6886637989442507451) -->
+ <skip />
+ <string name="print_button" msgid="645164566271246268">"打印"</string>
+ <!-- no translation found for savetopdf_button (2976186791686924743) -->
+ <skip />
+ <!-- no translation found for print_options_expanded (6944679157471691859) -->
+ <skip />
+ <!-- no translation found for print_options_collapsed (7455930445670414332) -->
+ <skip />
<string name="search" msgid="5421724265322228497">"搜索"</string>
<string name="all_printers_label" msgid="3178848870161526399">"所有打印机"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"添加服务"</string>
diff --git a/packages/PrintSpooler/res/values-zh-rHK/strings.xml b/packages/PrintSpooler/res/values-zh-rHK/strings.xml
index 9450d05..d2fa629 100644
--- a/packages/PrintSpooler/res/values-zh-rHK/strings.xml
+++ b/packages/PrintSpooler/res/values-zh-rHK/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"所有打印機…"</string>
<string name="print_dialog" msgid="32628687461331979">"列印對話方塊"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"第 <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> 頁,共 <xliff:g id="PAGE_COUNT">%2$d</xliff:g> 頁"</string>
+ <string name="summary_template" msgid="8899734908625669193">"摘要,<xliff:g id="COPIES">%1$s</xliff:g> 份,<xliff:g id="PAPER_SIZE">%2$s</xliff:g> 紙張大小"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"展開控點"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"收合控點"</string>
+ <string name="print_button" msgid="645164566271246268">"列印"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"儲存為 PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"列印選項已展開"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"列印選項已收合"</string>
<string name="search" msgid="5421724265322228497">"搜尋"</string>
<string name="all_printers_label" msgid="3178848870161526399">"所有打印機"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string>
diff --git a/packages/PrintSpooler/res/values-zh-rTW/strings.xml b/packages/PrintSpooler/res/values-zh-rTW/strings.xml
index cf452c9..eb28f8a 100644
--- a/packages/PrintSpooler/res/values-zh-rTW/strings.xml
+++ b/packages/PrintSpooler/res/values-zh-rTW/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"所有印表機…"</string>
<string name="print_dialog" msgid="32628687461331979">"印表機對話方塊"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"第 <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> 頁,共 <xliff:g id="PAGE_COUNT">%2$d</xliff:g> 頁"</string>
+ <string name="summary_template" msgid="8899734908625669193">"摘要,<xliff:g id="COPIES">%1$s</xliff:g> 份,<xliff:g id="PAPER_SIZE">%2$s</xliff:g> 紙張大小"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"展開控點"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"收合控點"</string>
+ <string name="print_button" msgid="645164566271246268">"列印"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"儲存為 PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"列印選項已展開"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"列印選項已收合"</string>
<string name="search" msgid="5421724265322228497">"搜尋"</string>
<string name="all_printers_label" msgid="3178848870161526399">"所有印表機"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string>
diff --git a/packages/PrintSpooler/res/values-zu/strings.xml b/packages/PrintSpooler/res/values-zu/strings.xml
index 1e08d8c..f8a27bc 100644
--- a/packages/PrintSpooler/res/values-zu/strings.xml
+++ b/packages/PrintSpooler/res/values-zu/strings.xml
@@ -37,6 +37,14 @@
<string name="all_printers" msgid="5018829726861876202">"Wonke amaphrinta…"</string>
<string name="print_dialog" msgid="32628687461331979">"Ingxoxo yokuphrinta"</string>
<string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="page_description_template" msgid="6831239682256197161">"Ikhasi <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> kwangu-<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
+ <string name="summary_template" msgid="8899734908625669193">"Isifinyezo, amakholi <xliff:g id="COPIES">%1$s</xliff:g>, usayisi wekhasi <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
+ <string name="expand_handle" msgid="7282974448109280522">"Nwebisa isibambi"</string>
+ <string name="collapse_handle" msgid="6886637989442507451">"Yephula isibambi"</string>
+ <string name="print_button" msgid="645164566271246268">"Phrinta"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"Londoloza ku-PDF"</string>
+ <string name="print_options_expanded" msgid="6944679157471691859">"Izinketho zokuphrinta zinwetshiwe"</string>
+ <string name="print_options_collapsed" msgid="7455930445670414332">"Izinketho zokuphrinta zephuliwe"</string>
<string name="search" msgid="5421724265322228497">"Sesha"</string>
<string name="all_printers_label" msgid="3178848870161526399">"Wonke amaphrinta"</string>
<string name="add_print_service_label" msgid="5356702546188981940">"Engeza isevisi"</string>
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index f1d2bee..9f9dc23 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -85,6 +85,7 @@
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
+ <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
<uses-permission android:name="android.permission.BLUETOOTH_STACK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.RETRIEVE_WINDOW_TOKEN" />
diff --git a/packages/Shell/res/values-cs/strings.xml b/packages/Shell/res/values-cs/strings.xml
index 10ef1a6..d321159 100644
--- a/packages/Shell/res/values-cs/strings.xml
+++ b/packages/Shell/res/values-cs/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="3701846017049540910">"Prostředí"</string>
+ <string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Bylo vytvořeno chybové hlášení"</string>
<string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Chcete-li hlášení chyby sdílet, přejeďte doleva."</string>
<string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Chybové hlášení můžete sdílet klepnutím."</string>
diff --git a/packages/Shell/res/values-lt/strings.xml b/packages/Shell/res/values-lt/strings.xml
index 914ef46..a78b1db 100644
--- a/packages/Shell/res/values-lt/strings.xml
+++ b/packages/Shell/res/values-lt/strings.xml
@@ -17,9 +17,9 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Apvalkalas"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Trikčių ataskaita užfiksuota"</string>
- <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Perbraukite kairėn, kad bendrintumėte trikties ataskaitą"</string>
- <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Palieskite, kad bendrintumėte trikčių ataskaitą"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Trikčių ataskaitose pateikiami duomenys iš įvairių sistemos žurnalo failų, įskaitant asmeninę ir privačią informaciją. Trikčių ataskaitas bendrinkite tik su patikimomis programomis ir žmonėmis."</string>
+ <string name="bugreport_finished_title" msgid="2293711546892863898">"Riktų ataskaita užfiksuota"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Perbraukite kairėn, kad bendrintumėte rikto ataskaitą"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Palieskite, kad bendrintumėte riktų ataskaitą"</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"Riktų ataskaitose pateikiami duomenys iš įvairių sistemos žurnalo failų, įskaitant asmeninę ir privačią informaciją. Riktų ataskaitas bendrinkite tik su patikimomis programomis ir žmonėmis."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Rodyti šį pranešimą kitą kartą"</string>
</resources>
diff --git a/packages/Shell/res/values-zh-rHK/strings.xml b/packages/Shell/res/values-zh-rHK/strings.xml
index 0d56d76..f2e034b 100644
--- a/packages/Shell/res/values-zh-rHK/strings.xml
+++ b/packages/Shell/res/values-zh-rHK/strings.xml
@@ -20,6 +20,6 @@
<string name="bugreport_finished_title" msgid="2293711546892863898">"已擷取錯誤報告"</string>
<string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"向左滑動即可分享錯誤報告"</string>
<string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"輕觸即可分享您的錯誤報告"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"錯誤報告中有來自系統各個記錄檔案的資料,包括個人和私人資料。請只與您信任的應用程式和用戶分享錯誤報告。"</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"錯誤報告中有來自系統各個記錄檔案的資料,包括個人和私人資料。請只與您信任的應用程式和使用者分享錯誤報告。"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"下次再顯示這則訊息"</string>
</resources>
diff --git a/packages/SystemUI/res/anim/search_launch_enter.xml b/packages/SystemUI/res/anim/search_launch_enter.xml
index f3333b7..19c0a95 100644
--- a/packages/SystemUI/res/anim/search_launch_enter.xml
+++ b/packages/SystemUI/res/anim/search_launch_enter.xml
@@ -17,16 +17,8 @@
*/
-->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:shareInterpolator="false" android:zAdjustment="top">
-
- <alpha android:fromAlpha="0" android:toAlpha="1.0"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@android:interpolator/decelerate_cubic"
- android:duration="300"/>
-
- <translate android:fromYDelta="100%" android:toYDelta="0"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@android:interpolator/decelerate_cubic"
- android:duration="300" />
-</set>
+<alpha xmlns:android="http://schemas.android.com/apk/res/android"
+ android:fromAlpha="0" android:toAlpha="1.0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@android:interpolator/decelerate_cubic"
+ android:duration="300"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/search_panel_card_bg.xml b/packages/SystemUI/res/drawable/search_panel_card_bg.xml
deleted file mode 100644
index c19f900..0000000
--- a/packages/SystemUI/res/drawable/search_panel_card_bg.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2014 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="@color/search_panel_card_color" />
- <corners android:radius="@dimen/notification_material_rounded_rect_radius" />
-</shape>
diff --git a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
index b5983bb..c2733fb 100644
--- a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
+++ b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
@@ -59,7 +59,6 @@
android:src="@drawable/ic_sysbar_back"
systemui:keyCode="4"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_back"
/>
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
@@ -69,7 +68,6 @@
systemui:keyCode="3"
systemui:keyRepeat="true"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_home"
/>
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
@@ -77,7 +75,6 @@
android:layout_height="match_parent"
android:src="@drawable/ic_sysbar_recent"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_recent"
/>
<Space
@@ -98,7 +95,6 @@
systemui:keyCode="82"
android:visibility="invisible"
android:contentDescription="@string/accessibility_menu"
- android:background="@drawable/ripple_drawable"
/>
<com.android.systemui.statusbar.policy.KeyButtonView
android:id="@+id/ime_switcher"
@@ -108,8 +104,7 @@
android:scaleType="centerInside"
android:src="@drawable/ic_ime_switcher_default"
android:visibility="invisible"
- android:contentDescription="@string/accessibility_ime_switch_button"
- android:background="@drawable/ripple_drawable" />
+ android:contentDescription="@string/accessibility_ime_switch_button" />
</FrameLayout>
</LinearLayout>
@@ -205,7 +200,6 @@
android:src="@drawable/ic_sysbar_back"
systemui:keyCode="4"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_back"
/>
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
@@ -215,7 +209,6 @@
systemui:keyCode="3"
systemui:keyRepeat="true"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_home"
/>
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
@@ -223,7 +216,6 @@
android:layout_height="match_parent"
android:src="@drawable/ic_sysbar_recent"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_recent"
/>
<Space
@@ -243,9 +235,7 @@
android:src="@drawable/ic_sysbar_menu"
systemui:keyCode="82"
android:visibility="invisible"
- android:contentDescription="@string/accessibility_menu"
- android:background="@drawable/ripple_drawable"
- />
+ android:contentDescription="@string/accessibility_menu" />
<com.android.systemui.statusbar.policy.KeyButtonView
android:id="@+id/ime_switcher"
android:layout_width="@dimen/navigation_extra_key_width"
@@ -254,8 +244,7 @@
android:src="@drawable/ic_ime_switcher_default"
android:visibility="invisible"
android:contentDescription="@string/accessibility_ime_switch_button"
- android:scaleType="centerInside"
- android:background="@drawable/ripple_drawable" />
+ android:scaleType="centerInside" />
</FrameLayout>
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml
index a165940..16027d9 100644
--- a/packages/SystemUI/res/layout/navigation_bar.xml
+++ b/packages/SystemUI/res/layout/navigation_bar.xml
@@ -55,7 +55,6 @@
systemui:keyCode="4"
android:layout_weight="0"
android:scaleType="center"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_back"
/>
<View
@@ -71,7 +70,6 @@
systemui:keyCode="3"
systemui:keyRepeat="false"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_home"
/>
<View
@@ -85,7 +83,6 @@
android:layout_height="match_parent"
android:src="@drawable/ic_sysbar_recent"
android:layout_weight="0"
- android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_recent"
/>
<FrameLayout
@@ -99,7 +96,6 @@
android:contentDescription="@string/accessibility_menu"
android:src="@drawable/ic_sysbar_menu"
android:visibility="invisible"
- android:background="@drawable/ripple_drawable"
systemui:keyCode="82" />
<com.android.systemui.statusbar.policy.KeyButtonView
@@ -109,8 +105,7 @@
android:contentDescription="@string/accessibility_ime_switch_button"
android:scaleType="centerInside"
android:src="@drawable/ic_ime_switcher_default"
- android:visibility="invisible"
- android:background="@drawable/ripple_drawable" />
+ android:visibility="invisible" />
</FrameLayout>
</LinearLayout>
@@ -202,8 +197,7 @@
android:contentDescription="@string/accessibility_ime_switch_button"
android:scaleType="centerInside"
android:src="@drawable/ic_ime_switcher_default"
- android:visibility="invisible"
- android:background="@drawable/ripple_drawable" />
+ android:visibility="invisible" />
<com.android.systemui.statusbar.policy.KeyButtonView
android:id="@+id/menu"
@@ -212,7 +206,6 @@
android:contentDescription="@string/accessibility_menu"
android:src="@drawable/ic_sysbar_menu_land"
android:visibility="invisible"
- android:background="@drawable/ripple_drawable"
systemui:keyCode="82" />
</FrameLayout>
@@ -222,7 +215,6 @@
android:src="@drawable/ic_sysbar_recent_land"
android:layout_weight="0"
android:contentDescription="@string/accessibility_recent"
- android:background="@drawable/ripple_drawable"
/>
<View
android:layout_height="match_parent"
@@ -238,7 +230,6 @@
systemui:keyRepeat="false"
android:layout_weight="0"
android:contentDescription="@string/accessibility_home"
- android:background="@drawable/ripple_drawable"
/>
<View
android:layout_height="match_parent"
@@ -254,7 +245,6 @@
systemui:keyCode="4"
android:layout_weight="0"
android:contentDescription="@string/accessibility_back"
- android:background="@drawable/ripple_drawable"
/>
<View
android:layout_height="40dp"
diff --git a/packages/SystemUI/res/layout/status_bar_search_panel.xml b/packages/SystemUI/res/layout/status_bar_search_panel.xml
index f025abd..e0520ef 100644
--- a/packages/SystemUI/res/layout/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout/status_bar_search_panel.xml
@@ -30,17 +30,14 @@
android:id="@+id/search_panel_scrim"
android:background="@drawable/search_panel_scrim" />
- <FrameLayout
- style="@style/SearchPanelCard"
- android:id="@+id/search_panel_card"
- android:background="@drawable/search_panel_card_bg"
- android:elevation="12dp">
+ <com.android.systemui.SearchPanelCircleView
+ style="@style/SearchPanelCircle"
+ android:id="@+id/search_panel_circle">
<ImageView
- style="@style/SearchPanelLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/search_logo" />
- </FrameLayout>
+ </com.android.systemui.SearchPanelCircleView>
</com.android.systemui.SearchPanelView>
diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml
index 9b772bd..a9e7735 100644
--- a/packages/SystemUI/res/values-land/dimens.xml
+++ b/packages/SystemUI/res/values-land/dimens.xml
@@ -39,7 +39,7 @@
<dimen name="status_bar_recents_app_icon_top_margin">8dp</dimen>
<!-- The side padding for the task stack as a percentage of the width. -->
- <item name="recents_stack_width_padding_percentage" format="float" type="dimen">0.2229</item>
+ <item name="recents_stack_width_padding_percentage" format="float" type="dimen">0.26</item>
<!-- Standard notification width + gravity -->
<dimen name="notification_panel_width">@dimen/standard_notification_panel_width</dimen>
diff --git a/packages/SystemUI/res/values-land/styles.xml b/packages/SystemUI/res/values-land/styles.xml
index 682998d..e58fbb1 100644
--- a/packages/SystemUI/res/values-land/styles.xml
+++ b/packages/SystemUI/res/values-land/styles.xml
@@ -19,18 +19,6 @@
<item name="android:layout_width">360dp</item>
</style>
- <style name="SearchPanelCard">
- <item name="android:layout_width">@dimen/search_panel_card_height</item>
- <item name="android:layout_height">match_parent</item>
- <item name="android:layout_marginTop">16dp</item>
- <item name="android:layout_marginBottom">16dp</item>
- <item name="android:layout_gravity">right</item>
- </style>
-
- <style name="SearchPanelLogo">
- <item name="android:layout_gravity">top|left</item>
- </style>
-
<style name="SearchPanelScrim">
<item name="android:layout_width">@dimen/search_panel_scrim_height</item>
<item name="android:layout_height">match_parent</item>
diff --git a/packages/SystemUI/res/values-sw600dp/styles.xml b/packages/SystemUI/res/values-sw600dp/styles.xml
index 9e5b1d6..156fa65 100644
--- a/packages/SystemUI/res/values-sw600dp/styles.xml
+++ b/packages/SystemUI/res/values-sw600dp/styles.xml
@@ -19,16 +19,6 @@
<item name="android:layout_width">480dp</item>
</style>
- <style name="SearchPanelCard">
- <item name="android:layout_width">550dp</item>
- <item name="android:layout_height">@dimen/search_panel_card_height</item>
- <item name="android:layout_gravity">center_horizontal|bottom</item>
- </style>
-
- <style name="SearchPanelLogo">
- <item name="android:layout_gravity">top|center_horizontal</item>
- </style>
-
<style name="SearchPanelScrim">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">@dimen/search_panel_scrim_height</item>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 6da811f..d5b0f17 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -109,7 +109,8 @@
<color name="notification_guts_text_color">#b2FFFFFF</color>
<color name="notification_guts_btn_color">#FFFFFFFF</color>
- <color name="search_panel_card_color">#ffffff</color>
+ <color name="search_panel_circle_color">#ffffff</color>
+ <color name="search_panel_ripple_color">#ffbbbbbb</color>
<color name="keyguard_user_switcher_background_gradient_color">#77000000</color>
<color name="doze_small_icon_background_color">#ff434343</color>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index cc77aaa..17b3833 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -29,6 +29,12 @@
ImageView -->
<bool name="config_recents_thumbnail_image_fits_to_xy">false</bool>
+ <!-- The number of app thumbnails we keep in memory -->
+ <integer name="config_recents_max_thumbnail_count">10</integer>
+
+ <!-- The number of app icons we keep in memory -->
+ <integer name="config_recents_max_icon_count">20</integer>
+
<!-- Control whether status bar should distinguish HSPA data icon form UMTS
data icon on devices -->
<bool name="config_hspa_data_distinguishable">false</bool>
@@ -188,9 +194,14 @@
<!-- Doze: should the pickup sensor be used as a pulse signal? -->
<bool name="doze_pulse_on_pick_up">false</bool>
- <!-- Doze: period of time between pulses (start of pulse) when following the notification light
- Format: <under_ms>:<period_ms>,...,<default_ms> -->
- <string name="doze_pulse_period_function">60000:10000,300000:30000,1800000:60000,0</string>
+ <!-- Doze: should notifications be used as a pulse signal? -->
+ <bool name="doze_pulse_on_notifications">true</bool>
+
+ <!-- Doze: when to pulse after a buzzworthy notification arrives -->
+ <string name="doze_pulse_schedule">1s,10s,30s,60s,120s</string>
+
+ <!-- Doze: maximum number of times the notification pulse schedule can be reset -->
+ <integer name="doze_pulse_schedule_resets">3</integer>
<!-- Doze: pulse parameter - how long does it take to fade in? -->
<integer name="doze_pulse_duration_in">1000</integer>
@@ -201,9 +212,6 @@
<!-- Doze: pulse parameter - how long does it take to fade out? -->
<integer name="doze_pulse_duration_out">1000</integer>
- <!-- Doze: pulse parameter - how long to wait before pulsing (if not starting immediately) -->
- <integer name="doze_pulse_delay">1000</integer>
-
<!-- Doze: alpha to apply to small icons when dozing -->
<integer name="doze_small_icon_alpha">222</integer><!-- 87% of 0xff -->
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 4495318..8fe0af8 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -434,15 +434,20 @@
from Keyguard. -->
<dimen name="go_to_full_shade_appearing_translation">200dp</dimen>
- <!-- The height of the search panel card. -->
- <dimen name="search_panel_card_height">300dp</dimen>
+ <!-- The diameter of the search panel circle. -->
+ <dimen name="search_panel_circle_size">88dp</dimen>
- <!-- The height of the scrim behind the search panel card. -->
- <dimen name="search_panel_scrim_height">250dp</dimen>
+ <!-- The margin to the edge of the screen from where the circle starts to appear -->
+ <dimen name="search_panel_circle_base_margin">80dp</dimen>
+
+ <!-- The amount the circle translates when appearing -->
+ <dimen name="search_panel_circle_travel_distance">80dp</dimen>
- <!-- How much from the bottom of the screen the card should peek in when activating the search
- panel -->
- <dimen name="search_card_peek_height">100dp</dimen>
+ <!-- The elevation of the search panel circle -->
+ <dimen name="search_panel_circle_elevation">12dp</dimen>
+
+ <!-- The height of the scrim behind the search panel circle. -->
+ <dimen name="search_panel_scrim_height">250dp</dimen>
<!-- How far the user needs to drag up to invoke search. -->
<dimen name="search_panel_threshold">100dp</dimen>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index cb66e7a..0456c82 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -239,16 +239,9 @@
<item name="android:textColor">#60000000</item>
</style>
- <style name="SearchPanelCard">
+ <style name="SearchPanelCircle">
<item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">@dimen/search_panel_card_height</item>
- <item name="android:layout_marginStart">8dp</item>
- <item name="android:layout_marginEnd">8dp</item>
- <item name="android:layout_gravity">bottom</item>
- </style>
-
- <style name="SearchPanelLogo">
- <item name="android:layout_gravity">top|center_horizontal</item>
+ <item name="android:layout_height">match_parent</item>
</style>
<style name="SearchPanelScrim">
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelCircleView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelCircleView.java
new file mode 100644
index 0000000..d8fb6da
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/SearchPanelCircleView.java
@@ -0,0 +1,592 @@
+/*
+ * Copyright (C) 2014 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.systemui;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.PropertyValuesHolder;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Outline;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+import android.view.animation.LinearInterpolator;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import com.android.systemui.statusbar.phone.PhoneStatusBar;
+
+import java.util.ArrayList;
+
+public class SearchPanelCircleView extends FrameLayout {
+
+ private final int mCircleMinSize;
+ private final int mBaseMargin;
+ private final int mStaticOffset;
+ private final Paint mBackgroundPaint = new Paint();
+ private final Paint mRipplePaint = new Paint();
+ private final Rect mCircleRect = new Rect();
+ private final Rect mStaticRect = new Rect();
+ private final Interpolator mFastOutSlowInInterpolator;
+ private final Interpolator mAppearInterpolator;
+ private final Interpolator mDisappearInterpolator;
+
+ private boolean mClipToOutline;
+ private final int mMaxElevation;
+ private boolean mAnimatingOut;
+ private float mOutlineAlpha;
+ private float mOffset;
+ private float mCircleSize;
+ private boolean mHorizontal;
+ private boolean mCircleHidden;
+ private ImageView mLogo;
+ private boolean mDraggedFarEnough;
+ private boolean mOffsetAnimatingIn;
+ private float mCircleAnimationEndValue;
+ private ArrayList<Ripple> mRipples = new ArrayList<Ripple>();
+
+ private ValueAnimator mOffsetAnimator;
+ private ValueAnimator mCircleAnimator;
+ private ValueAnimator mFadeOutAnimator;
+ private ValueAnimator.AnimatorUpdateListener mCircleUpdateListener
+ = new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ applyCircleSize((float) animation.getAnimatedValue());
+ updateElevation();
+ }
+ };
+ private AnimatorListenerAdapter mClearAnimatorListener = new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mCircleAnimator = null;
+ }
+ };
+ private ValueAnimator.AnimatorUpdateListener mOffsetUpdateListener
+ = new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ setOffset((float) animation.getAnimatedValue());
+ }
+ };
+
+
+ public SearchPanelCircleView(Context context) {
+ this(context, null);
+ }
+
+ public SearchPanelCircleView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public SearchPanelCircleView(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public SearchPanelCircleView(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ setOutlineProvider(new ViewOutlineProvider() {
+ @Override
+ public void getOutline(View view, Outline outline) {
+ if (mCircleSize > 0.0f) {
+ outline.setOval(mCircleRect);
+ } else {
+ outline.setEmpty();
+ }
+ outline.setAlpha(mOutlineAlpha);
+ }
+ });
+ setWillNotDraw(false);
+ mCircleMinSize = context.getResources().getDimensionPixelSize(
+ R.dimen.search_panel_circle_size);
+ mBaseMargin = context.getResources().getDimensionPixelSize(
+ R.dimen.search_panel_circle_base_margin);
+ mStaticOffset = context.getResources().getDimensionPixelSize(
+ R.dimen.search_panel_circle_travel_distance);
+ mMaxElevation = context.getResources().getDimensionPixelSize(
+ R.dimen.search_panel_circle_elevation);
+ mAppearInterpolator = AnimationUtils.loadInterpolator(mContext,
+ android.R.interpolator.linear_out_slow_in);
+ mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(mContext,
+ android.R.interpolator.fast_out_slow_in);
+ mDisappearInterpolator = AnimationUtils.loadInterpolator(mContext,
+ android.R.interpolator.fast_out_linear_in);
+ mBackgroundPaint.setAntiAlias(true);
+ mBackgroundPaint.setColor(getResources().getColor(R.color.search_panel_circle_color));
+ mRipplePaint.setColor(getResources().getColor(R.color.search_panel_ripple_color));
+ mRipplePaint.setAntiAlias(true);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ drawBackground(canvas);
+ drawRipples(canvas);
+ }
+
+ private void drawRipples(Canvas canvas) {
+ for (int i = 0; i < mRipples.size(); i++) {
+ Ripple ripple = mRipples.get(i);
+ ripple.draw(canvas);
+ }
+ }
+
+ private void drawBackground(Canvas canvas) {
+ canvas.drawCircle(mCircleRect.centerX(), mCircleRect.centerY(), mCircleSize / 2,
+ mBackgroundPaint);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mLogo = (ImageView) findViewById(R.id.search_logo);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ mLogo.layout(0, 0, mLogo.getMeasuredWidth(), mLogo.getMeasuredHeight());
+ if (changed) {
+ updateCircleRect(mStaticRect, mStaticOffset, true);
+ }
+ }
+
+ public void setCircleSize(float circleSize) {
+ setCircleSize(circleSize, false, null, 0, null);
+ }
+
+ public void setCircleSize(float circleSize, boolean animated, final Runnable endRunnable,
+ int startDelay, Interpolator interpolator) {
+ boolean isAnimating = mCircleAnimator != null;
+ boolean animationPending = isAnimating && !mCircleAnimator.isRunning();
+ boolean animatingOut = isAnimating && mCircleAnimationEndValue == 0;
+ if (animated || animationPending || animatingOut) {
+ if (isAnimating) {
+ if (circleSize == mCircleAnimationEndValue) {
+ return;
+ }
+ mCircleAnimator.cancel();
+ }
+ mCircleAnimator = ValueAnimator.ofFloat(mCircleSize, circleSize);
+ mCircleAnimator.addUpdateListener(mCircleUpdateListener);
+ mCircleAnimator.addListener(mClearAnimatorListener);
+ mCircleAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (endRunnable != null) {
+ endRunnable.run();
+ }
+ }
+ });
+ Interpolator desiredInterpolator = interpolator != null ? interpolator
+ : circleSize == 0 ? mDisappearInterpolator : mAppearInterpolator;
+ mCircleAnimator.setInterpolator(desiredInterpolator);
+ mCircleAnimator.setDuration(300);
+ mCircleAnimator.setStartDelay(startDelay);
+ mCircleAnimator.start();
+ mCircleAnimationEndValue = circleSize;
+ } else {
+ if (isAnimating) {
+ float diff = circleSize - mCircleAnimationEndValue;
+ PropertyValuesHolder[] values = mCircleAnimator.getValues();
+ values[0].setFloatValues(diff, circleSize);
+ mCircleAnimator.setCurrentPlayTime(mCircleAnimator.getCurrentPlayTime());
+ mCircleAnimationEndValue = circleSize;
+ } else {
+ applyCircleSize(circleSize);
+ updateElevation();
+ }
+ }
+ }
+
+ private void applyCircleSize(float circleSize) {
+ mCircleSize = circleSize;
+ updateLayout();
+ }
+
+ private void updateElevation() {
+ float t = (mStaticOffset - mOffset) / (float) mStaticOffset;
+ t = 1.0f - Math.max(t, 0.0f);
+ float offset = t * mMaxElevation;
+ setElevation(offset);
+ }
+
+ /**
+ * Sets the offset to the edge of the screen. By default this not not animated.
+ *
+ * @param offset The offset to apply.
+ */
+ public void setOffset(float offset) {
+ setOffset(offset, false, 0, null, null);
+ }
+
+ /**
+ * Sets the offset to the edge of the screen.
+ *
+ * @param offset The offset to apply.
+ * @param animate Whether an animation should be performed.
+ * @param startDelay The desired start delay if animated.
+ * @param interpolator The desired interpolator if animated. If null,
+ * a default interpolator will be taken designed for appearing or
+ * disappearing.
+ * @param endRunnable The end runnable which should be executed when the animation is finished.
+ */
+ private void setOffset(float offset, boolean animate, int startDelay,
+ Interpolator interpolator, final Runnable endRunnable) {
+ if (!animate) {
+ mOffset = offset;
+ updateLayout();
+ if (endRunnable != null) {
+ endRunnable.run();
+ }
+ } else {
+ if (mOffsetAnimator != null) {
+ mOffsetAnimator.removeAllListeners();
+ mOffsetAnimator.cancel();
+ }
+ mOffsetAnimator = ValueAnimator.ofFloat(mOffset, offset);
+ mOffsetAnimator.addUpdateListener(mOffsetUpdateListener);
+ mOffsetAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mOffsetAnimator = null;
+ if (endRunnable != null) {
+ endRunnable.run();
+ }
+ }
+ });
+ Interpolator desiredInterpolator = interpolator != null ?
+ interpolator : offset == 0 ? mDisappearInterpolator : mAppearInterpolator;
+ mOffsetAnimator.setInterpolator(desiredInterpolator);
+ mOffsetAnimator.setStartDelay(startDelay);
+ mOffsetAnimator.setDuration(300);
+ mOffsetAnimator.start();
+ mOffsetAnimatingIn = offset != 0;
+ }
+ }
+
+ private void updateLayout() {
+ updateCircleRect();
+ updateLogo();
+ invalidateOutline();
+ invalidate();
+ updateClipping();
+ }
+
+ private void updateClipping() {
+ boolean clip = mCircleSize < mCircleMinSize || !mRipples.isEmpty();
+ if (clip != mClipToOutline) {
+ setClipToOutline(clip);
+ mClipToOutline = clip;
+ }
+ }
+
+ private void updateLogo() {
+ boolean exitAnimationRunning = mFadeOutAnimator != null;
+ Rect rect = exitAnimationRunning ? mCircleRect : mStaticRect;
+ float translationX = (rect.left + rect.right) / 2.0f - mLogo.getWidth() / 2.0f;
+ float translationY = (rect.top + rect.bottom) / 2.0f - mLogo.getHeight() / 2.0f;
+ float t = (mStaticOffset - mOffset) / (float) mStaticOffset;
+ if (!exitAnimationRunning) {
+ if (mHorizontal) {
+ translationX += t * mStaticOffset * 0.3f;
+ } else {
+ translationY += t * mStaticOffset * 0.3f;
+ }
+ float alpha = 1.0f-t;
+ alpha = Math.max((alpha - 0.5f) * 2.0f, 0);
+ mLogo.setAlpha(alpha);
+ } else {
+ translationY += (mOffset - mStaticOffset) / 2;
+ }
+ mLogo.setTranslationX(translationX);
+ mLogo.setTranslationY(translationY);
+ }
+
+ private void updateCircleRect() {
+ updateCircleRect(mCircleRect, mOffset, false);
+ }
+
+ private void updateCircleRect(Rect rect, float offset, boolean useStaticSize) {
+ int left, top;
+ float circleSize = useStaticSize ? mCircleMinSize : mCircleSize;
+ if (mHorizontal) {
+ left = (int) (getWidth() - circleSize / 2 - mBaseMargin - offset);
+ top = (int) ((getHeight() - circleSize) / 2);
+ } else {
+ left = (int) (getWidth() - circleSize) / 2;
+ top = (int) (getHeight() - circleSize / 2 - mBaseMargin - offset);
+ }
+ rect.set(left, top, (int) (left + circleSize), (int) (top + circleSize));
+ }
+
+ public void setHorizontal(boolean horizontal) {
+ mHorizontal = horizontal;
+ updateCircleRect(mStaticRect, mStaticOffset, true);
+ updateLayout();
+ }
+
+ public void setDragDistance(float distance) {
+ if (!mAnimatingOut && (!mCircleHidden || mDraggedFarEnough)) {
+ float circleSize = mCircleMinSize + rubberband(distance);
+ setCircleSize(circleSize);
+ }
+
+ }
+
+ private float rubberband(float diff) {
+ return (float) Math.pow(Math.abs(diff), 0.6f);
+ }
+
+ public void startAbortAnimation(Runnable endRunnable) {
+ if (mAnimatingOut) {
+ if (endRunnable != null) {
+ endRunnable.run();
+ }
+ return;
+ }
+ setCircleSize(0, true, null, 0, null);
+ setOffset(0, true, 0, null, endRunnable);
+ mCircleHidden = true;
+ }
+
+ public void startEnterAnimation() {
+ if (mAnimatingOut) {
+ return;
+ }
+ applyCircleSize(0);
+ setOffset(0);
+ setCircleSize(mCircleMinSize, true, null, 50, null);
+ setOffset(mStaticOffset, true, 50, null, null);
+ mCircleHidden = false;
+ }
+
+
+ public void startExitAnimation(final Runnable endRunnable) {
+ if (!mHorizontal) {
+ float offset = getHeight() / 2.0f;
+ setOffset(offset - mBaseMargin, true, 50, mFastOutSlowInInterpolator, null);
+ float xMax = getWidth() / 2;
+ float yMax = getHeight() / 2;
+ float maxRadius = (float) Math.ceil(Math.hypot(xMax, yMax) * 2);
+ setCircleSize(maxRadius, true, null, 50, mFastOutSlowInInterpolator);
+ performExitFadeOutAnimation(50, 300, endRunnable);
+ } else {
+
+ // when in landscape, we don't wan't the animation as it interferes with the general
+ // rotation animation to the homescreen.
+ endRunnable.run();
+ }
+ }
+
+ private void performExitFadeOutAnimation(int startDelay, int duration,
+ final Runnable endRunnable) {
+ mFadeOutAnimator = ValueAnimator.ofFloat(mBackgroundPaint.getAlpha() / 255.0f, 0.0f);
+
+ // Linear since we are animating multiple values
+ mFadeOutAnimator.setInterpolator(new LinearInterpolator());
+ mFadeOutAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ float animatedFraction = animation.getAnimatedFraction();
+ float logoValue = animatedFraction > 0.5f ? 1.0f : animatedFraction / 0.5f;
+ logoValue = PhoneStatusBar.ALPHA_OUT.getInterpolation(1.0f - logoValue);
+ float backgroundValue = animatedFraction < 0.2f ? 0.0f :
+ PhoneStatusBar.ALPHA_OUT.getInterpolation((animatedFraction - 0.2f) / 0.8f);
+ backgroundValue = 1.0f - backgroundValue;
+ mBackgroundPaint.setAlpha((int) (backgroundValue * 255));
+ mOutlineAlpha = backgroundValue;
+ mLogo.setAlpha(logoValue);
+ invalidateOutline();
+ invalidate();
+ }
+ });
+ mFadeOutAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (endRunnable != null) {
+ endRunnable.run();
+ }
+ mLogo.setAlpha(1.0f);
+ mBackgroundPaint.setAlpha(255);
+ mOutlineAlpha = 1.0f;
+ mFadeOutAnimator = null;
+ }
+ });
+ mFadeOutAnimator.setStartDelay(startDelay);
+ mFadeOutAnimator.setDuration(duration);
+ mFadeOutAnimator.start();
+ }
+
+ public void setDraggedFarEnough(boolean farEnough) {
+ if (farEnough != mDraggedFarEnough) {
+ if (farEnough) {
+ if (mCircleHidden) {
+ startEnterAnimation();
+ }
+ if (mOffsetAnimator == null) {
+ addRipple();
+ } else {
+ postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ addRipple();
+ }
+ }, 100);
+ }
+ } else {
+ startAbortAnimation(null);
+ }
+ mDraggedFarEnough = farEnough;
+ }
+
+ }
+
+ private void addRipple() {
+ if (mRipples.size() > 1) {
+ // we only want 2 ripples at the time
+ return;
+ }
+ float xInterpolation, yInterpolation;
+ if (mHorizontal) {
+ xInterpolation = 0.75f;
+ yInterpolation = 0.5f;
+ } else {
+ xInterpolation = 0.5f;
+ yInterpolation = 0.75f;
+ }
+ float circleCenterX = mStaticRect.left * (1.0f - xInterpolation)
+ + mStaticRect.right * xInterpolation;
+ float circleCenterY = mStaticRect.top * (1.0f - yInterpolation)
+ + mStaticRect.bottom * yInterpolation;
+ float radius = Math.max(mCircleSize, mCircleMinSize * 1.25f) * 0.75f;
+ Ripple ripple = new Ripple(circleCenterX, circleCenterY, radius);
+ ripple.start();
+ }
+
+ public void reset() {
+ mDraggedFarEnough = false;
+ mAnimatingOut = false;
+ mCircleHidden = true;
+ mClipToOutline = false;
+ if (mFadeOutAnimator != null) {
+ mFadeOutAnimator.cancel();
+ }
+ mBackgroundPaint.setAlpha(255);
+ mOutlineAlpha = 1.0f;
+ }
+
+ /**
+ * Check if an animation is currently running
+ *
+ * @param enterAnimation Is the animating queried the enter animation.
+ */
+ public boolean isAnimationRunning(boolean enterAnimation) {
+ return mOffsetAnimator != null && (enterAnimation == mOffsetAnimatingIn);
+ }
+
+ public void performOnAnimationFinished(final Runnable runnable) {
+ if (mOffsetAnimator != null) {
+ mOffsetAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (runnable != null) {
+ runnable.run();
+ }
+ }
+ });
+ } else {
+ if (runnable != null) {
+ runnable.run();
+ }
+ }
+ }
+
+ public void setAnimatingOut(boolean animatingOut) {
+ mAnimatingOut = animatingOut;
+ }
+
+ /**
+ * @return Whether the circle is currently launching to the search activity or aborting the
+ * interaction
+ */
+ public boolean isAnimatingOut() {
+ return mAnimatingOut;
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ // not really true but it's ok during an animation, as it's never permanent
+ return false;
+ }
+
+ private class Ripple {
+ float x;
+ float y;
+ float radius;
+ float endRadius;
+ float alpha;
+
+ Ripple(float x, float y, float endRadius) {
+ this.x = x;
+ this.y = y;
+ this.endRadius = endRadius;
+ }
+
+ void start() {
+ ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
+
+ // Linear since we are animating multiple values
+ animator.setInterpolator(new LinearInterpolator());
+ animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ alpha = 1.0f - animation.getAnimatedFraction();
+ alpha = mDisappearInterpolator.getInterpolation(alpha);
+ radius = mAppearInterpolator.getInterpolation(animation.getAnimatedFraction());
+ radius *= endRadius;
+ invalidate();
+ }
+ });
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mRipples.remove(Ripple.this);
+ updateClipping();
+ }
+
+ public void onAnimationStart(Animator animation) {
+ mRipples.add(Ripple.this);
+ updateClipping();
+ }
+ });
+ animator.setDuration(400);
+ animator.start();
+ }
+
+ public void draw(Canvas canvas) {
+ mRipplePaint.setAlpha((int) (alpha * 255));
+ canvas.drawCircle(x, y, radius, mRipplePaint);
+ }
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
index 7d0ca14..445b499 100644
--- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
@@ -16,10 +16,6 @@
package com.android.systemui;
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
import android.app.ActivityOptions;
import android.app.SearchManager;
import android.content.ActivityNotFoundException;
@@ -38,8 +34,6 @@ import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
-import android.view.animation.AnimationUtils;
-import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
@@ -62,26 +56,19 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
private final Context mContext;
private BaseStatusBar mBar;
- private View mCard;
+ private SearchPanelCircleView mCircle;
private ImageView mLogo;
private View mScrim;
- private int mPeekHeight;
private int mThreshold;
private boolean mHorizontal;
- private final Interpolator mLinearOutSlowInInterpolator;
- private final Interpolator mFastOutLinearInInterpolator;
- private boolean mAnimatingIn;
- private boolean mAnimatingOut;
+ private boolean mLaunching;
private boolean mDragging;
private boolean mDraggedFarEnough;
private float mStartTouch;
private float mStartDrag;
-
- private ObjectAnimator mEnterAnimator;
-
- private boolean mStartExitAfterAnimatingIn;
+ private boolean mLaunchPending;
public SearchPanelView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@@ -90,12 +77,7 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
public SearchPanelView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
- mPeekHeight = context.getResources().getDimensionPixelSize(R.dimen.search_card_peek_height);
mThreshold = context.getResources().getDimensionPixelSize(R.dimen.search_panel_threshold);
- mLinearOutSlowInInterpolator =
- AnimationUtils.loadInterpolator(context, android.R.interpolator.linear_out_slow_in);
- mFastOutLinearInInterpolator =
- AnimationUtils.loadInterpolator(context, android.R.interpolator.fast_out_linear_in);
}
private void startAssistActivity() {
@@ -128,7 +110,7 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
protected void onFinishInflate() {
super.onFinishInflate();
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mCard = findViewById(R.id.search_panel_card);
+ mCircle = (SearchPanelCircleView) findViewById(R.id.search_panel_circle);
mLogo = (ImageView) findViewById(R.id.search_logo);
mScrim = findViewById(R.id.search_panel_scrim);
}
@@ -170,16 +152,9 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
v.setImageDrawable(null);
}
- private boolean pointInside(int x, int y, View v) {
- final int l = v.getLeft();
- final int r = v.getRight();
- final int t = v.getTop();
- final int b = v.getBottom();
- return x >= l && x < r && y >= t && y < b;
- }
-
+ @Override
public boolean isInContentArea(int x, int y) {
- return pointInside(x, y, mCard);
+ return true;
}
private void vibrate() {
@@ -199,16 +174,10 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
if (getVisibility() != View.VISIBLE) {
setVisibility(View.VISIBLE);
vibrate();
- mCard.setAlpha(1f);
if (animate) {
startEnterAnimation();
} else {
mScrim.setAlpha(1f);
- if (mHorizontal) {
- mCard.setX(getWidth() - mPeekHeight);
- } else {
- mCard.setY(getHeight() - mPeekHeight);
- }
}
}
setFocusable(true);
@@ -224,30 +193,7 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
}
private void startEnterAnimation() {
- if (mHorizontal) {
- mCard.setX(getWidth());
- } else {
- mCard.setY(getHeight());
- }
- mAnimatingIn = true;
- mCard.animate().cancel();
- mEnterAnimator = ObjectAnimator.ofFloat(mCard, mHorizontal ? View.X : View.Y,
- mHorizontal ? mCard.getX() : mCard.getY(),
- mHorizontal ? getWidth() - mPeekHeight : getHeight() - mPeekHeight);
- mEnterAnimator.setDuration(300);
- mEnterAnimator.setStartDelay(50);
- mEnterAnimator.setInterpolator(mLinearOutSlowInInterpolator);
- mEnterAnimator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mEnterAnimator = null;
- mAnimatingIn = false;
- if (mStartExitAfterAnimatingIn) {
- startExitAnimation();
- }
- }
- });
- mEnterAnimator.start();
+ mCircle.startEnterAnimation();
mScrim.setAlpha(0f);
mScrim.animate()
.alpha(1f)
@@ -259,26 +205,17 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
}
private void startAbortAnimation() {
- mCard.animate().cancel();
- mAnimatingOut = true;
- if (mHorizontal) {
- mCard.animate().x(getWidth());
- } else {
- mCard.animate().y(getHeight());
- }
- mCard.animate()
- .setDuration(150)
- .setInterpolator(mFastOutLinearInInterpolator)
- .withEndAction(new Runnable() {
+ mCircle.startAbortAnimation(new Runnable() {
@Override
public void run() {
- mAnimatingOut = false;
+ mCircle.setAnimatingOut(false);
setVisibility(View.INVISIBLE);
}
});
+ mCircle.setAnimatingOut(true);
mScrim.animate()
.alpha(0f)
- .setDuration(150)
+ .setDuration(300)
.setStartDelay(0)
.setInterpolator(PhoneStatusBar.ALPHA_OUT);
}
@@ -314,7 +251,7 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
* when the animation is done.
*/
public boolean isShowing() {
- return getVisibility() == View.VISIBLE && !mAnimatingOut;
+ return getVisibility() == View.VISIBLE && !mCircle.isAnimatingOut();
}
public void setBar(BaseStatusBar bar) {
@@ -326,60 +263,46 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
.getAssistIntent(mContext, false, UserHandle.USER_CURRENT) != null;
}
- private float rubberband(float diff) {
- return Math.signum(diff) * (float) Math.pow(Math.abs(diff), 0.8f);
- }
-
@Override
public boolean onTouchEvent(MotionEvent event) {
+ if (mLaunching || mLaunchPending) {
+ return false;
+ }
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
mStartTouch = mHorizontal ? event.getX() : event.getY();
mDragging = false;
mDraggedFarEnough = false;
- mStartExitAfterAnimatingIn = false;
+ mCircle.reset();
break;
case MotionEvent.ACTION_MOVE:
float currentTouch = mHorizontal ? event.getX() : event.getY();
if (getVisibility() == View.VISIBLE && !mDragging &&
- (!mAnimatingIn || Math.abs(mStartTouch - currentTouch) > mThreshold)) {
+ (!mCircle.isAnimationRunning(true /* enterAnimation */)
+ || Math.abs(mStartTouch - currentTouch) > mThreshold)) {
mStartDrag = currentTouch;
mDragging = true;
}
- if (!mDraggedFarEnough && Math.abs(mStartTouch - currentTouch) > mThreshold) {
- mDraggedFarEnough = true;
- }
if (mDragging) {
- if (!mAnimatingIn && !mAnimatingOut) {
- if (Math.abs(currentTouch - mStartDrag) > mThreshold) {
- startExitAnimation();
- } else {
- if (mHorizontal) {
- mCard.setX(getWidth() - mPeekHeight + rubberband(
- currentTouch - mStartDrag));
- } else {
- mCard.setY(getHeight() - mPeekHeight + rubberband(
- currentTouch - mStartDrag));
- }
- }
- } else if (mAnimatingIn ) {
- float diff = rubberband(currentTouch - mStartDrag);
- PropertyValuesHolder[] values = mEnterAnimator.getValues();
- values[0].setFloatValues(
- mHorizontal ? getWidth() + diff : getHeight() + diff,
- mHorizontal
- ? getWidth() - mPeekHeight + diff
- : getHeight() - mPeekHeight + diff);
- mEnterAnimator.setCurrentPlayTime(mEnterAnimator.getCurrentPlayTime());
- }
+ float offset = Math.max(mStartDrag - currentTouch, 0.0f);
+ mCircle.setDragDistance(offset);
+ mDraggedFarEnough = Math.abs(mStartTouch - currentTouch) > mThreshold;
+ mCircle.setDraggedFarEnough(mDraggedFarEnough);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mDraggedFarEnough) {
- if (mAnimatingIn) {
- mStartExitAfterAnimatingIn = true;
+ if (mCircle.isAnimationRunning(true /* enterAnimation */)) {
+ mLaunchPending = true;
+ mCircle.setAnimatingOut(true);
+ mCircle.performOnAnimationFinished(new Runnable() {
+ @Override
+ public void run() {
+ startExitAnimation();
+ }
+ });
} else {
startExitAnimation();
}
@@ -392,35 +315,31 @@ public class SearchPanelView extends FrameLayout implements StatusBarPanel {
}
private void startExitAnimation() {
- if (mAnimatingOut || getVisibility() != View.VISIBLE) {
+ mLaunchPending = false;
+ if (mLaunching || getVisibility() != View.VISIBLE) {
return;
}
- if (mEnterAnimator != null) {
- mEnterAnimator.cancel();
- }
- mAnimatingOut = true;
+ mLaunching = true;
startAssistActivity();
vibrate();
- mCard.animate()
- .alpha(0f)
- .withLayer()
- .setDuration(250)
- .setInterpolator(PhoneStatusBar.ALPHA_OUT)
- .withEndAction(new Runnable() {
+ mCircle.setAnimatingOut(true);
+ mCircle.startExitAnimation(new Runnable() {
@Override
public void run() {
- mAnimatingOut = false;
+ mLaunching = false;
+ mCircle.setAnimatingOut(false);
setVisibility(View.INVISIBLE);
}
});
mScrim.animate()
.alpha(0f)
- .setDuration(250)
+ .setDuration(300)
.setStartDelay(0)
.setInterpolator(PhoneStatusBar.ALPHA_OUT);
}
public void setHorizontal(boolean horizontal) {
mHorizontal = horizontal;
+ mCircle.setHorizontal(horizontal);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 0aa7f352..dae15e6 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -22,7 +22,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.res.Resources;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.TriggerEvent;
@@ -30,15 +29,14 @@ import android.hardware.TriggerEventListener;
import android.media.AudioAttributes;
import android.os.Handler;
import android.os.PowerManager;
-import android.os.SystemProperties;
import android.os.Vibrator;
import android.service.dreams.DreamService;
import android.util.Log;
import android.view.Display;
-import com.android.systemui.R;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.statusbar.phone.DozeParameters;
+import com.android.systemui.statusbar.phone.DozeParameters.PulseSchedule;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -72,6 +70,7 @@ public class DozeService extends DreamService {
private PendingIntent mNotificationPulseIntent;
private boolean mPowerSaveActive;
private long mNotificationPulseTime;
+ private int mScheduleResetsRemaining;
public DozeService() {
if (DEBUG) Log.d(mTag, "new DozeService()");
@@ -90,6 +89,7 @@ public class DozeService extends DreamService {
pw.print(" mNotificationLightOn: "); pw.println(mNotificationLightOn);
pw.print(" mPowerSaveActive: "); pw.println(mPowerSaveActive);
pw.print(" mNotificationPulseTime: "); pw.println(mNotificationPulseTime);
+ pw.print(" mScheduleResetsRemaining: "); pw.println(mScheduleResetsRemaining);
mDozeParameters.dump(pw);
}
@@ -107,16 +107,14 @@ public class DozeService extends DreamService {
setWindowless(true);
mSensors = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
- mSigMotionSensor = new TriggerSensor(Sensor.TYPE_SIGNIFICANT_MOTION, "doze.pulse.sigmotion",
- R.bool.doze_pulse_on_significant_motion);
- mPickupSensor = new TriggerSensor(Sensor.TYPE_PICK_UP_GESTURE, "doze.pulse.pickup",
- R.bool.doze_pulse_on_pick_up);
+ mSigMotionSensor = new TriggerSensor(Sensor.TYPE_SIGNIFICANT_MOTION,
+ mDozeParameters.getPulseOnSigMotion(), mDozeParameters.getVibrateOnSigMotion());
+ mPickupSensor = new TriggerSensor(Sensor.TYPE_PICK_UP_GESTURE,
+ mDozeParameters.getPulseOnPickup(), mDozeParameters.getVibrateOnPickup());
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, mTag);
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
- final Resources res = mContext.getResources();
- mDisplayStateSupported = SystemProperties.getBoolean("doze.display.supported",
- res.getBoolean(R.bool.doze_display_state_supported));
+ mDisplayStateSupported = mDozeParameters.getDisplayStateSupported();
mNotificationPulseIntent = PendingIntent.getBroadcast(mContext, 0,
new Intent(NOTIFICATION_PULSE_ACTION).setPackage(getPackageName()),
PendingIntent.FLAG_UPDATE_CURRENT);
@@ -142,6 +140,7 @@ public class DozeService extends DreamService {
}
mDreaming = true;
listenForPulseSignals(true);
+ rescheduleNotificationPulse(false /*predicate*/); // cancel any pending pulse alarms
requestDoze();
}
@@ -174,15 +173,21 @@ public class DozeService extends DreamService {
mHandler.removeCallbacks(mDisplayOff);
}
+ @Override
+ public void startDozing() {
+ if (DEBUG) Log.d(mTag, "startDozing");
+ super.startDozing();
+ }
+
private void requestDoze() {
if (mHost != null) {
mHost.requestDoze(this);
}
}
- private void requestPulse(boolean delayed) {
+ private void requestPulse() {
if (mHost != null) {
- mHost.requestPulse(delayed, this);
+ mHost.requestPulse(this);
}
}
@@ -222,24 +227,61 @@ public class DozeService extends DreamService {
private void listenForNotifications(boolean listen) {
if (mHost == null) return;
if (listen) {
+ resetNotificationResets();
mHost.addCallback(mHostCallback);
} else {
mHost.removeCallback(mHostCallback);
}
}
- private void rescheduleNotificationPulse() {
+ private void resetNotificationResets() {
+ if (DEBUG) Log.d(TAG, "resetNotificationResets");
+ mScheduleResetsRemaining = mDozeParameters.getPulseScheduleResets();
+ }
+
+ private void updateNotificationPulse() {
+ if (DEBUG) Log.d(TAG, "updateNotificationPulse");
+ if (!mDozeParameters.getPulseOnNotifications()) return;
+ if (mScheduleResetsRemaining <= 0) {
+ if (DEBUG) Log.d(TAG, "No more schedule resets remaining");
+ return;
+ }
+ final long now = System.currentTimeMillis();
+ if ((now - mNotificationPulseTime) < mDozeParameters.getPulseDuration()) {
+ if (DEBUG) Log.d(TAG, "Recently updated, not resetting schedule");
+ return;
+ }
+ mScheduleResetsRemaining--;
+ if (DEBUG) Log.d(TAG, "mScheduleResetsRemaining = " + mScheduleResetsRemaining);
+ mNotificationPulseTime = now;
+ rescheduleNotificationPulse(true /*predicate*/);
+ }
+
+ private void rescheduleNotificationPulse(boolean predicate) {
+ if (DEBUG) Log.d(TAG, "rescheduleNotificationPulse predicate=" + predicate);
mAlarmManager.cancel(mNotificationPulseIntent);
- if (mNotificationLightOn) {
- final long now = System.currentTimeMillis();
- final long age = now - mNotificationPulseTime;
- final long period = mDozeParameters.getPulsePeriod(age);
- final long time = now + period;
- if (period > 0) {
- if (DEBUG) Log.d(TAG, "Scheduling pulse in " + period + " for " + new Date(time));
- mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, time, mNotificationPulseIntent);
- }
+ if (!predicate) {
+ if (DEBUG) Log.d(TAG, " don't reschedule: predicate is false");
+ return;
+ }
+ final PulseSchedule schedule = mDozeParameters.getPulseSchedule();
+ if (schedule == null) {
+ if (DEBUG) Log.d(TAG, " don't reschedule: schedule is null");
+ return;
+ }
+ final long now = System.currentTimeMillis();
+ final long time = schedule.getNextTime(now, mNotificationPulseTime);
+ if (time <= 0) {
+ if (DEBUG) Log.d(TAG, " don't reschedule: time is " + time);
+ return;
+ }
+ final long delta = time - now;
+ if (delta <= 0) {
+ if (DEBUG) Log.d(TAG, " don't reschedule: delta is " + delta);
+ return;
}
+ if (DEBUG) Log.d(TAG, "Scheduling pulse in " + delta + "ms for " + new Date(time));
+ mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, time, mNotificationPulseIntent);
}
private static String triggerEventToString(TriggerEvent event) {
@@ -268,12 +310,12 @@ public class DozeService extends DreamService {
public void onReceive(Context context, Intent intent) {
if (PULSE_ACTION.equals(intent.getAction())) {
if (DEBUG) Log.d(mTag, "Received pulse intent");
- requestPulse(false /*delayed*/);
+ requestPulse();
}
if (NOTIFICATION_PULSE_ACTION.equals(intent.getAction())) {
if (DEBUG) Log.d(mTag, "Received notification pulse intent");
- requestPulse(true /*delayed*/);
- rescheduleNotificationPulse();
+ requestPulse();
+ rescheduleNotificationPulse(mNotificationLightOn);
}
}
};
@@ -288,8 +330,7 @@ public class DozeService extends DreamService {
@Override
public void onBuzzBeepBlinked() {
if (DEBUG) Log.d(mTag, "onBuzzBeepBlinked");
- mNotificationPulseTime = System.currentTimeMillis();
- requestPulse(true /*delayed*/);
+ updateNotificationPulse();
}
@Override
@@ -298,10 +339,8 @@ public class DozeService extends DreamService {
if (mNotificationLightOn == on) return;
mNotificationLightOn = on;
if (mNotificationLightOn) {
- mNotificationPulseTime = System.currentTimeMillis();
- requestPulse(true /*delayed*/);
+ updateNotificationPulse();
}
- rescheduleNotificationPulse();
}
@Override
@@ -317,7 +356,7 @@ public class DozeService extends DreamService {
void addCallback(Callback callback);
void removeCallback(Callback callback);
void requestDoze(DozeService dozeService);
- void requestPulse(boolean delayed, DozeService dozeService);
+ void requestPulse(DozeService dozeService);
void dozingStopped(DozeService dozeService);
boolean isPowerSaveActive();
@@ -332,13 +371,14 @@ public class DozeService extends DreamService {
private class TriggerSensor extends TriggerEventListener {
private final Sensor mSensor;
private final boolean mConfigured;
+ private final boolean mDebugVibrate;
private boolean mEnabled;
- public TriggerSensor(int type, String sysPropConfig, int resConfig) {
+ public TriggerSensor(int type, boolean configured, boolean debugVibrate) {
mSensor = mSensors.getDefaultSensor(type);
- mConfigured = SystemProperties.getBoolean(sysPropConfig,
- mContext.getResources().getBoolean(resConfig));
+ mConfigured = configured;
+ mDebugVibrate = debugVibrate;
}
public void setListening(boolean listen) {
@@ -354,13 +394,14 @@ public class DozeService extends DreamService {
@Override
public String toString() {
return new StringBuilder("{mEnabled=").append(mEnabled).append(", mConfigured=")
- .append(mConfigured).append(", mSensor=").append(mSensor).append("}").toString();
+ .append(mConfigured).append(", mDebugVibrate=").append(mDebugVibrate)
+ .append(", mSensor=").append(mSensor).append("}").toString();
}
@Override
public void onTrigger(TriggerEvent event) {
if (DEBUG) Log.d(mTag, "onTrigger: " + triggerEventToString(event));
- if (DEBUG) {
+ if (mDebugVibrate) {
final Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
if (v != null) {
v.vibrate(1000, new AudioAttributes.Builder()
@@ -368,8 +409,9 @@ public class DozeService extends DreamService {
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION).build());
}
}
- requestPulse(false /*delayed*/);
+ requestPulse();
setListening(true); // reregister, this sensor only fires once
+ resetNotificationResets();
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index 4c7f8ec..f184ad2 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -31,6 +31,7 @@ import android.media.AudioAttributes;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Handler;
+import android.os.PowerManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
@@ -72,6 +73,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
private final Context mContext;
private final NotificationManager mNoMan;
+ private final PowerManager mPowerMan;
private final Handler mHandler = new Handler();
private final Receiver mReceiver = new Receiver();
private final Intent mOpenBatterySettings = settings(Intent.ACTION_POWER_USAGE_SUMMARY);
@@ -93,6 +95,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
public PowerNotificationWarnings(Context context, PhoneStatusBar phoneStatusBar) {
mContext = context;
mNoMan = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ mPowerMan = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
mReceiver.init();
}
@@ -356,9 +359,8 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
mSaverConfirmation = d;
}
- private void setSaverSetting(boolean mode) {
- final int val = mode ? 1 : 0;
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE, val);
+ private void setSaverMode(boolean mode) {
+ mPowerMan.setPowerSaveMode(mode);
}
private final class Receiver extends BroadcastReceiver {
@@ -384,7 +386,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
} else if (action.equals(ACTION_STOP_SAVER)) {
dismissSaverNotification();
dismissLowBatteryNotification();
- setSaverSetting(false);
+ setSaverMode(false);
}
}
}
@@ -395,7 +397,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
- setSaverSetting(true);
+ setSaverMode(true);
}
});
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Constants.java b/packages/SystemUI/src/com/android/systemui/recents/Constants.java
index 6f4cf6b..52ec54b 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Constants.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Constants.java
@@ -68,7 +68,7 @@ public class Constants {
public static class RecentsTaskLoader {
// XXX: This should be calculated on the first load
- public static final int PreloadFirstTasksCount = 5;
+ public static final int PreloadFirstTasksCount = 6;
}
public static class TaskStackView {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
index ed5c126..2a2caa0 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
@@ -347,8 +347,8 @@ public class RecentsConfiguration {
Rect searchBarBounds = new Rect();
getSearchBarBounds(windowWidth, windowHeight, topInset, searchBarBounds);
if (isLandscape && hasTransposedSearchBar) {
- // In landscape, the search bar appears on the left
- taskStackBounds.set(searchBarBounds.right, topInset, windowWidth - rightInset, windowHeight);
+ // In landscape, the search bar appears on the left, but we overlay it on top
+ taskStackBounds.set(0, topInset, windowWidth - rightInset, windowHeight);
} else {
// In portrait, the search bar appears on the top (which already has the inset)
taskStackBounds.set(0, searchBarBounds.bottom, windowWidth, windowHeight);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index bbd0a0d..11b7b8b 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -179,6 +179,12 @@ public class SystemServicesProxy {
ActivityManager.RECENT_IGNORE_UNAVAILABLE |
ActivityManager.RECENT_INCLUDE_PROFILES |
ActivityManager.RECENT_WITH_EXCLUDED, userId);
+
+ // Break early if we can't get a valid set of tasks
+ if (tasks == null) {
+ return new ArrayList<ActivityManager.RecentTaskInfo>();
+ }
+
boolean isFirstValidTask = true;
Iterator<ActivityManager.RecentTaskInfo> iter = tasks.iterator();
while (iter.hasNext()) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/BitmapLruCache.java b/packages/SystemUI/src/com/android/systemui/recents/model/BitmapLruCache.java
index 757c07f..624a8ff 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/BitmapLruCache.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/BitmapLruCache.java
@@ -25,10 +25,4 @@ class BitmapLruCache extends KeyStoreLruCache<Bitmap> {
public BitmapLruCache(int cacheSize) {
super(cacheSize);
}
-
- @Override
- protected int computeSize(Bitmap b) {
- // The cache size will be measured in kilobytes rather than number of items
- return b.getAllocationByteCount();
- }
} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/DrawableLruCache.java b/packages/SystemUI/src/com/android/systemui/recents/model/DrawableLruCache.java
index 5b50358..01a515b 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/DrawableLruCache.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/DrawableLruCache.java
@@ -25,12 +25,4 @@ class DrawableLruCache extends KeyStoreLruCache<Drawable> {
public DrawableLruCache(int cacheSize) {
super(cacheSize);
}
-
- @Override
- protected int computeSize(Drawable d) {
- // The cache size will be measured in kilobytes rather than number of items
- // NOTE: this isn't actually correct, as the icon may be smaller
- int maxBytes = (d.getIntrinsicWidth() * d.getIntrinsicHeight() * 4);
- return maxBytes;
- }
} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/KeyStoreLruCache.java b/packages/SystemUI/src/com/android/systemui/recents/model/KeyStoreLruCache.java
index bb4dc76..7ccefc6 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/KeyStoreLruCache.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/KeyStoreLruCache.java
@@ -34,10 +34,6 @@ public class KeyStoreLruCache<V> {
public KeyStoreLruCache(int cacheSize) {
mCache = new LruCache<Integer, V>(cacheSize) {
- @Override
- protected int sizeOf(Integer taskId, V v) {
- return computeSize(v);
- }
@Override
protected void entryRemoved(boolean evicted, Integer taskId, V oldV, V newV) {
@@ -46,11 +42,6 @@ public class KeyStoreLruCache<V> {
};
}
- /** Computes the size of a value. */
- protected int computeSize(V value) {
- return 0;
- }
-
/** Gets a specific entry in the cache. */
final V get(Task.TaskKey key) {
return mCache.get(key.id);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
index f7ad35b..e5c06fd 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
@@ -29,6 +29,7 @@ import android.os.HandlerThread;
import android.os.UserHandle;
import android.util.Log;
+import com.android.systemui.R;
import com.android.systemui.recents.Constants;
import com.android.systemui.recents.RecentsConfiguration;
import com.android.systemui.recents.misc.SystemServicesProxy;
@@ -123,8 +124,8 @@ class TaskResourceLoader implements Runnable {
mDefaultThumbnail = defaultThumbnail;
mDefaultApplicationIcon = defaultApplicationIcon;
mMainThreadHandler = new Handler();
- mLoadThread = new HandlerThread("Recents-TaskResourceLoader");
- mLoadThread.setPriority(Thread.NORM_PRIORITY - 1);
+ mLoadThread = new HandlerThread("Recents-TaskResourceLoader",
+ android.os.Process.THREAD_PRIORITY_BACKGROUND);
mLoadThread.start();
mLoadThreadHandler = new Handler(mLoadThread.getLooper());
mLoadThreadHandler.post(this);
@@ -255,12 +256,10 @@ public class RecentsTaskLoader {
/** Private Constructor */
private RecentsTaskLoader(Context context) {
- // Calculate the cache sizes, we just use a reasonable number here similar to those
- // suggested in the Android docs, 1/6th for the thumbnail cache and 1/30 of the max memory
- // for icons.
- int maxMemory = (int) Runtime.getRuntime().maxMemory();
- mMaxThumbnailCacheSize = maxMemory / 6;
- mMaxIconCacheSize = mMaxThumbnailCacheSize / 5;
+ mMaxThumbnailCacheSize = context.getResources().getInteger(
+ R.integer.config_recents_max_thumbnail_count);
+ mMaxIconCacheSize = context.getResources().getInteger(
+ R.integer.config_recents_max_icon_count);
int iconCacheSize = Constants.DebugFlags.App.DisableBackgroundCache ? 1 :
mMaxIconCacheSize;
int thumbnailCacheSize = Constants.DebugFlags.App.DisableBackgroundCache ? 1 :
@@ -550,6 +549,12 @@ public class RecentsTaskLoader {
case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
// Stop the loader immediately when the UI is no longer visible
stopLoader();
+ mThumbnailCache.trimToSize(Math.max(
+ Constants.Values.RecentsTaskLoader.PreloadFirstTasksCount,
+ mMaxThumbnailCacheSize / 2));
+ mApplicationIconCache.trimToSize(Math.max(
+ Constants.Values.RecentsTaskLoader.PreloadFirstTasksCount,
+ mMaxIconCacheSize / 2));
break;
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_MODERATE:
case ComponentCallbacks2.TRIM_MEMORY_BACKGROUND:
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/StringLruCache.java b/packages/SystemUI/src/com/android/systemui/recents/model/StringLruCache.java
index b06c454..6769716 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/StringLruCache.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/StringLruCache.java
@@ -23,10 +23,4 @@ class StringLruCache extends KeyStoreLruCache<String> {
public StringLruCache(int cacheSize) {
super(cacheSize);
}
-
- @Override
- protected int computeSize(String s) {
- // The cache size is measured in number of strings
- return 1;
- }
} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
index 4563597..51adc28 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
@@ -41,6 +41,7 @@ import com.android.systemui.recents.model.Task;
/* A task view */
public class TaskView extends FrameLayout implements Task.TaskCallbacks,
TaskViewFooter.TaskFooterViewCallbacks, View.OnClickListener, View.OnLongClickListener {
+
/** The TaskView callbacks */
interface TaskViewCallbacks {
public void onTaskViewAppIconClicked(TaskView tv);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index ce3739c..aa75fd4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -93,6 +93,7 @@ import com.android.systemui.SystemUI;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.phone.KeyguardTouchDelegate;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
+import com.android.systemui.statusbar.phone.NavigationBarView;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.HeadsUpNotificationView;
import com.android.systemui.statusbar.policy.PreviewInflater;
@@ -165,6 +166,9 @@ public abstract class BaseStatusBar extends SystemUI implements
protected int mLayoutDirection = -1; // invalid
protected AccessibilityManager mAccessibilityManager;
+
+ // on-screen navigation buttons
+ protected NavigationBarView mNavigationBarView = null;
private Locale mLocale;
private float mFontScale;
@@ -1006,6 +1010,8 @@ public abstract class BaseStatusBar extends SystemUI implements
mSearchPanelView.setOnTouchListener(
new TouchOutsideListener(MSG_CLOSE_SEARCH_PANEL, mSearchPanelView));
mSearchPanelView.setVisibility(View.GONE);
+ boolean vertical = mNavigationBarView != null && mNavigationBarView.isVertical();
+ mSearchPanelView.setHorizontal(vertical);
WindowManager.LayoutParams lp = getSearchLayoutParams(mSearchPanelView.getLayoutParams());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index e14ef12..bcf42de 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -25,17 +25,19 @@ import android.util.MathUtils;
import com.android.systemui.R;
import java.io.PrintWriter;
+import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DozeParameters {
private static final String TAG = "DozeParameters";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final int MAX_DURATION = 10 * 1000;
private final Context mContext;
- private StepFunction mPulsePeriodFunction;
+ private static PulseSchedule sPulseSchedule;
public DozeParameters(Context context) {
mContext = context;
@@ -43,12 +45,22 @@ public class DozeParameters {
public void dump(PrintWriter pw) {
pw.println(" DozeParameters:");
+ pw.print(" getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
pw.print(" getPulseDuration(): "); pw.println(getPulseDuration());
pw.print(" getPulseInDuration(): "); pw.println(getPulseInDuration());
pw.print(" getPulseInVisibleDuration(): "); pw.println(getPulseVisibleDuration());
pw.print(" getPulseOutDuration(): "); pw.println(getPulseOutDuration());
- pw.print(" getPulseStartDelay(): "); pw.println(getPulseStartDelay());
- pw.print(" getPulsePeriodFunction(): "); pw.println(getPulsePeriodFunction());
+ pw.print(" getPulseOnSigMotion(): "); pw.println(getPulseOnSigMotion());
+ pw.print(" getVibrateOnSigMotion(): "); pw.println(getVibrateOnSigMotion());
+ pw.print(" getPulseOnPickup(): "); pw.println(getPulseOnPickup());
+ pw.print(" getVibrateOnPickup(): "); pw.println(getVibrateOnPickup());
+ pw.print(" getPulseOnNotifications(): "); pw.println(getPulseOnNotifications());
+ pw.print(" getPulseSchedule(): "); pw.println(getPulseSchedule());
+ pw.print(" getPulseScheduleResets(): "); pw.println(getPulseScheduleResets());
+ }
+
+ public boolean getDisplayStateSupported() {
+ return getBoolean("doze.display.supported", R.bool.doze_display_state_supported);
}
public int getPulseDuration() {
@@ -67,20 +79,40 @@ public class DozeParameters {
return getInt("doze.pulse.duration.out", R.integer.doze_pulse_duration_out);
}
- public int getPulseStartDelay() {
- return getInt("doze.pulse.delay", R.integer.doze_pulse_delay);
+ public boolean getPulseOnSigMotion() {
+ return getBoolean("doze.pulse.sigmotion", R.bool.doze_pulse_on_significant_motion);
+ }
+
+ public boolean getVibrateOnSigMotion() {
+ return SystemProperties.getBoolean("doze.vibrate.sigmotion", false);
+ }
+
+ public boolean getPulseOnPickup() {
+ return getBoolean("doze.pulse.pickup", R.bool.doze_pulse_on_pick_up);
+ }
+
+ public boolean getVibrateOnPickup() {
+ return SystemProperties.getBoolean("doze.vibrate.pickup", false);
+ }
+
+ public boolean getPulseOnNotifications() {
+ return getBoolean("doze.pulse.notifications", R.bool.doze_pulse_on_notifications);
}
- public long getPulsePeriod(long age) {
- final String spec = getPulsePeriodFunction();
- if (mPulsePeriodFunction == null || !mPulsePeriodFunction.mSpec.equals(spec)) {
- mPulsePeriodFunction = StepFunction.parse(spec);
+ public PulseSchedule getPulseSchedule() {
+ final String spec = getString("doze.pulse.schedule", R.string.doze_pulse_schedule);
+ if (sPulseSchedule == null || !sPulseSchedule.mSpec.equals(spec)) {
+ sPulseSchedule = PulseSchedule.parse(spec);
}
- return mPulsePeriodFunction != null ? mPulsePeriodFunction.evaluate(age) : 0;
+ return sPulseSchedule;
}
- private String getPulsePeriodFunction() {
- return getString("doze.pulse.period.function", R.string.doze_pulse_period_function);
+ public int getPulseScheduleResets() {
+ return getInt("doze.pulse.schedule.resets", R.integer.doze_pulse_schedule_resets);
+ }
+
+ private boolean getBoolean(String propName, int resId) {
+ return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId));
}
private int getInt(String propName, int resId) {
@@ -92,29 +124,25 @@ public class DozeParameters {
return SystemProperties.get(propName, mContext.getString(resId));
}
- private static class StepFunction {
- private static final Pattern PATTERN = Pattern.compile("(\\d+?)(:(\\d+?))?", 0);
+ public static class PulseSchedule {
+ private static final Pattern PATTERN = Pattern.compile("(\\d+?)s", 0);
private String mSpec;
- private long[] mSteps;
- private long[] mValues;
- private long mDefault;
+ private int[] mSchedule;
- public static StepFunction parse(String spec) {
+ public static PulseSchedule parse(String spec) {
if (TextUtils.isEmpty(spec)) return null;
try {
- final StepFunction rt = new StepFunction();
+ final PulseSchedule rt = new PulseSchedule();
rt.mSpec = spec;
final String[] tokens = spec.split(",");
- rt.mSteps = new long[tokens.length - 1];
- rt.mValues = new long[tokens.length - 1];
- for (int i = 0; i < tokens.length - 1; i++) {
+ rt.mSchedule = new int[tokens.length];
+ for (int i = 0; i < tokens.length; i++) {
final Matcher m = PATTERN.matcher(tokens[i]);
if (!m.matches()) throw new IllegalArgumentException("Bad token: " + tokens[i]);
- rt.mSteps[i] = Long.parseLong(m.group(1));
- rt.mValues[i] = Long.parseLong(m.group(3));
+ rt.mSchedule[i] = Integer.parseInt(m.group(1));
}
- rt.mDefault = Long.parseLong(tokens[tokens.length - 1]);
+ if (DEBUG) Log.d(TAG, "Parsed spec [" + spec + "] as: " + rt);
return rt;
} catch (RuntimeException e) {
Log.w(TAG, "Error parsing spec: " + spec, e);
@@ -122,11 +150,17 @@ public class DozeParameters {
}
}
- public long evaluate(long x) {
- for (int i = 0; i < mSteps.length; i++) {
- if (x < mSteps[i]) return mValues[i];
+ @Override
+ public String toString() {
+ return Arrays.toString(mSchedule);
+ }
+
+ public long getNextTime(long now, long notificationTime) {
+ for (int i = 0; i < mSchedule.length; i++) {
+ final long time = notificationTime + mSchedule[i] * 1000;
+ if (time > now) return time;
}
- return mDefault;
+ return 0;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
index 70b6952..5507944 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.phone;
import android.content.Context;
+import android.view.Choreographer;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@@ -43,7 +44,8 @@ public class KeyguardBouncer {
private StatusBarWindowManager mWindowManager;
private KeyguardViewBase mKeyguardView;
private ViewGroup mRoot;
- private boolean mFadingOut;
+ private boolean mShowingSoon;
+ private Choreographer mChoreographer = Choreographer.getInstance();
public KeyguardBouncer(Context context, ViewMediatorCallback callback,
LockPatternUtils lockPatternUtils, StatusBarWindowManager windowManager,
@@ -57,7 +59,7 @@ public class KeyguardBouncer {
public void show() {
ensureView();
- if (mRoot.getVisibility() == View.VISIBLE) {
+ if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) {
// show() updates the current security method. This is needed in case we are already
// showing and the current security method changed.
@@ -68,10 +70,27 @@ public class KeyguardBouncer {
// Try to dismiss the Keyguard. If no security pattern is set, this will dismiss the whole
// Keyguard. If we need to authenticate, show the bouncer.
if (!mKeyguardView.dismiss()) {
+ mShowingSoon = true;
+
+ // Split up the work over multiple frames.
+ mChoreographer.postCallbackDelayed(Choreographer.CALLBACK_ANIMATION, mShowRunnable,
+ null, 48);
+ }
+ }
+
+ private final Runnable mShowRunnable = new Runnable() {
+ @Override
+ public void run() {
mRoot.setVisibility(View.VISIBLE);
mKeyguardView.onResume();
mKeyguardView.startAppearAnimation();
+ mShowingSoon = false;
}
+ };
+
+ private void cancelShowRunnable() {
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mShowRunnable, null);
+ mShowingSoon = false;
}
public void showWithDismissAction(OnDismissAction r) {
@@ -81,7 +100,8 @@ public class KeyguardBouncer {
}
public void hide(boolean destroyView) {
- if (mKeyguardView != null) {
+ cancelShowRunnable();
+ if (mKeyguardView != null) {
mKeyguardView.setOnDismissAction(null);
mKeyguardView.cleanUp();
}
@@ -107,6 +127,7 @@ public class KeyguardBouncer {
* Reset the state of the view.
*/
public void reset() {
+ cancelShowRunnable();
inflateView();
}
@@ -127,7 +148,7 @@ public class KeyguardBouncer {
}
public boolean isShowing() {
- return mRoot != null && mRoot.getVisibility() == View.VISIBLE && !mFadingOut;
+ return mShowingSoon || (mRoot != null && mRoot.getVisibility() == View.VISIBLE);
}
public void prepare() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 0fb2192..88e71e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -88,6 +88,7 @@ public class NavigationBarView extends LinearLayout {
private OnVerticalChangedListener mOnVerticalChangedListener;
private boolean mIsLayoutRtl;
+ private boolean mDelegateIntercepted;
private class NavTransitionListener implements TransitionListener {
private boolean mBackTransitioning;
@@ -198,27 +199,45 @@ public class NavigationBarView extends LinearLayout {
public void setOnVerticalChangedListener(OnVerticalChangedListener onVerticalChangedListener) {
mOnVerticalChangedListener = onVerticalChangedListener;
+ notifyVerticalChangedListener(mVertical);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
- if (mTaskSwitchHelper.onTouchEvent(event)) {
+ initDownStates(event);
+ if (!mDelegateIntercepted && mTaskSwitchHelper.onTouchEvent(event)) {
return true;
}
if (mDeadZone != null && event.getAction() == MotionEvent.ACTION_OUTSIDE) {
mDeadZone.poke(event);
}
- if (mDelegateHelper != null) {
+ if (mDelegateHelper != null && mDelegateIntercepted) {
boolean ret = mDelegateHelper.onInterceptTouchEvent(event);
if (ret) return true;
}
return super.onTouchEvent(event);
}
+ private void initDownStates(MotionEvent ev) {
+ if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+ mDelegateIntercepted = false;
+ }
+ }
+
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
- return mTaskSwitchHelper.onInterceptTouchEvent(event) ||
- mDelegateHelper.onInterceptTouchEvent(event);
+ initDownStates(event);
+ boolean intercept = mTaskSwitchHelper.onInterceptTouchEvent(event);
+ if (!intercept) {
+ mDelegateIntercepted = mDelegateHelper.onInterceptTouchEvent(event);
+ intercept = mDelegateIntercepted;
+ } else {
+ MotionEvent cancelEvent = MotionEvent.obtain(event);
+ cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
+ mDelegateHelper.onInterceptTouchEvent(cancelEvent);
+ cancelEvent.recycle();
+ }
+ return intercept;
}
private H mHandler = new H();
@@ -426,12 +445,16 @@ public class NavigationBarView extends LinearLayout {
if (mDelegateHelper != null) {
mDelegateHelper.setSwapXY(mVertical);
}
- boolean isRTL = (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL);
- mTaskSwitchHelper.setBarState(mVertical, isRTL);
+ updateTaskSwitchHelper();
setNavigationIconHints(mNavigationIconHints, true);
}
+ private void updateTaskSwitchHelper() {
+ boolean isRtl = (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL);
+ mTaskSwitchHelper.setBarState(mVertical, isRtl);
+ }
+
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
@@ -448,19 +471,24 @@ public class NavigationBarView extends LinearLayout {
mVertical = newVertical;
//Log.v(TAG, String.format("onSizeChanged: h=%d, w=%d, vert=%s", h, w, mVertical?"y":"n"));
reorient();
- if (mOnVerticalChangedListener != null) {
- mOnVerticalChangedListener.onVerticalChanged(newVertical);
- }
+ notifyVerticalChangedListener(newVertical);
}
postCheckForInvalidLayout("sizeChanged");
super.onSizeChanged(w, h, oldw, oldh);
}
+ private void notifyVerticalChangedListener(boolean newVertical) {
+ if (mOnVerticalChangedListener != null) {
+ mOnVerticalChangedListener.onVerticalChanged(newVertical);
+ }
+ }
+
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
updateRTLOrder();
+ updateTaskSwitchHelper();
}
/**
@@ -507,8 +535,6 @@ public class NavigationBarView extends LinearLayout {
}
}
-
-
/*
@Override
protected void onLayout (boolean changed, int left, int top, int right, int bottom) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarViewTaskSwitchHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarViewTaskSwitchHelper.java
index 79bb1cd..c253e19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarViewTaskSwitchHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarViewTaskSwitchHelper.java
@@ -55,7 +55,7 @@ public class NavigationBarViewTaskSwitchHelper extends GestureDetector.SimpleOnG
// task switcher detector
mTaskSwitcherDetector.onTouchEvent(event);
int action = event.getAction();
- boolean interceptTouches = false;
+ boolean intercepted = false;
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
mTouchDownX = (int) event.getX();
@@ -71,7 +71,6 @@ public class NavigationBarViewTaskSwitchHelper extends GestureDetector.SimpleOnG
? xDiff > mScrollTouchSlop && xDiff > yDiff
: yDiff > mScrollTouchSlop && yDiff > xDiff;
if (exceededTouchSlop) {
- interceptTouches = true;
return true;
}
break;
@@ -80,7 +79,7 @@ public class NavigationBarViewTaskSwitchHelper extends GestureDetector.SimpleOnG
case MotionEvent.ACTION_UP:
break;
}
- return interceptTouches;
+ return intercepted;
}
public boolean onTouchEvent(MotionEvent event) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index e6db2c8..1b4254c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -316,8 +316,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
int[] mPositionTmp = new int[2];
boolean mExpandedVisible;
- // on-screen navigation buttons
- private NavigationBarView mNavigationBarView = null;
private int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
// the tracker view
@@ -2364,8 +2362,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mStackScroller.setVisibility(View.VISIBLE);
mNotificationPanel.setVisibility(View.GONE);
- setAreThereNotifications(); // show the clear button
-
mNotificationPanel.closeQs();
mExpandedVisible = false;
@@ -3580,6 +3576,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
disable(mDisabledUnmodified, true /* animate */);
}
+ public boolean isKeyguardFadingAway() {
+ return mKeyguardFadingAway;
+ }
+
/**
* Notifies that the Keyguard fading away animation is done.
*/
@@ -4083,11 +4083,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
- public void requestPulse(boolean delayed, DozeService dozeService) {
+ public void requestPulse(DozeService dozeService) {
if (dozeService == null) return;
dozeService.stayAwake(PROCESSING_TIME);
- mHandler.obtainMessage(H.REQUEST_PULSE, delayed ? 1 : 0, 0, dozeService)
- .sendToTarget();
+ mHandler.obtainMessage(H.REQUEST_PULSE, dozeService).sendToTarget();
}
@Override
@@ -4110,9 +4109,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mCurrentDozeService.startDozing();
}
- private void handleRequestPulse(boolean delayed, DozeService dozeService) {
+ private void handleRequestPulse(DozeService dozeService) {
if (!dozeService.equals(mCurrentDozeService)) return;
- final long stayAwake = mScrimController.pulse(delayed);
+ final long stayAwake = mScrimController.pulse();
mCurrentDozeService.stayAwake(stayAwake);
}
@@ -4136,7 +4135,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (msg.what == REQUEST_DOZE) {
handleRequestDoze((DozeService) msg.obj);
} else if (msg.what == REQUEST_PULSE) {
- handleRequestPulse(msg.arg1 != 0, (DozeService) msg.obj);
+ handleRequestPulse((DozeService) msg.obj);
} else if (msg.what == DOZING_STOPPED) {
handleDozingStopped((DozeService) msg.obj);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 57e5755..3ff11d2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -129,20 +129,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener {
if (!mDozing) {
cancelPulsing();
mAnimateChange = true;
+ } else {
+ mAnimateChange = false;
}
scheduleUpdate();
}
/** When dozing, fade screen contents in and out using the front scrim. */
- public long pulse(boolean delayed) {
+ public long pulse() {
if (!mDozing) return 0;
final long now = System.currentTimeMillis();
- if (DEBUG) Log.d(TAG, "pulse delayed=" + delayed + " mPulseEndTime=" + mPulseEndTime
- + " now=" + now);
+ if (DEBUG) Log.d(TAG, "pulse mPulseEndTime=" + mPulseEndTime + " now=" + now);
if (mPulseEndTime != 0 && mPulseEndTime > now) return mPulseEndTime - now;
- final long delay = delayed ? mDozeParameters.getPulseStartDelay() : 0;
- mScrimInFront.postDelayed(mPulseIn, delay);
- mPulseEndTime = now + delay + mDozeParameters.getPulseDuration();
+ mScrimInFront.post(mPulseIn);
+ mPulseEndTime = now + mDozeParameters.getPulseDuration();
return mPulseEndTime - now;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index b4e2d57..55c861a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -43,6 +43,10 @@ public class StatusBarKeyguardViewManager {
// When hiding the Keyguard with timing supplied from WindowManager, better be early than late.
private static final long HIDE_TIMING_CORRECTION_MS = -3 * 16;
+ // Delay for showing the navigation bar when the bouncer appears. This should be kept in sync
+ // with the appear animations of the PIN/pattern/password views.
+ private static final long NAV_BAR_SHOW_DELAY_BOUNCER = 320;
+
private static String TAG = "StatusBarKeyguardViewManager";
private final Context mContext;
@@ -323,12 +327,30 @@ public class StatusBarKeyguardViewManager {
return mBouncer.isShowing();
}
+ private long getNavBarShowDelay() {
+ if (mPhoneStatusBar.isKeyguardFadingAway()) {
+ return mPhoneStatusBar.getKeyguardFadingAwayDelay();
+ } else {
+
+ // Keyguard is not going away, thus we are showing the navigation bar because the
+ // bouncer is appearing.
+ return NAV_BAR_SHOW_DELAY_BOUNCER;
+ }
+ }
+
+ private Runnable mMakeNavigationBarVisibleRunnable = new Runnable() {
+ @Override
+ public void run() {
+ mPhoneStatusBar.getNavigationBarView().setVisibility(View.VISIBLE);
+ }
+ };
+
private void updateStates() {
int vis = mContainer.getSystemUiVisibility();
boolean showing = mShowing;
boolean occluded = mOccluded;
boolean bouncerShowing = mBouncer.isShowing();
- boolean bouncerDismissible = bouncerShowing && !mBouncer.needsFullscreenBouncer();
+ boolean bouncerDismissible = !mBouncer.needsFullscreenBouncer();
if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing)
|| mFirstUpdate) {
@@ -342,8 +364,10 @@ public class StatusBarKeyguardViewManager {
!= (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing) || mFirstUpdate) {
if (mPhoneStatusBar.getNavigationBarView() != null) {
if (!(showing && !occluded) || bouncerShowing) {
- mPhoneStatusBar.getNavigationBarView().setVisibility(View.VISIBLE);
+ mContainer.postOnAnimationDelayed(mMakeNavigationBarVisibleRunnable,
+ getNavBarShowDelay());
} else {
+ mContainer.removeCallbacks(mMakeNavigationBarVisibleRunnable);
mPhoneStatusBar.getNavigationBarView().setVisibility(View.GONE);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 42cfd39..7855452 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -55,12 +55,24 @@ public class StatusBarWindowView extends FrameLayout {
@Override
protected boolean fitSystemWindows(Rect insets) {
if (getFitsSystemWindows()) {
- setPadding(insets.left, insets.top, insets.right, 0);
+ boolean changed = insets.left != getPaddingLeft()
+ || insets.top != getPaddingTop()
+ || insets.right != getPaddingRight()
+ || insets.bottom != getPaddingBottom();
+ if (changed) {
+ setPadding(insets.left, insets.top, insets.right, 0);
+ }
insets.left = 0;
insets.top = 0;
insets.right = 0;
} else {
- setPadding(0, 0, 0, 0);
+ boolean changed = getPaddingLeft() != 0
+ || getPaddingRight() != 0
+ || getPaddingTop() != 0
+ || getPaddingBottom() != 0;
+ if (changed) {
+ setPadding(0, 0, 0, 0);
+ }
}
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 16c0e66..b814b61 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -17,11 +17,15 @@
package com.android.systemui.statusbar.policy;
import android.animation.Animator;
+import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
+import android.animation.TimeInterpolator;
import android.app.ActivityManager;
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.drawable.Drawable;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.RectF;
import android.hardware.input.InputManager;
import android.media.AudioManager;
import android.os.Bundle;
@@ -34,10 +38,12 @@ import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SoundEffectConstants;
+import android.view.View;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageView;
+import java.lang.Math;
import com.android.systemui.R;
@@ -50,15 +56,21 @@ public class KeyButtonView extends ImageView {
// TODO: Get rid of this
public static final float DEFAULT_QUIESCENT_ALPHA = 1f;
+ public static final float MAX_ALPHA = 0.15f;
+ public static final float GLOW_MAX_SCALE_FACTOR = 1.5f;
private long mDownTime;
private int mCode;
private int mTouchSlop;
+ private float mGlowAlpha = 0f;
+ private float mGlowScale = 1f;
private float mDrawingAlpha = 1f;
private float mQuiescentAlpha = DEFAULT_QUIESCENT_ALPHA;
private boolean mSupportsLongpress = true;
+ private AnimatorSet mPressedAnim;
private Animator mAnimateToQuiescent = new ObjectAnimator();
- private Drawable mBackground;
+ private Paint mRipplePaint;
+ private final TimeInterpolator mInterpolator = (TimeInterpolator) new LogInterpolator();
private AudioManager mAudioManager;
private final Runnable mCheckLongPress = new Runnable() {
@@ -90,11 +102,6 @@ public class KeyButtonView extends ImageView {
mSupportsLongpress = a.getBoolean(R.styleable.KeyButtonView_keyRepeat, true);
- Drawable d = getBackground();
- if (d != null) {
- mBackground = d.mutate();
- setBackground(mBackground);
- }
setDrawingAlpha(mQuiescentAlpha);
@@ -134,13 +141,45 @@ public class KeyButtonView extends ImageView {
return super.performAccessibilityAction(action, arguments);
}
+ private Paint getRipplePaint() {
+ if (mRipplePaint == null) {
+ mRipplePaint = new Paint();
+ mRipplePaint.setAntiAlias(true);
+ mRipplePaint.setColor(0xffffffff);
+ }
+ return mRipplePaint;
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ final Paint p = getRipplePaint();
+ p.setAlpha((int)(MAX_ALPHA * mDrawingAlpha * mGlowAlpha * 255));
+
+ final float w = getWidth();
+ final float h = getHeight();
+ final boolean horizontal = w > h;
+ final float diameter = (horizontal ? w : h) * mGlowScale;
+ final float radius = diameter * .5f;
+ final float cx = w * .5f;
+ final float cy = h * .5f;
+ final float rx = horizontal ? radius : cx;
+ final float ry = horizontal ? cy : radius;
+ final float corner = horizontal ? cy : cx;
+
+ canvas.drawRoundRect(cx - rx, cy - ry,
+ cx + rx, cy + ry,
+ corner, corner, p);
+
+ super.onDraw(canvas);
+ }
+
public void setQuiescentAlpha(float alpha, boolean animate) {
mAnimateToQuiescent.cancel();
alpha = Math.min(Math.max(alpha, 0), 1);
if (alpha == mQuiescentAlpha && alpha == mDrawingAlpha) return;
mQuiescentAlpha = alpha;
if (DEBUG) Log.d(TAG, "New quiescent alpha = " + mQuiescentAlpha);
- if (mBackground != null && animate) {
+ if (animate) {
mAnimateToQuiescent = animateToQuiescent();
mAnimateToQuiescent.start();
} else {
@@ -162,32 +201,77 @@ public class KeyButtonView extends ImageView {
public void setDrawingAlpha(float x) {
setImageAlpha((int) (x * 255));
- if (mBackground != null) {
- mBackground.setAlpha((int)(x * 255));
- }
mDrawingAlpha = x;
}
- public void setPressed(boolean pressed) {
- if (mBackground != null) {
- if (pressed != isPressed()) {
- if (pressed) {
- setDrawingAlpha(1f);
- } else {
- mAnimateToQuiescent.cancel();
- mAnimateToQuiescent = animateToQuiescent();
- mAnimateToQuiescent.setDuration(500);
- mAnimateToQuiescent.start();
- }
- }
+ public float getGlowAlpha() {
+ return mGlowAlpha;
+ }
+
+ public void setGlowAlpha(float x) {
+ mGlowAlpha = x;
+ invalidate();
+ }
+
+ public float getGlowScale() {
+ return mGlowScale;
+ }
+
+ public void setGlowScale(float x) {
+ mGlowScale = x;
+ final float w = getWidth();
+ final float h = getHeight();
+ if (GLOW_MAX_SCALE_FACTOR <= 1.0f) {
+ // this only works if we know the glow will never leave our bounds
+ invalidate();
+ } else {
+ final float rx = (w * (GLOW_MAX_SCALE_FACTOR - 1.0f)) / 2.0f + 1.0f;
+ final float ry = (h * (GLOW_MAX_SCALE_FACTOR - 1.0f)) / 2.0f + 1.0f;
+ com.android.systemui.SwipeHelper.invalidateGlobalRegion(
+ this,
+ new RectF(getLeft() - rx,
+ getTop() - ry,
+ getRight() + rx,
+ getBottom() + ry));
+
+ // also invalidate our immediate parent to help avoid situations where nearby glows
+ // interfere
+ ((View)getParent()).invalidate();
}
- super.setPressed(pressed);
}
- private void setHotspot(float x, float y) {
- if (mBackground != null) {
- mBackground.setHotspot(x, y);
+ public void setPressed(boolean pressed) {
+ if (pressed != isPressed()) {
+ if (mPressedAnim != null && mPressedAnim.isRunning()) {
+ mPressedAnim.cancel();
+ }
+ final AnimatorSet as = mPressedAnim = new AnimatorSet();
+ final ObjectAnimator scaleAnimator = ObjectAnimator.ofFloat(this,
+ "glowScale", GLOW_MAX_SCALE_FACTOR);
+ scaleAnimator.setInterpolator(mInterpolator);
+ if (pressed) {
+ mGlowScale = 0f;
+ if (mGlowAlpha < mQuiescentAlpha)
+ mGlowAlpha = mQuiescentAlpha;
+ setDrawingAlpha(1f);
+ as.playTogether(
+ ObjectAnimator.ofFloat(this, "glowAlpha", 1f),
+ scaleAnimator
+ );
+ as.setDuration(500);
+ } else {
+ mAnimateToQuiescent.cancel();
+ mAnimateToQuiescent = animateToQuiescent();
+ as.playTogether(
+ ObjectAnimator.ofFloat(this, "glowAlpha", mGlowAlpha, mGlowAlpha * .2f, 0f),
+ scaleAnimator,
+ mAnimateToQuiescent
+ );
+ as.setDuration(500);
+ }
+ as.start();
}
+ super.setPressed(pressed);
}
public boolean onTouchEvent(MotionEvent ev) {
@@ -209,7 +293,6 @@ public class KeyButtonView extends ImageView {
removeCallbacks(mCheckLongPress);
postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
}
- setHotspot(ev.getX(), ev.getY());
break;
case MotionEvent.ACTION_MOVE:
x = (int)ev.getX();
@@ -218,7 +301,6 @@ public class KeyButtonView extends ImageView {
&& x < getWidth() + mTouchSlop
&& y >= -mTouchSlop
&& y < getHeight() + mTouchSlop);
- setHotspot(ev.getX(), ev.getY());
break;
case MotionEvent.ACTION_CANCEL:
setPressed(false);
@@ -272,6 +354,17 @@ public class KeyButtonView extends ImageView {
InputManager.getInstance().injectInputEvent(ev,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
}
+
+ /**
+ * Interpolator with a smooth log deceleration
+ */
+ private static final class LogInterpolator implements TimeInterpolator {
+ @Override
+ public float getInterpolation(float input) {
+ return 1 - (float) Math.pow(400, -input * 1.4);
+ }
+ }
+
}