diff options
38 files changed, 320 insertions, 163 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 4fe9cef2b7c2..a8ed13255320 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1442,9 +1442,10 @@ public class ActivityManager { public int getLauncherLargeIconDensity() { final Resources res = mContext.getResources(); final int density = res.getDisplayMetrics().densityDpi; + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return density; } @@ -1458,7 +1459,9 @@ public class ActivityManager { case DisplayMetrics.DENSITY_XHIGH: return DisplayMetrics.DENSITY_MEDIUM * 2; default: - return density; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(density*1.5f); } } @@ -1471,9 +1474,10 @@ public class ActivityManager { public int getLauncherLargeIconSize() { final Resources res = mContext.getResources(); final int size = res.getDimensionPixelSize(android.R.dimen.app_icon_size); + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return size; } @@ -1489,7 +1493,9 @@ public class ActivityManager { case DisplayMetrics.DENSITY_XHIGH: return (size * DisplayMetrics.DENSITY_MEDIUM * 2) / DisplayMetrics.DENSITY_XHIGH; default: - return size; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(size*1.5f); } } diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java index 5b8addf2a7c2..dd9f3376d74e 100644 --- a/core/java/android/app/StatusBarManager.java +++ b/core/java/android/app/StatusBarManager.java @@ -56,6 +56,11 @@ public class StatusBarManager { | DISABLE_NOTIFICATION_ALERTS | DISABLE_NOTIFICATION_TICKER | DISABLE_SYSTEM_INFO | DISABLE_RECENT | DISABLE_HOME | DISABLE_BACK | DISABLE_CLOCK; + public static final int NAVIGATION_HINT_BACK_NOP = 1 << 0; + public static final int NAVIGATION_HINT_HOME_NOP = 1 << 1; + public static final int NAVIGATION_HINT_RECENT_NOP = 1 << 2; + public static final int NAVIGATION_HINT_BACK_ALT = 1 << 3; + private Context mContext; private IStatusBarService mService; private IBinder mToken = new Binder(); diff --git a/data/fonts/DroidSansFallback.ttf b/data/fonts/DroidSansFallback.ttf Binary files differindex ff976700702c..cfbc66ad0470 100644 --- a/data/fonts/DroidSansFallback.ttf +++ b/data/fonts/DroidSansFallback.ttf diff --git a/data/fonts/DroidSansFallbackFull.ttf b/data/fonts/DroidSansFallbackFull.ttf Binary files differindex 03ceae5df855..0cacabedcaed 100644 --- a/data/fonts/DroidSansFallbackFull.ttf +++ b/data/fonts/DroidSansFallbackFull.ttf diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime.png Binary files differindex 3071fb368f7c..3071fb368f7c 100644 --- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 475712560a74..000000000000 --- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime.png Binary files differindex 72b5ffef9f95..72b5ffef9f95 100644 --- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 0cd05a30b737..000000000000 --- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime.png Binary files differindex 7f05602265a4..7f05602265a4 100644 --- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 3e59c8dd0eab..000000000000 --- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml b/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml deleted file mode 100644 index 248496d046e8..000000000000 --- a/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_pressed="true" android:drawable="@drawable/ic_sysbar_back_ime_pressed" /> - <item android:drawable="@drawable/ic_sysbar_back_ime_default" /> -</selector> - diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar.xml b/packages/SystemUI/res/layout-sw600dp/status_bar.xml index b96c35701b6a..2308bf0c4a1f 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar.xml @@ -54,7 +54,7 @@ android:clipToPadding="false" > <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" @@ -62,7 +62,7 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_home" systemui:keyCode="3" @@ -70,14 +70,14 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_recent" android:contentDescription="@string/accessibility_recent" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_menu_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml index 111f9a42de1c..8e231d0a845c 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml @@ -32,7 +32,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentBottom="true" - android:paddingBottom="@*android:dimen/status_bar_height" + android:layout_marginBottom="@*android:dimen/status_bar_height" android:clipToPadding="false" android:clipChildren="false"> @@ -69,13 +69,12 @@ </FrameLayout> - <View android:id="@+id/recents_dismiss_button" - android:layout_width="80px" + <com.android.systemui.recent.StatusBarTouchProxy + android:id="@+id/status_bar_touch_proxy" + android:layout_width="match_parent" android:layout_height="@*android:dimen/status_bar_height" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" - android:background="@drawable/ic_sysbar_back_ime" - android:contentDescription="@string/status_bar_accessibility_dismiss_recents" /> diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml index d19fd81f8e62..ef2996e74a94 100644 --- a/packages/SystemUI/res/layout/navigation_bar.xml +++ b/packages/SystemUI/res/layout/navigation_bar.xml @@ -49,7 +49,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" @@ -64,7 +64,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_home" systemui:keyCode="3" @@ -80,7 +80,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_recent" android:layout_weight="0" @@ -88,7 +88,7 @@ android:contentDescription="@string/accessibility_recent" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" - android:layout_width="40dp" + android:layout_width="@dimen/navigation_menu_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 9fc225657f2b..447229d56c28 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -25,11 +25,11 @@ <string name="status_bar_please_disturb_button" msgid="3345398298841572813">"Benachrichtigungen zeigen"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Aus Liste entfernen"</string> <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"App-Info"</string> - <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Keine kürzlich geöffneten Apps"</string> - <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Kürzlich geöffnete Apps schließen"</string> + <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Keine neuen Apps"</string> + <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Kürzlich verwendete Apps schließen"</string> <plurals name="status_bar_accessibility_recent_apps"> - <item quantity="one" msgid="5854176083865845541">"1 kürzlich geöffnete App"</item> - <item quantity="other" msgid="1040784359794890744">"%d kürzlich geöffnete Apps"</item> + <item quantity="one" msgid="5854176083865845541">"1 kürzlich verwendete App"</item> + <item quantity="other" msgid="1040784359794890744">"%d kürzlich verwendete Apps"</item> </plurals> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Keine Benachrichtigungen"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Aktuell"</string> @@ -76,7 +76,7 @@ <string name="accessibility_back" msgid="567011538994429120">"Zurück"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startbildschirm"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menü"</string> - <string name="accessibility_recent" msgid="8571350598987952883">"Kürzlich geöffnete Apps"</string> + <string name="accessibility_recent" msgid="8571350598987952883">"Kürzlich verwendete Apps"</string> <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Schaltfläche zum Ändern der Eingabemethode"</string> <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Schaltfläche für Kompatibilitätszoom"</string> <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom auf einen größeren Bildschirm"</string> @@ -133,7 +133,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobile Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Daten deaktiviert"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Sie haben die angegebenen Grenze für den Datenverbrauch erreicht."\n\n"Wenn Sie die Datennutzung erneut aktivieren, berechnet Ihr Mobilfunkanbieter unter Umständen zusätzliche Gebühren."</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Sie haben die angegebenen Grenze für die Datennutzung erreicht."\n\n"Wenn Sie die Datennutzung erneut aktivieren, berechnet Ihr Mobilfunkanbieter unter Umständen zusätzliche Gebühren."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Daten erneut aktivieren"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Keine Internetverbindung"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN verbunden"</string> diff --git a/packages/SystemUI/res/values-es-rUS-large/strings.xml b/packages/SystemUI/res/values-es-rUS-large/strings.xml index dd44b28fb214..3f96e87fce1d 100644 --- a/packages/SystemUI/res/values-es-rUS-large/strings.xml +++ b/packages/SystemUI/res/values-es-rUS-large/strings.xml @@ -19,7 +19,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Eliminar todas"</string> + <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Borrar todas"</string> <string name="notifications_off_title" msgid="1860117696034775851">"Notificaciones desactivadas"</string> <string name="notifications_off_text" msgid="1439152806320786912">"Toca aquí para volver a activar las notificaciones."</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 6b342e26db31..66f43dff1ab6 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7164937344850004466">"IU del sistema"</string> - <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Eliminar"</string> + <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Borrar"</string> <string name="status_bar_do_not_disturb_button" msgid="5812628897510997853">"No molestar"</string> <string name="status_bar_please_disturb_button" msgid="3345398298841572813">"Mostrar notificaciones"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Eliminar de la lista"</string> @@ -122,7 +122,7 @@ <skip /> <string name="accessibility_settings_button" msgid="799583911231893380">"Configuración del sistema"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificaciones"</string> - <string name="accessibility_remove_notification" msgid="3603099514902182350">"Eliminar notificación"</string> + <string name="accessibility_remove_notification" msgid="3603099514902182350">"Borrar notificación"</string> <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS habilitado"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"Adquisición de GPS"</string> <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter habilitado"</string> @@ -133,11 +133,11 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datos de 4G inhabilitados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Se inhabilitaron los datos móviles"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Datos inhabilitados"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a activar datos."</string> - <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a activar datos"</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a habilitar datos."</string> + <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a habilitar datos"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sin conexión a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"La ubicación se estableció por GPS"</string> - <string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string> + <string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 4bbd7c10eaf5..772c78d70297 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -65,7 +65,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Kuvatõmmise salvestamine ..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Kuvatõmmise salvestamine ..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvatõmmist salvestatakse."</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekraanipilt on jäädvustatud."</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"Kuvatõmmis on jäädvustatud."</string> <string name="screenshot_saved_text" msgid="1152839647677558815">"Puudutage kuvatõmmise vaatamiseks."</string> <string name="screenshot_failed_title" msgid="705781116746922771">"Kuvatõmmist ei saanud jäädvustada."</string> <string name="screenshot_failed_text" msgid="8134011269572415402">"Kuvatõmmist ei saa salvestada. Mäluseade võib olla kasutuses."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 29d2d0d8747f..8c87b2689b9d 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -115,7 +115,7 @@ <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string> - <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string> + <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Vínculo Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião."</string> <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level (7451474187113371965) --> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index bb5a825f0005..105a30e752f2 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -39,10 +39,8 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nagins avis"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Actual"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Avis"</string> - <!-- no translation found for battery_low_title (2783104807551211639) --> - <skip /> - <!-- no translation found for battery_low_subtitle (1752040062087829196) --> - <skip /> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Connectar il chargiabattarias"</string> + <!-- outdated translation 7388781709819722764 --> <string name="battery_low_subtitle" msgid="1752040062087829196">"L\'accu è prest vid."</string> <!-- no translation found for battery_low_percent_format (1077244949318261761) --> <skip /> <!-- no translation found for invalid_charger (4549105996740522523) --> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 68ebb3fec04c..44824a003e67 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -36,7 +36,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Уведомления"</string> <string name="battery_low_title" msgid="2783104807551211639">"Подключите зарядное устройство"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея разряжена."</string> - <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось <xliff:g id="NUMBER">%d%%</xliff:g>"</string> + <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Зарядка через порт USB не поддерживается."\n"Используйте только зарядное устройство из комплекта поставки."</string> <string name="battery_low_why" msgid="7279169609518386372">"Расход заряда батареи"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index bcef166bec40..8d89dffba886 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -26,7 +26,7 @@ <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Ondoa kwenye orodha"</string> <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Taarifa za programu-matumizi"</string> <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Hakuna programu za sasa"</string> - <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha prog za hivi karibuni"</string> + <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha programu za hivi karibuni"</string> <!-- String.format failed for translation --> <!-- no translation found for status_bar_accessibility_recent_apps:other (1040784359794890744) --> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Hakuna arifa"</string> diff --git a/packages/SystemUI/res/values-sw600dp-port/dimens.xml b/packages/SystemUI/res/values-sw600dp-port/dimens.xml index b8a6cfe49400..39eade6104a6 100644 --- a/packages/SystemUI/res/values-sw600dp-port/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp-port/dimens.xml @@ -18,5 +18,11 @@ <resources> <!-- gap on either side of status bar notification icons --> <dimen name="status_bar_icon_padding">0dp</dimen> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">70dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml index f522285a18a6..ba1cdfac335e 100644 --- a/packages/SystemUI/res/values-sw600dp/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp/dimens.xml @@ -67,4 +67,10 @@ <!-- opacity at which Notification icons will be drawn in the status bar --> <item type="dimen" name="status_bar_icon_drawing_alpha">100%</item> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-sw720dp/dimens.xml b/packages/SystemUI/res/values-sw720dp/dimens.xml index 6736c1ad2673..b16b1e80cb57 100644 --- a/packages/SystemUI/res/values-sw720dp/dimens.xml +++ b/packages/SystemUI/res/values-sw720dp/dimens.xml @@ -21,5 +21,11 @@ <!-- opacity at which Notification icons will be drawn in the status bar --> <item type="dimen" name="status_bar_icon_drawing_alpha">100%</item> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">80dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 55f378f7a27d..614d599089af 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -36,7 +36,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Izaziso"</string> <string name="battery_low_title" msgid="2783104807551211639">"Xhuma ishaja."</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Ibhetri iya ngokuphela."</string> - <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> okusele"</string> + <string name="battery_low_percent_format" msgid="1077244949318261761">"okusele okungu-<xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Ukushaja i-USB akusekelwe."\n"Sebenzisa kuphela ishaja enikeziwe."</string> <string name="battery_low_why" msgid="7279169609518386372">"Ukusebenzisa ibhetri"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Izilungiselelo"</string> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 8fba86a5b2e5..2c22e3cec573 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -91,4 +91,9 @@ <!-- The padding on the global screenshot background image --> <dimen name="global_screenshot_bg_padding">20dp</dimen> + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java index 8bfd7111fb5a..4aec22c9bbc7 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java @@ -68,10 +68,11 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe private View mRecentsScrim; private View mRecentsNoApps; private ViewGroup mRecentsContainer; + private StatusBarTouchProxy mStatusBarTouchProxy; private boolean mShowing; private Choreographer mChoreo; - private View mRecentsDismissButton; + OnRecentsPanelVisibilityChangedListener mVisibilityChangedListener; private RecentTasksLoader mRecentTasksLoader; private ArrayList<TaskDescription> mRecentTaskDescriptions; @@ -81,8 +82,8 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe private int mThumbnailWidth; private boolean mFitThumbnailToXY; - public void setRecentTasksLoader(RecentTasksLoader loader) { - mRecentTasksLoader = loader; + public static interface OnRecentsPanelVisibilityChangedListener { + public void onRecentsPanelVisibilityChanged(boolean visible); } private final class OnLongClickDelegate implements View.OnLongClickListener { @@ -171,15 +172,18 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe return super.onKeyUp(keyCode, event); } - public boolean isInContentArea(int x, int y) { - // use mRecentsContainer's exact bounds to determine horizontal position - final int l = mRecentsContainer.getLeft(); - final int r = mRecentsContainer.getRight(); - final int t = mRecentsContainer.getTop(); - final int b = mRecentsContainer.getBottom(); + private boolean pointInside(int x, int y, View v) { + final int l = v.getLeft(); + final int r = v.getRight(); + final int t = v.getTop(); + final int b = v.getBottom(); return x >= l && x < r && y >= t && y < b; } + public boolean isInContentArea(int x, int y) { + return pointInside(x, y, mRecentsContainer) || pointInside(x, y, mStatusBarTouchProxy); + } + public void show(boolean show, boolean animate) { show(show, animate, null); } @@ -278,7 +282,6 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe public void onAnimationStart(Animator animation) { } - /** * We need to be aligned at the bottom. LinearLayout can't do this, so instead, * let LinearLayout do all the hard work, and then shift everything down to the bottom. @@ -312,6 +315,29 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe public void setBar(StatusBar bar) { mBar = bar; + + } + + public void setStatusBarView(View statusBarView) { + if (mStatusBarTouchProxy != null) { + mStatusBarTouchProxy.setStatusBar(statusBarView); + } + } + + public void setRecentTasksLoader(RecentTasksLoader loader) { + mRecentTasksLoader = loader; + } + + public void setOnVisibilityChangedListener(OnRecentsPanelVisibilityChangedListener l) { + mVisibilityChangedListener = l; + + } + + public void setVisibility(int visibility) { + if (mVisibilityChangedListener != null) { + mVisibilityChangedListener.onRecentsPanelVisibilityChanged(visibility == VISIBLE); + } + super.setVisibility(visibility); } public RecentsPanelView(Context context, AttributeSet attrs) { @@ -335,6 +361,7 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe super.onFinishInflate(); mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mRecentsContainer = (ViewGroup) findViewById(R.id.recents_container); + mStatusBarTouchProxy = (StatusBarTouchProxy) findViewById(R.id.status_bar_touch_proxy); mListAdapter = new TaskDescriptionAdapter(mContext); if (mRecentsContainer instanceof RecentsHorizontalScrollView){ RecentsHorizontalScrollView scrollView @@ -355,14 +382,6 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe mRecentsScrim = findViewById(R.id.recents_bg_protect); mRecentsNoApps = findViewById(R.id.recents_no_apps); mChoreo = new Choreographer(this, mRecentsScrim, mRecentsContainer, mRecentsNoApps, this); - mRecentsDismissButton = findViewById(R.id.recents_dismiss_button); - if (mRecentsDismissButton != null) { - mRecentsDismissButton.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - hide(true); - } - }); - } // In order to save space, we make the background texture repeat in the Y direction if (mRecentsScrim != null && mRecentsScrim.getBackground() instanceof BitmapDrawable) { diff --git a/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java b/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java new file mode 100644 index 000000000000..ded114ff6d62 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2011 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.recent; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.widget.FrameLayout; + +public class StatusBarTouchProxy extends FrameLayout { + + private View mStatusBar; + + public StatusBarTouchProxy(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void setStatusBar(View statusBar) { + mStatusBar = statusBar; + } + + public boolean onTouchEvent (MotionEvent event) { + return mStatusBar.dispatchTouchEvent(event); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index bf2d5e88addd..f8dfa8fcf6b0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -62,6 +62,8 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_TOGGLE_RECENT_APPS = 11 << MSG_SHIFT; + private static final int MSG_SET_NAVIGATION_ICON_HINTS = 13 << MSG_SHIFT; + private StatusBarIconList mList; private Callbacks mCallbacks; private Handler mHandler = new H(); @@ -90,6 +92,7 @@ public class CommandQueue extends IStatusBar.Stub { public void setImeWindowStatus(IBinder token, int vis, int backDisposition); public void setHardKeyboardStatus(boolean available, boolean enabled); public void toggleRecentApps(); + public void setNavigationIconHints(int hints); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { @@ -196,6 +199,13 @@ public class CommandQueue extends IStatusBar.Stub { } } + public void setNavigationIconHints(int hints) { + synchronized (mList) { + mHandler.removeMessages(MSG_SET_NAVIGATION_ICON_HINTS); + mHandler.obtainMessage(MSG_SET_NAVIGATION_ICON_HINTS, hints, 0, null).sendToTarget(); + } + } + private final class H extends Handler { public void handleMessage(Message msg) { final int what = msg.what & MSG_MASK; @@ -265,6 +275,9 @@ public class CommandQueue extends IStatusBar.Stub { case MSG_TOGGLE_RECENT_APPS: mCallbacks.toggleRecentApps(); break; + case MSG_SET_NAVIGATION_ICON_HINTS: + mCallbacks.setNavigationIconHints(msg.arg1); + break; } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 005d12f1bdb6..6574c7dd71ae 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -18,6 +18,8 @@ package com.android.systemui.statusbar.phone; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.app.StatusBarManager; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; @@ -33,6 +35,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.Surface; import android.view.WindowManager; +import android.widget.ImageView; import android.widget.LinearLayout; import java.io.FileDescriptor; @@ -63,6 +66,7 @@ public class NavigationBarView extends LinearLayout { boolean mHidden, mLowProfile, mShowMenu; int mDisabledFlags = 0; + int mNavigationIconHints = 0; // workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288) final static boolean WORKAROUND_INVALID_LAYOUT = true; @@ -143,6 +147,34 @@ public class NavigationBarView extends LinearLayout { } }; + public void setNavigationIconHints(int hints) { + setNavigationIconHints(hints, false); + } + + public void setNavigationIconHints(int hints, boolean force) { + if (!force && hints == mNavigationIconHints) return; + + if (DEBUG) { + android.widget.Toast.makeText(mContext, + "Navigation icon hints = " + hints, + 500).show(); + } + + mNavigationIconHints = hints; + + getBackButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_NOP)) ? 0.5f : 1.0f); + getHomeButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_HOME_NOP)) ? 0.5f : 1.0f); + getRecentsButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); + + ((ImageView)getBackButton()).setImageResource( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) + ? R.drawable.ic_sysbar_back_ime + : R.drawable.ic_sysbar_back); + } + public void setDisabledFlags(int disabledFlags) { setDisabledFlags(disabledFlags, false); } @@ -272,6 +304,8 @@ public class NavigationBarView extends LinearLayout { if (DEBUG) { Slog.d(TAG, "reorient(): rot=" + mDisplay.getRotation()); } + + setNavigationIconHints(mNavigationIconHints, true); } @Override 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 3c9d12ce2221..5a1e3f440edd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -32,6 +32,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.Configuration; +import android.inputmethodservice.InputMethodService; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -229,6 +230,8 @@ public class PhoneStatusBar extends StatusBar { DisplayMetrics mDisplayMetrics = new DisplayMetrics(); + private int mNavigationIconHints = 0; + private class ExpandedDialog extends Dialog { ExpandedDialog(Context context) { super(context, com.android.internal.R.style.Theme_Translucent_NoTitleBar); @@ -1541,6 +1544,17 @@ public class PhoneStatusBar extends StatusBar { } @Override // CommandQueue + public void setNavigationIconHints(int hints) { + if (hints == mNavigationIconHints) return; + + mNavigationIconHints = hints; + + if (mNavigationBarView != null) { + mNavigationBarView.setNavigationIconHints(hints); + } + } + + @Override // CommandQueue public void setSystemUiVisibility(int vis) { final int old = mSystemUiVisibility; final int diff = vis ^ old; @@ -1590,8 +1604,16 @@ public class PhoneStatusBar extends StatusBar { if (showMenu) setLightsOn(true); } - // Not supported - public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { } + @Override + public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { + boolean altBack = (backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) + || ((vis & InputMethodService.IME_VISIBLE) != 0); + + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + } + @Override public void setHardKeyboardStatus(boolean available, boolean enabled) { } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index 6913239db572..09e38ff31434 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -88,7 +88,8 @@ import com.android.systemui.statusbar.policy.Prefs; public class TabletStatusBar extends StatusBar implements HeightReceiver.OnBarHeightChangedListener, - InputMethodsPanel.OnHardKeyboardEnabledChangeListener { + InputMethodsPanel.OnHardKeyboardEnabledChangeListener, + RecentsPanelView.OnRecentsPanelVisibilityChangedListener { public static final boolean DEBUG = false; public static final boolean DEBUG_COMPAT_HELP = false; public static final String TAG = "TabletStatusBar"; @@ -121,6 +122,8 @@ public class TabletStatusBar extends StatusBar implements int mNaturalBarHeight = -1; int mIconSize = -1; int mIconHPadding = -1; + int mNavIconWidth = -1; + int mMenuNavIconWidth = -1; private int mMaxNotificationIcons = 5; H mHandler = new H(); @@ -143,6 +146,7 @@ public class TabletStatusBar extends StatusBar implements View mHomeButton; View mMenuButton; View mRecentButton; + private boolean mAltBackButtonEnabledForIme; ViewGroup mFeedbackIconArea; // notification icons, IME icon, compat icon InputMethodButton mInputMethodSwitchButton; @@ -193,6 +197,8 @@ public class TabletStatusBar extends StatusBar implements // used to notify status bar for suppressing notification LED private boolean mPanelSlightlyVisible; + private int mNavigationIconHints = 0; + public Context getContext() { return mContext; } protected void addPanelWindows() { @@ -305,12 +311,11 @@ public class TabletStatusBar extends StatusBar implements mRecentsPanel = (RecentsPanelView) View.inflate(context, R.layout.status_bar_recent_panel, null); mRecentsPanel.setVisibility(View.GONE); - mRecentsPanel.setSystemUiVisibility(View.STATUS_BAR_DISABLE_BACK); mRecentsPanel.setOnTouchListener(new TouchOutsideListener(MSG_CLOSE_RECENTS_PANEL, mRecentsPanel)); + mRecentsPanel.setOnVisibilityChangedListener(this); mRecentsPanel.setRecentTasksLoader(mRecentTasksLoader); mRecentTasksLoader.setRecentsPanel(mRecentsPanel); - mStatusBarView.setIgnoreChildren(2, mRecentButton, mRecentsPanel); lp = new WindowManager.LayoutParams( (int) res.getDimension(R.dimen.status_bar_recents_width), @@ -329,6 +334,7 @@ public class TabletStatusBar extends StatusBar implements WindowManagerImpl.getDefault().addView(mRecentsPanel, lp); mRecentsPanel.setBar(this); + mRecentsPanel.setStatusBarView(mStatusBarView); // Input methods Panel mInputMethodsPanel = (InputMethodsPanel) View.inflate(context, @@ -337,7 +343,7 @@ public class TabletStatusBar extends StatusBar implements mInputMethodsPanel.setOnTouchListener(new TouchOutsideListener( MSG_CLOSE_INPUT_METHODS_PANEL, mInputMethodsPanel)); mInputMethodsPanel.setImeSwitchButton(mInputMethodSwitchButton); - mStatusBarView.setIgnoreChildren(3, mInputMethodSwitchButton, mInputMethodsPanel); + mStatusBarView.setIgnoreChildren(2, mInputMethodSwitchButton, mInputMethodsPanel); lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, @@ -360,7 +366,7 @@ public class TabletStatusBar extends StatusBar implements MSG_CLOSE_COMPAT_MODE_PANEL, mCompatModePanel)); mCompatModePanel.setTrigger(mCompatModeButton); mCompatModePanel.setVisibility(View.GONE); - mStatusBarView.setIgnoreChildren(4, mCompatModeButton, mCompatModePanel); + mStatusBarView.setIgnoreChildren(3, mCompatModeButton, mCompatModePanel); lp = new WindowManager.LayoutParams( 250, ViewGroup.LayoutParams.WRAP_CONTENT, @@ -410,6 +416,26 @@ public class TabletStatusBar extends StatusBar implements com.android.internal.R.dimen.system_bar_icon_size); int newIconHPadding = res.getDimensionPixelSize( R.dimen.status_bar_icon_padding); + int newNavIconWidth = res.getDimensionPixelSize(R.dimen.navigation_key_width); + int newMenuNavIconWidth = res.getDimensionPixelSize(R.dimen.navigation_menu_key_width); + + if (mNavigationArea != null && newNavIconWidth != mNavIconWidth) { + mNavIconWidth = newNavIconWidth; + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + mNavIconWidth, ViewGroup.LayoutParams.MATCH_PARENT); + mBackButton.setLayoutParams(lp); + mHomeButton.setLayoutParams(lp); + mRecentButton.setLayoutParams(lp); + } + + if (mNavigationArea != null && newMenuNavIconWidth != mMenuNavIconWidth) { + mMenuNavIconWidth = newMenuNavIconWidth; + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + mMenuNavIconWidth, ViewGroup.LayoutParams.MATCH_PARENT); + mMenuButton.setLayoutParams(lp); + } if (newIconHPadding != mIconHPadding || newIconSize != mIconSize) { // Slog.d(TAG, "size=" + newIconSize + " padding=" + newIconHPadding); @@ -426,6 +452,10 @@ public class TabletStatusBar extends StatusBar implements } } + public View getStatusBarView() { + return mStatusBarView; + } + protected View makeStatusBarView() { final Context context = mContext; @@ -1087,6 +1117,31 @@ public class TabletStatusBar extends StatusBar implements } } + @Override // CommandQueue + public void setNavigationIconHints(int hints) { + if (hints == mNavigationIconHints) return; + + if (DEBUG) { + android.widget.Toast.makeText(mContext, + "Navigation icon hints = " + hints, + 500).show(); + } + + mNavigationIconHints = hints; + + mBackButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_NOP)) ? 0.5f : 1.0f); + mHomeButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_HOME_NOP)) ? 0.5f : 1.0f); + mRecentButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); + + mBackButton.setImageResource( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) + ? R.drawable.ic_sysbar_back_ime + : R.drawable.ic_sysbar_back); + } + private void notifyUiVisibilityChanged() { try { mWindowManager.statusBarVisibilityChanged(mSystemUiVisibility); @@ -1190,24 +1245,15 @@ public class TabletStatusBar extends StatusBar implements (vis & InputMethodService.IME_ACTIVE) != 0); updateNotificationIcons(); mInputMethodsPanel.setImeToken(token); - int res; - switch (backDisposition) { - case InputMethodService.BACK_DISPOSITION_WILL_NOT_DISMISS: - res = R.drawable.ic_sysbar_back; - break; - case InputMethodService.BACK_DISPOSITION_WILL_DISMISS: - res = R.drawable.ic_sysbar_back_ime; - break; - case InputMethodService.BACK_DISPOSITION_DEFAULT: - default: - if ((vis & InputMethodService.IME_VISIBLE) != 0) { - res = R.drawable.ic_sysbar_back_ime; - } else { - res = R.drawable.ic_sysbar_back; - } - break; - } - mBackButton.setImageResource(res); + + boolean altBack = (backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) + || ((vis & InputMethodService.IME_VISIBLE) != 0); + mAltBackButtonEnabledForIme = altBack; + + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + if (FAKE_SPACE_BAR) { mFakeSpaceBar.setVisibility(((vis & InputMethodService.IME_VISIBLE) != 0) ? View.VISIBLE : View.GONE); @@ -1215,6 +1261,14 @@ public class TabletStatusBar extends StatusBar implements } @Override + public void onRecentsPanelVisibilityChanged(boolean visible) { + boolean altBack = visible || mAltBackButtonEnabledForIme; + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + } + + @Override public void setHardKeyboardStatus(boolean available, boolean enabled) { if (DEBUG) { Slog.d(TAG, "Set hard keyboard status: available=" + available diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java index 7d112516a9d0..877a40efae31 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java @@ -46,10 +46,11 @@ public class TabletStatusBarView extends FrameLayout { if (TabletStatusBar.DEBUG) { Slog.d(TabletStatusBar.TAG, "TabletStatusBarView intercepting touch event: " + ev); } + // do not close the recents panel here- the intended behavior is that recents is dismissed + // on touch up when clicking on status bar buttons + // TODO: should we be closing the notification panel and input methods panel? mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_NOTIFICATION_PANEL); mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_NOTIFICATION_PANEL); - mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_RECENTS_PANEL); - mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_RECENTS_PANEL); mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_INPUT_METHODS_PANEL); mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_INPUT_METHODS_PANEL); mHandler.removeMessages(TabletStatusBar.MSG_STOP_TICKER); diff --git a/tools/layoutlib/bridge/resources/bars/action_bar.xml b/tools/layoutlib/bridge/resources/bars/action_bar.xml index 7adc5af44b75..51983f2d3ece 100644 --- a/tools/layoutlib/bridge/resources/bars/action_bar.xml +++ b/tools/layoutlib/bridge/resources/bars/action_bar.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@android:layout/action_bar_home" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content"/> + <ImageView + android:layout_height="wrap_content" + android:layout_width="wrap_content"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> </merge> diff --git a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java index 5df2a21567cf..451edd2f430d 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java @@ -474,7 +474,7 @@ public final class Matrix_Delegate { } Matrix_Delegate other = sManager.getDelegate(other_matrix); - if (other == null) { + if (d == null) { return false; } @@ -570,7 +570,7 @@ public final class Matrix_Delegate { } Matrix_Delegate other = sManager.getDelegate(other_matrix); - if (other == null) { + if (d == null) { return false; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java index cd4fbfef1fb5..72ed3513f4b9 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java @@ -145,14 +145,6 @@ abstract class CustomBar extends LinearLayout { } } - protected void loadIconById(int id, String iconReference) { - ResourceValue value = getResourceValue(iconReference); - if (value != null) { - loadIconById(id, value); - } - } - - protected Drawable loadIcon(int index, ResourceType type, String name) { BridgeContext bridgeContext = (BridgeContext) mContext; RenderResources res = bridgeContext.getRenderResources(); @@ -170,64 +162,34 @@ abstract class CustomBar extends LinearLayout { if (child instanceof ImageView) { ImageView imageView = (ImageView) child; - return loadIcon(imageView, value); - } - - return null; - } - - private Drawable loadIconById(int id, ResourceValue value) { - View child = findViewById(id); - if (child instanceof ImageView) { - ImageView imageView = (ImageView) child; + Drawable drawable = ResourceHelper.getDrawable( + value, (BridgeContext) mContext); + if (drawable != null) { + imageView.setBackgroundDrawable(drawable); + } - return loadIcon(imageView, value); + return drawable; } return null; } - - private Drawable loadIcon(ImageView imageView, ResourceValue value) { - Drawable drawable = ResourceHelper.getDrawable(value, (BridgeContext) mContext); - if (drawable != null) { - imageView.setImageDrawable(drawable); - } - - return drawable; - } - protected TextView setText(int index, String stringReference) { View child = getChildAt(index); if (child instanceof TextView) { TextView textView = (TextView) child; - setText(textView, stringReference); - return textView; - } - - return null; - } - - protected TextView setTextById(int id, String stringReference) { - View child = findViewById(id); - if (child instanceof TextView) { - TextView textView = (TextView) child; - setText(textView, stringReference); + ResourceValue value = getResourceValue(stringReference); + if (value != null) { + textView.setText(value.getValue()); + } else { + textView.setText(stringReference); + } return textView; } return null; } - private void setText(TextView textView, String stringReference) { - ResourceValue value = getResourceValue(stringReference); - if (value != null) { - textView.setText(value.getValue()); - } else { - textView.setText(stringReference); - } - } - protected void setStyle(String themeEntryName) { BridgeContext bridgeContext = (BridgeContext) mContext; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java index 68f5aba1fc12..f6edea411ead 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java @@ -34,7 +34,7 @@ public class FakeActionBar extends CustomBar { // Cannot access the inside items through id because no R.id values have been // created for them. // We do know the order though. - loadIconById(android.R.id.home, icon); + loadIcon(0, icon); mTextView = setText(1, label); setStyle("actionBarStyle"); |