diff options
Diffstat (limited to 'packages/SystemUI')
116 files changed, 2080 insertions, 763 deletions
diff --git a/packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png Binary files differnew file mode 100644 index 0000000..6cd1176 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png diff --git a/packages/SystemUI/res/drawable-mdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-mdpi/recents_nav_bar_background.9.png Binary files differnew file mode 100644 index 0000000..7237f09 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/recents_nav_bar_background.9.png diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png Binary files differnew file mode 100644 index 0000000..8d56a1d --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-xxhdpi/recents_nav_bar_background.9.png Binary files differnew file mode 100644 index 0000000..aed300b --- /dev/null +++ b/packages/SystemUI/res/drawable-xxhdpi/recents_nav_bar_background.9.png diff --git a/packages/SystemUI/res/drawable/ic_qs_location_06.xml b/packages/SystemUI/res/drawable/ic_qs_location_06.xml index 25c9ae5..5642a8a 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_06.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_06.xml @@ -27,7 +27,5 @@ Copyright (C) 2014 The Android Open Source Project android:pathData="M12.0,16.0c-1.16,0.0 -2.1,0.94 -2.1,2.1C9.9,19.67 12.0,22.0 12.0,22.0s2.1,-2.33 2.1,-3.9C14.1,16.94 13.16,16.0 12.0,16.0zM12.0,18.85c-0.41,0.0 -0.75,-0.34 -0.75,-0.75s0.34,-0.75 0.75,-0.75c0.41,0.0 0.75,0.34 0.75,0.75S12.41,18.85 12.0,18.85z"/> <path android:pathData="M11.99,15c-1.35,0,-2.45,1.1,-2.45,2.45 c0,1.84,2.45,4.55,2.45,4.55s2.45,-2.71,2.45,-4.55C14.44,16.1,13.34,15,11.99,15z M11.99,18.33c-0.48,0,-0.88,-0.39,-0.88,-0.88 s0.39,-0.88,0.88,-0.88c0.48,0,0.87,0.39,0.87,0.88S12.47,18.33,11.99,18.33z" - android:strokeWidth=".35" - android:fill="#00000000" - android:stroke="#CCCCCC"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_location_07.xml b/packages/SystemUI/res/drawable/ic_qs_location_07.xml index a69c3a2..1ad2ebc 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_07.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_07.xml @@ -24,7 +24,5 @@ Copyright (C) 2014 The Android Open Source Project <path android:pathData="M12,9c-2.51,0,-4.55,2.04,-4.55,4.55 C7.45,16.96,12,22,12,22s4.55,-5.04,4.55,-8.45C16.55,11.04,14.51,9,12,9z M12,15.18c-0.9,0,-1.63,-0.73,-1.63,-1.62 s0.73,-1.62,1.63,-1.62c0.9,0,1.62,0.73,1.62,1.62S12.9,15.18,12,15.18z" - android:strokeWidth="0.65" - android:fill="#00000000" - android:stroke="#CCCCCC"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_location_08.xml b/packages/SystemUI/res/drawable/ic_qs_location_08.xml index c89c047..179bc66 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_08.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_08.xml @@ -24,7 +24,5 @@ Copyright (C) 2014 The Android Open Source Project <path android:pathData="M12,6c-3.09,0,-5.6,2.51,-5.6,5.6 C6.4,15.8,12,22,12,22s5.6,-6.2,5.6,-10.4C17.6,8.51,15.09,6,12,6z M12,13.6c-1.1,0,-2,-0.9,-2,-2s0.9,-2,2,-2c1.1,0,2,0.9,2,2 S13.1,13.6,12,13.6z" - android:strokeWidth="0.8" - android:fill="#00000000" - android:stroke="#CCCCCC"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_location_09.xml b/packages/SystemUI/res/drawable/ic_qs_location_09.xml index 96bb6ce..6169af5 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_09.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_09.xml @@ -24,7 +24,5 @@ Copyright (C) 2014 The Android Open Source Project <path android:pathData="M12,4c-3.48,0,-6.3,2.82,-6.3,6.3 C5.7,15.02,12,22,12,22s6.3,-6.98,6.3,-11.7C18.3,6.82,15.48,4,12,4z M12,12.55c-1.24,0,-2.25,-1.01,-2.25,-2.25S10.76,8.05,12,8.05 c1.24,0,2.25,1.01,2.25,2.25S13.24,12.55,12,12.55z" - android:strokeWidth="0.9" - android:fill="#00000000" - android:stroke="#CCCCCC"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_location_10.xml b/packages/SystemUI/res/drawable/ic_qs_location_10.xml index aced4bd..93e2eb4 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_10.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_10.xml @@ -24,7 +24,5 @@ Copyright (C) 2014 The Android Open Source Project <path android:pathData="M12,3C8.33,3,5.35,5.98,5.35,9.65 C5.35,14.64,12,22,12,22s6.65,-7.36,6.65,-12.35C18.65,5.98,15.67,3,12,3z M12,12.02c-1.31,0,-2.38,-1.06,-2.38,-2.38 S10.69,7.28,12,7.28c1.31,0,2.37,1.06,2.37,2.37S13.31,12.02,12,12.02z" - android:strokeWidth="0.95" - android:fill="#00000000" - android:stroke="#CCCCCC"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_location_11.xml b/packages/SystemUI/res/drawable/ic_qs_location_11.xml index 578308e..09a3e63 100644 --- a/packages/SystemUI/res/drawable/ic_qs_location_11.xml +++ b/packages/SystemUI/res/drawable/ic_qs_location_11.xml @@ -24,7 +24,5 @@ Copyright (C) 2014 The Android Open Source Project <path android:pathData="M12,2C8.13,2,5,5.13,5,9c0,5.25,7,13,7,13s7,-7.75,7,-13 C19,5.13,15.87,2,12,2z M12,11.5c-1.38,0,-2.5,-1.12,-2.5,-2.5s1.12,-2.5,2.5,-2.5c1.38,0,2.5,1.12,2.5,2.5S13.38,11.5,12,11.5z" - android:fill="#00000000" - android:stroke="#CCCCCC" - android:strokeWidth="1.0"/> + android:fill="#4DFFFFFF"/> </vector> diff --git a/packages/SystemUI/res/drawable/keyguard_overflow_number_background.xml b/packages/SystemUI/res/drawable/keyguard_overflow_number_background.xml new file mode 100644 index 0000000..b812d43 --- /dev/null +++ b/packages/SystemUI/res/drawable/keyguard_overflow_number_background.xml @@ -0,0 +1,21 @@ +<?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" + android:shape="oval"> + <solid android:color="#1a000000" /> +</shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml b/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml new file mode 100644 index 0000000..463fee8 --- /dev/null +++ b/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml @@ -0,0 +1,23 @@ +<?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. +--> + +<ImageView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:scaleType="fitXY" + android:src="@drawable/recents_nav_bar_background" />
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml b/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml index f867068..c442f79 100644 --- a/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml +++ b/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml @@ -32,20 +32,20 @@ /> <TextView android:id="@+id/more_text" - android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginStart="20dp" android:layout_gravity="center_vertical" - android:gravity="center_horizontal" - android:textColor="@color/keyguard_overflow_content_color" - android:textAllCaps="true" - android:textAppearance="?android:attr/textAppearanceMedium" + android:background="@drawable/keyguard_overflow_number_background" + android:gravity="center" + android:textColor="#ff686868" + android:textStyle="bold" + android:textSize="14dp" /> <com.android.systemui.statusbar.NotificationOverflowIconsView android:id="@+id/overflow_icons_view" - android:layout_gravity="end|center_vertical" - android:gravity="end" - android:paddingLeft="8dp" - android:paddingRight="8dp" + android:layout_gravity="center_vertical" + android:layout_marginStart="68dp" android:layout_width="120dp" android:layout_height="wrap_content" /> diff --git a/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml b/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml index ff8800c..84d64b9 100644 --- a/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml +++ b/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml @@ -28,7 +28,7 @@ android:layout_height="@dimen/speed_bump_height_collapsed" android:layout_gravity="top" android:orientation="horizontal"> - <View + <com.android.systemui.statusbar.AlphaOptimizedView android:id="@+id/speedbump_line_left" android:layout_width="0dp" android:layout_height="1dp" @@ -42,7 +42,7 @@ android:layout_marginEnd="8dp" android:layout_height="match_parent" android:layout_weight="0"/> - <View + <com.android.systemui.statusbar.AlphaOptimizedView android:id="@+id/speedbump_line_right" android:layout_width="0dp" android:layout_height="1dp" diff --git a/packages/SystemUI/res/layout/volume_panel_item.xml b/packages/SystemUI/res/layout/volume_panel_item.xml index 4a2a0c0..6e5ab47 100644 --- a/packages/SystemUI/res/layout/volume_panel_item.xml +++ b/packages/SystemUI/res/layout/volume_panel_item.xml @@ -35,7 +35,6 @@ android:layout_height="wrap_content" android:layout_weight="1"> <SeekBar - style="?android:attr/seekBarStyle" android:id="@+id/seekbar" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index c45254e..c642626 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Aan."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Af"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Gekoppel."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"USB-verbinding"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Warmkol"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Kennisgewings"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"ONLANGS"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Geen onlangse programme nie"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Programinligting"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"soek"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netwerk word\ndalk gemonitor"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 5c4d98b..d864f9f 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"በርቷል።"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"ጠፍቷል።"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"ተገናኝቷል።"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"ብሉቱዝ <xliff:g id="STATE">%s</xliff:g>።"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"አካባቢ <xliff:g id="STATE">%s</xliff:g>።"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"ማንቂያ ለ<xliff:g id="TIME">%s</xliff:g> ተዋቅሯል።"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"ፓነል ዝጋ"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"ተጨማሪ ጊዜ"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"ያነሰ ጊዜ"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G ውሂብ ቦዝኗል"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G ውሂብ ቦዝኗል"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"የተንቀሳቃሽ ውሂብ ቦዝኗል"</string> @@ -213,9 +212,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"ተጨማሪ ቅንብሮች"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"በማገናኘት ላይ"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"መገናኛ ነጥብ"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"የቅርብ ጊዜዎች"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"ማሳወቂያዎች"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"ምንም የቅርብ ጊዜ መተግበሪያዎች የሉም"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"የመተግበሪያ መረጃ"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ፈልግ"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"አውታረ መረብ\nክትትል ሊደረግበት ይችላል"</string> @@ -234,10 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"በጣም አስቸካይ ያልሆኑ ማሳወቂያዎች ከታች"</string> <string name="notification_tap_again" msgid="7590196980943943842">"ለመክፈት ዳግም መታ ያድርጉ"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"ለማስከፈት ወደ ላይ ያንሸራትቱ"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"ይህን እስኪያጠፉት ድረስ"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"ለአንድ ደቂቃ"</item> + <item quantity="other" msgid="6924190729213550991">"ለ%d ደቂቃዎች"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"ለአንድ ሰዓት"</item> + <item quantity="other" msgid="5408537517529822157">"ለ%d ሰዓቶች"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index d7c5651..3906bfa 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"تم التشغيل."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"تم الإيقاف."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"متصل."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"النطاق"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"نقطة اتصال"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"الإشعارات"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"الأخيرة"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"ليست هناك تطبيقات حديثة"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"معلومات التطبيق"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"بحث"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"قد تكون الشبكة\nخاضعة للرقابة"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 2405804..6ef23ad 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Вкл."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Изкл."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Има връзка."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Тетъринг"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Точка за достъп"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Известия"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"СКОРОШНИ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Няма скорошни приложения"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Информация за приложението"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"търсене"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мрежата може\nда се наблюдава"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 982e0c6..9e3495e 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Activat."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Desactivat."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connectat."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Ancoratge a xarxa"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Zona Wi-Fi"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificacions"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTS"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"No hi ha aplicacions recents."</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informació de l\'aplicació"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"cerca"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"És possible que la xarxa\nestigui controlada"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 570e1bb..6050da4 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Zapnuto."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Vypnuto."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Připojeno."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Sdílení datového připojení"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Oznámení"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"POSLEDNÍ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Žádné nedávné aplikace"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informace o aplikaci"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"vyhledat"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Síť může být\nmonitorována"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 127192a..830bebf 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Til."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Fra."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Forbundet."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Netdeling"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Underretninger"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"SENESTE"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Der er ingen seneste apps"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Oplysninger om applikationen"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"søg"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netværket kan\nvære overvåget"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index c9c7b8e..72c9d64 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"An"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Aus"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Verbunden"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Benachrichtigungen"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"Letzte"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Keine neuen Apps"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"App-Info"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"Suche"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netzwerk wird\neventuell überwacht."</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 1d90dae..2d3f246 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Ενεργό."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Ανενεργό."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Έχει συνδεθεί."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Πρόσδεση"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Σημείο πρόσβασης Wi-Fi"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Ειδοποιήσεις"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"ΠΡΟΣΦΑΤΑ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Καμία πρόσφατη εφαρμογή"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Πληροφορίες εφαρμογής"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"αναζήτηση"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Το δίκτυο μπορεί\nνα παρακολουθείται"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index a9c6678..66233cc 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"On."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Off."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connected."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notifications"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTS"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"No recent apps"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"search"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Network may\nbe monitored"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index a9c6678..66233cc 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"On."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Off."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connected."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notifications"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTS"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"No recent apps"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"search"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Network may\nbe monitored"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 6ca4ebc..0810ee7 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Activado"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Desactivado"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Conectado"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,8 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Anclaje a red"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Zona"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificaciones"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECIENTES"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> + <skip /> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"buscar"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Es posible que la red\nesté supervisada."</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index d0e9c0a..ad92c24 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Sí"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"No"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Conectado"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Anclaje a red"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Zona Wi-Fi"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificaciones"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECIENTES"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"No hay aplicaciones recientes"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"buscar"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"La red se\npuede supervisar"</string> diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml index c692b28..71e2af6 100644 --- a/packages/SystemUI/res/values-et-rEE/strings.xml +++ b/packages/SystemUI/res/values-et-rEE/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Sees."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Väljas."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Ühendatud."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Jagamine"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Leviala"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Märguanded"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"HILJUTISED"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Hiljutisi rakendusi pole"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Rakenduste teave"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"otsing"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Võrku võidakse\njälgida"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index ee2c48d..3ea2110 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"روشن."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"خاموش."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"متصل."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"اتصال به اینترنت با تلفن همراه"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"نقطه اتصال"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"اعلانها"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"موارد اخیر"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"هیچ برنامه جدیدی موجود نیست"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"اطلاعات برنامه"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"جستجو"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ممکن است شبکه\nتحت نظارت باشد"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 44d35b3..eb68ea6 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Käytössä."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Pois käytöstä."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Yhdistetty."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,8 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Jaettu yhteys"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Ilmoitukset"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"VIIMEISIMMÄT"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> + <skip /> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Sovellustiedot"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"haku"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Verkkoa saatetaan\nvalvoa"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index d9790f6..4c1df8c 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Activé"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Désactivé"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connecté"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1x"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"3G+"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth : <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Localisation <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarme réglée sur <xliff:g id="TIME">%s</xliff:g>"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Fermer le panneau"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Plus longtemps"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Moins longtemps"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Données 2G-3G désactivées"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Données 4G désactivées"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Données mobiles désactivées"</string> @@ -215,9 +214,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Plus de paramètres"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Partage de connexion"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Point d\'accès sans fil"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notifications"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"RÉCENTS"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Détails de l\'application"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"rechercher"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Le réseau peut\nêtre surveillé."</string> @@ -236,10 +235,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifications moins urgentes affichées ci-dessous"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Touchez à nouveau pour ouvrir"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Glissez vers le haut pour déverrouiller"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Jusqu\'à la désactivation"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Pendant une minute"</item> + <item quantity="other" msgid="6924190729213550991">"Pendant %d minutes"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Pendant une heure"</item> + <item quantity="other" msgid="5408537517529822157">"Pendant %d heures"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index d95fe06..bd709a0 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Activé"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Désactivé"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connecté"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1x"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth : <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Localisation <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarme réglée sur <xliff:g id="TIME">%s</xliff:g>"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Fermer le panneau"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Plus longtemps"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Moins longtemps"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Données 2G-3G désactivées"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Données 4G désactivées"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Données mobiles désactivées"</string> @@ -215,9 +214,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Plus de paramètres"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Partage de connexion"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Point d\'accès"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"RÉCENTS"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notifications"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Aucune application récente"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informations sur l\'application"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"rechercher"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Le réseau peut\nêtre surveillé."</string> @@ -236,10 +234,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifications moins urgentes ci-dessous"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Appuyer à nouveau pour ouvrir"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Faire glisser pour déverrouiller"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Jusqu\'à la désactivation"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Pendant une minute"</item> + <item quantity="other" msgid="6924190729213550991">"Pendant %d minutes"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Pendant une heure"</item> + <item quantity="other" msgid="5408537517529822157">"Pendant %d heures"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 60d7de1..d6b6d6a 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"चालू."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"बंद."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"कनेक्ट है."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"टेदरिंग"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"हॉटस्पॉट"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"सूचनाएं"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"हाल ही का"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"कोई हाल ही का ऐप्स नहीं"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"एप्लिकेशन जानकारी"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"खोज"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"नेटवर्क को\nमॉनीटर किया जा सकता है"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 09dde42..79d7003 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Uključeno."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Isključeno."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Povezano."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Dijeljenje veze"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Žarišna točka"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Obavijesti"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"NEDAVNO"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nema nedavnih aplikacija"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"pretraži"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Mreža se\nmožda prati"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index dc85416..915f5eb 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Bekapcsolva."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Kikapcsolva."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Csatlakoztatva."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Megosztás"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Értesítések"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"LEGUTÓBBIAK"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nincs újabb alkalmazás"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Az alkalmazás adatai"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"keresés"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Lehet, hogy a\nhálózat felügyelt"</string> diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml index b11a004..ca327d8 100644 --- a/packages/SystemUI/res/values-hy-rAM/strings.xml +++ b/packages/SystemUI/res/values-hy-rAM/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Միացված է:"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Անջատված է:"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Միացված է:"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth-ը <xliff:g id="STATE">%s</xliff:g> է:"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Տեղադրությունը՝ <xliff:g id="STATE">%s</xliff:g>:"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Զարթուցիչը դրված է <xliff:g id="TIME">%s</xliff:g>-ին:"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Փակել վահանակը"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Ավելացնել ժամանակը"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Քչացնել ժամանակը"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G տվյալները անջատված են"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G տվյալները անջատված են"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Շարժական տվյալները անջատված են"</string> @@ -213,9 +212,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Հավելյալ կարգավորումներ"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Միացում"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Թեժ կետ"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Ծանուցումներ"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"ՎԵՐՋԻՆՆԵՐԸ"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Հավելվածի մասին"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"որոնել"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Ցանցը կարող է\nվերահսկվել"</string> @@ -234,10 +233,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Պակաս հրատապ ծանուցումները ստորև"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Կրկին հպեք՝ բացելու համար"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Սահեցրեք վերև` ապակողպելու համար"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Քանի դեռ չեք անջատել"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Մեկ րոպե"</item> + <item quantity="other" msgid="6924190729213550991">"%d րոպե"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Մեկ ժամ"</item> + <item quantity="other" msgid="5408537517529822157">"%d ժամ"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index f62209f..48c9a6d 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Aktif."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Nonaktif."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Tersambung."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Menambatkan"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Pemberitahuan"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"TERBARU"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Tidak ada aplikasi terkini"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Info Aplikasi"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"telusuri"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Jaringan bisa\ndiawasi"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 6cf13be..8653c8f 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"ON"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"OFF"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connesso."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notifiche"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"MESSAGGI RECENTI"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nessuna app recente"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informazioni sull\'applicazione"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"cerca"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"La rete potrebbe\nessere monitorata"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 4f07006..3279bc1 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"פועל."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"כבוי."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"מחובר."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"שיתוף אינטרנט בין ניידים"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"נקודה לשיתוף אינטרנט"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"הודעות"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"אחרונים"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"אין אפליקציות אחרונות"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"מידע על האפליקציה"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"חפש"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ייתכן שהרשת\nמנוטרת"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 84bbf8b..a1f7b5e 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"ON"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"OFF"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"接続済みです。"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"現在地: <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"アラームは<xliff:g id="TIME">%s</xliff:g>に設定されています。"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"パネルを閉じる"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"長くする"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"短くする"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G~3Gデータが無効になりました"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4Gデータが無効になりました"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"モバイルデータが無効になりました"</string> @@ -215,9 +214,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"詳細設定"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"テザリング"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"アクセスポイント"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"最近"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"通知"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"最近使ったアプリはありません"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"アプリ情報"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"検索"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ネットワークが監視される\n場合があります"</string> @@ -236,10 +234,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"緊急度の低い通知を下に表示"</string> <string name="notification_tap_again" msgid="7590196980943943842">"開くにはもう一度タップしてください"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"ロック解除するには上にスワイプしてください"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"ユーザーがOFFにするまで"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"1分"</item> + <item quantity="other" msgid="6924190729213550991">"%d分"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"1時間"</item> + <item quantity="other" msgid="5408537517529822157">"%d時間"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml index c31ea24..a1862da 100644 --- a/packages/SystemUI/res/values-ka-rGE/strings.xml +++ b/packages/SystemUI/res/values-ka-rGE/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"ჩართული"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"გამორთულია."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"დაკავშირებულია."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"მდებარეობა <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"მაღვიძარა დაყენებულია: <xliff:g id="TIME">%s</xliff:g>"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"არეს დახურვა"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"მეტი დრო"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"ნაკლები დრო"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G ინტერნეტი გაითიშა."</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G მონაცემები გათიშულია"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"მობილური ინტერნეტი გაითიშა."</string> @@ -213,9 +212,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"დამატებითი პარამეტრები"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"მოდემის რეჟიმი"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"წვდომის წერტილი"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"შეტყობინებები"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"ბოლო დროის"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"აპლიკაციის შესახებ"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ძიება"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"შესაძლოა ქსელზე\nმონიტორინგი ხორციელდებოდეს"</string> @@ -234,10 +233,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"ქვემოთ მითითებულია ნაკლებად სასწრაფო შეტყობინებები"</string> <string name="notification_tap_again" msgid="7590196980943943842">"შეეხეთ ისევ გასახსნელად"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"გაასრიალეთ ზევით განსაბლოკად"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"სანამ ამას გამორთავდეთ"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"ერთი წუთით"</item> + <item quantity="other" msgid="6924190729213550991">"%d წუთით"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"ერთი საათით"</item> + <item quantity="other" msgid="5408537517529822157">"%d საათით"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml index a9cf7d6..3f5b844 100644 --- a/packages/SystemUI/res/values-km-rKH/strings.xml +++ b/packages/SystemUI/res/values-km-rKH/strings.xml @@ -64,7 +64,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"កំពុងរក្សាទុករូបថតអេក្រង់…"</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"កំពុងរក្សាទុករូបថតអេក្រង់..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"រូបថតអេក្រង់កំពុងត្រូវបានរក្សាទុក។"</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"បានចាប់យករូបថតអេក្រង់។"</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"បានចាប់យករូបថតអេក្រង់។"</string> <string name="screenshot_saved_text" msgid="1152839647677558815">"ប៉ះ ដើម្បីមើលរូបថតអេក្រង់របស់អ្នក។"</string> <string name="screenshot_failed_title" msgid="705781116746922771">"មិនអាចចាប់យករូបថតអេក្រង់។"</string> <string name="screenshot_failed_text" msgid="8134011269572415402">"មិនអាចរក្សាទុករូបថតអេក្រង់។ ឧបករណ៍ផ្ទុកអាចកំពុងប្រើ។"</string> @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"បើក។"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"បិទ"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"បានតភ្ជាប់។"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -140,7 +142,7 @@ <string name="accessibility_remove_notification" msgid="3603099514902182350">"សម្អាតការជូនដំណឹង។"</string> <string name="accessibility_gps_enabled" msgid="3511469499240123019">"បានបើក GPS ។"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ទទួល GPS ។"</string> - <string name="accessibility_tty_enabled" msgid="4613200365379426561">"បានបើកម៉ាស៊ីនអង្គុលីលេខ"</string> + <string name="accessibility_tty_enabled" msgid="4613200365379426561">"បានបើកម៉ាស៊ីនអង្គុលីលេខ"</string> <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"កម្មវិធីរោទ៍ញ័រ។"</string> <string name="accessibility_ringer_silent" msgid="9061243307939135383">"កម្មវិធីរោទ៍ស្ងាត់។"</string> <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> បដិសេធ។"</string> @@ -190,7 +192,7 @@ <string name="quick_settings_rotation_locked_portrait_label" msgid="1553131290066230775">"ចាក់សោបញ្ឈរ"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="7216265671276086593">"ចាក់សោផ្ដេក"</string> <string name="quick_settings_ime_label" msgid="7073463064369468429">"វិធីសាស្ត្របញ្ចូល"</string> - <string name="quick_settings_location_label" msgid="5011327048748762257">"ទីតាំង"</string> + <string name="quick_settings_location_label" msgid="5011327048748762257">"ទីតាំង"</string> <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ទីតាំងបានបិទ"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ឧបករណ៍មេឌៀ"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> @@ -211,10 +213,11 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"ការភ្ជាប់"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"ហតស្ប៉ត"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"ការជូនដំណឹង"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"ថ្មីៗ"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> + <skip /> <string name="recents_app_info_button_label" msgid="2890317189376000030">"ព័ត៌មានកម្មវិធី"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ស្វែងរក"</string> - <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"បណ្ដាញអាច\nត្រូវបានត្រួតពិនិត្យ"</string> + <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"បណ្ដាញអាច\nត្រូវបានត្រួតពិនិត្យ"</string> <string name="description_target_search" msgid="3091587249776033139">"ស្វែងរក"</string> <string name="description_direction_up" msgid="7169032478259485180">"រុញឡើងលើដើម្បី <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> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index bb2e5c1..4772e54 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"사용"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"사용 안함"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"연결됨"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"테더링"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"핫스팟"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"알림"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"최근"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"최근에 사용한 앱 없음"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"애플리케이션 정보"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"검색"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"네트워크가\n모니터링될 수 있음"</string> diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml index 7220777..d5117a9 100644 --- a/packages/SystemUI/res/values-lo-rLA/strings.xml +++ b/packages/SystemUI/res/values-lo-rLA/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"ເປີດ."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"ປິດ."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"ເຊື່ອມຕໍ່ແລ້ວ."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"ການປ່ອນສັນຍານ"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"ຮັອດສະປອດ"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"ການແຈ້ງເຕືອນ"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"ບໍ່ດົນມານີ້"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"ບໍ່ມີແອັບຯທີ່ຫາກໍໃຊ້"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"ຂໍ້ມູນແອັບພລິເຄຊັນ"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ຊອກຫາ"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ເຄືອຄ່າຍອາດ\nຖືກຕິດຕາມ"</string> @@ -230,13 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"ການແຈ້ງເຕືອນທີ່ສຳຄັນໜ້ອຍກວ່າຢູ່ດ້ານລຸ່ມ"</string> <string name="notification_tap_again" msgid="7590196980943943842">"ແຕະອີກຄັ້ງເພື່ອເປີດ"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"ເລື່ອນຂຶ້ນເພື່ອປົດລັອກ"</string> - <string name="zen_mode_forever" msgid="7420011936770086993">"ຈົນກວ່າທ່ານຈະປິດ"</string> + <string name="zen_mode_forever" msgid="7420011936770086993">"ຈົນກວ່າທ່ານຈະປິດ"</string> <plurals name="zen_mode_duration_minutes"> - <item quantity="one" msgid="9040808414992812341">"ສຳລັບນຶ່ງນາທີ"</item> - <item quantity="other" msgid="6924190729213550991">"ສຳລັບ %d ນາທີ"</item> + <item quantity="one" msgid="9040808414992812341">"ເປັນເວລານຶ່ງນາທີ"</item> + <item quantity="other" msgid="6924190729213550991">"ເປັນເວລາ %d ນາທີ"</item> </plurals> <plurals name="zen_mode_duration_hours"> - <item quantity="one" msgid="3480040795582254384">"ສຳລັບນຶ່ງຊົ່ວໂມງ"</item> - <item quantity="other" msgid="5408537517529822157">"ສຳລັບ %d ຊົ່ວໂມງ"</item> + <item quantity="one" msgid="3480040795582254384">"ເປັນເວລານຶ່ງຊົ່ວໂມງ"</item> + <item quantity="other" msgid="5408537517529822157">"ເປັນເວລາ %d ຊົ່ວໂມງ"</item> </plurals> </resources> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index d0ebd54..574e559 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Įjungta."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Išjungta."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Prijungta."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Susiejimas"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Viešosios interneto prieigos taškas"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Pranešimai"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"PASTARIEJI"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nėra naujausių programų"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Programos informacija"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"paieška"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Tinklas gali\nbūti stebimas"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 23ce4a9..398553d 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Ieslēgts"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Izslēgts"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Savienojums ir izveidots."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,8 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Piesaiste"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Tīklājs"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Paziņojumi"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"JAUNĀKIE"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> + <skip /> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informācija par lietojumprogrammu"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"Meklēt"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Tīkls var\ntikt uzraudzīts"</string> diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml index c00b7ed..6a2e79e 100644 --- a/packages/SystemUI/res/values-mn-rMN/strings.xml +++ b/packages/SystemUI/res/values-mn-rMN/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Идэвхижсэн."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Унтраах"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Холбогдсон."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Блютүүт <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Байршил <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Сэрүүлгийг <xliff:g id="TIME">%s</xliff:g>-д тохируулсан."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Самбарыг хаах"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Цаг нэмэх"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Цаг хасах"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G дата идэвхгүй болов"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G дата идэвхгүй байна"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобайл дата идэвхгүй болов"</string> @@ -213,9 +212,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Өөр тохиргоо"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Модем болгох"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Сүлжээний цэг"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"СҮҮЛИЙН"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Мэдэгдэл"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Сүүлд ашигласан апп байхгүй"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Аппликешны мэдээлэл"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"хайх"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Сүлжээ хянагдаж\nбайж болзошгүй"</string> @@ -234,10 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Яаралтай биш мэдэгдлүүдийг доор"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Нээхийн тулд дахин товшино уу"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Түгжээг тайлах бол шудрана уу"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Таныг унтраах хүртэл"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Нэг минутын турш"</item> + <item quantity="other" msgid="6924190729213550991">"%d минутын турш"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Нэг цагийн турш"</item> + <item quantity="other" msgid="5408537517529822157">"%d цагийн турш"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml index 263fc46..7ae9b55 100644 --- a/packages/SystemUI/res/values-ms-rMY/strings.xml +++ b/packages/SystemUI/res/values-ms-rMY/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Dihidupkan."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Dimatikan."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Disambungkan."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Lokasi <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Penggera ditetapkan pada <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Tutup panel"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Lagi masa"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Kurang masa"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Data 2G-3G dilumpuhkan"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data 4G dilumpuhkan"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data mudah alih dilumpuhkan"</string> @@ -213,9 +212,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Lagi tetapan"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Penambatan"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Tempat liputan"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Pemberitahuan"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"TERBAHARU"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Maklumat Aplikasi"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"cari"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Rangkaian mungkin\nboleh dipantau"</string> @@ -234,10 +233,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Pemberitahuan kurang penting di bawah"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Ketik lagi untuk membuka"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Leret ke atas untuk membuka kunci"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Sehingga anda matikan"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Selama satu minit"</item> + <item quantity="other" msgid="6924190729213550991">"Selama %d minit"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Selama satu jam"</item> + <item quantity="other" msgid="5408537517529822157">"Selama %d jam"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 75706a2..e842c0f 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"På."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Av."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Tilkoblet."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tilknytning"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Wi-Fi-sone"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Varsler"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"NYLIGE"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Ingen nylige apper"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformasjon"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"Søk"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Nettverket kan\nvære overvåket"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index c4bef68..360b71d 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Ingeschakeld."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Uitgeschakeld."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Verbonden."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Meldingen"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTE"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Geen recente apps"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"App-informatie"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"zoeken"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netwerk kan\nworden gecontroleerd"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 825dfec..25098d8 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Wł."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Wył."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Połączono."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Powiązanie"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Punkt dostępu"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Powiadomienia"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"OSTATNIE"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Brak ostatnio uruchomionych aplikacji"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacje o aplikacji"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"szukaj"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Sieć może być\nmonitorowana"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index f9ac828..34adc46 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Ativado."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Desativado."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Ligado."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Associação"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Zona Wi-Fi"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificações"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTES"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nenhuma aplicação recente"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações da aplicação"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"pesquisar"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"A rede pode ser\nmonitorizada"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 1c13e62..e3b1f84 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Ligado."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Desligado."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Conectado."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Localização <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarme definido para <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Fechar painel"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Mais tempo"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Menos tempo"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Dados 2G e 3G desativados"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dados 4G desativados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Dados móveis desativados"</string> @@ -215,9 +214,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Mais configurações"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Ponto de acesso"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificações"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTES"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações do aplicativo"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"pesquisar"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"A rede pode estar\nsob monitoração"</string> @@ -236,10 +235,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificações menos urgentes abaixo"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Toque novamente para abrir"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Deslize para cima para desbloquear"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Até você desativar"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Por 1 minuto"</item> + <item quantity="other" msgid="6924190729213550991">"Por %d minutos"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Por 1 hora"</item> + <item quantity="other" msgid="5408537517529822157">"Por %d horas"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index 00bf8c0..e6a3872 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -210,6 +210,8 @@ <skip /> <!-- no translation found for accessibility_desc_connected (8366256693719499665) --> <skip /> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <!-- no translation found for accessibility_data_connection_gprs (1606477224486747751) --> <skip /> <!-- no translation found for accessibility_data_connection_1x (994133468120244018) --> @@ -392,7 +394,7 @@ <skip /> <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> <skip /> - <!-- no translation found for recents_empty_message (2269156590813544104) --> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> <!-- no translation found for recents_app_info_button_label (2890317189376000030) --> <skip /> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 7ffa77c..9bc9178 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Activat."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Dezactivat."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Conectat."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Locație: <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarmă setată pentru <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Închideți panoul"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Mai mult timp"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Mai puțin timp"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Datele 2G-3G au fost dezactivate"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datele 4G au fost dezactivate"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Datele mobile au fost dezactivate"</string> @@ -213,9 +212,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Mai multe setări"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"RECENTE"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Notificări"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Nicio aplicație recentă"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informații despre aplicație"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"căutare"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Rețeaua poate\nfi monitorizată"</string> @@ -234,10 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificările mai puțin urgente mai jos"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Atingeți din nou pentru a deschide"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Glisați în sus pentru a debloca"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Până la dezactivare"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Timp de un minut"</item> + <item quantity="other" msgid="6924190729213550991">"Timp de %d (de) minute"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Timp de o oră"</item> + <item quantity="other" msgid="5408537517529822157">"Timp de %d (de) ore"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index d726428..619ebc2 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Вкл."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Выкл."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Подключено"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Режим модема"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Точка доступа"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Уведомления"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"НЕДАВНИЕ СООБЩЕНИЯ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Ничего не найдено."</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Сведения о приложении"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"поиск"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Действия в сети\nмогут отслеживаться"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 8debc9a..df880cf 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Zapnuté."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Vypnuté."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Pripojené."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth: <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Poloha: <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Budík nastavený na <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Zavrieť panel"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Dlhší čas"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Kratší čas"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Dátové prenosy 2G a 3G sú zakázané"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dátové prenosy 4G sú zakázané"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilné dátové prenosy sú zakázané"</string> @@ -215,9 +214,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Ďalšie nastavenia"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Zdieľanie dátového pripojenia"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"NEDÁVNE"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Upozornenia"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Žiadne nedávne aplikácie"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informácie o aplikácii"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"hľadať"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Sieť môže byť\nmonitorovaná"</string> @@ -236,10 +234,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Menej naliehavé upozornenia sa nachádzajú nižšie"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Upozornenie otvoríte opätovným klepnutím"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Zariadenie odomknete prejdením prstom nahor"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Dokým túto funkciu nevypnete"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Na jednu minútu"</item> + <item quantity="other" msgid="6924190729213550991">"Na %d min"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Na jednu hodinu"</item> + <item quantity="other" msgid="5408537517529822157">"Na %d h"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 6171c16..d1170bd 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Vklopljen."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Izklopljen."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Povezan."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Internet prek mobilne naprave"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Dostopna točka"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Obvestila"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"NEDAVNI"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Ni nedavnih aplikacij"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Podatki o aplikaciji"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"iskanje"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Omrežje je\nlahko spremljano"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 14782e6..cfb6a2c 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Укључено."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Искључено."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Повезано је."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Повезивање"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Хотспот"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Обавештења"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"НАЈНОВИЈЕ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Нема недавних апликација"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Информације о апликацији"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"претражи"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мрежа се можда\nнадгледа"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index a7fb15d..4e3d72f 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Aktiverad."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Inaktiverad."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Ansluten."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,8 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Internetdelning"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Trådlös surfzon"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Aviseringar"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"NYA"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> + <skip /> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformation"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"sök"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Nätverket kan\nvara övervakat"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index b8d8c58..9bab46e 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -118,6 +118,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Imewashwa."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Imezimwa."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Imeunganishwa."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -154,12 +156,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Mahali <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Kengele imewekwa <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Funga paneli ya maelezo"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Muda zaidi"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Muda kidogo"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Data ya 2G-3G imelemazwa"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data ya 4G imelemazwa"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data ya kifaa cha mkononi imelemazwa"</string> @@ -211,9 +210,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Mipangilio zaidi"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Kusambaza mtandao"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Mtandao-hewa"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"YA HIVI KARIBUNI"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Arifa"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Hakuna programu za karibuni"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Maelezo ya Programu"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"tafuta"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Huenda mtandao\nunafuatiliwa"</string> @@ -232,10 +230,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Arifa zisizo za dharura sana ziko hapo chini"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Gonga tena ili ufungue"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Telezesha kidole ili ufungue"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Hadi utakapozima hili"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Kwa dakika moja"</item> + <item quantity="other" msgid="6924190729213550991">"Kwa dakika %d"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Kwa saa moja"</item> + <item quantity="other" msgid="5408537517529822157">"Kwa saa %d"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index dc75e78..4820071 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"เปิดอยู่"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"ปิดอยู่"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"เชื่อมต่อแล้ว"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"บลูทูธ <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"สถานที่ <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"ตั้งเวลาปลุกไว้ที่ <xliff:g id="TIME">%s</xliff:g>"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"ปิดแผงควบคุม"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"เวลามากขึ้น"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"เวลาน้อยลง"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"ปิดใช้งานข้อมูล 2G-3G แล้ว"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"ปิดใช้งานข้อมูล 4G แล้ว"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ปิดใช้งานข้อมูลมือถือแล้ว"</string> @@ -213,9 +212,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"การตั้งค่าเพิ่มเติม"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"การปล่อยสัญญาณ"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"ฮอตสปอต"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"ล่าสุด"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"การแจ้งเตือน"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"ไม่มีแอปล่าสุด"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"ข้อมูลแอปพลิเคชัน"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ค้นหา"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"เครือข่ายอาจ\nถูกตรวจสอบ"</string> @@ -234,10 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"การแจ้งเตือนที่เร่งด่วนน้อยด้านล่าง"</string> <string name="notification_tap_again" msgid="7590196980943943842">"แตะอีกครั้งเพื่อเปิด"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"กวาดขึ้นเพื่อปลดล็อก"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"จนกว่าคุณจะปิดฟังก์ชันนี้"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"1 นาที"</item> + <item quantity="other" msgid="6924190729213550991">"%d นาที"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"1 ชั่วโมง"</item> + <item quantity="other" msgid="5408537517529822157">"%d ชั่วโมง"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 0713ddd..6c6af51 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Naka-on."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Naka-off."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Nakakonekta."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"<xliff:g id="STATE">%s</xliff:g> ng Bluetooth."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Lokasyon <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm set para sa <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Isara ang panel"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Higit pang oras"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Mas kaunting oras"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Di pinapagana ang 2G-3G na data"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Hindi pinapagana ang 4G na data"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Hindi pinapagana ang data ng mobile"</string> @@ -213,9 +212,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Marami pang setting"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Nagte-tether"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"MGA KAMAKAILAN"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Mga Notification"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Walang kamakailang mga app"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Impormasyon ng Application"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"maghanap"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Maaaring\nsinusubaybayan ang network"</string> @@ -234,10 +232,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Nasa ibaba ang mga notification na hindi masyadong mahalaga"</string> <string name="notification_tap_again" msgid="7590196980943943842">"I-tap ulit upang buksan"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Mag-swipe pataas upang i-unlock"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Hanggang sa i-off mo ito"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Sa loob ng isang minuto"</item> + <item quantity="other" msgid="6924190729213550991">"Sa loob ng %d (na) minuto"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Sa loob ng isang oras"</item> + <item quantity="other" msgid="5408537517529822157">"Sa loob ng %d (na) oras"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index c0ba250..85ba8fe 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Açık."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Kapalı."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Bağlandı."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -156,12 +158,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"Konum: <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm saati: <xliff:g id="TIME">%s</xliff:g>."</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"Paneli kapatın"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"Daha uzun süre"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"Daha kısa süre"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G verileri devre dışı bırakıldı"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G verileri devre dışı"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobil veriler devre dışı"</string> @@ -213,9 +212,9 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"Diğer ayarlar"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Tethering"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Hotspot"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Bildirimler"</string> + <!-- no translation found for recents_empty_message (7883614615463619450) --> <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"SON İLETİLER"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Uygulama Bilgileri"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ara"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Ağ izleniyor\nolabilir"</string> @@ -234,10 +233,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"Daha az acil bildirimler aşağıdadır"</string> <string name="notification_tap_again" msgid="7590196980943943842">"Açmak için tekrar hafifçe vurun"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Kilidi açmak için hızlıca yukarı kaydırın"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"Siz bunu kapatana kadar"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"Bir dakika süreyle"</item> + <item quantity="other" msgid="6924190729213550991">"%d dakika süreyle"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"Bir saat süreyle"</item> + <item quantity="other" msgid="5408537517529822157">"%d saat süreyle"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index e149d7b..7f66e72 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Увімкнено."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Вимкнено."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Під’єднано."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Режим модема"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Точка доступу"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Сповіщення"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"ОСТАННІ"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Немає останніх додатків"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Інформація про додаток"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"пошук"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мережа може\nвідстежуватися"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index f99c341..3ddea96 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Bật."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Tắt."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Đã kết nối."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Đang dùng làm điểm truy cập Internet"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Điểm phát sóng"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Thông báo"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"GẦN ĐÂY"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Không có ứng dụng nào gần đây"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Thông tin ứng dụng"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"tìm kiếm"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Mạng có thể\nđược giám sát"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 6940b2c..934ac8c 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"开启。"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"关闭。"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"已连接。"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -158,12 +160,9 @@ <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"蓝牙:<xliff:g id="STATE">%s</xliff:g>。"</string> <string name="accessibility_quick_settings_location" msgid="4577282329866813100">"位置信息服务<xliff:g id="STATE">%s</xliff:g>。"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"闹钟已设置为:<xliff:g id="TIME">%s</xliff:g>。"</string> - <!-- no translation found for accessibility_quick_settings_close (2571790856136835943) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_more_time (5778794273488176726) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_less_time (101026945195230084) --> - <skip /> + <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"关闭面板"</string> + <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"更长时间"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"更短时间"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G 数据网络已停用"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G 数据网络已停用"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"移动数据网络已停用"</string> @@ -215,9 +214,8 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"更多设置"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"网络共享"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"热点"</string> - <!-- no translation found for quick_settings_notifications_label (4818156442169154523) --> - <skip /> - <string name="recents_empty_message" msgid="2269156590813544104">"最近"</string> + <string name="quick_settings_notifications_label" msgid="4818156442169154523">"通知"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"最近没有用过任何应用"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"应用信息"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"搜索"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"网络可能会\n受到监控"</string> @@ -236,10 +234,13 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"不太紧急的通知会显示在下方"</string> <string name="notification_tap_again" msgid="7590196980943943842">"再次点按即可打开"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"向上滑动即可解锁"</string> - <!-- no translation found for zen_mode_forever (7420011936770086993) --> - <skip /> - <!-- no translation found for zen_mode_duration_minutes:one (9040808414992812341) --> - <!-- no translation found for zen_mode_duration_minutes:other (6924190729213550991) --> - <!-- no translation found for zen_mode_duration_hours:one (3480040795582254384) --> - <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> + <string name="zen_mode_forever" msgid="7420011936770086993">"直到您将其关闭"</string> + <plurals name="zen_mode_duration_minutes"> + <item quantity="one" msgid="9040808414992812341">"1分钟"</item> + <item quantity="other" msgid="6924190729213550991">"%d分钟"</item> + </plurals> + <plurals name="zen_mode_duration_hours"> + <item quantity="one" msgid="3480040795582254384">"1小时"</item> + <item quantity="other" msgid="5408537517529822157">"%d小时"</item> + </plurals> </resources> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 04c00f5..40b56fe 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"開啟。"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"關閉。"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"已連線。"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -160,7 +162,7 @@ <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"鬧鐘已設定為:<xliff:g id="TIME">%s</xliff:g>。"</string> <string name="accessibility_quick_settings_close" msgid="2571790856136835943">"關閉面板"</string> <string name="accessibility_quick_settings_more_time" msgid="5778794273488176726">"更多時間"</string> - <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"更少時間"</string> + <string name="accessibility_quick_settings_less_time" msgid="101026945195230084">"較少時間"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"已停用 2G-3G 數據"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"已停用 4G 數據"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"已停用流動數據"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"網路共用"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"熱點"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"通知"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"近期"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"沒有最近使用的應用程式"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程式資料"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"搜尋"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"網絡可能會\n受到監控"</string> @@ -232,7 +234,7 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"不太緊急的通知會在下方顯示"</string> <string name="notification_tap_again" msgid="7590196980943943842">"再次輕按即可開啟"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"向上快速滑動即可解鎖"</string> - <string name="zen_mode_forever" msgid="7420011936770086993">"手動關閉這項設定前一律啟用"</string> + <string name="zen_mode_forever" msgid="7420011936770086993">"直至您關閉這項設定"</string> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 分鐘"</item> <item quantity="other" msgid="6924190729213550991">"%d 分鐘"</item> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 4ffb01b..c1a48c4 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"開啟。"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"關閉。"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"已連線。"</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string> @@ -213,7 +215,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"網路共用"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"無線基地台"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"通知"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"近期"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"沒有最近使用的應用程式"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程式資訊"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"搜尋"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"網路可能\n受到監控"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 4c44972..af49a7f 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -120,6 +120,8 @@ <string name="accessibility_desc_on" msgid="2385254693624345265">"Vula."</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"Vala."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Ixhunyiwe."</string> + <!-- no translation found for accessibility_desc_connecting (3812924520316280149) --> + <skip /> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"I-HSPA"</string> @@ -211,7 +213,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Ukusebenzisa njengemodemu"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"I-Hotspot"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"Izaziso"</string> - <string name="recents_empty_message" msgid="2269156590813544104">"OKWAKAMUVA"</string> + <string name="recents_empty_message" msgid="7883614615463619450">"Azikho izinhlelo zokusebenza zakamuva"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Ulwazi lohlelo lokusebenza"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"sesha"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Kungenzeka inethiwekhi\niqashiwe"</string> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 757d4ad..34cfbe8 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -46,7 +46,7 @@ <drawable name="notification_item_background_color_pressed">#ff454545</drawable> <!-- Tint color for the content on the notification overflow card. --> - <color name="keyguard_overflow_content_color">#ff666666</color> + <color name="keyguard_overflow_content_color">#ff686868</color> <!-- The color of the red speed bump dot --> <color name="speed_bump_dot_red">#ffd50000</color> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 0184df2..79a1df4 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -113,17 +113,20 @@ <!-- The min animation duration for animating views that are newly visible. --> <integer name="recents_filter_animate_new_views_min_duration">125</integer> <!-- The min animation duration for animating the task bar in. --> - <integer name="recents_animate_task_bar_enter_duration">300</integer> + <integer name="recents_animate_task_bar_enter_duration">250</integer> + <!-- The animation delay for animating the first task in. This should roughly be the animation + duration of the transition in to recents. --> + <integer name="recents_animate_task_bar_enter_delay">225</integer> <!-- The min animation duration for animating the task bar out. --> - <integer name="recents_animate_task_bar_exit_duration">150</integer> - <!-- The animation duration for animating in the info pane. --> - <integer name="recents_animate_task_view_info_pane_duration">150</integer> + <integer name="recents_animate_task_bar_exit_duration">125</integer> + <!-- The min animation duration for animating the nav bar scrim in. --> + <integer name="recents_nav_bar_scrim_enter_duration">400</integer> <!-- The animation duration for animating the removal of a task view. --> <integer name="recents_animate_task_view_remove_duration">250</integer> <!-- The minimum alpha for the dim applied to cards that go deeper into the stack. --> <integer name="recents_max_task_stack_view_dim">96</integer> - <!-- Transposes the search bar layout in landscape --> - <bool name="recents_transpose_search_layout_with_orientation">true</bool> + <!-- Transposes the recents layout in landscape. --> + <bool name="recents_transpose_layout_with_orientation">true</bool> <!-- Whether to enable KeyguardService or not --> <bool name="config_enableKeyguardService">true</bool> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index bfbdcf3..35bc7e3 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -83,7 +83,7 @@ <dimen name="notification_mid_height">128dp</dimen> <!-- Height of a the summary ("more card") notification on keyguard. --> - <dimen name="notification_summary_height">40dp</dimen> + <dimen name="notification_summary_height">44dp</dimen> <!-- size at which Notification icons will be drawn in the status bar --> <dimen name="status_bar_icon_drawing_size">18dip</dimen> @@ -272,6 +272,9 @@ <!-- The padding between the individual notification cards. --> <dimen name="notification_padding">4dp</dimen> + <!-- The minimum amount of top overscroll to go to the quick settings. --> + <dimen name="min_top_overscroll_to_qs">36dp</dimen> + <!-- The height of the collapsed speed bump view. --> <dimen name="speed_bump_height_collapsed">24dp</dimen> @@ -319,6 +322,20 @@ <!-- Volume panel z depth --> <dimen name="volume_panel_z">3dp</dimen> - <!-- Move distance for the hint animations on the lockscreen (unlock, phone, camera)--> + <!-- Distance between notifications and header when they are considered to be colliding. --> + <dimen name="header_notifications_collide_distance">24dp</dimen> + + <!-- Distance the user needs to drag vertically such that a swipe is accepted to unlock the + device. --> + <dimen name="unlock_move_distance">75dp</dimen> + + <!-- Move distance for the unlock hint animation on the lockscreen --> <dimen name="hint_move_distance">75dp</dimen> + + <!-- Move distance for the other hint animations on the lockscreen (phone, camera)--> + <dimen name="hint_move_distance_sideways">60dp</dimen> + + <!-- The width of the region on the left/right edge of the screen for performing the camera/ + phone hints. --> + <dimen name="edge_tap_area_width">48dp</dimen> </resources> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 373f11f..de297e5 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -471,13 +471,13 @@ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] --> <string name="quick_settings_brightness_label">Brightness</string> <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] --> - <string name="quick_settings_rotation_unlocked_label">Auto Rotate</string> + <string name="quick_settings_rotation_unlocked_label">Auto-rotate</string> <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] --> - <string name="quick_settings_rotation_locked_label">Rotation Locked</string> + <string name="quick_settings_rotation_locked_label">Rotation locked</string> <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] --> - <string name="quick_settings_rotation_locked_portrait_label">Locked to Portrait</string> + <string name="quick_settings_rotation_locked_portrait_label">Portrait</string> <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] --> - <string name="quick_settings_rotation_locked_landscape_label">Locked to Landscape</string> + <string name="quick_settings_rotation_locked_landscape_label">Landscape</string> <!-- QuickSettings: IME [CHAR LIMIT=NONE] --> <string name="quick_settings_ime_label">Input Method</string> <!-- QuickSettings: Location [CHAR LIMIT=NONE] --> @@ -505,7 +505,7 @@ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] --> <string name="quick_settings_wifi_off_label">Wi-Fi Off</string> <!-- QuickSettings: Remote display [CHAR LIMIT=NONE] --> - <string name="quick_settings_remote_display_no_connection_label">Cast Screen</string> + <string name="quick_settings_remote_display_no_connection_label">Cast screen</string> <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] --> <string name="quick_settings_brightness_dialog_title">Brightness</string> <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] --> @@ -558,10 +558,8 @@ <!-- Zen mode: Short title. [CHAR LIMIT=40] --> <string name="zen_mode_title">Do not disturb</string> - <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=12] --> - <plurals name="keyguard_more_overflow_text"> - <item quantity="other">%d more</item> - </plurals> + <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] --> + <string name="keyguard_more_overflow_text">+<xliff:g id="number_of_notifications" example="5">%d</xliff:g></string> <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] --> <string name="speed_bump_explanation">Less urgent notifications below</string> @@ -572,11 +570,20 @@ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] --> <string name="keyguard_unlock">Swipe up to unlock</string> + <!-- Shows when people have clicked at the left edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] --> + <string name="phone_hint">Swipe right for phone</string> + + <!-- Shows when people have clicked at the right edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] --> + <string name="camera_hint">Swipe left for camera</string> + <string name="bugreport_tile_extended" translatable="false">%s\n%s (%s)</string> <!-- Zen mode condition: no exit criteria. [CHAR LIMIT=NONE] --> <string name="zen_mode_forever">Until you turn this off</string> + <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]--> + <string name="keyguard_indication_charging_time">Charging (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> until full)</string> + <!-- Zen mode condition: time duration in minutes. [CHAR LIMIT=NONE] --> <plurals name="zen_mode_duration_minutes"> <item quantity="one">For one minute</item> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 6a12232..4c269a2 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -197,6 +197,7 @@ <style name="systemui_theme" parent="@android:style/Theme.DeviceDefault"> <item name="android:colorPrimary">@color/primary_color</item> + <item name="android:colorControlActivated">@color/system_accent_color</item> </style> <style name="NotificationsQuickSettings"> @@ -213,11 +214,6 @@ <item name="android:colorControlActivated">#ffffffff</item> </style> - <style name="QSAccentTheme" parent="@android:style/Theme.DeviceDefault"> - <item name="android:colorControlNormal">@color/system_accent_color</item> - <item name="android:colorControlActivated">@color/system_accent_color</item> - </style> - <style name="BorderlessButton" parent="@android:style/Widget.Quantum.Button.Borderless" /> <style name="BorderlessButton.Tiny"> diff --git a/packages/SystemUI/src/com/android/systemui/DessertCaseView.java b/packages/SystemUI/src/com/android/systemui/DessertCaseView.java index 4147155..14392b4 100644 --- a/packages/SystemUI/src/com/android/systemui/DessertCaseView.java +++ b/packages/SystemUI/src/com/android/systemui/DessertCaseView.java @@ -507,7 +507,6 @@ public class DessertCaseView extends FrameLayout { | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); } diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java index 4d6d815..006619b 100644 --- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java +++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java @@ -42,6 +42,7 @@ public class ExpandHelper implements Gefingerpoken { boolean canChildBeExpanded(View v); void setUserExpandedChild(View v, boolean userExpanded); void setUserLockedChild(View v, boolean userLocked); + void expansionStateChanged(boolean isExpanding); } private static final String TAG = "ExpandHelper"; @@ -77,7 +78,6 @@ public class ExpandHelper implements Gefingerpoken { private boolean mWatchingForPull; private boolean mHasPopped; private View mEventSource; - private View mCurrView; private float mOldHeight; private float mNaturalHeight; private float mInitialTouchFocusY; @@ -86,8 +86,7 @@ public class ExpandHelper implements Gefingerpoken { private float mLastFocusY; private float mLastSpanY; private int mTouchSlop; - private int mLastMotionY; - private float mPopLimit; + private float mLastMotionY; private int mPopDuration; private float mPullGestureMinXSpan; private Callback mCallback; @@ -95,10 +94,14 @@ public class ExpandHelper implements Gefingerpoken { private ViewScaler mScaler; private ObjectAnimator mScaleAnimation; private Vibrator mVibrator; + private boolean mEnabled = true; + private ExpandableView mResizedView; + private float mCurrentHeight; private int mSmallSize; private int mLargeSize; private float mMaximumStretch; + private boolean mOnlyMovements; private int mGravity; @@ -109,17 +112,14 @@ public class ExpandHelper implements Gefingerpoken { @Override public boolean onScaleBegin(ScaleGestureDetector detector) { if (DEBUG_SCALE) Log.v(TAG, "onscalebegin()"); - float focusX = detector.getFocusX(); - float focusY = detector.getFocusY(); - final ExpandableView underFocus = findView(focusX, focusY); - startExpanding(underFocus, STRETCH); + startExpanding(mResizedView, STRETCH); return mExpanding; } @Override public boolean onScale(ScaleGestureDetector detector) { - if (DEBUG_SCALE) Log.v(TAG, "onscale() on " + mCurrView); + if (DEBUG_SCALE) Log.v(TAG, "onscale() on " + mResizedView); return true; } @@ -138,6 +138,7 @@ public class ExpandHelper implements Gefingerpoken { public void setHeight(float h) { if (DEBUG_SCALE) Log.v(TAG, "SetHeight: setting to " + h); mView.setActualHeight((int) h); + mCurrentHeight = h; } public float getHeight() { return mView.getActualHeight(); @@ -165,7 +166,6 @@ public class ExpandHelper implements Gefingerpoken { mGravity = Gravity.TOP; mScaleAnimation = ObjectAnimator.ofFloat(mScaler, "height", 0f); mScaleAnimation.setDuration(EXPAND_DURATION); - mPopLimit = mContext.getResources().getDimension(R.dimen.blinds_pop_threshold); mPopDuration = mContext.getResources().getInteger(R.integer.blinds_pop_duration_ms); mPullGestureMinXSpan = mContext.getResources().getDimension(R.dimen.pull_span_min); @@ -188,7 +188,6 @@ public class ExpandHelper implements Gefingerpoken { float target = hand + mOldHeight; float newHeight = clamp(target); mScaler.setHeight(newHeight); - mLastFocusY = mSGD.getFocusY(); mLastSpanY = mSGD.getCurrentSpan(); } @@ -252,6 +251,9 @@ public class ExpandHelper implements Gefingerpoken { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { + if (!isEnabled()) { + return false; + } final int action = ev.getAction(); if (DEBUG_SCALE) Log.d(TAG, "intercept: act=" + MotionEvent.actionToString(action) + " expanding=" + mExpanding + @@ -270,38 +272,34 @@ public class ExpandHelper implements Gefingerpoken { if (DEBUG_SCALE) Log.d(TAG, "set initial span: " + mInitialTouchSpan); if (mExpanding) { + mLastMotionY = ev.getRawY(); return true; } else { if ((action == MotionEvent.ACTION_MOVE) && 0 != (mExpansionStyle & BLINDS)) { // we've begun Venetian blinds style expansion return true; } - final float xspan = mSGD.getCurrentSpanX(); - if ((action == MotionEvent.ACTION_MOVE && - xspan > mPullGestureMinXSpan && - xspan > mSGD.getCurrentSpanY())) { - // detect a vertical pulling gesture with fingers somewhat separated - if (DEBUG_SCALE) Log.v(TAG, "got pull gesture (xspan=" + xspan + "px)"); - - final ExpandableView underFocus = findView(x, y); - startExpanding(underFocus, PULL); - return true; - } - if (mScrollAdapter != null && !mScrollAdapter.isScrolledToTop()) { - return false; - } - // Now look for other gestures switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_MOVE: { + final float xspan = mSGD.getCurrentSpanX(); + if (xspan > mPullGestureMinXSpan && + xspan > mSGD.getCurrentSpanY() && !mExpanding) { + // detect a vertical pulling gesture with fingers somewhat separated + if (DEBUG_SCALE) Log.v(TAG, "got pull gesture (xspan=" + xspan + "px)"); + startExpanding(mResizedView, PULL); + mWatchingForPull = false; + } if (mWatchingForPull) { - final int yDiff = y - mLastMotionY; + final float yDiff = ev.getRawY() - mInitialTouchY; if (yDiff > mTouchSlop) { if (DEBUG) Log.v(TAG, "got venetian gesture (dy=" + yDiff + "px)"); - mLastMotionY = y; - final ExpandableView underFocus = findView(x, y); - if (startExpanding(underFocus, BLINDS)) { - mInitialTouchY = mLastMotionY; - mHasPopped = false; + mWatchingForPull = false; + if (mResizedView != null && !isFullyExpanded(mResizedView)) { + if (startExpanding(mResizedView, BLINDS)) { + mLastMotionY = ev.getRawY(); + mInitialTouchY = ev.getRawY(); + mHasPopped = false; + } } } } @@ -310,8 +308,10 @@ public class ExpandHelper implements Gefingerpoken { case MotionEvent.ACTION_DOWN: mWatchingForPull = mScrollAdapter != null && - isInside(mScrollAdapter.getHostView(), x, y); - mLastMotionY = y; + isInside(mScrollAdapter.getHostView(), x, y) + && mScrollAdapter.isScrolledToTop(); + mResizedView = findView(x, y); + mInitialTouchY = ev.getY(); break; case MotionEvent.ACTION_CANCEL: @@ -321,12 +321,28 @@ public class ExpandHelper implements Gefingerpoken { clearView(); break; } + mLastMotionY = ev.getRawY(); return mExpanding; } } + public void setEnabled(boolean enable) { + mEnabled = enable; + } + + private boolean isEnabled() { + return mEnabled; + } + + private boolean isFullyExpanded(ExpandableView underFocus) { + return underFocus.getIntrinsicHeight() == underFocus.getMaxHeight(); + } + @Override public boolean onTouchEvent(MotionEvent ev) { + if (!isEnabled()) { + return false; + } final int action = ev.getActionMasked(); if (DEBUG_SCALE) Log.d(TAG, "touch: act=" + MotionEvent.actionToString(action) + " expanding=" + mExpanding + @@ -335,47 +351,71 @@ public class ExpandHelper implements Gefingerpoken { (0 != (mExpansionStyle & STRETCH) ? " (stretch)" : "")); mSGD.onTouchEvent(ev); + final int x = (int) mSGD.getFocusX(); + final int y = (int) mSGD.getFocusY(); + if (mOnlyMovements) { + mLastMotionY = ev.getRawY(); + return false; + } switch (action) { + case MotionEvent.ACTION_DOWN: + mWatchingForPull = mScrollAdapter != null && + isInside(mScrollAdapter.getHostView(), x, y); + mResizedView = findView(x, y); + mInitialTouchY = ev.getY(); + break; case MotionEvent.ACTION_MOVE: { - if (0 != (mExpansionStyle & BLINDS)) { - final float rawHeight = ev.getY() - mInitialTouchY + mOldHeight; + if (mWatchingForPull) { + final float yDiff = ev.getRawY() - mInitialTouchY; + if (yDiff > mTouchSlop) { + if (DEBUG) Log.v(TAG, "got venetian gesture (dy=" + yDiff + "px)"); + mWatchingForPull = false; + if (mResizedView != null && !isFullyExpanded(mResizedView)) { + if (startExpanding(mResizedView, BLINDS)) { + mInitialTouchY = ev.getRawY(); + mLastMotionY = ev.getRawY(); + mHasPopped = false; + } + } + } + } + if (mExpanding && 0 != (mExpansionStyle & BLINDS)) { + final float rawHeight = ev.getRawY() - mLastMotionY + mCurrentHeight; final float newHeight = clamp(rawHeight); - final boolean wasClosed = (mOldHeight == mSmallSize); boolean isFinished = false; + boolean expanded = false; if (rawHeight > mNaturalHeight) { isFinished = true; + expanded = true; } if (rawHeight < mSmallSize) { isFinished = true; + expanded = false; } - final float pull = Math.abs(ev.getY() - mInitialTouchY); - if (mHasPopped || pull > mPopLimit) { - if (!mHasPopped) { - vibrate(mPopDuration); - mHasPopped = true; - } - } - - if (mHasPopped) { - mScaler.setHeight(newHeight); + if (!mHasPopped) { + vibrate(mPopDuration); + mHasPopped = true; } - final int x = (int) mSGD.getFocusX(); - final int y = (int) mSGD.getFocusY(); - ExpandableView underFocus = findView(x, y); - if (isFinished && underFocus != null && underFocus != mCurrView) { - finishExpanding(false); // @@@ needed? - startExpanding(underFocus, BLINDS); - mInitialTouchY = y; - mHasPopped = false; + mScaler.setHeight(newHeight); + mLastMotionY = ev.getRawY(); + if (isFinished) { + mCallback.setUserExpandedChild(mResizedView, expanded); + mCallback.expansionStateChanged(false); + return false; + } else { + mCallback.expansionStateChanged(true); } return true; } if (mExpanding) { + + // Gestural expansion is running updateExpansion(); + mLastMotionY = ev.getRawY(); return true; } @@ -396,7 +436,8 @@ public class ExpandHelper implements Gefingerpoken { clearView(); break; } - return true; + mLastMotionY = ev.getRawY(); + return mResizedView != null; } /** @@ -407,15 +448,16 @@ public class ExpandHelper implements Gefingerpoken { return false; } mExpansionStyle = expandType; - if (mExpanding && v == mCurrView) { + if (mExpanding && v == mResizedView) { return true; } mExpanding = true; + mCallback.expansionStateChanged(true); if (DEBUG) Log.d(TAG, "scale type " + expandType + " beginning on view: " + v); mCallback.setUserLockedChild(v, true); - setView(v); - mScaler.setView((ExpandableView) v); + mScaler.setView(v); mOldHeight = mScaler.getHeight(); + mCurrentHeight = mOldHeight; if (mCallback.canChildBeExpanded(v)) { if (DEBUG) Log.d(TAG, "working on an expandable child"); mNaturalHeight = mScaler.getNaturalHeight(mLargeSize); @@ -425,14 +467,13 @@ public class ExpandHelper implements Gefingerpoken { } if (DEBUG) Log.d(TAG, "got mOldHeight: " + mOldHeight + " mNaturalHeight: " + mNaturalHeight); - v.getParent().requestDisallowInterceptTouchEvent(true); return true; } private void finishExpanding(boolean force) { if (!mExpanding) return; - if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mCurrView); + if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView); float currentHeight = mScaler.getHeight(); float targetHeight = mSmallSize; @@ -446,11 +487,12 @@ public class ExpandHelper implements Gefingerpoken { if (mScaleAnimation.isRunning()) { mScaleAnimation.cancel(); } - mCallback.setUserExpandedChild(mCurrView, targetHeight == mNaturalHeight); + mCallback.setUserExpandedChild(mResizedView, targetHeight == mNaturalHeight); + mCallback.expansionStateChanged(false); if (targetHeight != currentHeight) { mScaleAnimation.setFloatValues(targetHeight); mScaleAnimation.setupStartValues(); - final View scaledView = mCurrView; + final View scaledView = mResizedView; mScaleAnimation.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -460,7 +502,7 @@ public class ExpandHelper implements Gefingerpoken { }); mScaleAnimation.start(); } else { - mCallback.setUserLockedChild(mCurrView, false); + mCallback.setUserLockedChild(mResizedView, false); } mExpanding = false; @@ -470,16 +512,11 @@ public class ExpandHelper implements Gefingerpoken { if (DEBUG) Log.d(TAG, "currentHeight is: " + currentHeight); if (DEBUG) Log.d(TAG, "mSmallSize is: " + mSmallSize); if (DEBUG) Log.d(TAG, "targetHeight is: " + targetHeight); - if (DEBUG) Log.d(TAG, "scale was finished on view: " + mCurrView); + if (DEBUG) Log.d(TAG, "scale was finished on view: " + mResizedView); } private void clearView() { - mCurrView = null; - - } - - private void setView(View v) { - mCurrView = v; + mResizedView = null; } /** @@ -494,6 +531,18 @@ public class ExpandHelper implements Gefingerpoken { } /** + * Change the expansion mode to only observe movements and don't perform any resizing. + * This is needed when the expanding is finished and the scroller kicks in, + * performing an overscroll motion. We only want to shrink it again when we are not + * overscrolled. + * + * @param onlyMovements Should only movements be observed? + */ + public void onlyObserveMovements(boolean onlyMovements) { + mOnlyMovements = onlyMovements; + } + + /** * Triggers haptic feedback. */ private synchronized void vibrate(long duration) { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index f7b4994..ffd76a7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -59,8 +59,6 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.MultiUserAvatarCache; import com.android.keyguard.ViewMediatorCallback; -import com.android.keyguard.analytics.KeyguardAnalytics; -import com.android.keyguard.analytics.Session; import com.android.systemui.SystemUI; import com.android.systemui.statusbar.phone.PhoneStatusBar; import com.android.systemui.statusbar.phone.ScrimController; @@ -70,7 +68,6 @@ import com.android.systemui.statusbar.phone.StatusBarWindowManager; import java.io.File; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; -import static com.android.keyguard.analytics.KeyguardAnalytics.SessionTypeAdapter; /** @@ -117,7 +114,6 @@ import static com.android.keyguard.analytics.KeyguardAnalytics.SessionTypeAdapte public class KeyguardViewMediator extends SystemUI { private static final int KEYGUARD_DISPLAY_TIMEOUT_DELAY_DEFAULT = 30000; final static boolean DEBUG = false; - private static final boolean ENABLE_ANALYTICS = Build.IS_DEBUGGABLE; private final static boolean DBG_WAKE = false; private final static String TAG = "KeyguardViewMediator"; @@ -199,8 +195,6 @@ public class KeyguardViewMediator extends SystemUI { private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; - private KeyguardAnalytics mKeyguardAnalytics; - // these are protected by synchronized (this) /** @@ -469,22 +463,6 @@ public class KeyguardViewMediator extends SystemUI { mViewMediatorCallback, mLockPatternUtils); final ContentResolver cr = mContext.getContentResolver(); - if (ENABLE_ANALYTICS && !LockPatternUtils.isSafeModeEnabled() && - Settings.Secure.getInt(cr, KEYGUARD_ANALYTICS_SETTING, 0) == 1) { - mKeyguardAnalytics = new KeyguardAnalytics(mContext, new SessionTypeAdapter() { - - @Override - public int getSessionType() { - return mLockPatternUtils.isSecure() && !mUpdateMonitor.getUserHasTrust( - mLockPatternUtils.getCurrentUser()) - ? Session.TYPE_KEYGUARD_SECURE - : Session.TYPE_KEYGUARD_INSECURE; - } - }, new File(mContext.getCacheDir(), "keyguard_analytics.bin")); - } else { - mKeyguardAnalytics = null; - } - mScreenOn = mPM.isScreenOn(); mLockSounds = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0); @@ -585,9 +563,6 @@ public class KeyguardViewMediator extends SystemUI { } else { doKeyguardLocked(null); } - if (ENABLE_ANALYTICS && mKeyguardAnalytics != null) { - mKeyguardAnalytics.getCallback().onScreenOff(); - } } KeyguardUpdateMonitor.getInstance(mContext).dispatchScreenTurndOff(why); } @@ -830,9 +805,6 @@ public class KeyguardViewMediator extends SystemUI { updateActivityLockScreenState(); adjustStatusBarLocked(); } - if (ENABLE_ANALYTICS && mKeyguardAnalytics != null) { - mKeyguardAnalytics.getCallback().onSetOccluded(isOccluded); - } } } @@ -906,6 +878,7 @@ public class KeyguardViewMediator extends SystemUI { if (mLockPatternUtils.checkVoldPassword()) { if (DEBUG) Log.d(TAG, "Not showing lock screen since just decrypted"); // Without this, settings is not enabled until the lock screen first appears + mShowing = false; hideLocked(); return; } @@ -1219,9 +1192,17 @@ public class KeyguardViewMediator extends SystemUI { if (DEBUG) Log.d(TAG, "handleHide"); try { - // Don't actually hide the Keyguard at the moment, wait for window manager until - // it tells us it's safe to do so with startKeyguardExitAnimation. - mWM.keyguardGoingAway(); + if (mShowing) { + + // Don't actually hide the Keyguard at the moment, wait for window manager until + // it tells us it's safe to do so with startKeyguardExitAnimation. + mWM.keyguardGoingAway(); + } else { + + // Don't try to rely on WindowManager - if Keyguard wasn't showing, window + // manager won't start the exit animation. + handleStartKeyguardExitAnimation(0, 0); + } } catch (RemoteException e) { Log.e(TAG, "Error while calling WindowManager", e); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 2bf369a..07ffd66 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -156,12 +156,14 @@ public class QSPanel extends ViewGroup { AnimatorListener listener = null; if (show) { if (mDetailRecord != null) return; - final View detail = r.tile.createDetailView(mContext, mDetail); - if (detail == null) return; + if (r.detailView == null) { + r.detailView = r.tile.createDetailView(mContext, mDetail); + } + if (r.detailView == null) return; mDetailRecord = r; mDetail.removeAllViews(); mDetail.bringToFront(); - mDetail.addView(detail); + mDetail.addView(r.detailView); } else { if (mDetailRecord == null) return; listener = mTeardownDetailWhenDone; @@ -273,6 +275,7 @@ public class QSPanel extends ViewGroup { private static final class TileRecord { QSTile<?> tile; QSTileView tileView; + View detailView; int row; int col; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java index 2edd8d5..5388994 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java @@ -135,7 +135,7 @@ public class QSTileView extends ViewGroup { } private Drawable getTileBackground() { - final int[] attrs = new int[] { android.R.attr.selectableItemBackground}; + final int[] attrs = new int[] { android.R.attr.selectableItemBackgroundBorderless }; final TypedArray ta = mContext.obtainStyledAttributes(attrs); final Drawable d = ta.getDrawable(0); ta.recycle(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java b/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java index 7b6c544..901cc10 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java @@ -18,6 +18,8 @@ package com.android.systemui.qs; import android.animation.ValueAnimator; import android.content.Context; +import android.graphics.ColorFilter; +import android.graphics.LightingColorFilter; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; @@ -29,6 +31,7 @@ import com.android.systemui.qs.QSTile.SignalState; public final class SignalTileView extends QSTileView { private static final long DEFAULT_DURATION = new ValueAnimator().getDuration(); private static final long SHORT_DURATION = DEFAULT_DURATION / 3; + private static final ColorFilter FILTER = new LightingColorFilter(0xffffffff, 0xff283034); private FrameLayout mIconFrame; private ImageView mSignal; @@ -41,10 +44,12 @@ public final class SignalTileView extends QSTileView { mIn = new ImageView(context); mIn.setImageResource(R.drawable.ic_qs_signal_in); + mIn.setColorFilter(FILTER); addView(mIn); mOut = new ImageView(context); mOut.setImageResource(R.drawable.ic_qs_signal_out); + mOut.setColorFilter(FILTER); addView(mOut); } @@ -88,10 +93,12 @@ public final class SignalTileView extends QSTileView { final SignalState s = (SignalState) state; mSignal.setImageDrawable(null); // force refresh mSignal.setImageResource(s.iconId); + mSignal.setColorFilter(FILTER); if (s.overlayIconId > 0) { mOverlay.setVisibility(VISIBLE); mOverlay.setImageDrawable(null); // force refresh mOverlay.setImageResource(s.overlayIconId); + mOverlay.setColorFilter(FILTER); } else { mOverlay.setVisibility(GONE); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index d220e1a..20ed629 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -94,7 +94,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { } } else { state.iconId = R.drawable.ic_qs_bluetooth_off; - state.label = mContext.getString(R.string.quick_settings_bluetooth_off_label); + state.label = mContext.getString(R.string.quick_settings_bluetooth_label); stateContentDescription = mContext.getString(R.string.accessibility_desc_off); } state.contentDescription = mContext.getString( diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java index e496468..db9b054 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java @@ -85,7 +85,7 @@ public class LocationTile extends QSTile<QSTile.BooleanState> { mContext.getString(R.string.accessibility_desc_on)); } else { if (state.icon == null) state.iconId = R.drawable.ic_qs_location_11; - state.label = mContext.getString(R.string.quick_settings_location_off_label); + state.label = mContext.getString(R.string.quick_settings_location_label); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_location, mContext.getString(R.string.accessibility_desc_off)); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NotificationsTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NotificationsTile.java index 20bbf8b..b981ed6 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NotificationsTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NotificationsTile.java @@ -22,7 +22,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.util.Log; -import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnAttachStateChangeListener; @@ -49,8 +48,7 @@ public class NotificationsTile extends QSTile<NotificationsTile.NotificationsSta @Override public View createDetailView(Context context, ViewGroup root) { - final Context themedContext = new ContextThemeWrapper(mContext, R.style.QSAccentTheme); - final View v = LayoutInflater.from(themedContext).inflate(R.layout.qs_detail, root, false); + final View v = LayoutInflater.from(context).inflate(R.layout.qs_detail, root, false); final TextView title = (TextView) v.findViewById(android.R.id.title); title.setText(R.string.quick_settings_notifications_label); final View close = v.findViewById(android.R.id.button1); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index a1e70b9..6b73002 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -99,7 +99,7 @@ public class WifiTile extends QSTile<QSTile.SignalState> { signalContentDescription = r.getString(R.string.accessibility_no_wifi); } else { state.iconId = R.drawable.ic_qs_wifi_no_network; - state.label = r.getString(R.string.quick_settings_wifi_off_label); + state.label = r.getString(R.string.quick_settings_wifi_label); signalContentDescription = r.getString(R.string.accessibility_wifi_off); } state.contentDescription = mContext.getString( diff --git a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java index ca9bb94..bb19415 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java +++ b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java @@ -152,6 +152,7 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta // Recents service binding Messenger mService = null; Messenger mMessenger; + RecentsMessageHandler mHandler; boolean mServiceIsBound = false; boolean mToggleRecentsUponServiceBound; RecentsServiceConnection mConnection = new RecentsServiceConnection(); @@ -168,7 +169,8 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta public AlternateRecentsComponent(Context context) { mContext = context; mSystemServicesProxy = new SystemServicesProxy(context); - mMessenger = new Messenger(new RecentsMessageHandler()); + mHandler = new RecentsMessageHandler(); + mMessenger = new Messenger(mHandler); } public void onStart() { @@ -507,7 +509,7 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta if (!useThumbnailTransition) { ActivityOptions opts = ActivityOptions.makeCustomAnimation(mContext, R.anim.recents_from_launcher_enter, - R.anim.recents_from_launcher_exit); + R.anim.recents_from_launcher_exit, mHandler, this); startAlternateRecentsActivity(opts, false); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index df387c1..8680786 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -26,11 +26,14 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Configuration; import android.os.Bundle; import android.util.Pair; +import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.view.WindowManager; import android.widget.FrameLayout; import com.android.systemui.R; @@ -67,6 +70,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView FrameLayout mContainerView; RecentsView mRecentsView; View mEmptyView; + View mNavBarScrimView; AppWidgetHost mAppWidgetHost; AppWidgetProviderInfo mSearchAppWidgetInfo; @@ -99,7 +103,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView dismissRecentsIfVisible(); } } else if (action.equals(RecentsService.ACTION_START_ENTER_ANIMATION)) { - // Try and start the enter animation + // Try and start the enter animation (or restart it on configuration changed) mRecentsView.startOnEnterAnimation(); } } @@ -129,6 +133,9 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView mRecentsView.setBSP(root); } + // Hide the scrim by default when we enter recents + mNavBarScrimView.setVisibility(View.INVISIBLE); + // Add the default no-recents layout if (stacks.size() == 1 && stacks.get(0).getTaskCount() == 0) { mEmptyView.setVisibility(View.VISIBLE); @@ -269,10 +276,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Create the empty view LayoutInflater inflater = LayoutInflater.from(this); mEmptyView = inflater.inflate(R.layout.recents_empty, mContainerView, false); + mNavBarScrimView = inflater.inflate(R.layout.recents_nav_bar_scrim, mContainerView, false); mContainerView = new FrameLayout(this); mContainerView.addView(mRecentsView); mContainerView.addView(mEmptyView); + mContainerView.addView(mNavBarScrimView); setContentView(mContainerView); // Update the recent tasks @@ -282,6 +291,16 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView bindSearchBarAppWidget(); // Add the search bar layout addSearchBarAppWidgetView(); + + // Update if we are getting a configuration change + if (savedInstanceState != null) { + onConfigurationChange(); + } + } + + void onConfigurationChange() { + // Try and start the enter animation (or restart it on configuration changed) + mRecentsView.startOnEnterAnimation(); } @Override @@ -433,17 +452,44 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView @Override public void onBackPressed() { - boolean interceptedByInfoPanelClose = false; - // Unfilter any stacks if (!mRecentsView.unfilterFilteredStacks()) { - super.onBackPressed(); + if (!mRecentsView.launchFirstTask()) { + super.onBackPressed(); + } } } @Override - public void onTaskLaunching() { + public void onEnterAnimationTriggered() { + // Fade in the scrim + RecentsConfiguration config = RecentsConfiguration.getInstance(); + if (config.hasNavBarScrim()) { + mNavBarScrimView.setVisibility(View.VISIBLE); + mNavBarScrimView.setAlpha(0f); + mNavBarScrimView.animate().alpha(1f) + .setStartDelay(config.taskBarEnterAnimDelay) + .setDuration(config.navBarScrimEnterDuration) + .setInterpolator(config.fastOutSlowInInterpolator) + .withLayer() + .start(); + } + } + + @Override + public void onTaskLaunching(boolean isTaskInStackBounds) { mTaskLaunched = true; + + // Fade out the scrim + RecentsConfiguration config = RecentsConfiguration.getInstance(); + if (!isTaskInStackBounds && config.hasNavBarScrim()) { + mNavBarScrimView.animate().alpha(0f) + .setStartDelay(0) + .setDuration(config.taskBarExitAnimDuration) + .setInterpolator(config.fastOutSlowInInterpolator) + .withLayer() + .start(); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java index 6391685..0cf6ee6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java @@ -41,7 +41,7 @@ public class RecentsConfiguration { public Rect displayRect = new Rect(); boolean isLandscape; - boolean transposeSearchLayoutWithOrientation; + boolean transposeRecentsLayoutWithOrientation; int searchBarAppWidgetId = -1; public float animationPxMovementPerSecond; @@ -58,7 +58,6 @@ public class RecentsConfiguration { public float taskStackWidthPaddingPct; public int taskStackTopPaddingPx; - public int taskViewInfoPaneAnimDuration; public int taskViewRemoveAnimDuration; public int taskViewRemoveAnimTranslationXPx; public int taskViewTranslationZMinPx; @@ -76,8 +75,11 @@ public class RecentsConfiguration { public int taskBarViewHighlightColor; public int taskBarEnterAnimDuration; + public int taskBarEnterAnimDelay; public int taskBarExitAnimDuration; + public int navBarScrimEnterDuration; + public boolean launchedFromAltTab; public boolean launchedWithThumbnailAnimation; @@ -108,8 +110,8 @@ public class RecentsConfiguration { isLandscape = res.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; - transposeSearchLayoutWithOrientation = - res.getBoolean(R.bool.recents_transpose_search_layout_with_orientation); + transposeRecentsLayoutWithOrientation = + res.getBoolean(R.bool.recents_transpose_layout_with_orientation); if (Console.Enabled) { Console.log(Constants.Log.UI.MeasureAndLayout, "[RecentsConfiguration|orientation]", isLandscape ? "Landscape" : "Portrait", @@ -133,8 +135,6 @@ public class RecentsConfiguration { taskStackWidthPaddingPct = widthPaddingPctValue.getFloat(); taskStackTopPaddingPx = res.getDimensionPixelSize(R.dimen.recents_stack_top_padding); - taskViewInfoPaneAnimDuration = - res.getInteger(R.integer.recents_animate_task_view_info_pane_duration); taskViewRemoveAnimDuration = res.getInteger(R.integer.recents_animate_task_view_remove_duration); taskViewRemoveAnimTranslationXPx = @@ -163,9 +163,14 @@ public class RecentsConfiguration { taskBarEnterAnimDuration = res.getInteger(R.integer.recents_animate_task_bar_enter_duration); + taskBarEnterAnimDelay = + res.getInteger(R.integer.recents_animate_task_bar_enter_delay); taskBarExitAnimDuration = res.getInteger(R.integer.recents_animate_task_bar_exit_duration); + navBarScrimEnterDuration = + res.getInteger(R.integer.recents_nav_bar_scrim_enter_duration); + fastOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, com.android.internal.R.interpolator.fast_out_slow_in); fastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context, @@ -203,11 +208,16 @@ public class RecentsConfiguration { launchedWithThumbnailAnimation = false; } - /** Returns whether the search bar app widget exists */ + /** Returns whether the search bar app widget exists. */ public boolean hasSearchBarAppWidget() { return searchBarAppWidgetId >= 0; } + /** Returns whether the nav bar scrim should be visible. */ + public boolean hasNavBarScrim() { + return !transposeRecentsLayoutWithOrientation || !isLandscape; + } + /** * Returns the task stack bounds in the current orientation. These bounds do not account for * the system insets. @@ -216,7 +226,7 @@ public class RecentsConfiguration { if (hasSearchBarAppWidget()) { Rect searchBarBounds = new Rect(); getSearchBarBounds(width, height, searchBarBounds); - if (isLandscape && transposeSearchLayoutWithOrientation) { + if (isLandscape && transposeRecentsLayoutWithOrientation) { // In landscape, the search bar appears on the left, so shift the task rect right taskStackBounds.set(searchBarBounds.width(), 0, width, height); } else { @@ -239,7 +249,7 @@ public class RecentsConfiguration { return; } - if (isLandscape && transposeSearchLayoutWithOrientation) { + if (isLandscape && transposeRecentsLayoutWithOrientation) { // In landscape, the search bar appears on the left searchBarSpaceBounds.set(0, 0, searchBarSpaceHeightPx, height); } else { diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsPackageMonitor.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsPackageMonitor.java index 4e620b6..8bcc7f5 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsPackageMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsPackageMonitor.java @@ -38,6 +38,7 @@ public class RecentsPackageMonitor extends PackageMonitor { PackageCallbacks mCb; List<ActivityManager.RecentTaskInfo> mTasks; SystemServicesProxy mSsp; + boolean mRegistered; public RecentsPackageMonitor(Context context) { mSsp = new SystemServicesProxy(context); @@ -46,13 +47,19 @@ public class RecentsPackageMonitor extends PackageMonitor { /** Registers the broadcast receivers with the specified callbacks. */ public void register(Context context, PackageCallbacks cb) { mCb = cb; - register(context, Looper.getMainLooper(), false); + if (!mRegistered) { + register(context, Looper.getMainLooper(), false); + mRegistered = true; + } } /** Unregisters the broadcast receivers. */ @Override public void unregister() { - super.unregister(); + if (mRegistered) { + super.unregister(); + mRegistered = false; + } mTasks.clear(); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index 6005275..db398b1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -54,7 +54,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV /** The RecentsView callbacks */ public interface RecentsViewCallbacks { - public void onTaskLaunching(); + public void onTaskLaunching(boolean isTaskInStackBounds); + public void onEnterAnimationTriggered(); } // The space partitioning root of this container @@ -160,6 +161,9 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV /** Requests all task stacks to start their enter-recents animation */ public void startOnEnterAnimation() { + // Notify callbacks that we are starting the enter animation + mCb.onEnterAnimationTriggered(); + int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); @@ -351,7 +355,11 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV final TaskStack stack, final Task task) { // Notify any callbacks of the launching of a new task if (mCb != null) { - mCb.onTaskLaunching(); + boolean isTaskInStackBounds = false; + if (stackView != null && tv != null) { + isTaskInStackBounds = stackView.isTaskInStackBounds(tv); + } + mCb.onTaskLaunching(isTaskInStackBounds); } final Runnable launchRunnable = new Runnable() { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index 053f122..5830e37 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -430,6 +430,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal return getScrollAmountOutOfBounds(getStackScroll()) != 0; } + /** Returns whether the task view is in the stack bounds or not */ + boolean isTaskInStackBounds(TaskView tv) { + Rect r = new Rect(); + tv.getHitRect(r); + return r.bottom <= mRect.bottom; + } + /** Updates the min and max virtual scroll bounds */ void updateMinMaxScroll(boolean boundScrollToNewMinMax) { // Compute the min and max scroll values 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 ffa181d..632c816 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java @@ -234,7 +234,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On mBarView.setTranslationY(-mBarView.getMeasuredHeight()); mBarView.animate() .translationY(0) - .setStartDelay(200) + .setStartDelay(config.taskBarEnterAnimDelay) .setInterpolator(config.fastOutSlowInInterpolator) .setDuration(config.taskBarEnterAnimDuration) .withLayer() diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AlphaOptimizedView.java b/packages/SystemUI/src/com/android/systemui/statusbar/AlphaOptimizedView.java new file mode 100644 index 0000000..d2fe858 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/AlphaOptimizedView.java @@ -0,0 +1,50 @@ +/* + * 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.statusbar; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +/** + * A View which does not have overlapping renderings commands and therefore does not need a + * layer when alpha is changed. + */ +public class AlphaOptimizedView extends View +{ + public AlphaOptimizedView(Context context) { + super(context); + } + + public AlphaOptimizedView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AlphaOptimizedView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public AlphaOptimizedView(Context context, AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public boolean hasOverlappingRendering() { + return false; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java index 5b2ea0b..517a4e8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java @@ -25,7 +25,6 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; - import com.android.systemui.ExpandHelper; import com.android.systemui.Gefingerpoken; import com.android.systemui.R; @@ -87,6 +86,7 @@ public class DragDownHelper implements Gefingerpoken { captureStartingChild(mInitialTouchX, mInitialTouchY); mInitialTouchY = y; mInitialTouchX = x; + mOnDragDownListener.onTouchSlopExceeded(); return true; } break; @@ -202,5 +202,6 @@ public class DragDownHelper implements Gefingerpoken { void onDraggedDown(View startingChild); void onDragDownReset(); void onThresholdReached(); + void onTouchSlopExceeded(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java index 088f076..ac2537c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java @@ -69,7 +69,9 @@ public abstract class ExpandableView extends FrameLayout { ? MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.EXACTLY) : MeasureSpec.makeMeasureSpec(layoutParams.height, MeasureSpec.EXACTLY); } - child.measure(widthMeasureSpec, childHeightSpec); + child.measure( + getChildMeasureSpec(widthMeasureSpec, 0 /* padding */, layoutParams.width), + childHeightSpec); int childHeight = child.getMeasuredHeight(); maxChildHeight = Math.max(maxChildHeight, childHeight); } else { @@ -79,7 +81,9 @@ public abstract class ExpandableView extends FrameLayout { int ownHeight = hasFixedHeight ? ownMaxHeight : maxChildHeight; newHeightSpec = MeasureSpec.makeMeasureSpec(ownHeight, MeasureSpec.EXACTLY); for (View child : mMatchParentViews) { - child.measure(widthMeasureSpec, newHeightSpec); + child.measure(getChildMeasureSpec( + widthMeasureSpec, 0 /* padding */, child.getLayoutParams().width), + newHeightSpec); } mMatchParentViews.clear(); int width = MeasureSpec.getSize(widthMeasureSpec); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/InterceptedNotifications.java b/packages/SystemUI/src/com/android/systemui/statusbar/InterceptedNotifications.java index de27119..4233ab8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/InterceptedNotifications.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/InterceptedNotifications.java @@ -52,7 +52,7 @@ public class InterceptedNotifications { for (int i = 0; i < n; i++) { final StatusBarNotification sbn = mIntercepted.valueAt(i); mReleased.add(sbn.getKey()); - mBar.addNotificationInternal(sbn, null); + mBar.displayNotification(sbn, null); } mIntercepted.clear(); updateSyntheticNotification(); @@ -71,16 +71,17 @@ public class InterceptedNotifications { public void retryIntercepts(Ranking ranking) { if (ranking == null) return; - boolean changed = false; final int N = mIntercepted.size(); + final ArraySet<String> removed = new ArraySet<String>(N); for (int i = 0; i < N; i++) { final StatusBarNotification sbn = mIntercepted.valueAt(i); if (!tryIntercept(sbn, ranking)) { - changed = true; - mBar.addNotificationInternal(sbn, ranking); + removed.add(sbn.getKey()); + mBar.displayNotification(sbn, ranking); } } - if (changed) { + if (!removed.isEmpty()) { + mIntercepted.removeAll(removed); updateSyntheticNotification(); } } @@ -96,12 +97,6 @@ public class InterceptedNotifications { return ent.key.equals(mSynKey); } - public void update(StatusBarNotification notification) { - if (mIntercepted.containsKey(notification.getKey())) { - mIntercepted.put(notification.getKey(), notification); - } - } - private boolean shouldDisplayIntercepted() { return Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.DISPLAY_INTERCEPTED_NOTIFICATIONS, 0) != 0; @@ -129,7 +124,7 @@ public class InterceptedNotifications { mBar.getCurrentUserHandle()); if (mSynKey == null) { mSynKey = sbn.getKey(); - mBar.addNotificationInternal(sbn, null); + mBar.displayNotification(sbn, null); } else { mBar.updateNotificationInternal(sbn, null); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java new file mode 100644 index 0000000..ce35e4b --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -0,0 +1,190 @@ +/* + * 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.statusbar; + +import com.android.internal.app.IBatteryStats; +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.keyguard.KeyguardUpdateMonitorCallback; +import com.android.systemui.R; +import com.android.systemui.statusbar.phone.KeyguardIndicationTextView; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; +import android.os.BatteryStats; +import android.os.Handler; +import android.os.Message; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.UserHandle; +import android.text.TextUtils; +import android.text.format.Formatter; +import android.util.Log; +import android.view.View; + +/** + * Controls the little text indicator on the keyguard. + */ +public class KeyguardIndicationController { + + private static final String TAG = "KeyguardIndicationController"; + + private static final int MSG_HIDE_TRANSIENT = 1; + + private final Context mContext; + private final KeyguardIndicationTextView mTextView; + private final IBatteryStats mBatteryInfo; + + private String mRestingIndication; + private String mTransientIndication; + private boolean mVisible; + + private boolean mPowerPluggedIn; + private boolean mPowerCharged; + + public KeyguardIndicationController(Context context, KeyguardIndicationTextView textView) { + mContext = context; + mTextView = textView; + + mBatteryInfo = IBatteryStats.Stub.asInterface( + ServiceManager.getService(BatteryStats.SERVICE_NAME)); + KeyguardUpdateMonitor.getInstance(context).registerCallback(mUpdateMonitor); + context.registerReceiverAsUser( + mReceiver, UserHandle.OWNER, new IntentFilter(Intent.ACTION_TIME_TICK), null, null); + } + + public void setVisible(boolean visible) { + mVisible = visible; + mTextView.setVisibility(visible ? View.VISIBLE : View.GONE); + if (visible) { + hideTransientIndication(); + updateIndication(); + } + } + + /** + * Sets the indication that is shown if nothing else is showing. + */ + public void setRestingIndication(String restingIndication) { + mRestingIndication = restingIndication; + updateIndication(); + } + + /** + * Hides transient indication in {@param delayMs}. + */ + public void hideTransientIndicationDelayed(long delayMs) { + mHandler.sendMessageDelayed( + mHandler.obtainMessage(MSG_HIDE_TRANSIENT), delayMs); + } + + /** + * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}. + */ + public void showTransientIndication(int transientIndication) { + showTransientIndication(mContext.getResources().getString(transientIndication)); + } + + /** + * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}. + */ + public void showTransientIndication(String transientIndication) { + mTransientIndication = transientIndication; + mHandler.removeMessages(MSG_HIDE_TRANSIENT); + updateIndication(); + } + + /** + * Hides transient indication. + */ + public void hideTransientIndication() { + if (mTransientIndication != null) { + mTransientIndication = null; + mHandler.removeMessages(MSG_HIDE_TRANSIENT); + updateIndication(); + } + } + + private void updateIndication() { + if (mVisible) { + mTextView.switchIndication(computeIndication()); + } + } + + private String computeIndication() { + if (!TextUtils.isEmpty(mTransientIndication)) { + return mTransientIndication; + } + if (mPowerPluggedIn) { + return computePowerIndication(); + } + return mRestingIndication; + } + + private String computePowerIndication() { + if (mPowerCharged) { + return mContext.getResources().getString(R.string.keyguard_charged); + } + + // Try fetching charging time from battery stats. + try { + long chargingTimeRemaining = mBatteryInfo.computeChargeTimeRemaining(); + if (chargingTimeRemaining > 0) { + String chargingTimeFormatted = + Formatter.formatShortElapsedTime(mContext, chargingTimeRemaining); + return mContext.getResources().getString( + R.string.keyguard_indication_charging_time, chargingTimeFormatted); + } + } catch (RemoteException e) { + Log.e(TAG, "Error calling IBatteryStats: ", e); + } + + // Fall back to simple charging label. + return mContext.getResources().getString(R.string.keyguard_plugged_in); + } + + KeyguardUpdateMonitorCallback mUpdateMonitor = new KeyguardUpdateMonitorCallback() { + @Override + public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) { + mPowerPluggedIn = status.status == BatteryManager.BATTERY_STATUS_CHARGING + || status.status == BatteryManager.BATTERY_STATUS_FULL; + mPowerCharged = status.isCharged(); + updateIndication(); + } + }; + + BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (mVisible) { + updateIndication(); + } + } + }; + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == MSG_HIDE_TRANSIENT && mTransientIndication != null) { + mTransientIndication = null; + updateIndication(); + } + } + }; +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowIconsView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowIconsView.java index ce31894..6819d9b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowIconsView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowIconsView.java @@ -18,15 +18,13 @@ package com.android.systemui.statusbar; import android.app.Notification; import android.content.Context; -import android.graphics.Color; +import android.content.res.Configuration; import android.graphics.PorterDuff; import android.util.AttributeSet; -import android.view.View; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; -import com.android.internal.statusbar.StatusBarIcon; +import com.android.internal.util.NotificationColorUtil; import com.android.systemui.R; import com.android.systemui.statusbar.phone.IconMerger; @@ -37,6 +35,8 @@ public class NotificationOverflowIconsView extends IconMerger { private TextView mMoreText; private int mTintColor; + private int mIconSize; + private NotificationColorUtil mNotificationColorUtil = new NotificationColorUtil(); public NotificationOverflowIconsView(Context context, AttributeSet attrs) { super(context, attrs); @@ -46,6 +46,8 @@ public class NotificationOverflowIconsView extends IconMerger { protected void onFinishInflate() { super.onFinishInflate(); mTintColor = getResources().getColor(R.color.keyguard_overflow_content_color); + mIconSize = getResources().getDimensionPixelSize( + com.android.internal.R.dimen.status_bar_icon_size); } public void setMoreText(TextView moreText) { @@ -56,14 +58,24 @@ public class NotificationOverflowIconsView extends IconMerger { StatusBarIconView v = new StatusBarIconView(getContext(), "", notification.notification.getNotification()); v.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - v.setColorFilter(mTintColor, PorterDuff.Mode.MULTIPLY); - addView(v); + addView(v, mIconSize, mIconSize); v.set(notification.icon.getStatusBarIcon()); + applyColor(notification.notification.getNotification(), v); updateMoreText(); } + private void applyColor(Notification notification, StatusBarIconView view) { + if (notification.color != Notification.COLOR_DEFAULT) { + if (mNotificationColorUtil.isGrayscale(view.getDrawable())) { + view.setColorFilter(mTintColor, PorterDuff.Mode.MULTIPLY); + } + } else { + view.setColorFilter(notification.color, PorterDuff.Mode.SRC_ATOP); + } + } + private void updateMoreText() { - mMoreText.setText(getResources().getQuantityString( - R.plurals.keyguard_more_overflow_text, getChildCount(), getChildCount())); + mMoreText.setText( + getResources().getString(R.string.keyguard_more_overflow_text, getChildCount())); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotView.java index 3ca021a..1503072 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotView.java @@ -41,6 +41,11 @@ public class SpeedBumpDotView extends View { canvas.drawCircle(radius, radius, radius, mPaint); } + @Override + public boolean hasOverlappingRendering() { + return false; + } + public void setColor(int color) { mPaint.setColor(color); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotsState.java b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotsState.java index 06a7f95..4febab1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotsState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpDotsState.java @@ -70,23 +70,12 @@ public class SpeedBumpDotsState { for (int i = 0; i < childCount; i++) { View child = mHostView.getChildAt(i); ViewState viewState = mStateMap.get(child); - float translationX = child.getTranslationX(); - float translationY = child.getTranslationY(); - float scale = child.getScaleX(); - float alpha = child.getAlpha(); - if (translationX != viewState.xTranslation) { - child.setTranslationX(viewState.xTranslation); - } - if (translationY != viewState.yTranslation) { - child.setTranslationY(viewState.yTranslation); - } - if (scale != viewState.scale) { - child.setScaleX(viewState.scale); - child.setScaleY(viewState.scale); - } - if (alpha != viewState.alpha) { - child.setAlpha(viewState.alpha); - } + + child.setTranslationX(viewState.xTranslation); + child.setTranslationY(viewState.yTranslation); + child.setScaleX(viewState.scale); + child.setScaleY(viewState.scale); + child.setAlpha(viewState.alpha); } } @@ -115,7 +104,7 @@ public class SpeedBumpDotsState { ViewState viewState = mStateMap.get(child); child.animate().setInterpolator(mFastOutSlowInInterpolator) .setStartDelay(startDelay) - .alpha(viewState.alpha).withLayer() + .alpha(viewState.alpha) .translationX(viewState.xTranslation) .translationY(viewState.yTranslation) .scaleX(viewState.scale).scaleY(viewState.scale); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpView.java index a84daef..689d0e9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SpeedBumpView.java @@ -37,8 +37,8 @@ public class SpeedBumpView extends ExpandableView implements View.OnClickListene private final int mDotsHeight; private final int mTextPaddingInset; private SpeedBumpDotsLayout mDots; - private View mLineLeft; - private View mLineRight; + private AlphaOptimizedView mLineLeft; + private AlphaOptimizedView mLineRight; private boolean mIsExpanded; private boolean mDividerVisible = true; private ValueAnimator mCurrentAnimator; @@ -89,8 +89,8 @@ public class SpeedBumpView extends ExpandableView implements View.OnClickListene protected void onFinishInflate() { super.onFinishInflate(); mDots = (SpeedBumpDotsLayout) findViewById(R.id.speed_bump_dots_layout); - mLineLeft = findViewById(R.id.speedbump_line_left); - mLineRight = findViewById(R.id.speedbump_line_right); + mLineLeft = (AlphaOptimizedView) findViewById(R.id.speedbump_line_left); + mLineRight = (AlphaOptimizedView) findViewById(R.id.speedbump_line_right); mExplanationText = (TextView) findViewById(R.id.speed_bump_text); resetExplanationText(); @@ -176,8 +176,7 @@ public class SpeedBumpView extends ExpandableView implements View.OnClickListene .scaleX(scale) .scaleY(scale) .translationY(translationY) - .setListener(needsHideListener ? mHideExplanationListener : null) - .withLayer(); + .setListener(needsHideListener ? mHideExplanationListener : null); mExplanationTextVisible = visible; } } @@ -211,7 +210,6 @@ public class SpeedBumpView extends ExpandableView implements View.OnClickListene float endTranslationXRight = nowVisible ? 0.0f : mCenterX - mLineRight.getLeft(); mLineLeft.animate() .alpha(endValue) - .withLayer() .scaleX(endValue) .scaleY(endValue) .translationX(endTranslationXLeft) @@ -219,7 +217,6 @@ public class SpeedBumpView extends ExpandableView implements View.OnClickListene .withEndAction(onFinishedRunnable); mLineRight.animate() .alpha(endValue) - .withLayer() .scaleX(endValue) .scaleY(endValue) .translationX(endTranslationXRight) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BounceInterpolator.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BounceInterpolator.java index 367d326..0fdc185 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BounceInterpolator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BounceInterpolator.java @@ -27,6 +27,7 @@ public class BounceInterpolator implements Interpolator { @Override public float getInterpolation(float t) { + t *= 11f / 10f; if (t < 4f / 11f) { return SCALE_FACTOR * t * t; } else if (t < 8f / 11f) { @@ -36,8 +37,7 @@ public class BounceInterpolator implements Interpolator { float t2 = t - 9f / 11f; return SCALE_FACTOR * t2 * t2 + 15f / 16f; } else { - float t2 = t - 21f / 22f; - return SCALE_FACTOR * t2 * t2 + 63f / 64f; + return 1; } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java index b4f4865..086a266 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java @@ -28,6 +28,7 @@ import android.view.ViewConfiguration; import android.view.ViewPropertyAnimator; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; + import com.android.systemui.R; import com.android.systemui.statusbar.FlingAnimationUtils; @@ -39,7 +40,10 @@ import java.util.ArrayList; public class KeyguardPageSwipeHelper { private static final float SWIPE_MAX_ICON_SCALE_AMOUNT = 2.0f; - private static final float SWIPE_RESTING_ALPHA_AMOUNT = 0.7f; + public static final float SWIPE_RESTING_ALPHA_AMOUNT = 0.5f; + public static final long HINT_PHASE1_DURATION = 250; + private static final long HINT_PHASE2_DURATION = 450; + private final Context mContext; private FlingAnimationUtils mFlingAnimationUtils; @@ -54,11 +58,13 @@ public class KeyguardPageSwipeHelper { private int mTouchSlop; private int mMinTranslationAmount; private int mMinFlingVelocity; + private int mHintDistance; private PowerManager mPowerManager; private final View mLeftIcon; private final View mCenterIcon; private final View mRightIcon; private Interpolator mFastOutSlowIn; + private Interpolator mBounceInterpolator; private Animator mSwipeAnimator; private boolean mCallbackCalled; @@ -81,9 +87,12 @@ public class KeyguardPageSwipeHelper { mMinFlingVelocity = configuration.getScaledMinimumFlingVelocity(); mMinTranslationAmount = mContext.getResources().getDimensionPixelSize( R.dimen.keyguard_min_swipe_amount); + mHintDistance = + mContext.getResources().getDimensionPixelSize(R.dimen.hint_move_distance_sideways); mFlingAnimationUtils = new FlingAnimationUtils(mContext, 0.4f); mFastOutSlowIn = AnimationUtils.loadInterpolator(mContext, android.R.interpolator.fast_out_slow_in); + mBounceInterpolator = new BounceInterpolator(); } public boolean onTouchEvent(MotionEvent event) { @@ -168,6 +177,83 @@ public class KeyguardPageSwipeHelper { return false; } + public void startHintAnimation(boolean right, Runnable onFinishedListener) { + startHintAnimationPhase1(right, onFinishedListener); + } + + /** + * Phase 1: Move everything sidewards. + */ + private void startHintAnimationPhase1(boolean right, final Runnable onFinishedListener) { + float target = right ? -mHintDistance : mHintDistance; + startHintTranslationAnimations(target, HINT_PHASE1_DURATION, mFastOutSlowIn); + ValueAnimator animator = ValueAnimator.ofFloat(mTranslation, target); + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + mTranslation = (float) animation.getAnimatedValue(); + } + }); + animator.addListener(new AnimatorListenerAdapter() { + private boolean mCancelled; + + @Override + public void onAnimationCancel(Animator animation) { + mCancelled = true; + } + + @Override + public void onAnimationEnd(Animator animation) { + if (mCancelled) { + mSwipeAnimator = null; + onFinishedListener.run(); + } else { + startUnlockHintAnimationPhase2(onFinishedListener); + } + } + }); + animator.setInterpolator(mFastOutSlowIn); + animator.setDuration(HINT_PHASE1_DURATION); + animator.start(); + mSwipeAnimator = animator; + } + + /** + * Phase 2: Move back. + */ + private void startUnlockHintAnimationPhase2(final Runnable onFinishedListener) { + startHintTranslationAnimations(0f /* target */, HINT_PHASE2_DURATION, mBounceInterpolator); + ValueAnimator animator = ValueAnimator.ofFloat(mTranslation, 0f); + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + mTranslation = (float) animation.getAnimatedValue(); + } + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mSwipeAnimator = null; + onFinishedListener.run(); + } + }); + animator.setInterpolator(mBounceInterpolator); + animator.setDuration(HINT_PHASE2_DURATION); + animator.start(); + mSwipeAnimator = animator; + } + + private void startHintTranslationAnimations(float target, long duration, + Interpolator interpolator) { + ArrayList<View> targetViews = mCallback.getTranslationViews(); + for (View targetView : targetViews) { + targetView.animate() + .setDuration(duration) + .setInterpolator(interpolator) + .translationX(target); + } + } + private void onUserActivity(long when) { mPowerManager.userActivity(when, false); } @@ -180,7 +266,6 @@ public class KeyguardPageSwipeHelper { View targetView = mTranslation > 0 ? mLeftIcon : mRightIcon; targetView.animate().cancel(); if (mSwipeAnimator != null) { - mSwipeAnimator.removeAllListeners(); mSwipeAnimator.cancel(); hideInactiveIcons(true); } @@ -218,11 +303,18 @@ public class KeyguardPageSwipeHelper { } }); animator.addListener(new AnimatorListenerAdapter() { + private boolean mCancelled; + + @Override + public void onAnimationCancel(Animator animation) { + mCancelled = true; + } + @Override public void onAnimationEnd(Animator animation) { mSwipeAnimator = null; mSwipingInProgress = false; - if (!snapBack && !mCallbackCalled) { + if (!snapBack && !mCallbackCalled && !mCancelled) { // ensure that the callback is called eventually mCallback.onAnimationToSideStarted(mTranslation < 0); @@ -281,7 +373,7 @@ public class KeyguardPageSwipeHelper { private void setTranslation(float translation, boolean isReset) { translation = rightSwipePossible() ? translation : Math.max(0, translation); translation = leftSwipePossible() ? translation : Math.min(0, translation); - if (translation != mTranslation) { + if (translation != mTranslation || isReset) { ArrayList<View> translatedViews = mCallback.getTranslationViews(); for (View view : translatedViews) { view.setTranslationX(translation); @@ -307,7 +399,7 @@ public class KeyguardPageSwipeHelper { } } - private void showAllIcons(boolean animate) { + public void showAllIcons(boolean animate) { float scale = 1.0f; float alpha = SWIPE_RESTING_ALPHA_AMOUNT; updateIcon(mRightIcon, scale, alpha, animate); @@ -315,6 +407,11 @@ public class KeyguardPageSwipeHelper { updateIcon(mLeftIcon, scale, alpha, animate); } + public void animateHideLeftRightIcon() { + updateIcon(mRightIcon, 0f, 0f, true); + updateIcon(mLeftIcon, 0f, 0f, true); + } + private void hideInactiveIcons(boolean animate){ View otherView = mTranslation < 0 ? mLeftIcon : mRightIcon; updateIcon(otherView, 0, 0, animate); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index dfd5a88..7926d03 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -48,7 +48,8 @@ public class NotificationPanelView extends PanelView implements View.OnClickListener, NotificationStackScrollLayout.OnOverscrollTopChangedListener, KeyguardPageSwipeHelper.Callback { - private static float EXPANSION_RUBBER_BAND_EXTRA_FACTOR = 0.6f; + private static final float EXPANSION_RUBBER_BAND_EXTRA_FACTOR = 0.6f; + private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f; private KeyguardPageSwipeHelper mPageSwiper; private StatusBarHeaderView mHeader; @@ -82,17 +83,20 @@ public class NotificationPanelView extends PanelView implements private float mQsExpansionHeight; private int mQsMinExpansionHeight; private int mQsMaxExpansionHeight; - private int mMinStackHeight; private int mQsPeekHeight; - private float mNotificationTranslation; - private int mStackScrollerIntrinsicPadding; private boolean mStackScrollerOverscrolling; private boolean mQsExpansionEnabled = true; private ValueAnimator mQsExpansionAnimator; private FlingAnimationUtils mFlingAnimationUtils; private int mStatusBarMinHeight; + private boolean mHeaderHidden; + private boolean mUnlockIconActive; + private int mNotificationsHeaderCollideDistance; + private int mUnlockMoveDistance; private Interpolator mFastOutSlowInInterpolator; + private Interpolator mFastOutLinearInterpolator; + private Interpolator mLinearOutSlowInInterpolator; private ObjectAnimator mClockAnimator; private int mClockAnimationTarget = -1; private int mTopPaddingAdjustment; @@ -143,6 +147,10 @@ public class NotificationPanelView extends PanelView implements mNotificationStackScroller.setOverscrollTopChangedListener(this); mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(getContext(), android.R.interpolator.fast_out_slow_in); + mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator(getContext(), + android.R.interpolator.linear_out_slow_in); + mFastOutLinearInterpolator = AnimationUtils.loadInterpolator(getContext(), + android.R.interpolator.fast_out_linear_in); mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area); mSwipeTranslationViews.add(mNotificationStackScroller); mSwipeTranslationViews.add(mKeyguardStatusView); @@ -154,11 +162,13 @@ public class NotificationPanelView extends PanelView implements super.loadDimens(); mNotificationTopPadding = getResources().getDimensionPixelSize( R.dimen.notifications_top_padding); - mMinStackHeight = getResources().getDimensionPixelSize(R.dimen.collapsed_stack_height); mFlingAnimationUtils = new FlingAnimationUtils(getContext(), 0.4f); mStatusBarMinHeight = getResources().getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); mQsPeekHeight = getResources().getDimensionPixelSize(R.dimen.qs_peek_height); + mNotificationsHeaderCollideDistance = + getResources().getDimensionPixelSize(R.dimen.header_notifications_collide_distance); + mUnlockMoveDistance = getResources().getDimensionPixelOffset(R.dimen.unlock_move_distance); mClockPositionAlgorithm.loadDimens(getResources()); } @@ -171,7 +181,8 @@ public class NotificationPanelView extends PanelView implements mQsMaxExpansionHeight = mHeader.getExpandedHeight() + mQsContainer.getHeight(); if (mQsExpanded) { if (mQsFullyExpanded) { - setQsStackScrollerPadding(mQsMaxExpansionHeight); + mQsExpansionHeight = mQsMaxExpansionHeight; + requestScrollerTopPaddingUpdate(false /* animate */); } } else { if (!mStackScrollerOverscrolling) { @@ -188,11 +199,12 @@ public class NotificationPanelView extends PanelView implements */ private void positionClockAndNotifications() { boolean animateClock = mNotificationStackScroller.isAddOrRemoveAnimationPending(); + int stackScrollerPadding; if (mStatusBar.getBarState() != StatusBarState.KEYGUARD) { int bottom = mStackScrollerOverscrolling ? mHeader.getCollapsedHeight() : mHeader.getBottom(); - mStackScrollerIntrinsicPadding = bottom + mQsPeekHeight + stackScrollerPadding = bottom + mQsPeekHeight + mNotificationTopPadding; mTopPaddingAdjustment = 0; } else { @@ -210,12 +222,11 @@ public class NotificationPanelView extends PanelView implements mKeyguardStatusView.setY(mClockPositionResult.clockY); } applyClockAlpha(mClockPositionResult.clockAlpha); - mStackScrollerIntrinsicPadding = mClockPositionResult.stackScrollerPadding; + stackScrollerPadding = mClockPositionResult.stackScrollerPadding; mTopPaddingAdjustment = mClockPositionResult.stackScrollerPaddingAdjustment; } - mNotificationStackScroller.setTopPadding(mStackScrollerIntrinsicPadding, - mAnimateNextTopPaddingChange || animateClock); - mAnimateNextTopPaddingChange = false; + mNotificationStackScroller.setIntrinsicPadding(stackScrollerPadding); + requestScrollerTopPaddingUpdate(animateClock); } private void startClockAnimation(int y) { @@ -231,8 +242,8 @@ public class NotificationPanelView extends PanelView implements mClockAnimator.removeAllListeners(); mClockAnimator.cancel(); } - mClockAnimator = - ObjectAnimator.ofFloat(mKeyguardStatusView, View.Y, mClockAnimationTarget); + mClockAnimator = ObjectAnimator + .ofFloat(mKeyguardStatusView, View.Y, mClockAnimationTarget); mClockAnimator.setInterpolator(mFastOutSlowInInterpolator); mClockAnimator.setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD); mClockAnimator.addListener(new AnimatorListenerAdapter() { @@ -277,6 +288,7 @@ public class NotificationPanelView extends PanelView implements @Override public void resetViews() { mBlockTouches = false; + mUnlockIconActive = false; mPageSwiper.reset(); closeQs(); } @@ -369,6 +381,7 @@ public class NotificationPanelView extends PanelView implements mInitialTouchX = x; mQsTracking = true; mIntercepting = false; + mNotificationStackScroller.removeLongPressCallback(); return true; } break; @@ -411,7 +424,9 @@ public class NotificationPanelView extends PanelView implements } // TODO: Handle doublefinger swipe to notifications again. Look at history for a reference // implementation. - if (!mIsExpanding && !mQsExpanded && mStatusBar.getBarState() != StatusBarState.SHADE) { + if ((!mIsExpanding || mHintAnimationRunning) + && !mQsExpanded + && mStatusBar.getBarState() != StatusBarState.SHADE) { mPageSwiper.onTouchEvent(event); if (mPageSwiper.isSwipingInProgress()) { return true; @@ -506,6 +521,13 @@ public class NotificationPanelView extends PanelView implements updateQsState(); } + @Override + public void flingTopOverscroll(float velocity, boolean open) { + mStackScrollerOverscrolling = false; + setQsExpansion(mQsExpansionHeight); + flingSettings(velocity, open); + } + private void onQsExpansionStarted() { onQsExpansionStarted(0); } @@ -537,10 +559,11 @@ public class NotificationPanelView extends PanelView implements mHeader.setExpanded(expandVisually, mStackScrollerOverscrolling); mNotificationStackScroller.setEnabled(!mQsExpanded); mQsPanel.setVisibility(expandVisually ? View.VISIBLE : View.INVISIBLE); - mQsContainer.setVisibility(mKeyguardShowing && !mQsExpanded + mQsContainer.setVisibility(mKeyguardShowing && !expandVisually ? View.INVISIBLE : View.VISIBLE); mScrollView.setTouchEnabled(mQsExpanded); + mNotificationStackScroller.setTouchEnabled(!mQsExpanded); } private void setQsExpansion(float height) { @@ -554,9 +577,7 @@ public class NotificationPanelView extends PanelView implements mQsExpansionHeight = height; mHeader.setExpansion(height - mQsPeekHeight); setQsTranslation(height); - if (!mStackScrollerOverscrolling) { - setQsStackScrollerPadding(height); - } + requestScrollerTopPaddingUpdate(false /* animate */); mStatusBar.userActivity(); } @@ -564,24 +585,12 @@ public class NotificationPanelView extends PanelView implements mQsContainer.setY(height - mQsContainer.getHeight()); } - private void setQsStackScrollerPadding(float height) { - float start = height - mScrollView.getScrollY() + mNotificationTopPadding; - float stackHeight = mNotificationStackScroller.getHeight() - start; - if (stackHeight <= mMinStackHeight) { - float overflow = mMinStackHeight - stackHeight; - stackHeight = mMinStackHeight; - start = mNotificationStackScroller.getHeight() - stackHeight; - mNotificationStackScroller.setTranslationY(overflow); - mNotificationTranslation = overflow + mScrollView.getScrollY(); - } else { - mNotificationStackScroller.setTranslationY(0); - mNotificationTranslation = mScrollView.getScrollY(); - } - mNotificationStackScroller.setTopPadding(clampQsStackScrollerPadding((int) start), false); - } - private int clampQsStackScrollerPadding(int desiredPadding) { - return Math.max(desiredPadding, mStackScrollerIntrinsicPadding); + private void requestScrollerTopPaddingUpdate(boolean animate) { + mNotificationStackScroller.updateTopPadding(mQsExpansionHeight, + mScrollView.getScrollY(), + mAnimateNextTopPaddingChange || animate); + mAnimateNextTopPaddingChange = false; } private void trackMovement(MotionEvent event) { @@ -689,11 +698,9 @@ public class NotificationPanelView extends PanelView implements @Override protected int getMaxPanelHeight() { // TODO: Figure out transition for collapsing when QS is open, adjust height here. - int maxPanelHeight = super.getMaxPanelHeight(); - int emptyBottomMargin = mStackScrollerContainer.getHeight() - - mNotificationStackScroller.getHeight() - + mNotificationStackScroller.getEmptyBottomMargin(); - int maxHeight = maxPanelHeight - emptyBottomMargin - mTopPaddingAdjustment; + int emptyBottomMargin = mNotificationStackScroller.getEmptyBottomMargin(); + int maxHeight = mNotificationStackScroller.getHeight() - emptyBottomMargin + - mTopPaddingAdjustment; maxHeight = Math.max(maxHeight, mStatusBarMinHeight); return maxHeight; } @@ -708,6 +715,79 @@ public class NotificationPanelView extends PanelView implements positionClockAndNotifications(); } mNotificationStackScroller.setStackHeight(expandedHeight); + updateKeyguardHeaderVisibility(); + updateUnlockIcon(); + } + + private void updateUnlockIcon() { + if (mStatusBar.getBarState() == StatusBarState.KEYGUARD + || mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED) { + boolean active = getMaxPanelHeight() - getExpandedHeight() > mUnlockMoveDistance; + if (active && !mUnlockIconActive && mTracking) { + mKeyguardBottomArea.getLockIcon().animate() + .alpha(1f) + .scaleY(LOCK_ICON_ACTIVE_SCALE) + .scaleX(LOCK_ICON_ACTIVE_SCALE) + .setInterpolator(mFastOutLinearInterpolator) + .setDuration(150); + } else if (!active && mUnlockIconActive && mTracking) { + mKeyguardBottomArea.getLockIcon().animate() + .alpha(KeyguardPageSwipeHelper.SWIPE_RESTING_ALPHA_AMOUNT) + .scaleY(1f) + .scaleX(1f) + .setInterpolator(mFastOutLinearInterpolator) + .setDuration(150); + } + mUnlockIconActive = active; + } + } + + /** + * Hides the header when notifications are colliding with it. + */ + private void updateKeyguardHeaderVisibility() { + if (mStatusBar.getBarState() == StatusBarState.KEYGUARD + || mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED) { + boolean hidden; + if (mStatusBar.getBarState() == StatusBarState.KEYGUARD) { + + // When on Keyguard, we hide the header as soon as the top card of the notification + // stack scroller is close enough (collision distance) to the bottom of the header. + hidden = mNotificationStackScroller.getNotificationsTopY() + <= mHeader.getBottom() + mNotificationsHeaderCollideDistance; + } else { + + // In SHADE_LOCKED, the top card is already really close to the header. Hide it as + // soon as we start translating the stack. + hidden = mNotificationStackScroller.getTranslationY() < 0; + } + + if (hidden && !mHeaderHidden) { + mHeader.animate() + .alpha(0f) + .withLayer() + .translationY(-mHeader.getHeight()/2) + .setInterpolator(mFastOutLinearInterpolator) + .setDuration(200); + } else if (!hidden && mHeaderHidden) { + mHeader.animate() + .alpha(1f) + .withLayer() + .translationY(0) + .setInterpolator(mLinearOutSlowInInterpolator) + .setDuration(200); + } + mHeaderHidden = hidden; + } else { + mHeader.animate().cancel(); + mHeader.setAlpha(1f); + mHeader.setTranslationY(0f); + if (mHeader.getLayerType() != LAYER_TYPE_NONE) { + mHeader.setLayerType(LAYER_TYPE_NONE, null); + } + mHeaderHidden = false; + } + } @Override @@ -726,24 +806,44 @@ public class NotificationPanelView extends PanelView implements @Override protected void onOverExpansionChanged(float overExpansion) { - float currentOverScroll = mNotificationStackScroller.getCurrentOverScrolledPixels(true); - float expansionChange = overExpansion - mOverExpansion; - expansionChange *= EXPANSION_RUBBER_BAND_EXTRA_FACTOR; - mNotificationStackScroller.setOverScrolledPixels(currentOverScroll + expansionChange, - true /* onTop */, - false /* animate */); - super.onOverExpansionChanged(overExpansion); + if (mStatusBar.getBarState() != StatusBarState.KEYGUARD) { + float currentOverScroll = mNotificationStackScroller.getCurrentOverScrolledPixels(true); + float expansionChange = overExpansion - mOverExpansion; + expansionChange *= EXPANSION_RUBBER_BAND_EXTRA_FACTOR; + mNotificationStackScroller.setOverScrolledPixels(currentOverScroll + expansionChange, + true /* onTop */, + false /* animate */); + } + } + + @Override + protected void onTrackingStarted() { + super.onTrackingStarted(); + if (mStatusBar.getBarState() == StatusBarState.KEYGUARD + || mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED) { + mPageSwiper.animateHideLeftRightIcon(); + } } @Override protected void onTrackingStopped(boolean expand) { super.onTrackingStopped(expand); - mOverExpansion = 0.0f; - mNotificationStackScroller.setOverScrolledPixels(0.0f, true /* onTop */, - true /* animate */); + mNotificationStackScroller.setOverScrolledPixels(0.0f, true /* onTop */, true /* animate */); + if (expand && (mStatusBar.getBarState() == StatusBarState.KEYGUARD + || mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED)) { + mPageSwiper.showAllIcons(true); + } + if (!expand && (mStatusBar.getBarState() == StatusBarState.KEYGUARD + || mStatusBar.getBarState() == StatusBarState.SHADE_LOCKED)) { + mKeyguardBottomArea.getLockIcon().animate() + .alpha(0f) + .scaleX(2f) + .scaleY(2f) + .setInterpolator(mFastOutLinearInterpolator) + .setDuration(100); + } } - @Override public void onHeightChanged(ExpandableView view) { requestPanelHeightUpdate(); @@ -752,8 +852,7 @@ public class NotificationPanelView extends PanelView implements @Override public void onScrollChanged() { if (mQsExpanded) { - mNotificationStackScroller.setTranslationY( - mNotificationTranslation - mScrollView.getScrollY()); + requestScrollerTopPaddingUpdate(false /* animate */); } } @@ -777,14 +876,61 @@ public class NotificationPanelView extends PanelView implements @Override public void onAnimationToSideStarted(boolean rightPage) { - if (rightPage) { - mKeyguardBottomArea.launchCamera(); - } else { + boolean start = getLayoutDirection() == LAYOUT_DIRECTION_RTL ? rightPage : !rightPage; + if (start) { mKeyguardBottomArea.launchPhone(); + } else { + mKeyguardBottomArea.launchCamera(); } mBlockTouches = true; } + @Override + protected void onEdgeClicked(boolean right) { + if ((right && getRightIcon().getVisibility() != View.VISIBLE) + || (!right && getLeftIcon().getVisibility() != View.VISIBLE)) { + return; + } + mHintAnimationRunning = true; + mPageSwiper.startHintAnimation(right, new Runnable() { + @Override + public void run() { + mHintAnimationRunning = false; + mStatusBar.onHintFinished(); + } + }); + startHighlightIconAnimation(right ? getRightIcon() : getLeftIcon()); + boolean start = getLayoutDirection() == LAYOUT_DIRECTION_RTL ? right : !right; + if (start) { + mStatusBar.onPhoneHintStarted(); + } else { + mStatusBar.onCameraHintStarted(); + } + } + + @Override + protected void startUnlockHintAnimation() { + super.startUnlockHintAnimation(); + startHighlightIconAnimation(getCenterIcon()); + } + + /** + * Starts the highlight (making it fully opaque) animation on an icon. + */ + private void startHighlightIconAnimation(final View icon) { + icon.animate() + .alpha(1.0f) + .setDuration(KeyguardPageSwipeHelper.HINT_PHASE1_DURATION) + .setInterpolator(mFastOutSlowInInterpolator) + .withEndAction(new Runnable() { + @Override + public void run() { + icon.animate().alpha(KeyguardPageSwipeHelper.SWIPE_RESTING_ALPHA_AMOUNT) + .setDuration(KeyguardPageSwipeHelper.HINT_PHASE1_DURATION) + .setInterpolator(mFastOutSlowInInterpolator); + } + }); + } @Override public float getPageWidth() { @@ -798,7 +944,9 @@ public class NotificationPanelView extends PanelView implements @Override public View getLeftIcon() { - return mKeyguardBottomArea.getPhoneImageView(); + return getLayoutDirection() == LAYOUT_DIRECTION_RTL + ? mKeyguardBottomArea.getCameraImageView() + : mKeyguardBottomArea.getPhoneImageView(); } @Override @@ -808,6 +956,8 @@ public class NotificationPanelView extends PanelView implements @Override public View getRightIcon() { - return mKeyguardBottomArea.getCameraImageView(); + return getLayoutDirection() == LAYOUT_DIRECTION_RTL + ? mKeyguardBottomArea.getPhoneImageView() + : mKeyguardBottomArea.getCameraImageView(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index 4686933..89a1907 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -50,15 +50,17 @@ public abstract class PanelView extends FrameLayout { protected PhoneStatusBar mStatusBar; private float mPeekHeight; private float mHintDistance; + private int mEdgeTapAreaWidth; private float mInitialOffsetOnTouch; private float mExpandedFraction = 0; - private float mExpandedHeight = 0; + protected float mExpandedHeight = 0; private boolean mJustPeeked; private boolean mClosing; - private boolean mTracking; + protected boolean mTracking; private boolean mTouchSlopExceeded; private int mTrackingPointer; protected int mTouchSlop; + protected boolean mHintAnimationRunning; private ValueAnimator mHeightAnimator; private ObjectAnimator mPeekAnimator; @@ -111,6 +113,7 @@ public abstract class PanelView extends FrameLayout { final ViewConfiguration configuration = ViewConfiguration.get(getContext()); mTouchSlop = configuration.getScaledTouchSlop(); mHintDistance = res.getDimension(R.dimen.hint_move_distance); + mEdgeTapAreaWidth = res.getDimensionPixelSize(R.dimen.edge_tap_area_width); } private void trackMovement(MotionEvent event) { @@ -147,7 +150,6 @@ public abstract class PanelView extends FrameLayout { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: - mInitialTouchY = y; mInitialTouchX = x; mInitialOffsetOnTouch = mExpandedHeight; @@ -156,10 +158,11 @@ public abstract class PanelView extends FrameLayout { initVelocityTracker(); } trackMovement(event); - if (!waitForTouchSlop || mHeightAnimator != null) { + if (!waitForTouchSlop || (mHeightAnimator != null && !mHintAnimationRunning)) { if (mHeightAnimator != null) { mHeightAnimator.cancel(); // end any outstanding animations } + mTouchSlopExceeded = (mHeightAnimator != null && !mHintAnimationRunning); onTrackingStarted(); } if (mExpandedHeight == 0) { @@ -216,13 +219,14 @@ public abstract class PanelView extends FrameLayout { case MotionEvent.ACTION_CANCEL: mTrackingPointer = -1; trackMovement(event); - if (mTracking && mTouchSlopExceeded) { + if ((mTracking && mTouchSlopExceeded) + || event.getActionMasked() == MotionEvent.ACTION_CANCEL) { float vel = getCurrentVelocity(); boolean expand = flingExpands(vel); onTrackingStopped(expand); fling(vel, expand); } else { - boolean expands = onEmptySpaceClick(); + boolean expands = onEmptySpaceClick(mInitialTouchX); onTrackingStopped(expands); } if (mVelocityTracker != null) { @@ -279,8 +283,9 @@ public abstract class PanelView extends FrameLayout { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: - if (mHeightAnimator != null) { + if (mHeightAnimator != null && !mHintAnimationRunning) { mHeightAnimator.cancel(); // end any outstanding animations + mTouchSlopExceeded = true; return true; } mInitialTouchY = y; @@ -305,6 +310,9 @@ public abstract class PanelView extends FrameLayout { trackMovement(event); if (scrolledToBottom) { if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) { + if (mHeightAnimator != null) { + mHeightAnimator.cancel(); + } mInitialOffsetOnTouch = mExpandedHeight; mInitialTouchY = y; mInitialTouchX = x; @@ -362,8 +370,10 @@ public abstract class PanelView extends FrameLayout { protected void fling(float vel, boolean expand) { cancelPeek(); float target = expand ? getMaxPanelHeight() : 0.0f; - if (target == mExpandedHeight) { + if (target == mExpandedHeight || mOverExpansion > 0) { onExpandingFinished(); + mExpandedHeight = target; + mOverExpansion = 0.0f; mBar.panelExpansionChanged(this, mExpandedFraction); return; } @@ -452,6 +462,7 @@ public abstract class PanelView extends FrameLayout { overExpansion = Math.max(0, overExpansion); if (overExpansion != mOverExpansion) { onOverExpansionChanged(overExpansion); + mOverExpansion = overExpansion; } if (DEBUG) { @@ -462,9 +473,7 @@ public abstract class PanelView extends FrameLayout { mExpandedFraction = Math.min(1f, (fh == 0) ? 0 : mExpandedHeight / fh); } - protected void onOverExpansionChanged(float overExpansion) { - mOverExpansion = overExpansion; - } + protected abstract void onOverExpansionChanged(float overExpansion); protected abstract void onHeightUpdated(float expandedHeight); @@ -550,14 +559,22 @@ public abstract class PanelView extends FrameLayout { } cancelPeek(); onExpandingStarted(); - startUnlockHintAnimationPhase1(); + startUnlockHintAnimationPhase1(new Runnable() { + @Override + public void run() { + onExpandingFinished(); + mStatusBar.onHintFinished(); + mHintAnimationRunning = false; + } + }); mStatusBar.onUnlockHintStarted(); + mHintAnimationRunning = true; } /** * Phase 1: Move everything upwards. */ - private void startUnlockHintAnimationPhase1() { + private void startUnlockHintAnimationPhase1(final Runnable onAnimationFinished) { float target = Math.max(0, getMaxPanelHeight() - mHintDistance); ValueAnimator animator = createHeightAnimator(target); animator.setDuration(250); @@ -574,10 +591,9 @@ public abstract class PanelView extends FrameLayout { public void onAnimationEnd(Animator animation) { if (mCancelled) { mHeightAnimator = null; - onExpandingFinished(); - mStatusBar.onUnlockHintFinished(); + onAnimationFinished.run(); } else { - startUnlockHintAnimationPhase2(); + startUnlockHintAnimationPhase2(onAnimationFinished); } } }); @@ -588,7 +604,7 @@ public abstract class PanelView extends FrameLayout { /** * Phase 2: Bounce down. */ - private void startUnlockHintAnimationPhase2() { + private void startUnlockHintAnimationPhase2(final Runnable onAnimationFinished) { ValueAnimator animator = createHeightAnimator(getMaxPanelHeight()); animator.setDuration(450); animator.setInterpolator(mBounceInterpolator); @@ -596,8 +612,7 @@ public abstract class PanelView extends FrameLayout { @Override public void onAnimationEnd(Animator animation) { mHeightAnimator = null; - onExpandingFinished(); - mStatusBar.onUnlockHintFinished(); + onAnimationFinished.run(); } }); animator.start(); @@ -620,13 +635,30 @@ public abstract class PanelView extends FrameLayout { * * @return whether the panel will be expanded after the action performed by this method */ - private boolean onEmptySpaceClick() { + private boolean onEmptySpaceClick(float x) { + if (mHintAnimationRunning) { + return true; + } + if (x < mEdgeTapAreaWidth + && mStatusBar.getBarState() == StatusBarState.KEYGUARD) { + onEdgeClicked(false /* right */); + return true; + } else if (x > getWidth() - mEdgeTapAreaWidth + && mStatusBar.getBarState() == StatusBarState.KEYGUARD) { + onEdgeClicked(true /* right */); + return true; + } else { + return onMiddleClicked(); + } + } + + private boolean onMiddleClicked() { switch (mStatusBar.getBarState()) { case StatusBarState.KEYGUARD: startUnlockHintAnimation(); return true; case StatusBarState.SHADE_LOCKED: - // TODO: Go to Keyguard again. + mStatusBar.goToKeyguard(); return true; case StatusBarState.SHADE: collapse(); @@ -636,6 +668,8 @@ public abstract class PanelView extends FrameLayout { } } + protected abstract void onEdgeClicked(boolean right); + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println(String.format("[PanelView(%s): expandedHeight=%f maxPanelHeight=%d closing=%s" + " tracking=%s justPeeked=%s peekAnim=%s%s timeAnim=%s%s" 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 b1216e6..e55de94 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -105,6 +105,7 @@ import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.GestureRecorder; import com.android.systemui.statusbar.InterceptedNotifications; +import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.NotificationData.Entry; import com.android.systemui.statusbar.NotificationOverflowContainer; @@ -122,7 +123,6 @@ import com.android.systemui.statusbar.policy.LocationControllerImpl; import com.android.systemui.statusbar.policy.NetworkControllerImpl; import com.android.systemui.statusbar.policy.RotationLockControllerImpl; import com.android.systemui.statusbar.policy.ZenModeController; -import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener; import com.android.systemui.statusbar.stack.StackScrollState.ViewState; @@ -174,6 +174,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, /** The minimum delay in ms between reports of notification visibility. */ private static final int VISIBILITY_REPORT_MIN_DELAY_MS = 500; + /** + * The delay to reset the hint text when the hint animation is finished running. + */ + private static final int HINT_RESET_DELAY_MS = 1200; + // fling gesture tuning parameters, scaled to display density private float mSelfExpandVelocityPx; // classic value: 2000px/s private float mSelfCollapseVelocityPx; // classic value: 2000px/s (will be negated to collapse "up") @@ -248,10 +253,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, View mKeyguardStatusView; KeyguardBottomAreaView mKeyguardBottomArea; boolean mLeaveOpenOnKeyguardHide; - KeyguardIndicationTextView mKeyguardIndicationTextView; + KeyguardIndicationController mKeyguardIndicationController; - // TODO: Fetch phrase from search/hotword provider. - String mKeyguardHotwordPhrase = ""; int mKeyguardMaxNotificationCount; View mDateTimeView; @@ -662,8 +665,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mKeyguardBottomArea = (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area); mKeyguardBottomArea.setActivityStarter(this); - mKeyguardIndicationTextView = (KeyguardIndicationTextView) mStatusBarWindow.findViewById( - R.id.keyguard_indication_text); + mKeyguardIndicationController = new KeyguardIndicationController(mContext, + (KeyguardIndicationTextView) mStatusBarWindow.findViewById( + R.id.keyguard_indication_text)); mDateView = (DateView)mStatusBarWindow.findViewById(R.id.date); mDateTimeView = mHeader.findViewById(R.id.datetime); @@ -1047,16 +1051,22 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void addNotificationInternal(StatusBarNotification notification, Ranking ranking) { - if (DEBUG) Log.d(TAG, "addNotification score=" + notification.getScore()); - Entry shadeEntry = createNotificationViews(notification); - if (shadeEntry == null) { - return; - } + if (DEBUG) Log.d(TAG, "addNotification key=" + notification.getKey()); if (mZenMode != Global.ZEN_MODE_OFF && mIntercepted.tryIntercept(notification, ranking)) { // Forward the ranking so we can sort the new notification. mNotificationData.updateRanking(ranking); return; } + mIntercepted.remove(notification.getKey()); + displayNotification(notification, ranking); + } + + public void displayNotification(StatusBarNotification notification, + Ranking ranking) { + Entry shadeEntry = createNotificationViews(notification); + if (shadeEntry == null) { + return; + } if (mUseHeadsUp && shouldInterrupt(notification)) { if (DEBUG) Log.d(TAG, "launching notification in heads up mode"); Entry interruptionCandidate = new Entry(notification, null); @@ -1112,7 +1122,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void updateNotificationInternal(StatusBarNotification notification, Ranking ranking) { super.updateNotificationInternal(notification, ranking); - mIntercepted.update(notification); + // if we're here, then the notification is already in the shade + mIntercepted.remove(notification.getKey()); } @Override @@ -2847,12 +2858,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private void updateKeyguardState() { if (mState == StatusBarState.KEYGUARD) { mKeyguardStatusView.setVisibility(View.VISIBLE); - mKeyguardIndicationTextView.setVisibility(View.VISIBLE); - mKeyguardIndicationTextView.switchIndication(mKeyguardHotwordPhrase); + mKeyguardIndicationController.setVisible(true); mNotificationPanel.resetViews(); } else { mKeyguardStatusView.setVisibility(View.GONE); - mKeyguardIndicationTextView.setVisibility(View.GONE); + mKeyguardIndicationController.setVisible(false); } if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) { mKeyguardBottomArea.setVisibility(View.VISIBLE); @@ -2875,9 +2885,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, public void updateStackScrollerState() { if (mStackScroller == null) return; - mStackScroller.setDimmed(mState == StatusBarState.KEYGUARD, false /* animate */); - mStackScroller.setVisibility(!mShowLockscreenNotifications && mState == StatusBarState.KEYGUARD + boolean onKeyguard = mState == StatusBarState.KEYGUARD; + mStackScroller.setDimmed(onKeyguard, false /* animate */); + mStackScroller.setVisibility(!mShowLockscreenNotifications && onKeyguard ? View.INVISIBLE : View.VISIBLE); + mStackScroller.setScrollingEnabled(!onKeyguard); + mStackScroller.setExpandingEnabled(!onKeyguard); } public void userActivity() { @@ -2936,7 +2949,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void onActivated(View view) { userActivity(); - mKeyguardIndicationTextView.switchIndication(R.string.notification_tap_again); + mKeyguardIndicationController.showTransientIndication(R.string.notification_tap_again); mStackScroller.setActivatedChild(view); } @@ -2951,7 +2964,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void onActivationReset(View view) { if (view == mStackScroller.getActivatedChild()) { - mKeyguardIndicationTextView.switchIndication(mKeyguardHotwordPhrase); + mKeyguardIndicationController.hideTransientIndication(); mStackScroller.setActivatedChild(null); } } @@ -2960,11 +2973,20 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } public void onUnlockHintStarted() { - mKeyguardIndicationTextView.switchIndication(R.string.keyguard_unlock); + mKeyguardIndicationController.showTransientIndication(R.string.keyguard_unlock); } - public void onUnlockHintFinished() { - mKeyguardIndicationTextView.switchIndication(mKeyguardHotwordPhrase); + public void onHintFinished() { + // Delay the reset a bit so the user can read the text. + mKeyguardIndicationController.hideTransientIndicationDelayed(HINT_RESET_DELAY_MS); + } + + public void onCameraHintStarted() { + mKeyguardIndicationController.showTransientIndication(R.string.camera_hint); + } + + public void onPhoneHintStarted() { + mKeyguardIndicationController.showTransientIndication(R.string.phone_hint); } public void onTrackingStopped(boolean expand) { @@ -3000,6 +3022,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStackScroller.setDimmed(false /* dimmed */, true /* animate */); } + @Override + public void onTouchSlopExceeded() { + mStackScroller.removeLongPressCallback(); + } + /** * If secure with redaction: Show bouncer, go to unlocked shade. * @@ -3023,6 +3050,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } /** + * Goes back to the keyguard after hanging around in {@link StatusBarState#SHADE_LOCKED}. + */ + public void goToKeyguard() { + if (mState == StatusBarState.SHADE_LOCKED) { + setBarState(StatusBarState.KEYGUARD); + updateKeyguardState(); + } + } + + /** * @return a ViewGroup that spans the entire panel which contains the quick settings */ public ViewGroup getQuickSettingsOverlayParent() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java index 1344703..7c87580 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java @@ -95,7 +95,6 @@ public class QSTileHost implements QSTile.Host { mTiles.add(new LocationTile(this)); mTiles.add(new CastTile(this)); mTiles.add(new HotspotTile(this)); - mTiles.add(new BugreportTile(this)); mUserTracker = new CurrentUserTracker(mContext) { @Override 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 b51626d..d5e8e8c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -40,7 +40,6 @@ public class StatusBarWindowView extends FrameLayout { public static final String TAG = "StatusBarWindowView"; public static final boolean DEBUG = BaseStatusBar.DEBUG; - private ExpandHelper mExpandHelper; private DragDownHelper mDragDownHelper; private NotificationStackScrollLayout mStackScrollLayout; private NotificationPanelView mNotificationPanel; @@ -73,12 +72,6 @@ public class StatusBarWindowView extends FrameLayout { mStackScrollLayout = (NotificationStackScrollLayout) findViewById( R.id.notification_stack_scroller); mNotificationPanel = (NotificationPanelView) findViewById(R.id.notification_panel); - int minHeight = getResources().getDimensionPixelSize(R.dimen.notification_min_height); - int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_max_height); - mExpandHelper = new ExpandHelper(getContext(), mStackScrollLayout, - minHeight, maxHeight); - mExpandHelper.setEventSource(this); - mExpandHelper.setScrollAdapter(mStackScrollLayout); mDragDownHelper = new DragDownHelper(getContext(), this, mStackScrollLayout, mService); // We really need to be able to animate while window animations are going on @@ -114,12 +107,6 @@ public class StatusBarWindowView extends FrameLayout { boolean intercept = false; if (mNotificationPanel.isFullyExpanded() && mStackScrollLayout.getVisibility() == View.VISIBLE - && (mService.getBarState() == StatusBarState.SHADE - || (mService.getBarState() == StatusBarState.SHADE_LOCKED - && !mService.isBouncerShowing()))) { - intercept = mExpandHelper.onInterceptTouchEvent(ev); - } else if (mNotificationPanel.isFullyExpanded() - && mStackScrollLayout.getVisibility() == View.VISIBLE && mService.getBarState() == StatusBarState.KEYGUARD && !mService.isBouncerShowing()) { intercept = mDragDownHelper.onInterceptTouchEvent(ev); @@ -139,10 +126,7 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { boolean handled = false; - if (mNotificationPanel.isFullyExpanded() - && mService.getBarState() != StatusBarState.KEYGUARD) { - handled = mExpandHelper.onTouchEvent(ev); - } else if (mService.getBarState() == StatusBarState.KEYGUARD) { + if (mService.getBarState() == StatusBarState.KEYGUARD) { handled = mDragDownHelper.onTouchEvent(ev); } if (!handled) { @@ -168,8 +152,8 @@ public class StatusBarWindowView extends FrameLayout { } public void cancelExpandHelper() { - if (mExpandHelper != null) { - mExpandHelper.cancel(); + if (mStackScrollLayout != null) { + mStackScrollLayout.cancelExpandHelper(); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java index ac26da2..df01c12 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java @@ -225,6 +225,11 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. } } + @Override + public void expansionStateChanged(boolean isExpanding) { + + } + // SwipeHelper.Callback methods @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java index 6225c12..4cf72a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.policy; +import android.net.Uri; import android.service.notification.Condition; public interface ZenModeController { @@ -24,10 +25,12 @@ public interface ZenModeController { void setZen(boolean zen); boolean isZen(); void requestConditions(boolean request); - void select(Condition condition); + void setExitConditionId(Uri exitConditionId); + Uri getExitConditionId(); public static class Callback { public void onZenChanged(boolean zen) {} + public void onExitConditionChanged(Uri exitConditionId) {} public void onConditionsChanged(Condition[] conditions) {} } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java index adf2935..da8fd32 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java @@ -25,6 +25,7 @@ import android.os.ServiceManager; import android.provider.Settings.Global; import android.service.notification.Condition; import android.service.notification.IConditionListener; +import android.service.notification.ZenModeConfig; import android.util.Slog; import com.android.systemui.qs.GlobalSetting; @@ -35,10 +36,12 @@ import java.util.LinkedHashMap; /** Platform implementation of the zen mode controller. **/ public class ZenModeControllerImpl implements ZenModeController { private static final String TAG = "ZenModeControllerImpl"; + private static final boolean DEBUG = false; private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>(); private final Context mContext; - private final GlobalSetting mSetting; + private final GlobalSetting mModeSetting; + private final GlobalSetting mConfigSetting; private final INotificationManager mNoMan; private final LinkedHashMap<Uri, Condition> mConditions = new LinkedHashMap<Uri, Condition>(); @@ -46,13 +49,20 @@ public class ZenModeControllerImpl implements ZenModeController { public ZenModeControllerImpl(Context context, Handler handler) { mContext = context; - mSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE) { + mModeSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE) { @Override protected void handleValueChanged(int value) { fireZenChanged(value != 0); } }; - mSetting.setListening(true); + mConfigSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE_CONFIG_ETAG) { + @Override + protected void handleValueChanged(int value) { + fireExitConditionChanged(); + } + }; + mModeSetting.setListening(true); + mConfigSetting.setListening(true); mNoMan = INotificationManager.Stub.asInterface( ServiceManager.getService(Context.NOTIFICATION_SERVICE)); } @@ -69,12 +79,12 @@ public class ZenModeControllerImpl implements ZenModeController { @Override public boolean isZen() { - return mSetting.getValue() != 0; + return mModeSetting.getValue() != 0; } @Override public void setZen(boolean zen) { - mSetting.setValue(zen ? 1 : 0); + mModeSetting.setValue(zen ? 1 : 0); } @Override @@ -91,12 +101,25 @@ public class ZenModeControllerImpl implements ZenModeController { } @Override - public void select(Condition condition) { + public void setExitConditionId(Uri exitConditionId) { + try { + mNoMan.setZenModeCondition(exitConditionId); + } catch (RemoteException e) { + // noop + } + } + + @Override + public Uri getExitConditionId() { try { - mNoMan.setZenModeCondition(condition == null ? null : condition.id); + final ZenModeConfig config = mNoMan.getZenModeConfig(); + if (config != null) { + return config.exitConditionId; + } } catch (RemoteException e) { // noop } + return null; } private void fireZenChanged(boolean zen) { @@ -111,6 +134,14 @@ public class ZenModeControllerImpl implements ZenModeController { } } + private void fireExitConditionChanged() { + final Uri exitConditionId = getExitConditionId(); + if (DEBUG) Slog.d(TAG, "exitConditionId changed: " + exitConditionId); + for (Callback cb : mCallbacks) { + cb.onExitConditionChanged(exitConditionId); + } + } + private void updateConditions(Condition[] conditions) { if (conditions == null || conditions.length == 0) return; for (Condition c : conditions) { @@ -124,8 +155,8 @@ public class ZenModeControllerImpl implements ZenModeController { private final IConditionListener mListener = new IConditionListener.Stub() { @Override public void onConditionsReceived(Condition[] conditions) { - Slog.d(TAG, "onConditionsReceived " + (conditions == null ? 0 : conditions.length) - + " mRequesting=" + mRequesting); + if (DEBUG) Slog.d(TAG, "onConditionsReceived " + + (conditions == null ? 0 : conditions.length) + " mRequesting=" + mRequesting); if (!mRequesting) return; updateConditions(conditions); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 6892b85..0383706 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -30,7 +30,6 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.animation.AnimationUtils; import android.widget.OverScroller; - import com.android.systemui.ExpandHelper; import com.android.systemui.R; import com.android.systemui.SwipeHelper; @@ -51,13 +50,15 @@ public class NotificationStackScrollLayout extends ViewGroup private static final String TAG = "NotificationStackScrollLayout"; private static final boolean DEBUG = false; - private static final float RUBBER_BAND_FACTOR = 0.35f; + private static final float RUBBER_BAND_FACTOR_NORMAL = 0.35f; + private static final float RUBBER_BAND_FACTOR_AFTER_EXPAND = 0.15f; /** * Sentinel value for no current active pointer. Used by {@link #mActivePointerId}. */ private static final int INVALID_POINTER = -1; + private ExpandHelper mExpandHelper; private SwipeHelper mSwipeHelper; private boolean mSwipingInProgress; private int mCurrentStackHeight = Integer.MAX_VALUE; @@ -73,6 +74,7 @@ public class NotificationStackScrollLayout extends ViewGroup private float mMaxOverScroll; private boolean mIsBeingDragged; private int mLastMotionY; + private int mDownX; private int mActivePointerId; private int mSidePaddings; @@ -106,6 +108,7 @@ public class NotificationStackScrollLayout extends ViewGroup private ArrayList<View> mSwipedOutViews = new ArrayList<View>(); private final StackStateAnimator mStateAnimator = new StackStateAnimator(this); private boolean mAnimationsEnabled; + private boolean mChangePositionInProgress; /** * The raw amount of the overScroll on the top, which is not rubber-banded. @@ -128,6 +131,39 @@ public class NotificationStackScrollLayout extends ViewGroup private boolean mChildrenUpdateRequested; private SpeedBumpView mSpeedBumpView; private boolean mIsExpansionChanging; + private boolean mExpandingNotification; + private boolean mExpandedInThisMotion; + private boolean mScrollingEnabled; + + /** + * Was the scroller scrolled to the top when the down motion was observed? + */ + private boolean mScrolledToTopOnFirstDown; + + /** + * The minimal amount of over scroll which is needed in order to switch to the quick settings + * when over scrolling on a expanded card. + */ + private float mMinTopOverScrollToEscape; + private int mIntrinsicPadding; + private int mNotificationTopPadding; + private int mMinStackHeight; + private boolean mDontReportNextOverScroll; + + /** + * The maximum scrollPosition which we are allowed to reach when a notification was expanded. + * This is needed to avoid scrolling too far after the notification was collapsed in the same + * motion. + */ + private int mMaxScrollAfterExpand; + private OnLongClickListener mLongClickListener; + + /** + * Should in this touch motion only be scrolling allowed? It's true when the scroller was + * animating. + */ + private boolean mOnlyScrollingInThisMotion; + private boolean mTouchEnabled = true; private ViewTreeObserver.OnPreDrawListener mChildrenUpdater = new ViewTreeObserver.OnPreDrawListener() { @Override @@ -194,6 +230,7 @@ public class NotificationStackScrollLayout extends ViewGroup float densityScale = getResources().getDisplayMetrics().density; float pagingTouchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop(); mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, densityScale, pagingTouchSlop); + mSwipeHelper.setLongPressListener(mLongClickListener); mSidePaddings = context.getResources() .getDimensionPixelSize(R.dimen.notification_side_padding); @@ -207,6 +244,17 @@ public class NotificationStackScrollLayout extends ViewGroup mPaddingBetweenElementsNormal = context.getResources() .getDimensionPixelSize(R.dimen.notification_padding); updatePadding(false); + int minHeight = getResources().getDimensionPixelSize(R.dimen.notification_min_height); + int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_max_height); + mExpandHelper = new ExpandHelper(getContext(), this, + minHeight, maxHeight); + mExpandHelper.setEventSource(this); + mExpandHelper.setScrollAdapter(this); + mMinTopOverScrollToEscape = getResources().getDimensionPixelSize( + R.dimen.min_top_overscroll_to_qs); + mNotificationTopPadding = getResources().getDimensionPixelSize( + R.dimen.notifications_top_padding); + mMinStackHeight = getResources().getDimensionPixelSize(R.dimen.collapsed_stack_height); } private void updatePadding(boolean dimmed) { @@ -343,7 +391,7 @@ public class NotificationStackScrollLayout extends ViewGroup return mTopPadding; } - public void setTopPadding(int topPadding, boolean animate) { + private void setTopPadding(int topPadding, boolean animate) { if (mTopPadding != topPadding) { mTopPadding = topPadding; updateAlgorithmHeightAndPadding(); @@ -414,6 +462,7 @@ public class NotificationStackScrollLayout extends ViewGroup public void setLongPressListener(View.OnLongClickListener listener) { mSwipeHelper.setLongPressListener(listener); + mLongClickListener = listener; } public void onChildDismissed(View v) { @@ -511,6 +560,29 @@ public class NotificationStackScrollLayout extends ViewGroup if (v instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) v).setUserLocked(userLocked); } + removeLongPressCallback(); + requestDisallowInterceptTouchEvent(true); + } + + @Override + public void expansionStateChanged(boolean isExpanding) { + mExpandingNotification = isExpanding; + if (!mExpandedInThisMotion) { + mMaxScrollAfterExpand = mOwnScrollY; + mExpandedInThisMotion = true; + } + } + + public void setScrollingEnabled(boolean enable) { + mScrollingEnabled = enable; + } + + public void setExpandingEnabled(boolean enable) { + mExpandHelper.setEnabled(enable); + } + + private boolean isScrollingEnabled() { + return mScrollingEnabled; } public View getChildContentView(View v) { @@ -548,18 +620,44 @@ public class NotificationStackScrollLayout extends ViewGroup if (!isEnabled()) { return false; } + boolean isCancelOrUp = ev.getActionMasked() == MotionEvent.ACTION_CANCEL + || ev.getActionMasked()== MotionEvent.ACTION_UP; + boolean expandWantsIt = false; + if (!mSwipingInProgress && !mOnlyScrollingInThisMotion) { + if (isCancelOrUp) { + mExpandHelper.onlyObserveMovements(false); + } + boolean wasExpandingBefore = mExpandingNotification; + expandWantsIt = mExpandHelper.onTouchEvent(ev); + if (mExpandedInThisMotion && !mExpandingNotification && wasExpandingBefore) { + dispatchDownEventToScroller(ev); + } + } boolean scrollerWantsIt = false; - if (!mSwipingInProgress) { + if (!mSwipingInProgress && !mExpandingNotification) { scrollerWantsIt = onScrollTouch(ev); } boolean horizontalSwipeWantsIt = false; - if (!mIsBeingDragged) { + if (!mIsBeingDragged + && !mExpandingNotification + && !mExpandedInThisMotion + && !mOnlyScrollingInThisMotion) { horizontalSwipeWantsIt = mSwipeHelper.onTouchEvent(ev); } - return horizontalSwipeWantsIt || scrollerWantsIt || super.onTouchEvent(ev); + return horizontalSwipeWantsIt || scrollerWantsIt || expandWantsIt || super.onTouchEvent(ev); + } + + private void dispatchDownEventToScroller(MotionEvent ev) { + MotionEvent downEvent = MotionEvent.obtain(ev); + downEvent.setAction(MotionEvent.ACTION_DOWN); + onScrollTouch(downEvent); + downEvent.recycle(); } private boolean onScrollTouch(MotionEvent ev) { + if (!isScrollingEnabled()) { + return false; + } initVelocityTrackerIfNotExists(); mVelocityTracker.addMovement(ev); @@ -583,6 +681,7 @@ public class NotificationStackScrollLayout extends ViewGroup // Remember where the motion event started mLastMotionY = (int) ev.getY(); + mDownX = (int) ev.getX(); mActivePointerId = ev.getPointerId(0); break; } @@ -594,8 +693,11 @@ public class NotificationStackScrollLayout extends ViewGroup } final int y = (int) ev.getY(activePointerIndex); + final int x = (int) ev.getX(activePointerIndex); int deltaY = mLastMotionY - y; - if (!mIsBeingDragged && Math.abs(deltaY) > mTouchSlop) { + final int xDiff = Math.abs(x - mDownX); + final int yDiff = Math.abs(deltaY); + if (!mIsBeingDragged && yDiff > mTouchSlop && yDiff > xDiff) { setIsBeingDragged(true); if (deltaY > 0) { deltaY -= mTouchSlop; @@ -606,7 +708,10 @@ public class NotificationStackScrollLayout extends ViewGroup if (mIsBeingDragged) { // Scroll to follow the motion event mLastMotionY = y; - final int range = getScrollRange(); + int range = getScrollRange(); + if (mExpandedInThisMotion) { + range = Math.min(range, mMaxScrollAfterExpand); + } float scrollAmount; if (deltaY < 0) { @@ -631,19 +736,28 @@ public class NotificationStackScrollLayout extends ViewGroup velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); int initialVelocity = (int) velocityTracker.getYVelocity(mActivePointerId); - if (getChildCount() > 0) { - if ((Math.abs(initialVelocity) > mMinimumVelocity)) { - fling(-initialVelocity); - } else { - if (mScroller.springBack(mScrollX, mOwnScrollY, 0, 0, 0, - getScrollRange())) { - postInvalidateOnAnimation(); + if (shouldOverScrollFling(initialVelocity)) { + onOverScrollFling(true, initialVelocity); + } else { + if (getChildCount() > 0) { + if ((Math.abs(initialVelocity) > mMinimumVelocity)) { + float currentOverScrollTop = getCurrentOverScrollAmount(true); + if (currentOverScrollTop == 0.0f || initialVelocity > 0) { + fling(-initialVelocity); + } else { + onOverScrollFling(false, initialVelocity); + } + } else { + if (mScroller.springBack(mScrollX, mOwnScrollY, 0, 0, 0, + getScrollRange())) { + postInvalidateOnAnimation(); + } } } - } - mActivePointerId = INVALID_POINTER; - endDrag(); + mActivePointerId = INVALID_POINTER; + endDrag(); + } } break; case MotionEvent.ACTION_CANCEL: @@ -658,17 +772,27 @@ public class NotificationStackScrollLayout extends ViewGroup case MotionEvent.ACTION_POINTER_DOWN: { final int index = ev.getActionIndex(); mLastMotionY = (int) ev.getY(index); + mDownX = (int) ev.getX(index); mActivePointerId = ev.getPointerId(index); break; } case MotionEvent.ACTION_POINTER_UP: onSecondaryPointerUp(ev); mLastMotionY = (int) ev.getY(ev.findPointerIndex(mActivePointerId)); + mDownX = (int) ev.getX(ev.findPointerIndex(mActivePointerId)); break; } return true; } + private void onOverScrollFling(boolean open, int initialVelocity) { + if (mOverscrollTopChangedListener != null) { + mOverscrollTopChangedListener.flingTopOverscroll(initialVelocity, open); + } + mDontReportNextOverScroll = true; + setOverScrollAmount(0.0f, true, false); + } + /** * Perform a scroll upwards and adapt the overscroll amounts accordingly * @@ -689,11 +813,13 @@ public class NotificationStackScrollLayout extends ViewGroup float scrollAmount = newTopAmount < 0 ? -newTopAmount : 0.0f; float newScrollY = mOwnScrollY + scrollAmount; if (newScrollY > range) { - float currentBottomPixels = getCurrentOverScrolledPixels(false); - // We overScroll on the top - setOverScrolledPixels(currentBottomPixels + newScrollY - range, - false /* onTop */, - false /* animate */); + if (!mExpandedInThisMotion) { + float currentBottomPixels = getCurrentOverScrolledPixels(false); + // We overScroll on the top + setOverScrolledPixels(currentBottomPixels + newScrollY - range, + false /* onTop */, + false /* animate */); + } mOwnScrollY = range; scrollAmount = 0.0f; } @@ -834,7 +960,7 @@ public class NotificationStackScrollLayout extends ViewGroup * @param animate Should an animation be performed. */ public void setOverScrolledPixels(float numPixels, boolean onTop, boolean animate) { - setOverScrollAmount(numPixels * RUBBER_BAND_FACTOR, onTop, animate, true); + setOverScrollAmount(numPixels * getRubberBandFactor(), onTop, animate, true); } /** @@ -870,17 +996,21 @@ public class NotificationStackScrollLayout extends ViewGroup if (animate) { mStateAnimator.animateOverScrollToAmount(amount, onTop); } else { - setOverScrolledPixels(amount / RUBBER_BAND_FACTOR, onTop); + setOverScrolledPixels(amount / getRubberBandFactor(), onTop); mAmbientState.setOverScrollAmount(amount, onTop); - requestChildrenUpdate(); if (onTop) { - float scrollAmount = mOwnScrollY < 0 ? -mOwnScrollY : 0; - notifyOverscrollTopListener(scrollAmount + amount); + notifyOverscrollTopListener(amount); } + requestChildrenUpdate(); } } private void notifyOverscrollTopListener(float amount) { + mExpandHelper.onlyObserveMovements(amount > 1.0f); + if (mDontReportNextOverScroll) { + mDontReportNextOverScroll = false; + return; + } if (mOverscrollTopChangedListener != null) { mOverscrollTopChangedListener.onOverscrollTopChanged(amount); } @@ -928,7 +1058,7 @@ public class NotificationStackScrollLayout extends ViewGroup updateChildren(); float overScrollTop = getCurrentOverScrollAmount(true); if (mOwnScrollY < 0) { - notifyOverscrollTopListener(-mOwnScrollY + overScrollTop); + notifyOverscrollTopListener(-mOwnScrollY); } else { notifyOverscrollTopListener(overScrollTop); } @@ -950,6 +1080,7 @@ public class NotificationStackScrollLayout extends ViewGroup onTop = true; newAmount = -mOwnScrollY; mOwnScrollY = 0; + mDontReportNextOverScroll = true; } else { onTop = false; newAmount = mOwnScrollY - scrollRange; @@ -1085,13 +1216,14 @@ public class NotificationStackScrollLayout extends ViewGroup float bottomAmount = getCurrentOverScrollAmount(false); if (velocityY < 0 && topAmount > 0) { mOwnScrollY -= (int) topAmount; + mDontReportNextOverScroll = true; setOverScrollAmount(0, true, false); - mMaxOverScroll = Math.abs(velocityY) / 1000f * RUBBER_BAND_FACTOR + mMaxOverScroll = Math.abs(velocityY) / 1000f * getRubberBandFactor() * mOverflingDistance + topAmount; } else if (velocityY > 0 && bottomAmount > 0) { mOwnScrollY += bottomAmount; setOverScrollAmount(0, false, false); - mMaxOverScroll = Math.abs(velocityY) / 1000f * RUBBER_BAND_FACTOR + mMaxOverScroll = Math.abs(velocityY) / 1000f * getRubberBandFactor() * mOverflingDistance + bottomAmount; } else { // it will be set once we reach the boundary @@ -1104,6 +1236,44 @@ public class NotificationStackScrollLayout extends ViewGroup } } + /** + * @return Whether a fling performed on the top overscroll edge lead to the expanded + * overScroll view (i.e QS). + */ + private boolean shouldOverScrollFling(int initialVelocity) { + float topOverScroll = getCurrentOverScrollAmount(true); + return mScrolledToTopOnFirstDown + && !mExpandedInThisMotion + && topOverScroll > mMinTopOverScrollToEscape + && initialVelocity > 0; + } + + public void updateTopPadding(float qsHeight, int scrollY, boolean animate) { + float start = qsHeight - scrollY + mNotificationTopPadding; + float stackHeight = getHeight() - start; + if (stackHeight <= mMinStackHeight) { + float overflow = mMinStackHeight - stackHeight; + stackHeight = mMinStackHeight; + start = getHeight() - stackHeight; + setTranslationY(overflow); + } else { + setTranslationY(0); + } + setTopPadding(clampPadding((int) start), animate); + } + + private int clampPadding(int desiredPadding) { + return Math.max(desiredPadding, mIntrinsicPadding); + } + + private float getRubberBandFactor() { + return mExpandedInThisMotion + ? RUBBER_BAND_FACTOR_AFTER_EXPAND + : (mScrolledToTopOnFirstDown + ? 1.0f + : RUBBER_BAND_FACTOR_NORMAL); + } + private void endDrag() { setIsBeingDragged(false); @@ -1119,23 +1289,37 @@ public class NotificationStackScrollLayout extends ViewGroup @Override public boolean onInterceptTouchEvent(MotionEvent ev) { + initDownStates(ev); + boolean expandWantsIt = false; + if (!mSwipingInProgress && !mOnlyScrollingInThisMotion) { + expandWantsIt = mExpandHelper.onInterceptTouchEvent(ev); + } boolean scrollWantsIt = false; - if (!mSwipingInProgress) { + if (!mSwipingInProgress && !mExpandingNotification) { scrollWantsIt = onInterceptTouchEventScroll(ev); } boolean swipeWantsIt = false; - if (!mIsBeingDragged) { + if (!mIsBeingDragged + && !mExpandingNotification + && !mExpandedInThisMotion + && !mOnlyScrollingInThisMotion) { swipeWantsIt = mSwipeHelper.onInterceptTouchEvent(ev); } - return swipeWantsIt || scrollWantsIt || - super.onInterceptTouchEvent(ev); + return swipeWantsIt || scrollWantsIt || expandWantsIt || super.onInterceptTouchEvent(ev); + } + + private void initDownStates(MotionEvent ev) { + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + mExpandedInThisMotion = false; + mOnlyScrollingInThisMotion = !mScroller.isFinished(); + } } @Override protected void onViewRemoved(View child) { super.onViewRemoved(child); mStackScrollAlgorithm.notifyChildrenChanged(this); - if (mChildrenChangingPositions.contains(child)) { + if (mChangePositionInProgress) { // This is only a position change, don't do anything special return; } @@ -1230,7 +1414,7 @@ public class NotificationStackScrollLayout extends ViewGroup * @param child The view to be added. */ public void generateAddAnimation(View child) { - if (mIsExpanded && mAnimationsEnabled && !mChildrenChangingPositions.contains(child)) { + if (mIsExpanded && mAnimationsEnabled && !mChangePositionInProgress) { // Generate Animations mChildrenToAddAnimated.add(child); mNeedsAnimation = true; @@ -1245,10 +1429,14 @@ public class NotificationStackScrollLayout extends ViewGroup */ public void changeViewPosition(View child, int newIndex) { if (child != null && child.getParent() == this) { - mChildrenChangingPositions.add(child); + mChangePositionInProgress = true; removeView(child); addView(child, newIndex); - mNeedsAnimation = true; + mChangePositionInProgress = false; + if (mIsExpanded && mAnimationsEnabled) { + mChildrenChangingPositions.add(child); + mNeedsAnimation = true; + } } } @@ -1350,6 +1538,9 @@ public class NotificationStackScrollLayout extends ViewGroup } private boolean onInterceptTouchEventScroll(MotionEvent ev) { + if (!isScrollingEnabled()) { + return false; + } /* * This method JUST determines whether we want to intercept the motion. * If we return true, onMotionEvent will be called and we do the actual @@ -1366,13 +1557,6 @@ public class NotificationStackScrollLayout extends ViewGroup return true; } - /* - * Don't try to intercept touch if we can't scroll anyway. - */ - if (mOwnScrollY == 0 && getScrollRange() == 0) { - return false; - } - switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_MOVE: { /* @@ -1398,10 +1582,13 @@ public class NotificationStackScrollLayout extends ViewGroup } final int y = (int) ev.getY(pointerIndex); + final int x = (int) ev.getX(pointerIndex); final int yDiff = Math.abs(y - mLastMotionY); - if (yDiff > mTouchSlop) { + final int xDiff = Math.abs(x - mDownX); + if (yDiff > mTouchSlop && yDiff > xDiff) { setIsBeingDragged(true); mLastMotionY = y; + mDownX = x; initVelocityTrackerIfNotExists(); mVelocityTracker.addMovement(ev); } @@ -1421,7 +1608,9 @@ public class NotificationStackScrollLayout extends ViewGroup * ACTION_DOWN always refers to pointer index 0. */ mLastMotionY = y; + mDownX = (int) ev.getX(); mActivePointerId = ev.getPointerId(0); + mScrolledToTopOnFirstDown = isScrolledToTop(); initOrResetVelocityTracker(); mVelocityTracker.addMovement(ev); @@ -1468,7 +1657,7 @@ public class NotificationStackScrollLayout extends ViewGroup mIsBeingDragged = isDragged; if (isDragged) { requestDisallowInterceptTouchEvent(true); - mSwipeHelper.removeLongPressCallback(); + removeLongPressCallback(); } } @@ -1476,10 +1665,14 @@ public class NotificationStackScrollLayout extends ViewGroup public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); if (!hasWindowFocus) { - mSwipeHelper.removeLongPressCallback(); + removeLongPressCallback(); } } + public void removeLongPressCallback() { + mSwipeHelper.removeLongPressCallback(); + } + @Override public boolean isScrolledToTop() { return mOwnScrollY == 0; @@ -1608,6 +1801,33 @@ public class NotificationStackScrollLayout extends ViewGroup updateSpeedBump(true); } + public void cancelExpandHelper() { + mExpandHelper.cancel(); + } + + public void setIntrinsicPadding(int intrinsicPadding) { + mIntrinsicPadding = intrinsicPadding; + } + + /** + * @return the y position of the first notification + */ + public float getNotificationsTopY() { + return mTopPadding + getTranslationY(); + } + + public void setTouchEnabled(boolean touchEnabled) { + mTouchEnabled = touchEnabled; + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (!mTouchEnabled) { + return false; + } + return super.dispatchTouchEvent(ev); + } + /** * A listener that is notified when some child locations might have changed. */ @@ -1620,6 +1840,15 @@ public class NotificationStackScrollLayout extends ViewGroup */ public interface OnOverscrollTopChangedListener { public void onOverscrollTopChanged(float amount); + + /** + * Notify a listener that the scroller wants to escape from the scrolling motion and + * start a fling animation to the expanded or collapsed overscroll view (e.g expand the QS) + * + * @param velocity The velocity that the Scroller had when over flinging + * @param open Should the fling open or close the overscroll view. + */ + public void flingTopOverscroll(float velocity, boolean open); } static class AnimationEvent { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java index 2b52c7e..a48cab8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java @@ -131,10 +131,14 @@ public class StackScrollAlgorithm { algorithmState.scrolledPixelsTop = 0; algorithmState.itemsInBottomStack = 0.0f; algorithmState.partialInBottom = 0.0f; - float topOverScroll = ambientState.getOverScrollAmount(true /* onTop */); float bottomOverScroll = ambientState.getOverScrollAmount(false /* onTop */); - algorithmState.scrollY = (int) (ambientState.getScrollY() + mCollapsedSize - + bottomOverScroll - topOverScroll); + + int scrollY = ambientState.getScrollY(); + + // Due to the overScroller, the stackscroller can have negative scroll state. This is + // already accounted for by the top padding and doesn't need an additional adaption + scrollY = Math.max(0, scrollY); + algorithmState.scrollY = (int) (scrollY + mCollapsedSize + bottomOverScroll); updateVisibleChildren(resultState, algorithmState); diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java b/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java index 898b46e..80a14b3 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java @@ -602,7 +602,7 @@ public class VolumePanel extends Handler { if (LOGD) Log.d(mTag, "expand mZenPanel=" + mZenPanel); if (mZenPanel == null) { mZenPanel = (ZenModePanel) mZenPanelStub.inflate(); - mZenPanel.init(mZenController); + mZenPanel.init(mZenController, mDialog != null ? 'D' : 'E'); mZenPanel.setCallback(new ZenModePanel.Callback() { @Override public void onMoreSettings() { @@ -651,6 +651,13 @@ public class VolumePanel extends Handler { mExpandDivider.setVisibility(show ? View.VISIBLE : View.GONE); mExpandButton.setImageResource(zen ? com.android.systemui.R.drawable.ic_vol_zen_on : com.android.systemui.R.drawable.ic_vol_zen_off); + if (show) { + if (zen) { + expand(); + } else { + collapse(); + } + } } else { mExpandButton.setVisibility(View.GONE); mExpandDivider.setVisibility(View.GONE); @@ -882,10 +889,6 @@ public class VolumePanel extends Handler { // when the stream is for remote playback, use -1 to reset the stream type evaluation mAudioManager.forceVolumeControlStream(stream); - // Showing dialog - use collapsed state - if (mZenModeCapable) { - collapse(); - } if (mDialog != null) { mDialog.show(); } diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java index c338563..1000352 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java @@ -18,16 +18,21 @@ package com.android.systemui.volume; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.provider.Settings; import android.service.notification.Condition; +import android.service.notification.ZenModeConfig; import android.util.AttributeSet; +import android.util.Log; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ImageView; @@ -39,26 +44,47 @@ import com.android.systemui.R; import com.android.systemui.statusbar.policy.ZenModeController; import java.util.Arrays; -import java.util.HashSet; +import java.util.Objects; public class ZenModePanel extends LinearLayout { - private static final int[] MINUTES = new int[] { 15, 30, 45, 60, 120, 180, 240, 480 }; + private static final boolean DEBUG = false; + + private static final int[] MINUTE_BUCKETS = new int[] { 15, 30, 45, 60, 120, 180, 240, 480 }; + private static final int MIN_BUCKET_MINUTES = MINUTE_BUCKETS[0]; + private static final int MAX_BUCKET_MINUTES = MINUTE_BUCKETS[MINUTE_BUCKETS.length - 1]; + private static final int DEFAULT_BUCKET_INDEX = Arrays.binarySearch(MINUTE_BUCKETS, 60); + + private static final int SECONDS_MS = 1000; + private static final int MINUTES_MS = 60 * SECONDS_MS; + public static final Intent ZEN_SETTINGS = new Intent(Settings.ACTION_ZEN_MODE_SETTINGS); private final Context mContext; private final LayoutInflater mInflater; - private final HashSet<RadioButton> mRadioButtons = new HashSet<RadioButton>(); private final H mHandler = new H(); + private final Favorites mFavorites; + + private char mLogTag = '?'; + private String mTag; private LinearLayout mConditions; - private int mMinutesIndex = Arrays.binarySearch(MINUTES, 60); // default to one hour private Callback mCallback; private ZenModeController mController; private boolean mRequestingConditions; + private Uri mExitConditionId; + private int mBucketIndex = -1; + private boolean mShowing; public ZenModePanel(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; + mFavorites = new Favorites(); mInflater = LayoutInflater.from(new ContextThemeWrapper(context, R.style.QSWhiteTheme)); + updateTag(); + if (DEBUG) Log.d(mTag, "new ZenModePanel"); + } + + private void updateTag() { + mTag = "ZenModePanel/" + mLogTag + "/" + Integer.toHexString(System.identityHashCode(this)); } @Override @@ -74,44 +100,97 @@ public class ZenModePanel extends LinearLayout { } @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (DEBUG) Log.d(mTag, "onAttachedToWindow"); + final ViewGroup p = (ViewGroup) getParent(); + updateShowing(p != null && p.getVisibility() == VISIBLE); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (DEBUG) Log.d(mTag, "onDetachedFromWindow"); + updateShowing(false); + } + + @Override public void setVisibility(int visibility) { super.setVisibility(visibility); - setRequestingConditions(visibility == VISIBLE); + final boolean vis = visibility == VISIBLE; + updateShowing(isAttachedToWindow() && vis); + } + + private void updateShowing(boolean showing) { + if (showing == mShowing) return; + mShowing = showing; + if (DEBUG) Log.d(mTag, "mShowing=" + mShowing); + if (mController != null) { + setRequestingConditions(mShowing); + } } /** Start or stop requesting relevant zen mode exit conditions */ private void setRequestingConditions(boolean requesting) { if (mRequestingConditions == requesting) return; + if (DEBUG) Log.d(mTag, "setRequestingConditions " + requesting); mRequestingConditions = requesting; + if (mController != null) { + mController.requestConditions(mRequestingConditions); + } if (mRequestingConditions) { - mController.addCallback(mZenCallback); + Condition timeCondition = parseExistingTimeCondition(mExitConditionId); + if (timeCondition != null) { + mBucketIndex = -1; + } else { + mBucketIndex = DEFAULT_BUCKET_INDEX; + timeCondition = newTimeCondition(MINUTE_BUCKETS[mBucketIndex]); + } + if (DEBUG) Log.d(mTag, "Initial bucket index: " + mBucketIndex); + bind(timeCondition, mConditions.getChildAt(0)); + handleUpdateConditions(new Condition[0]); } else { - mController.removeCallback(mZenCallback); + mConditions.removeAllViews(); } - mController.requestConditions(mRequestingConditions); } - public void init(ZenModeController controller) { + public void init(ZenModeController controller, char logTag) { mController = controller; + mLogTag = logTag; + updateTag(); + mExitConditionId = mController.getExitConditionId(); + if (DEBUG) Log.d(mTag, "init mExitConditionId=" + mExitConditionId); mConditions.removeAllViews(); - bind(updateTimeCondition(), mConditions.getChildAt(0)); - handleUpdateConditions(new Condition[0]); + mController.addCallback(mZenCallback); + if (mShowing) { + setRequestingConditions(true); + } } public void setCallback(Callback callback) { mCallback = callback; } - private Condition updateTimeCondition() { - final int minutes = MINUTES[mMinutesIndex]; - final long millis = System.currentTimeMillis() + minutes * 60 * 1000; - final Uri id = new Uri.Builder().scheme(Condition.SCHEME).authority("android") - .appendPath("countdown").appendPath(Long.toString(millis)).build(); - final int num = minutes < 60 ? minutes : minutes / 60; + private Condition parseExistingTimeCondition(Uri conditionId) { + final long time = ZenModeConfig.tryParseCountdownConditionId(conditionId); + if (time == 0) return null; + final long span = time - System.currentTimeMillis(); + if (span <= 0 || span > MAX_BUCKET_MINUTES * MINUTES_MS) return null; + return timeCondition(time, Math.round(span / (float)MINUTES_MS)); + } + + private Condition newTimeCondition(int minutesFromNow) { + final long now = System.currentTimeMillis(); + return timeCondition(now + minutesFromNow * MINUTES_MS, minutesFromNow); + } + + private Condition timeCondition(long time, int minutes) { + final int num = minutes < 60 ? minutes : Math.round(minutes / 60f); final int resId = minutes < 60 ? R.plurals.zen_mode_duration_minutes : R.plurals.zen_mode_duration_hours; final String caption = mContext.getResources().getQuantityString(resId, num, num); + final Uri id = ZenModeConfig.toCountdownConditionId(time); return new Condition(id, caption, "", "", 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } @@ -125,14 +204,40 @@ public class ZenModePanel extends LinearLayout { bind(conditions[i], mConditions.getChildAt(i + 1)); } bind(null, mConditions.getChildAt(newCount + 1)); + checkForDefault(); + } + + private ConditionTag getConditionTagAt(int index) { + return (ConditionTag) mConditions.getChildAt(index).getTag(); + } + + private void checkForDefault() { + // are we left without anything selected? if so, set a default + for (int i = 0; i < mConditions.getChildCount(); i++) { + if (getConditionTagAt(i).rb.isChecked()) { + return; + } + } + if (DEBUG) Log.d(mTag, "Selecting a default"); + final int favoriteIndex = mFavorites.getMinuteIndex(); + if (favoriteIndex == -1) { + getConditionTagAt(mConditions.getChildCount() - 1).rb.setChecked(true); + } else { + final Condition c = newTimeCondition(MINUTE_BUCKETS[favoriteIndex]); + mBucketIndex = favoriteIndex; + bind(c, mConditions.getChildAt(0)); + getConditionTagAt(0).rb.setChecked(true); + } } - private void editTimeCondition(int delta) { - final int i = mMinutesIndex + delta; - if (i < 0 || i >= MINUTES.length) return; - mMinutesIndex = i; - final Condition c = updateTimeCondition(); - bind(c, mConditions.getChildAt(0)); + private void handleExitConditionChanged(Uri exitCondition) { + mExitConditionId = exitCondition; + if (DEBUG) Log.d(mTag, "handleExitConditionChanged " + mExitConditionId); + final int N = mConditions.getChildCount(); + for (int i = 0; i < N; i++) { + final ConditionTag tag = getConditionTagAt(i); + tag.rb.setChecked(Objects.equals(tag.conditionId, exitCondition)); + } } private void bind(final Condition condition, View convertView) { @@ -140,23 +245,31 @@ public class ZenModePanel extends LinearLayout { final View row; if (convertView == null) { row = mInflater.inflate(R.layout.zen_mode_condition, this, false); + if (DEBUG) Log.d(mTag, "Adding new condition view for: " + condition); mConditions.addView(row); } else { row = convertView; } - final int position = mConditions.indexOfChild(row); - final RadioButton rb = (RadioButton) row.findViewById(android.R.id.checkbox); - mRadioButtons.add(rb); - rb.setEnabled(enabled); - rb.setOnCheckedChangeListener(new OnCheckedChangeListener() { + final ConditionTag tag = + row.getTag() != null ? (ConditionTag) row.getTag() : new ConditionTag(); + row.setTag(tag); + if (tag.rb == null) { + tag.rb = (RadioButton) row.findViewById(android.R.id.checkbox); + } + tag.conditionId = condition != null ? condition.id : null; + tag.rb.setEnabled(enabled); + tag.rb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - for (RadioButton otherButton : mRadioButtons) { - if (otherButton == rb) continue; - otherButton.setChecked(false); + if (mShowing && isChecked) { + if (DEBUG) Log.d(mTag, "onCheckedChanged " + tag.conditionId); + final int N = mConditions.getChildCount(); + for (int i = 0; i < N; i++) { + ConditionTag childTag = getConditionTagAt(i); + if (childTag == tag) continue; + childTag.rb.setChecked(false); } - mController.select(condition); + select(tag.conditionId); fireInteraction(); } } @@ -173,9 +286,7 @@ public class ZenModePanel extends LinearLayout { button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - rb.setChecked(true); - editTimeCondition(-1); - fireInteraction(); + onClickTimeButton(row, tag, false /*down*/); } }); @@ -183,29 +294,83 @@ public class ZenModePanel extends LinearLayout { button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - rb.setChecked(true); - editTimeCondition(1); - fireInteraction(); + onClickTimeButton(row, tag, true /*up*/); } }); title.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - rb.setChecked(true); + tag.rb.setChecked(true); fireInteraction(); } }); - if (position == 0) { - button1.setEnabled(mMinutesIndex > 0); - button2.setEnabled(mMinutesIndex < MINUTES.length - 1); - button1.setImageAlpha(button1.isEnabled() ? 0xff : 0x7f); - button2.setImageAlpha(button2.isEnabled() ? 0xff : 0x7f); + + final long time = ZenModeConfig.tryParseCountdownConditionId(tag.conditionId); + if (time > 0) { + if (mBucketIndex > -1) { + button1.setEnabled(mBucketIndex > 0); + button2.setEnabled(mBucketIndex < MINUTE_BUCKETS.length - 1); + } else { + final long span = time - System.currentTimeMillis(); + button1.setEnabled(span > MIN_BUCKET_MINUTES * MINUTES_MS); + final Condition maxCondition = newTimeCondition(MAX_BUCKET_MINUTES); + button2.setEnabled(!Objects.equals(condition.summary, maxCondition.summary)); + } + + button1.setAlpha(button1.isEnabled() ? 1f : .5f); + button2.setAlpha(button2.isEnabled() ? 1f : .5f); } else { button1.setVisibility(View.GONE); button2.setVisibility(View.GONE); } - if (position == 0 && mConditions.getChildCount() == 1) { - rb.setChecked(true); + if (mExitConditionId != null && mExitConditionId.equals(tag.conditionId)) { + if (DEBUG) Log.d(mTag, "Auto-selecting row with mExitConditionId=" + mExitConditionId); + tag.rb.setChecked(true); + } + } + + private void onClickTimeButton(View row, ConditionTag tag, boolean up) { + Condition newCondition = null; + final int N = MINUTE_BUCKETS.length; + if (mBucketIndex == -1) { + // not on a known index, search for the next or prev bucket by time + final long time = ZenModeConfig.tryParseCountdownConditionId(tag.conditionId); + final long now = System.currentTimeMillis(); + for (int i = 0; i < N; i++) { + int j = up ? i : N - 1 - i; + final int bucketMinutes = MINUTE_BUCKETS[j]; + final long bucketTime = now + bucketMinutes * MINUTES_MS; + if (up && bucketTime > time || !up && bucketTime < time) { + mBucketIndex = j; + newCondition = timeCondition(bucketTime, bucketMinutes); + break; + } + } + if (newCondition == null) { + mBucketIndex = DEFAULT_BUCKET_INDEX; + newCondition = newTimeCondition(MINUTE_BUCKETS[mBucketIndex]); + } + } else { + // on a known index, simply increment or decrement + mBucketIndex = Math.max(0, Math.min(N - 1, mBucketIndex + (up ? 1 : -1))); + newCondition = newTimeCondition(MINUTE_BUCKETS[mBucketIndex]); + } + bind(newCondition, row); + tag.rb.setChecked(true); + select(newCondition.id); + fireInteraction(); + } + + private void select(Uri conditionId) { + if (DEBUG) Log.d(mTag, "select " + conditionId); + if (mController != null) { + mController.setExitConditionId(conditionId); + } + mExitConditionId = conditionId; + if (conditionId == null) { + mFavorites.setMinuteIndex(-1); + } else if (ZenModeConfig.isValidCountdownConditionId(conditionId) && mBucketIndex != -1) { + mFavorites.setMinuteIndex(mBucketIndex); } } @@ -226,10 +391,16 @@ public class ZenModePanel extends LinearLayout { public void onConditionsChanged(Condition[] conditions) { mHandler.obtainMessage(H.UPDATE_CONDITIONS, conditions).sendToTarget(); } + + @Override + public void onExitConditionChanged(Uri exitConditionId) { + mHandler.obtainMessage(H.EXIT_CONDITION_CHANGED, exitConditionId).sendToTarget(); + } }; private final class H extends Handler { private static final int UPDATE_CONDITIONS = 1; + private static final int EXIT_CONDITION_CHANGED = 2; private H() { super(Looper.getMainLooper()); @@ -239,6 +410,8 @@ public class ZenModePanel extends LinearLayout { public void handleMessage(Message msg) { if (msg.what == UPDATE_CONDITIONS) { handleUpdateConditions((Condition[])msg.obj); + } else if (msg.what == EXIT_CONDITION_CHANGED) { + handleExitConditionChanged((Uri)msg.obj); } } } @@ -247,4 +420,51 @@ public class ZenModePanel extends LinearLayout { void onMoreSettings(); void onInteraction(); } + + // used as the view tag on condition rows + private static class ConditionTag { + RadioButton rb; + Uri conditionId; + } + + private final class Favorites implements OnSharedPreferenceChangeListener { + private static final String KEY_MINUTE_INDEX = "minuteIndex"; + + private int mMinuteIndex; + + private Favorites() { + prefs().registerOnSharedPreferenceChangeListener(this); + updateMinuteIndex(); + } + + public int getMinuteIndex() { + return mMinuteIndex; + } + + public void setMinuteIndex(int minuteIndex) { + minuteIndex = clamp(minuteIndex); + if (minuteIndex == mMinuteIndex) return; + mMinuteIndex = clamp(minuteIndex); + if (DEBUG) Log.d(mTag, "Setting favorite minute index: " + mMinuteIndex); + prefs().edit().putInt(KEY_MINUTE_INDEX, mMinuteIndex).apply(); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { + updateMinuteIndex(); + } + + private SharedPreferences prefs() { + return mContext.getSharedPreferences(ZenModePanel.class.getSimpleName(), 0); + } + + private void updateMinuteIndex() { + mMinuteIndex = clamp(prefs().getInt(KEY_MINUTE_INDEX, DEFAULT_BUCKET_INDEX)); + if (DEBUG) Log.d(mTag, "Favorite minute index: " + mMinuteIndex); + } + + private int clamp(int index) { + return Math.max(-1, Math.min(MINUTE_BUCKETS.length - 1, index)); + } + } } |