diff options
107 files changed, 525 insertions, 380 deletions
diff --git a/fill_screens.py b/fill_screens.py index 9607c8068..5841b8e49 100755 --- a/fill_screens.py +++ b/fill_screens.py @@ -15,13 +15,12 @@ DIR = "db_files" AUTO_FILE = "launcher.db" APPLICATION_COMPONENTS = [ - "com.google.android.apps.books/com.google.android.apps.books.app.BooksActivity", "com.android.calculator2/com.android.calculator2.Calculator", - "com.google.android.camera/com.android.camera.Camera", - "com.google.android.carhome/com.google.android.carhome.CarHome", "com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList", - "com.google.android.gallery3d/com.android.gallery3d.app.Gallery", - "com.google.android.apps.maps/com.google.android.maps.MapsActivity" + "com.android.settings/com.android.settings.Settings", + "com.android.mms/com.android.mms.ui.ConversationList", + "com.android.contacts/com.android.contacts.activities.PeopleActivity", + "com.android.contacts/com.android.contacts.activities.DialtactsActivity" ] def usage(): diff --git a/res/drawable-hdpi/ic_allapps_pressed.png b/res/drawable-hdpi/ic_allapps_pressed.png Binary files differnew file mode 100644 index 000000000..6d87bbb23 --- /dev/null +++ b/res/drawable-hdpi/ic_allapps_pressed.png diff --git a/res/drawable-hdpi/ic_launcher_appwidget.png b/res/drawable-hdpi/ic_launcher_appwidget.png Binary files differdeleted file mode 100644 index 13513e03c..000000000 --- a/res/drawable-hdpi/ic_launcher_appwidget.png +++ /dev/null diff --git a/res/drawable-hdpi/pressed_application_background.9.png b/res/drawable-hdpi/pressed_application_background.9.png Binary files differdeleted file mode 100644 index 3a59f255f..000000000 --- a/res/drawable-hdpi/pressed_application_background.9.png +++ /dev/null diff --git a/res/drawable-hdpi/preview_bg.9.png b/res/drawable-hdpi/preview_bg.9.png Binary files differdeleted file mode 100644 index 5fa2ed82c..000000000 --- a/res/drawable-hdpi/preview_bg.9.png +++ /dev/null diff --git a/res/drawable-hdpi/preview_bg_focus.9.png b/res/drawable-hdpi/preview_bg_focus.9.png Binary files differdeleted file mode 100644 index bbf67f7a2..000000000 --- a/res/drawable-hdpi/preview_bg_focus.9.png +++ /dev/null diff --git a/res/drawable-hdpi/preview_bg_press.9.png b/res/drawable-hdpi/preview_bg_press.9.png Binary files differdeleted file mode 100644 index 6d0b02298..000000000 --- a/res/drawable-hdpi/preview_bg_press.9.png +++ /dev/null diff --git a/res/drawable-land-hdpi/bg_cling1.png b/res/drawable-land-hdpi/bg_cling1.png Binary files differnew file mode 100644 index 000000000..7123c5ca7 --- /dev/null +++ b/res/drawable-land-hdpi/bg_cling1.png diff --git a/res/drawable-land-hdpi/bg_cling2.png b/res/drawable-land-hdpi/bg_cling2.png Binary files differnew file mode 100644 index 000000000..889b6274e --- /dev/null +++ b/res/drawable-land-hdpi/bg_cling2.png diff --git a/res/drawable-land-hdpi/bg_cling3.png b/res/drawable-land-hdpi/bg_cling3.png Binary files differnew file mode 100644 index 000000000..4ff338c13 --- /dev/null +++ b/res/drawable-land-hdpi/bg_cling3.png diff --git a/res/drawable-land-hdpi/hotseat_bg_panel.9.png b/res/drawable-land-hdpi/hotseat_bg_panel.9.png Binary files differindex c7602cdc8..90177f850 100644 --- a/res/drawable-land-hdpi/hotseat_bg_panel.9.png +++ b/res/drawable-land-hdpi/hotseat_bg_panel.9.png diff --git a/res/drawable-land-mdpi/bg_cling1.png b/res/drawable-land-mdpi/bg_cling1.png Binary files differnew file mode 100644 index 000000000..f5faeb439 --- /dev/null +++ b/res/drawable-land-mdpi/bg_cling1.png diff --git a/res/drawable-land-mdpi/bg_cling2.png b/res/drawable-land-mdpi/bg_cling2.png Binary files differnew file mode 100644 index 000000000..963967d30 --- /dev/null +++ b/res/drawable-land-mdpi/bg_cling2.png diff --git a/res/drawable-land-mdpi/bg_cling3.png b/res/drawable-land-mdpi/bg_cling3.png Binary files differnew file mode 100644 index 000000000..921831af9 --- /dev/null +++ b/res/drawable-land-mdpi/bg_cling3.png diff --git a/res/drawable-land-mdpi/hotseat_bg_panel.9.png b/res/drawable-land-mdpi/hotseat_bg_panel.9.png Binary files differindex d745bb3d2..83c4a552b 100644 --- a/res/drawable-land-mdpi/hotseat_bg_panel.9.png +++ b/res/drawable-land-mdpi/hotseat_bg_panel.9.png diff --git a/res/drawable-land-xhdpi/bg_cling1.png b/res/drawable-land-xhdpi/bg_cling1.png Binary files differnew file mode 100644 index 000000000..2282117ca --- /dev/null +++ b/res/drawable-land-xhdpi/bg_cling1.png diff --git a/res/drawable-land-xhdpi/bg_cling2.png b/res/drawable-land-xhdpi/bg_cling2.png Binary files differnew file mode 100644 index 000000000..5243889be --- /dev/null +++ b/res/drawable-land-xhdpi/bg_cling2.png diff --git a/res/drawable-land-xhdpi/bg_cling3.png b/res/drawable-land-xhdpi/bg_cling3.png Binary files differnew file mode 100644 index 000000000..08475f732 --- /dev/null +++ b/res/drawable-land-xhdpi/bg_cling3.png diff --git a/res/drawable-land-xhdpi/hotseat_bg_panel.9.png b/res/drawable-land-xhdpi/hotseat_bg_panel.9.png Binary files differindex acbe24a75..8718040c1 100644 --- a/res/drawable-land-xhdpi/hotseat_bg_panel.9.png +++ b/res/drawable-land-xhdpi/hotseat_bg_panel.9.png diff --git a/res/drawable-mdpi/apps_hotseat_button.png b/res/drawable-mdpi/apps_hotseat_button.png Binary files differdeleted file mode 100644 index 62f119d67..000000000 --- a/res/drawable-mdpi/apps_hotseat_button.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_allapps_pressed.png b/res/drawable-mdpi/ic_allapps_pressed.png Binary files differnew file mode 100644 index 000000000..5c2076f24 --- /dev/null +++ b/res/drawable-mdpi/ic_allapps_pressed.png diff --git a/res/drawable-mdpi/ic_launcher_appwidget.png b/res/drawable-mdpi/ic_launcher_appwidget.png Binary files differdeleted file mode 100644 index 72dbfdf6b..000000000 --- a/res/drawable-mdpi/ic_launcher_appwidget.png +++ /dev/null diff --git a/res/drawable-mdpi/pressed_application_background.9.png b/res/drawable-mdpi/pressed_application_background.9.png Binary files differdeleted file mode 100644 index 7d5da3da2..000000000 --- a/res/drawable-mdpi/pressed_application_background.9.png +++ /dev/null diff --git a/res/drawable-mdpi/preview_bg.9.png b/res/drawable-mdpi/preview_bg.9.png Binary files differdeleted file mode 100644 index d96e88543..000000000 --- a/res/drawable-mdpi/preview_bg.9.png +++ /dev/null diff --git a/res/drawable-mdpi/preview_bg_focus.9.png b/res/drawable-mdpi/preview_bg_focus.9.png Binary files differdeleted file mode 100644 index 19e82a773..000000000 --- a/res/drawable-mdpi/preview_bg_focus.9.png +++ /dev/null diff --git a/res/drawable-mdpi/preview_bg_press.9.png b/res/drawable-mdpi/preview_bg_press.9.png Binary files differdeleted file mode 100644 index f9380903b..000000000 --- a/res/drawable-mdpi/preview_bg_press.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/apps_hotseat_button.png b/res/drawable-xhdpi/apps_hotseat_button.png Binary files differdeleted file mode 100644 index 932dac7c9..000000000 --- a/res/drawable-xhdpi/apps_hotseat_button.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_allapps_pressed.png b/res/drawable-xhdpi/ic_allapps_pressed.png Binary files differnew file mode 100644 index 000000000..72ff3b974 --- /dev/null +++ b/res/drawable-xhdpi/ic_allapps_pressed.png diff --git a/res/drawable-xhdpi/ic_launcher_appwidget.png b/res/drawable-xhdpi/ic_launcher_appwidget.png Binary files differdeleted file mode 100644 index 997504abe..000000000 --- a/res/drawable-xhdpi/ic_launcher_appwidget.png +++ /dev/null diff --git a/res/drawable-xhdpi/pressed_application_background.9.png b/res/drawable-xhdpi/pressed_application_background.9.png Binary files differdeleted file mode 100644 index 05e240a9e..000000000 --- a/res/drawable-xhdpi/pressed_application_background.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/preview_bg.9.png b/res/drawable-xhdpi/preview_bg.9.png Binary files differdeleted file mode 100644 index 11cbcb5a2..000000000 --- a/res/drawable-xhdpi/preview_bg.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/preview_bg_focus.9.png b/res/drawable-xhdpi/preview_bg_focus.9.png Binary files differdeleted file mode 100644 index 698c465e3..000000000 --- a/res/drawable-xhdpi/preview_bg_focus.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/preview_bg_press.9.png b/res/drawable-xhdpi/preview_bg_press.9.png Binary files differdeleted file mode 100644 index 78e751099..000000000 --- a/res/drawable-xhdpi/preview_bg_press.9.png +++ /dev/null diff --git a/res/drawable/preview_background.xml b/res/drawable/all_apps_button_icon.xml index 0054aa03e..7c69cad3a 100644 --- a/res/drawable/preview_background.xml +++ b/res/drawable/all_apps_button_icon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 The Android Open Source Project +<!-- 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. @@ -15,8 +15,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_pressed="true" android:drawable="@drawable/preview_bg_press" /> - <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/preview_bg_focus" /> - <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/preview_bg" /> - <item android:drawable="@drawable/preview_bg" /> + <item android:state_focused="true" android:drawable="@drawable/ic_allapps_pressed" /> + <item android:state_pressed="true" android:drawable="@drawable/ic_allapps_pressed" /> + <item android:drawable="@drawable/ic_allapps" /> </selector> diff --git a/res/layout-land/folder_cling.xml b/res/layout-land/folder_cling.xml index 91d34ad03..3d7f4f459 100644 --- a/res/layout-land/folder_cling.xml +++ b/res/layout-land/folder_cling.xml @@ -20,8 +20,8 @@ <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginLeft="40dp" - android:layout_marginTop="40dp"> + android:layout_marginLeft="20dp" + android:layout_marginTop="20dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -32,21 +32,12 @@ android:text="@string/folder_cling_title" /> <TextView style="@style/ClingText" - android:id="@+id/folder_cling_move_item" + android:id="@+id/folder_cling_create_folder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/folder_cling_move_item" /> + android:text="@string/folder_cling_create_folder" /> </LinearLayout> </FrameLayout> - <TextView - style="@style/ClingText" - android:id="@+id/folder_cling_create_folder" - android:layout_width="340dp" - android:layout_height="wrap_content" - android:layout_marginLeft="40dp" - android:layout_marginBottom="40dp" - android:layout_gravity="bottom" - android:text="@string/folder_cling_create_folder" /> <Button style="@style/ClingButton" android:id="@+id/cling_dismiss" diff --git a/res/layout-land/folder_icon.xml b/res/layout-land/folder_icon.xml index 15867c71a..4c92fcaba 100644 --- a/res/layout-land/folder_icon.xml +++ b/res/layout-land/folder_icon.xml @@ -19,7 +19,9 @@ xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + android:focusable="true" + android:background="@drawable/focusable_view_bg"> <ImageView android:id="@+id/preview_background" android:layout_gravity="center_horizontal" diff --git a/res/layout-port/folder_icon.xml b/res/layout-port/folder_icon.xml index 69e51e863..0df16b88c 100644 --- a/res/layout-port/folder_icon.xml +++ b/res/layout-port/folder_icon.xml @@ -19,7 +19,9 @@ xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + android:focusable="true" + android:background="@drawable/focusable_view_bg"> <ImageView android:id="@+id/preview_background" android:layout_gravity="center_horizontal" diff --git a/res/layout-port/search_bar.xml b/res/layout-port/search_bar.xml index 468e94508..dbacd3dc8 100644 --- a/res/layout-port/search_bar.xml +++ b/res/layout-port/search_bar.xml @@ -28,7 +28,7 @@ android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" - android:layout_toLeftOf="@+id/voice_button" + android:layout_toLeftOf="@+id/voice_button_container" android:background="?android:attr/selectableItemBackground" android:onClick="onClickSearchButton" android:focusable="true" @@ -43,18 +43,24 @@ </LinearLayout> <!-- Voice search icon --> - <ImageView + <LinearLayout style="@style/SearchButton.Voice" - android:id="@+id/voice_button" - android:layout_width="wrap_content" + android:id="@+id/voice_button_container" + android:layout_width="@dimen/search_bar_height" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_alignParentTop="true" - android:src="@drawable/ic_home_voice_search_holo" - android:adjustViewBounds="true" + android:gravity="right" android:background="?android:attr/selectableItemBackground" android:onClick="onClickVoiceButton" android:focusable="true" android:clickable="true" - android:contentDescription="@string/accessibility_voice_search_button" /> + android:contentDescription="@string/accessibility_voice_search_button"> + <ImageView + android:id="@+id/voice_button" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:src="@drawable/ic_home_voice_search_holo" + android:adjustViewBounds="true" /> + </LinearLayout> </RelativeLayout> diff --git a/res/layout/apps_customize_progressbar.xml b/res/layout/apps_customize_progressbar.xml index d790f214d..6a8010f0a 100644 --- a/res/layout/apps_customize_progressbar.xml +++ b/res/layout/apps_customize_progressbar.xml @@ -20,5 +20,4 @@ android:id="@+id/apps_customize_progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_marginRight="5dp" /> + android:layout_gravity="center" /> diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml index 814c9684b..208390d1e 100644 --- a/res/layout/user_folder.xml +++ b/res/layout/user_folder.xml @@ -37,7 +37,7 @@ launcher:cellWidth="@dimen/folder_cell_width" launcher:cellHeight="@dimen/folder_cell_height" /> - <EditText + <com.android.launcher2.FolderEditText android:id="@+id/folder_name" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -50,5 +50,6 @@ android:textColor="#ff33b5e5" android:textColorHighlight="#ff333333" android:gravity="center_horizontal" - android:singleLine="true"/> + android:singleLine="true" + android:imeOptions="flagNoExtractUi"/> </com.android.launcher2.Folder> diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index cba4b1561..6f5e95c4a 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Stel \'n program in staat om die instellings en kortpaaie in Tuis te lees."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"skryf Tuis-instellings en -kortpaaie"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Stel program in staat om die instellings en kortpaaie in Tuis te verander."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Kon nie legstuk laai nie"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Dit is \'n stelselprogram en kan nie gedeïnstalleer word nie."</string> <string name="dream_name" msgid="2847171357608437154">"Vuurpyllanseerder"</string> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 04a71b301..83fd130f9 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"ቅንብሮችን እና አቋራጮችን በመነሻለማንበብ ትግበራ ይፈቅዳል።"</string> <string name="permlab_write_settings" msgid="1360567537236705628">"መነሻ ቅንብሮች እና አቋራጮች ፃፍ"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"ቅንብሮችን እና አቋራጮችን በመነሻለመለወጥ ትግበራ ይፈቅዳል።"</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"ፍርግም የመጫን ችግር"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"ይህ የስርዓት ትግበራ ነው እና አለማራገፍ አይቻልም።"</string> <string name="dream_name" msgid="2847171357608437154">"የሮኬት ማስነሻ"</string> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 7de8bd2f4..db457efdc 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"للسماح لتطبيق ما بقراءة الإعدادات والاختصارات في الشاشة الرئيسية."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"كتابة إعدادات الشاشة الرئيسية والاختصارات"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"للسماح لتطبيق ما بتغيير الإعدادات والاختصارات في الشاشة الرئيسية."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"حدثت مشكلة أثناء تحميل الأداة"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"هذا تطبيق نظام وتتعذر إزالته."</string> <string name="dream_name" msgid="2847171357608437154">"راجمة"</string> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 8875098b4..b38a849be 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Разрешава на приложение да прочете настройките и преките пътища към „Начало“."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"въведете настройките за „Начало“ и преки пътища"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Разрешава на приложение да промени настройките и преките пътища в „Начало“."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Проблем при зареждане на приспособление"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Това е системно приложение и не може да се деинсталира."</string> <string name="dream_name" msgid="2847171357608437154">"Ракетна площадка"</string> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index c7ccf4385..15a5145b9 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permet a una aplicació llegir la configuració i les dreceres de la pantalla Inici."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"escriure la configuració i les dreceres de la pantalla Inici"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permet que una aplicació canviï la configuració i les dreceres de la pantalla Inici."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"S\'ha produït un problema en carregar el widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Això és una aplicació del sistema i no es pot desinstal·lar."</string> <string name="dream_name" msgid="2847171357608437154">"Llançamíssils"</string> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 2bb9e2311..a5d3effa7 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Povoluje aplikaci číst nastavení a odkazy plochy."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"zápis nastavení a odkazů plochy"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Povoluje aplikaci změnit nastavení a odkazy plochy."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problém s načtením widgetu"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Toto je systémová aplikace a nelze ji odinstalovat."</string> <string name="dream_name" msgid="2847171357608437154">"Raketomet"</string> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 790700e3d..6f9f6fe6a 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillader, at en applikation læser indstillingerne og genvejene i Start."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"skriv indstillinger og genveje for Start"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Tillader, at en applikation ændrer indstillingerne og genvejene i Start."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Der er problemer med indlæsning af widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Dette er et systemprogram, som ikke kan afinstalleres."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 4f8bf13ca..b0845acf5 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Ermöglicht einer App, die Einstellungen und Shortcuts auf der Startseite zu lesen."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"Einstellungen und Shortcuts für Startseite schreiben"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Ermöglicht einer App, die Einstellungen und Shortcuts auf der Startseite zu ändern."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problem beim Laden des Widgets"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Dies ist eine Systemanwendung, die nicht deinstalliert werden kann."</string> <string name="dream_name" msgid="2847171357608437154">"Raketenstartgerät"</string> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 0bb5667b2..708b6e74c 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Επιτρέπει σε μια εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Επιτρέπει σε μια εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Παρουσιάστηκε πρόβλημα στη φόρτωση του γραφικού στοιχείου"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Αυτή είναι εφαρμογή του συστήματος και δεν είναι δυνατή η κατάργηση της εγκατάστασής της."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 6b74e3518..fe2e54da2 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Allows an application to read the settings and shortcuts in Home."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"write Home settings and shortcuts"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Allows an application to change the settings and shortcuts in Home."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problem loading widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"This is a system application and cannot be uninstalled."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 5d328f5d0..2d491d6ac 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite a una aplicación leer la configuración y los accesos directos de la página principal."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"escribir configuración y accesos directos de la página principal"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite a una aplicación cambiar la configuración y los accesos directos de la página principal."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problema al cargar el widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Esta es una aplicación de sistema y no puede desinstalarse."</string> <string name="dream_name" msgid="2847171357608437154">"Lanzacohetes"</string> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index eaec8c4e9..eae79334c 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que una aplicación lea la información de configuración y accesos directos del escritorio."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"escribir información de accesos directos y de configuración del escritorio"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que una aplicación modifique la configuración y los accesos directos de la página de inicio."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problema al cargar el widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Se trata de una aplicación del sistema y no se puede desinstalar."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index af33b8364..d3afbeeff 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"به یک برنامه کاربردی اجازه می دهد تنظیمات و میانبرهای موجود در صفحه اصلی را بخواند."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"نوشتن تنظیمات صفحه اصلی و میانبرها"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"به برنامه کاربردی اجازه می دهد تنظیمات و میانبرها را در صفحه اصلی تغییر دهد."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"مشکل در بارگیری ابزارک"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"این یک برنامه سیستمی است و لغو نصب نمی شود."</string> <string name="dream_name" msgid="2847171357608437154">"پرتاب کننده موشک"</string> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 52aa81335..2140195a4 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Antaa sovelluksen lukea etusivun asetuksia ja pikakuvakkeita."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"kirjoittaa etusivun asetuksia ja pikakuvakkeita"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Antaa sovelluksen muuttaa etusivun asetuksia ja pikakuvakkeita."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Ongelma ladattaessa widgetiä"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Tämä on järjestelmäsovellus, eikä sitä voi poistaa."</string> <string name="dream_name" msgid="2847171357608437154">"Sinko"</string> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index a52cbf50f..d79e86435 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permet à une application de lire les paramètres et raccourcis de la page d\'accueil."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"Enregistrer les paramètres de la page d\'accueil et des raccourcis"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permet à une application de modifier les paramètres et les raccourcis de la page d\'accueil."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problème lors du chargement du widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Il s\'agit d\'une application système que vous ne pouvez pas désinstaller."</string> <string name="dream_name" msgid="2847171357608437154">"Lance-missile"</string> @@ -92,6 +91,6 @@ <string name="all_apps_cling_add_item" msgid="7404588523183860170">"Pour ajouter une application à votre écran d\'accueil, appuyez dessus de manière prolongée."</string> <string name="folder_cling_title" msgid="4308949882377840953">"Organiser vos applications dans des dossiers"</string> <string name="folder_cling_move_item" msgid="270598675060435169">"Pour déplacer une application, appuyez dessus de manière prolongée."</string> - <string name="folder_cling_create_folder" msgid="289412698047625601">"Pour créer un dossier sur votre écran d\'accueil, empilez les applications les unes sur les autres."</string> + <string name="folder_cling_create_folder" msgid="289412698047625601">"Pour créer un dossier sur votre écran d\'accueil, superposez les applications les unes sur les autres."</string> <string name="cling_dismiss" msgid="2780907108735868381">"OK"</string> </resources> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 965cfbacf..055aba775 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Dopušta aplikaciji čitanje postavki i prečaca na početnom zaslonu."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"zapiši postavke početnog zaslona i prečaca"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Dopušta aplikaciji promjenu postavki i prečaca na početnom zaslonu."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problem pri učitavanju widgeta"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Ovo je aplikacija sustava i ne može se ukloniti."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 87c291ea4..3dcd6d0b6 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Lehetővé teszi egy alkalmazás számára, hogy beolvassa a Főoldal beállításait és parancsikonjait."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"Főoldal beállításainak és parancsikonjainak írása"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Lehetővé teszi egy alkalmazás számára, hogy módosítsa a Főoldal beállításait és parancsikonjait."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Probléma történt a modul betöltésekor"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Ez egy rendszeralkalmazás, ezért nem lehet eltávolítani."</string> <string name="dream_name" msgid="2847171357608437154">"Aknavető"</string> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 7a0caf4c5..8bfee7637 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Mengizinkan aplikasi membaca setelan dan pintasan dalam Beranda."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"tuliskan setelan dan pintasan Beranda"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Mengizinkan aplikasi mengubah setelan dan pintasan dalam Beranda."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Masalah memuat widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Ini adalah aplikasi sistem dan tidak dapat diunduh."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 6bf31ce1d..ec61dc948 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Consente a un\'applicazione di leggere le impostazioni e le scorciatoie in Home."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"creare impostazioni e scorciatoie in Home"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Consente a un\'applicazione di modificare le impostazioni e le scorciatoie in Home."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Errore durante il caricamento del widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Questa è un\'applicazione di sistema e non può essere disinstallata."</string> <string name="dream_name" msgid="2847171357608437154">"Lanciamissili"</string> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 99bbcedd3..7c525857b 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"מאפשר ליישום לקרוא את ההגדרות וקיצורי הדרך בדף הבית."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"כתוב הגדרות וקיצורי דרך של דף הבית"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"מאפשר ליישום לשנות את ההגדרות וקיצורי הדרך בדף הבית."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"בעיה בטעינת Widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"זהו יישום מערכת ואין אפשרות להסיר את התקנתו."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 16a799f41..dcb382a80 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"ホームの設定とショートカットの読み取りをアプリケーションに許可します。"</string> <string name="permlab_write_settings" msgid="1360567537236705628">"ホームの設定とショートカットの書き込み"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"ホームの設定とショートカットの変更をアプリケーションに許可します。"</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"ウィジェットを表示できません"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"このシステムアプリケーションはアンインストールできません。"</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 599eac51f..916b64112 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"애플리케이션이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 합니다."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"홈 설정 및 바로가기 쓰기"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"애플리케이션이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"위젯을 로드하는 중 문제가 발생했습니다."</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"시스템 애플리케이션은 제거할 수 없습니다."</string> <string name="dream_name" msgid="2847171357608437154">"로켓 실행기"</string> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 7378b703e..f8dad7bfb 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Leidžia programai skaityti pagrindinio puslapio nustatymus ir sparčiuosius klavišus."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"rašyti pagrindinio puslapio nustatymus ir sparčiuosius klavišus"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Leidžia programai keisti pagrindinio puslapio nustatymus ir sparčiuosius klavišus."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problema įkeliant valdiklį"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Tai sistemos programa ir jos negalima pašalinti."</string> <string name="dream_name" msgid="2847171357608437154">"Raketinis prieštankinis šautuvas"</string> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index c6ad644c5..5ea6a079f 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Ļauj lietojumprogrammai lasīt iestatījumus un saīsnes sākuma ekrānā."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"rakstīt sākuma ekrāna iestatījumus un saīsnes"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Ļauj lietojumprogrammai mainīt iestatījumus un saīsnes sākuma ekrānā."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Radās problēma, ielādējot logrīku"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Šī ir sistēmas lietojumprogramma un to nevar atinstalēt."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 192ee90c2..b11eaf767 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Membenarkan aplikasi untuk membaca tetapan dan pintasan di Laman Utama."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"menulis tetapan dan pintasan Laman Utama"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Membenarkan aplikasi untuk menukar tetapan dan pintasan di Laman Utama."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Masalah memuatkan widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Ini adalah aplikasi sistem dan tidak boleh dinyahpasang."</string> <string name="dream_name" msgid="2847171357608437154">"Pelancar Roket"</string> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index afcf8f079..1ca007040 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Lar applikasjonen lese innstillinger og snarveier fra skrivebordet."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"skrive skrivebordsinnstillinger og -snarveier"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Lar applikasjonen endre innstillinger og snarveier på skrivebordet."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problem under lasting av gadget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Dette er et systemprogram og kan ikke avinstalleres."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index aea9a27bf..5a27c1887 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Hiermee kan een app de instellingen en snelkoppelingen op de startpagina lezen."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"instellingen en snelkoppelingen voor de startpagina schrijven"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Hiermee kan een app de instellingen en snelkoppelingen op de startpagina wijzigen."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Probleem bij het laden van widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Dit is een systeemtoepassing die niet kan worden verwijderd."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 7e60910df..0d0b6c6e3 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Umożliwia aplikacji odczytywanie ustawień i skrótów strony głównej."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"zapisywanie ustawień i skrótów strony głównej"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Umożliwia aplikacji zmianę ustawień i skrótów strony głównej."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problem podczas ładowania widżetu"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"To jest aplikacja systemowa i nie można jej odinstalować."</string> <string name="dream_name" msgid="2847171357608437154">"Wyrzutnia rakiet"</string> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index f5aaf006c..fc7788084 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que uma aplicação leia as definições e os atalhos do ecrã principal."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"escrever definições e atalhos do ecrã principal"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que uma aplicação altere as definições e os atalhos do ecrã principal."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Erro ao carregar o widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"É uma aplicação de sistema e não pode ser desinstalada."</string> <string name="dream_name" msgid="2847171357608437154">"Lança-mísseis"</string> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 32b003c92..772ad99ac 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que um aplicativo leia as configurações e atalhos na Página inicial."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"gravar configurações e atalhos da Página inicial"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que um aplicativo altere as configurações e atalhos na Página inicial."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problema ao carregar o widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Este é um aplicativo do sistema e não pode ser desinstalado."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml index 478415b17..de737bef8 100644 --- a/res/values-rm/strings.xml +++ b/res/values-rm/strings.xml @@ -105,8 +105,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Pussibilitescha ch\'ina applicaziun possia leger ils parameters e las scursanidas da la pagina da partenza."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"Definir ils parameters e las scursanidas per la pagina da partenza"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Pussibilitescha ch\'ina applicaziun possia midar ils parameters e las scursanidas sin la pagina da partenza."</string> - <!-- no translation found for google_apps_folder_name (2873137836817266807) --> - <skip /> <string name="gadget_error_text" msgid="8359351016167075858">"Problems cun chargiar il widget"</string> <!-- no translation found for uninstall_system_app_text (7488523163288397451) --> <skip /> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index a09b0e58b..0f5f60ce5 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite unei aplicaţii să citească setările şi comenzile rapide în Ecranul de pornire."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"scrieţi setări şi comenzi rapide pentru Ecranul de pornire"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite unei aplicaţii să modifice setările şi comenzile rapide pentru Ecranul de pornire."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Probleme la încărcarea obiectului widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Aceasta este o aplicaţie a sistemului şi nu se poate dezinstala."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index e067f0388..bf6fbc6ae 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Позволяет приложению считывать настройки и ярлыки на главном экране."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"изменять настройки и ярлыки главного экрана"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Позволяет приложению изменять настройки и ярлыки на главном экране."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Не удалось загрузить виджет"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Это системное приложение. Удалить его невозможно."</string> <string name="dream_name" msgid="2847171357608437154">"Фейерверк"</string> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index dfae5496e..7b31a1186 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Povoľuje aplikácii čítať nastavenia a odkazy plochy."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"zápis nastavení a odkazov plochy"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Povoľuje aplikácii zmeniť nastavenia a odkazy plochy."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problém s načítaním miniaplikácií"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Toto je systémová aplikácia a nie je možné ju odinštalovať."</string> <string name="dream_name" msgid="2847171357608437154">"Raketomet"</string> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index dd364031c..b20a830bd 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Omogoča programu branje nastavitev in bližnjic na začetnem zaslonu."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"zapis nastavitev in bližnjic začetnega zaslona"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Omogoča programu spreminjanje nastavitev in bližnjic na začetnem zaslonu."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Težave pri nalaganju pripomočka"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"To je sistemski program in ga ni mogoče odstraniti."</string> <string name="dream_name" msgid="2847171357608437154">"Raketno izstrelišče"</string> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 47eff5725..893e4bcd1 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Омогућава апликацији да чита подешавања и пречице на почетном екрану."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"уписивање подешавања и пречица на почетном екрану"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Омогућава апликацији да промени подешавања и пречице на почетном екрану."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Проблем приликом учитавања виџета"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Ово је системска апликација и не може да се деинсталира."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index e6d0288b6..ce65dfa18 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillåter att ett program läser inställningar och genvägar på startsidan."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"skriva inställningar och genvägar för startsidan"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Tillåter att ett program ändrar inställningar och genvägar på startsidan."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Det gick inte att läsa in widgeten"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Det här är ett systemprogram och kan inte avinstalleras."</string> <string name="dream_name" msgid="2847171357608437154">"Raketavfyringsramp"</string> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 2e67274f0..692c0bf96 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Huruhusu programu kusoma mipangilio na njia za mkato katika Nyumbani."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"andika mipangilio ya Nyumbani na njia za mkato"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Huruhusu programu kubadilisha mipangilio na njia za mkato Nyumbani."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Tatizo la kupakia wijeti"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Hii ni programu ya mfumo na haiwezi kuondolewa."</string> <string name="dream_name" msgid="2847171357608437154">"Kizinduzi cha Roketi"</string> diff --git a/res/values-sw340dp-port/dimens.xml b/res/values-sw340dp-port/dimens.xml index 3fea47b18..ab8cfecaf 100644 --- a/res/values-sw340dp-port/dimens.xml +++ b/res/values-sw340dp-port/dimens.xml @@ -32,7 +32,8 @@ <dimen name="hotseat_left_padding">-1dp</dimen> <dimen name="hotseat_right_padding">-1dp</dimen> - <dimen name="qsb_bar_height">50dp</dimen> + <dimen name="qsb_bar_height">54dp</dimen> + <dimen name="search_bar_height">48dp</dimen> <!-- height of the bottom row of controls --> <dimen name="button_bar_height">80dip</dimen> <!-- Because portal animations go beyond the bounds of an icon, we need diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 7eca4b3bd..601c7ac8a 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"อนุญาตให้แอปพลิเคชันอ่านการตั้งค่าและทางลัดในหน้าแรก"</string> <string name="permlab_write_settings" msgid="1360567537236705628">"เขียนการตั้งค่าและทางลัดหน้าแรกแล้ว"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"อนุญาตให้แอปพลิเคชันเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก"</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"มีปัญหาขณะโหลดวิดเจ็ต"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"นี่เป็นแอปพลิเคชันระบบและไม่สามารถถอนการติดตั้งได้"</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 3240bb213..a8e247f8d 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Pinapayagan ang isang application na basahin ang mga setting at shortcut sa Home."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"magsulat ng mga setting ng Home at mga shortcut"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Pinapayagan ang isang application na baguhin ang mga setting at shortcut sa Home."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Problema sa pag-load ng widget"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Isa itong system application at hindi maaaring i-install."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4aef60535..2ee87a171 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları okuma izni verir."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"Ana Sayfa ayarlarını ve kısayollarını yaz"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları değiştirme izni verir."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Widget yüklenirken sorun oluştu"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Bu bir sistem uygulamasıdır ve kaldırılamaz."</string> <string name="dream_name" msgid="2847171357608437154">"Roket Fırlatıcı"</string> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index df986a045..e3991fb94 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Дозволяє програмі читати налаштування та ярлики на Головній."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"писати налашт-ня Головної та ярлики"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Дозволяє програмі змінювати налаштування та ярлики на Головній."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Пробл із завантаж. віджета"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Це системна програма, її неможливо видалити."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index aabfcc932..eb0f04ab5 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Cho phép ứng dụng đọc cài đặt và lối tắt trên Màn hình trang chủ."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"ghi cài đặt Màn hình trang chủ và lối tắt"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Cho phép ứng dụng thay đổi cài đặt và lối tắt trên Màn hình trang chủ."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Sự cố khi tải tiện ích"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Đây là ứng dụng hệ thống và không thể gỡ cài đặt."</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 775119142..2b0ce6201 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"允许应用程序读取主屏幕的设置和快捷方式。"</string> <string name="permlab_write_settings" msgid="1360567537236705628">"写入主屏幕的设置和快捷方式"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"允许应用程序更改主屏幕的设置和快捷方式。"</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"载入窗口小部件时出现问题"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"这是系统应用程序,无法卸载。"</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index cc0810731..38863f307 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"允許應用程式讀取主螢幕中的設定和捷徑。"</string> <string name="permlab_write_settings" msgid="1360567537236705628">"寫入主螢幕設定和捷徑"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"允許應用程式變更主螢幕中的設定和捷徑。"</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"載入小工具時發生問題"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"這是系統應用程式,無法將其解除安裝。"</string> <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 51ddd6232..75d8c6597 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -80,7 +80,6 @@ <string name="permdesc_read_settings" msgid="8377434937176025492">"Ivumela uhlelo lokusebenza ukufunda izilungiselelo nezinqamuleli Ekhaya."</string> <string name="permlab_write_settings" msgid="1360567537236705628">"bhala izilungiselelo zaseKhaya nezinqamuleli"</string> <string name="permdesc_write_settings" msgid="1098648778383349818">"Ivumela izinhlelo ukushintsha izilungiselelo nezinqamuleli Ekhaya."</string> - <string name="google_apps_folder_name" msgid="2873137836817266807">"I-Google"</string> <string name="gadget_error_text" msgid="8359351016167075858">"Inkinga yokulayisha iwijethi"</string> <string name="uninstall_system_app_text" msgid="7488523163288397451">"Lolu uhlelo lokusebenza lwesistimu futhi alikwazi ukukhishwa."</string> <string name="dream_name" msgid="2847171357608437154">"Isiqalisi se-Rocket"</string> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index e5e1b3f03..ab24d5bc9 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -20,14 +20,14 @@ <!-- Workspace --> <dimen name="qsb_bar_height">40dp</dimen> - <dimen name="search_bar_height">44dp</dimen> + <dimen name="search_bar_height">40dp</dimen> <dimen name="workspace_cell_width">80dp</dimen> <dimen name="workspace_cell_height">100dp</dimen> <dimen name="workspace_width_gap">-1dp</dimen> <dimen name="workspace_height_gap">-1dp</dimen> <dimen name="workspace_max_gap">16dp</dimen> <dimen name="folder_cell_width">74dp</dimen> - <dimen name="folder_cell_height">80dp</dimen> + <dimen name="folder_cell_height">82dp</dimen> <dimen name="workspace_divider_padding_left">12dp</dimen> <dimen name="workspace_divider_padding_right">12dp</dimen> <dimen name="workspace_divider_padding_top">0dp</dimen> diff --git a/res/values/strings.xml b/res/values/strings.xml index 5c806e229..0f4a3ba66 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -153,8 +153,8 @@ s --> <!-- Noun, menu item used to show help. [CHAR_LIMIT=none] --> <string name="menu_help">Help</string> - <!-- URL pointing to help text. [DO NOT TRANSLATE] --> - <string name="help_url" translatable="false">http://www.google.com/support/mobile/?p=help_home</string> + <!-- URL pointing to help text. If empty, no link to help will be created [DO NOT TRANSLATE] --> + <string name="help_url" translatable="false"></string> <!-- Strings for the contextual action bar (CAB) in All Apps --> <skip /> @@ -199,18 +199,9 @@ s --> <!-- Widgets: --> <skip /> - <!-- The Google Apps folder name --> - <string name="google_apps_folder_name">Google</string> - <!-- Text to show user in place of a gadget when we can't display it properly --> <string name="gadget_error_text">Problem loading widget</string> - <!-- URL to use when detecting the current default browser. - Attempts to mimic homepage_base in Browser; {CID} should be replaced - by the client-id, e.g. "android-google". --> - <string name="default_browser_url" translatable="false"> - http://www.google.com/m?client=ms-{CID}&source=android-home-hotseat</string> - <!-- Text to inform the user that they can't uninstall a system application --> <string name="uninstall_system_app_text">This is a system application and cannot be uninstalled.</string> @@ -251,5 +242,6 @@ s --> <string name="folder_cling_create_folder">To make a new folder on your home screen, stack one app on top of another.</string> <!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] --> <string name="cling_dismiss">OK</string> + <add-resource type="string" name="default_folder_name" /> </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml index 19a05a0a1..c8fe0246a 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -77,7 +77,7 @@ </style> <style name="WorkspaceIcon.Landscape"> - <item name="android:drawablePadding">4dp</item> + <item name="android:drawablePadding">2dp</item> <item name="android:paddingLeft">4dp</item> <item name="android:paddingRight">4dp</item> <item name="android:paddingTop">6dp</item> @@ -91,7 +91,7 @@ <style name="WorkspaceIcon.Landscape.Folder"> <item name="android:drawablePadding">0dp</item> <item name="android:paddingTop">0dp</item> - <item name="android:layout_marginTop">-6dp</item> + <item name="android:layout_marginTop">-2dp</item> </style> <style name="WorkspaceIcon.Portrait.AppsCustomize"> @@ -146,6 +146,8 @@ <item name="android:paddingRight">25dp</item> <item name="android:textColor">#FFFFFFFF</item> <item name="android:textSize">16sp</item> + <item name="android:singleLine">true</item> + <item name="android:ellipsize">end</item> <item name="android:shadowColor">#FF000000</item> <item name="android:shadowDx">0.0</item> <item name="android:shadowDy">1.0</item> diff --git a/res/xml/default_workspace.xml b/res/xml/default_workspace.xml index ccc802291..f2f4240ab 100644 --- a/res/xml/default_workspace.xml +++ b/res/xml/default_workspace.xml @@ -29,7 +29,7 @@ <!-- Middle screen [2] --> <appwidget - launcher:packageName="com.google.android.deskclock" + launcher:packageName="com.android.deskclock" launcher:className="com.android.alarmclock.AnalogAppWidgetProvider" launcher:screen="2" launcher:x="1" @@ -37,59 +37,15 @@ launcher:spanX="2" launcher:spanY="2" /> <favorite - launcher:packageName="com.google.android.camera" + launcher:packageName="com.android.camera" launcher:className="com.android.camera.Camera" launcher:screen="2" launcher:x="0" launcher:y="3" /> - <folder - launcher:screen="2" - launcher:x="3" - launcher:y="3" - launcher:title="@string/google_apps_folder_name"> - <favorite - launcher:packageName="com.google.android.apps.maps" - launcher:className="com.google.android.maps.MapsActivity" /> - <favorite - launcher:packageName="com.google.android.gm" - launcher:className="com.google.android.gm.ConversationListActivityGmail" /> - <favorite - launcher:packageName="com.google.android.calendar" - launcher:className="com.android.calendar.AllInOneActivity" /> - <favorite - launcher:packageName="com.google.android.apps.plus" - launcher:className="com.google.android.apps.plus.phone.HomeActivity" /> - <favorite - launcher:packageName="com.google.android.music" - launcher:className="com.android.music.activitymanagement.TopLevelActivity" /> - <favorite - launcher:packageName="com.google.android.apps.books" - launcher:className="com.google.android.apps.books.app.BooksActivity" /> - <favorite - launcher:packageName="com.google.android.videos" - launcher:className="com.google.android.youtube.videos.honeycomb.VideosActivity" /> - <favorite - launcher:packageName="com.android.vending" - launcher:className="com.android.vending.AssetBrowserActivity" /> - <favorite - launcher:packageName="com.google.android.talk" - launcher:className="com.google.android.talk.SigningInActivity" /> - <favorite - launcher:packageName="com.google.android.youtube" - launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity" /> - </folder> <!-- Right screen [3] --> - <appwidget - launcher:packageName="com.android.vending" - launcher:className="com.android.vending.MarketWidgetProvider" - launcher:screen="3" - launcher:x="1" - launcher:y="1" - launcher:spanX="2" - launcher:spanY="2" /> <favorite - launcher:packageName="com.google.android.gallery3d" + launcher:packageName="com.android.gallery3d" launcher:className="com.android.gallery3d.app.Gallery" launcher:screen="3" launcher:x="1" @@ -126,7 +82,7 @@ launcher:x="3" launcher:y="0" /> <favorite - launcher:packageName="com.google.android.browser" + launcher:packageName="com.android.browser" launcher:className="com.android.browser.BrowserActivity" launcher:container="-101" launcher:screen="4" diff --git a/src/com/android/launcher2/AppWidgetResizeFrame.java b/src/com/android/launcher2/AppWidgetResizeFrame.java index 476219374..b7943eccc 100644 --- a/src/com/android/launcher2/AppWidgetResizeFrame.java +++ b/src/com/android/launcher2/AppWidgetResizeFrame.java @@ -111,11 +111,11 @@ public class AppWidgetResizeFrame extends FrameLayout { Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); addView(mBottomHandle, lp); - Resources r = context.getResources(); - mWidgetPaddingLeft = r.getDimensionPixelSize(R.dimen.app_widget_padding_left); - mWidgetPaddingTop = r.getDimensionPixelSize(R.dimen.app_widget_padding_top); - mWidgetPaddingRight = r.getDimensionPixelSize(R.dimen.app_widget_padding_right); - mWidgetPaddingBottom = r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom); + Launcher.Padding p = mLauncher.getPaddingForWidget(widgetView.getAppWidgetInfo().provider); + mWidgetPaddingLeft = p.left; + mWidgetPaddingTop = p.top; + mWidgetPaddingRight = p.right; + mWidgetPaddingBottom = p.bottom; if (mResizeMode == AppWidgetProviderInfo.RESIZE_HORIZONTAL) { mTopHandle.setVisibility(GONE); diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 6493e973e..ca4d61448 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -96,6 +96,25 @@ class AsyncTaskPageData { doInBackgroundCallback = bgR; postExecuteCallback = postR; } + void cleanup(boolean cancelled) { + // Clean up any references to source/generated bitmaps + if (sourceImages != null) { + if (cancelled) { + for (Bitmap b : sourceImages) { + b.recycle(); + } + } + sourceImages.clear(); + } + if (generatedImages != null) { + if (cancelled) { + for (Bitmap b : generatedImages) { + b.recycle(); + } + } + generatedImages.clear(); + } + } int page; ArrayList<Object> items; ArrayList<Bitmap> sourceImages; @@ -692,9 +711,11 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen layout.createHardwareLayers(); + /* TEMPORARILY DISABLE HOLOGRAPHIC ICONS if (mFadeInAdjacentScreens) { prepareGenerateHoloOutlinesTask(page, items, images); } + */ } /** @@ -746,21 +767,31 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen @Override public void run(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { try { - Thread.sleep(sleepMs); - } catch (Exception e) {} - loadWidgetPreviewsInBackground(task, data); + try { + Thread.sleep(sleepMs); + } catch (Exception e) {} + loadWidgetPreviewsInBackground(task, data); + } finally { + if (task.isCancelled()) { + data.cleanup(true); + } + } } }, new AsyncTaskCallback() { @Override public void run(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { - mRunningTasks.remove(task); - if (task.isCancelled()) return; - if (task.page > getPageCount()) return; - if (task.pageContentType != mContentType) return; - onSyncWidgetPageItems(data); + try { + mRunningTasks.remove(task); + if (task.isCancelled()) return; + if (task.page > getPageCount()) return; + if (task.pageContentType != mContentType) return; + onSyncWidgetPageItems(data); + } finally { + data.cleanup(task.isCancelled()); + } } - }); + }); // Ensure that the task is appropriately prioritized and runs in parallel AppsCustomizeAsyncTask t = new AppsCustomizeAsyncTask(page, mContentType, @@ -790,40 +821,50 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen new AsyncTaskCallback() { @Override public void run(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { - // Ensure that this task starts running at the correct priority - task.syncThreadPriority(); - - ArrayList<Bitmap> images = data.generatedImages; - ArrayList<Bitmap> srcImages = data.sourceImages; - int count = srcImages.size(); - Canvas c = new Canvas(); - for (int i = 0; i < count && !task.isCancelled(); ++i) { - // Before work on each item, ensure that this task is running at the correct - // priority + try { + // Ensure that this task starts running at the correct priority task.syncThreadPriority(); - Bitmap b = srcImages.get(i); - Bitmap outline = Bitmap.createBitmap(b.getWidth(), b.getHeight(), - Bitmap.Config.ARGB_8888); - - c.setBitmap(outline); - c.save(); - c.drawBitmap(b, 0, 0, null); - c.restore(); - c.setBitmap(null); - - images.add(outline); + ArrayList<Bitmap> images = data.generatedImages; + ArrayList<Bitmap> srcImages = data.sourceImages; + int count = srcImages.size(); + Canvas c = new Canvas(); + for (int i = 0; i < count && !task.isCancelled(); ++i) { + // Before work on each item, ensure that this task is running at the correct + // priority + task.syncThreadPriority(); + + Bitmap b = srcImages.get(i); + Bitmap outline = Bitmap.createBitmap(b.getWidth(), b.getHeight(), + Bitmap.Config.ARGB_8888); + + c.setBitmap(outline); + c.save(); + c.drawBitmap(b, 0, 0, null); + c.restore(); + c.setBitmap(null); + + images.add(outline); + } + } finally { + if (task.isCancelled()) { + data.cleanup(true); + } } } }, new AsyncTaskCallback() { @Override public void run(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { - mRunningTasks.remove(task); - if (task.isCancelled()) return; - if (task.page > getPageCount()) return; - if (task.pageContentType != mContentType) return; - onHolographicPageItemsLoaded(data); + try { + mRunningTasks.remove(task); + if (task.isCancelled()) return; + if (task.page > getPageCount()) return; + if (task.pageContentType != mContentType) return; + onHolographicPageItemsLoaded(data); + } finally { + data.cleanup(task.isCancelled()); + } } }); @@ -981,11 +1022,57 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen int cellHeight = ((contentHeight - mPageLayoutPaddingTop - mPageLayoutPaddingBottom - ((mWidgetCountY - 1) * mWidgetHeightGap)) / mWidgetCountY); + // Prepare the set of widgets to load previews for in the background int offset = page * numItemsPerPage; for (int i = offset; i < Math.min(offset + numItemsPerPage, mWidgets.size()); ++i) { items.add(mWidgets.get(i)); } + // Prepopulate the pages with the other widget info, and fill in the previews later + PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); + layout.setColumnCount(layout.getCellCountX()); + for (int i = 0; i < items.size(); ++i) { + Object rawInfo = items.get(i); + PendingAddItemInfo createItemInfo = null; + PagedViewWidget widget = (PagedViewWidget) mLayoutInflater.inflate( + R.layout.apps_customize_widget, layout, false); + if (rawInfo instanceof AppWidgetProviderInfo) { + // Fill in the widget information + AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo; + createItemInfo = new PendingAddWidgetInfo(info, null, null); + int[] cellSpans = mLauncher.getSpanForWidget(info, null); + widget.applyFromAppWidgetProviderInfo(info, -1, cellSpans, + mHolographicOutlineHelper); + widget.setTag(createItemInfo); + } else if (rawInfo instanceof ResolveInfo) { + // Fill in the shortcuts information + ResolveInfo info = (ResolveInfo) rawInfo; + createItemInfo = new PendingAddItemInfo(); + createItemInfo.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT; + createItemInfo.componentName = new ComponentName(info.activityInfo.packageName, + info.activityInfo.name); + widget.applyFromResolveInfo(mPackageManager, info, mHolographicOutlineHelper); + widget.setTag(createItemInfo); + } + widget.setOnClickListener(this); + widget.setOnLongClickListener(this); + widget.setOnTouchListener(this); + + // Layout each widget + int ix = i % mWidgetCountX; + int iy = i / mWidgetCountX; + GridLayout.LayoutParams lp = new GridLayout.LayoutParams( + GridLayout.spec(iy, GridLayout.LEFT), + GridLayout.spec(ix, GridLayout.TOP)); + lp.width = cellWidth; + lp.height = cellHeight; + lp.setGravity(Gravity.TOP | Gravity.LEFT); + if (ix > 0) lp.leftMargin = mWidgetWidthGap; + if (iy > 0) lp.topMargin = mWidgetHeightGap; + layout.addView(widget, lp); + } + + // Load the widget previews if (immediate) { AsyncTaskPageData data = new AsyncTaskPageData(page, items, cellWidth, cellHeight, mWidgetCountX, null, null); @@ -994,7 +1081,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } else { prepareLoadWidgetPreviewsTask(page, items, cellWidth, cellHeight, mWidgetCountX); } - PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); } private void loadWidgetPreviewsInBackground(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { @@ -1034,65 +1120,25 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen private void onSyncWidgetPageItems(AsyncTaskPageData data) { int page = data.page; PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); - // Only set the column count once we have items - layout.setColumnCount(layout.getCellCountX()); ArrayList<Object> items = data.items; int count = items.size(); - int cellWidth = data.cellWidth; - int cellHeight = data.cellHeight; - int cellCountX = data.cellCountX; for (int i = 0; i < count; ++i) { - Object rawInfo = items.get(i); - PendingAddItemInfo createItemInfo = null; - PagedViewWidget widget = (PagedViewWidget) mLayoutInflater.inflate( - R.layout.apps_customize_widget, layout, false); - if (rawInfo instanceof AppWidgetProviderInfo) { - // Fill in the widget information - AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo; - createItemInfo = new PendingAddWidgetInfo(info, null, null); - int[] cellSpans = mLauncher.getSpanForWidget(info, null); - FastBitmapDrawable preview = new FastBitmapDrawable(data.generatedImages.get(i)); - widget.applyFromAppWidgetProviderInfo(info, preview, -1, cellSpans, - mHolographicOutlineHelper); - widget.setTag(createItemInfo); - } else if (rawInfo instanceof ResolveInfo) { - // Fill in the shortcuts information - ResolveInfo info = (ResolveInfo) rawInfo; - createItemInfo = new PendingAddItemInfo(); - createItemInfo.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT; - createItemInfo.componentName = new ComponentName(info.activityInfo.packageName, - info.activityInfo.name); - FastBitmapDrawable preview = new FastBitmapDrawable(data.generatedImages.get(i)); - widget.applyFromResolveInfo(mPackageManager, info, preview, - mHolographicOutlineHelper); - widget.setTag(createItemInfo); + PagedViewWidget widget = (PagedViewWidget) layout.getChildAt(i); + if (widget != null) { + widget.applyPreview(new FastBitmapDrawable(data.generatedImages.get(i)), i); } - widget.setOnClickListener(this); - widget.setOnLongClickListener(this); - widget.setOnTouchListener(this); - - // Layout each widget - int ix = i % cellCountX; - int iy = i / cellCountX; - GridLayout.LayoutParams lp = new GridLayout.LayoutParams( - GridLayout.spec(iy, GridLayout.LEFT), - GridLayout.spec(ix, GridLayout.TOP)); - lp.width = cellWidth; - lp.height = cellHeight; - lp.setGravity(Gravity.TOP | Gravity.LEFT); - if (ix > 0) lp.leftMargin = mWidgetWidthGap; - if (iy > 0) lp.topMargin = mWidgetHeightGap; - layout.addView(widget, lp); } layout.createHardwareLayer(); invalidate(); forceUpdateAdjacentPagesAlpha(); + /* TEMPORARILY DISABLE HOLOGRAPHIC ICONS if (mFadeInAdjacentScreens) { prepareGenerateHoloOutlinesTask(data.page, data.items, data.generatedImages); } + */ } private void onHolographicPageItemsLoaded(AsyncTaskPageData data) { // Invalidate early to short-circuit children invalidates diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java index 79e27b0d3..cdc89ba61 100644 --- a/src/com/android/launcher2/BubbleTextView.java +++ b/src/com/android/launcher2/BubbleTextView.java @@ -256,6 +256,11 @@ public class BubbleTextView extends TextView { } } + void clearPressedOrFocusedBackground() { + mPressedOrFocusedBackground = null; + setCellLayoutPressedOrFocusedIcon(); + } + Bitmap getPressedOrFocusedBackground() { return mPressedOrFocusedBackground; } diff --git a/src/com/android/launcher2/Cling.java b/src/com/android/launcher2/Cling.java index 0a9bc7fa3..9f2758679 100644 --- a/src/com/android/launcher2/Cling.java +++ b/src/com/android/launcher2/Cling.java @@ -161,11 +161,14 @@ public class Cling extends FrameLayout { // Draw the background if (mBackground == null) { - if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT)) { + if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) || + mDrawIdentifier.equals(WORKSPACE_LANDSCAPE)) { mBackground = getResources().getDrawable(R.drawable.bg_cling1); - } else if (mDrawIdentifier.equals(ALLAPPS_PORTRAIT)) { + } else if (mDrawIdentifier.equals(ALLAPPS_PORTRAIT) || + mDrawIdentifier.equals(ALLAPPS_LANDSCAPE)) { mBackground = getResources().getDrawable(R.drawable.bg_cling2); - } else if (mDrawIdentifier.equals(FOLDER_PORTRAIT)) { + } else if (mDrawIdentifier.equals(FOLDER_PORTRAIT) || + mDrawIdentifier.equals(FOLDER_LANDSCAPE)) { mBackground = getResources().getDrawable(R.drawable.bg_cling3); } } diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index afbf80d17..ca7e55b64 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -361,6 +361,7 @@ public class DragController { if (mLastDropTarget != null) { mLastDropTarget.onDragExit(mDragObject); } + mDragObject.cancelled = true; mDragObject.dragComplete = true; mDragObject.dragSource.onDropCompleted(null, mDragObject, false); } diff --git a/src/com/android/launcher2/DropTarget.java b/src/com/android/launcher2/DropTarget.java index 34fa89316..4172da243 100644 --- a/src/com/android/launcher2/DropTarget.java +++ b/src/com/android/launcher2/DropTarget.java @@ -52,6 +52,9 @@ public interface DropTarget { /** Post drag animation runnable */ public Runnable postAnimationRunnable = null; + /** Indicates that the drag operation was cancelled */ + public boolean cancelled = false; + public DragObject() { } } diff --git a/src/com/android/launcher2/FocusHelper.java b/src/com/android/launcher2/FocusHelper.java index f97492bd6..967b02ff4 100644 --- a/src/com/android/launcher2/FocusHelper.java +++ b/src/com/android/launcher2/FocusHelper.java @@ -23,6 +23,7 @@ import android.view.ViewGroup; import android.view.ViewParent; import android.widget.TabHost; import android.widget.TabWidget; +import android.widget.TextView; import com.android.launcher.R; @@ -33,18 +34,25 @@ import java.util.Comparator; /** * A keyboard listener we set on all the workspace icons. */ -class BubbleTextViewKeyEventListener implements View.OnKeyListener { - @Override +class IconKeyEventListener implements View.OnKeyListener { public boolean onKey(View v, int keyCode, KeyEvent event) { - return FocusHelper.handleBubbleTextViewKeyEvent((BubbleTextView) v, keyCode, event); + return FocusHelper.handleIconKeyEvent(v, keyCode, event); + } +} + +/** + * A keyboard listener we set on all the workspace icons. + */ +class FolderKeyEventListener implements View.OnKeyListener { + public boolean onKey(View v, int keyCode, KeyEvent event) { + return FocusHelper.handleFolderKeyEvent(v, keyCode, event); } } /** * A keyboard listener we set on all the hotseat buttons. */ -class HotseatBubbleTextViewKeyEventListener implements View.OnKeyListener { - @Override +class HotseatIconKeyEventListener implements View.OnKeyListener { public boolean onKey(View v, int keyCode, KeyEvent event) { final Configuration configuration = v.getResources().getConfiguration(); return FocusHelper.handleHotseatButtonKeyEvent(v, keyCode, event, configuration.orientation); @@ -56,7 +64,6 @@ class HotseatBubbleTextViewKeyEventListener implements View.OnKeyListener { * market icon and vice versa. */ class AppsCustomizeTabKeyEventListener implements View.OnKeyListener { - @Override public boolean onKey(View v, int keyCode, KeyEvent event) { return FocusHelper.handleAppsCustomizeTabKeyEvent(v, keyCode, event); } @@ -278,30 +285,36 @@ public class FocusHelper { final ViewGroup container = (ViewGroup) parentLayout.getParent(); final TabHost tabHost = findTabHostParent(container); final TabWidget tabs = (TabWidget) tabHost.findViewById(com.android.internal.R.id.tabs); - final int widgetIndex = parent.indexOfChild(v); + final int iconIndex = parent.indexOfChild(v); final int widgetCount = parent.getChildCount(); final int pageIndex = container.indexOfChild(parentLayout); final int pageCount = container.getChildCount(); final int cellCountX = parentLayout.getCellCountX(); final int cellCountY = parentLayout.getCellCountY(); - final int x = widgetIndex % cellCountX; - final int y = widgetIndex / cellCountX; + final int x = iconIndex % cellCountX; + final int y = iconIndex / cellCountX; final int action = e.getAction(); final boolean handleKeyEvent = (action != KeyEvent.ACTION_UP); PagedViewCellLayoutChildren newParent = null; + // Side pages do not always load synchronously, so check before focusing child siblings + // willy-nilly + View child = null; boolean wasHandled = false; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: if (handleKeyEvent) { // Select the previous icon or the last icon on the previous page - if (widgetIndex > 0) { - parent.getChildAt(widgetIndex - 1).requestFocus(); + if (iconIndex > 0) { + parent.getChildAt(iconIndex - 1).requestFocus(); } else { if (pageIndex > 0) { newParent = getPagedViewCellLayoutChildrenForIndex(container, pageIndex - 1); - newParent.getChildAt(newParent.getChildCount() - 1).requestFocus(); + if (newParent != null) { + child = newParent.getChildAt(newParent.getChildCount() - 1); + if (child != null) child.requestFocus(); + } } } } @@ -310,13 +323,16 @@ public class FocusHelper { case KeyEvent.KEYCODE_DPAD_RIGHT: if (handleKeyEvent) { // Select the next icon or the first icon on the next page - if (widgetIndex < (widgetCount - 1)) { - parent.getChildAt(widgetIndex + 1).requestFocus(); + if (iconIndex < (widgetCount - 1)) { + parent.getChildAt(iconIndex + 1).requestFocus(); } else { if (pageIndex < (pageCount - 1)) { newParent = getPagedViewCellLayoutChildrenForIndex(container, pageIndex + 1); - newParent.getChildAt(0).requestFocus(); + if (newParent != null) { + child = newParent.getChildAt(0); + if (child != null) child.requestFocus(); + } } } } @@ -326,8 +342,8 @@ public class FocusHelper { if (handleKeyEvent) { // Select the closest icon in the previous row, otherwise select the tab bar if (y > 0) { - int newWidgetIndex = ((y - 1) * cellCountX) + x; - parent.getChildAt(newWidgetIndex).requestFocus(); + int newiconIndex = ((y - 1) * cellCountX) + x; + parent.getChildAt(newiconIndex).requestFocus(); } else { tabs.requestFocus(); } @@ -338,8 +354,8 @@ public class FocusHelper { if (handleKeyEvent) { // Select the closest icon in the previous row, otherwise do nothing if (y < (cellCountY - 1)) { - int newWidgetIndex = Math.min(widgetCount - 1, ((y + 1) * cellCountX) + x); - parent.getChildAt(newWidgetIndex).requestFocus(); + int newiconIndex = Math.min(widgetCount - 1, ((y + 1) * cellCountX) + x); + parent.getChildAt(newiconIndex).requestFocus(); } } wasHandled = true; @@ -360,7 +376,10 @@ public class FocusHelper { if (pageIndex > 0) { newParent = getPagedViewCellLayoutChildrenForIndex(container, pageIndex - 1); - newParent.getChildAt(0).requestFocus(); + if (newParent != null) { + child = newParent.getChildAt(0); + if (child != null) child.requestFocus(); + } } else { parent.getChildAt(0).requestFocus(); } @@ -374,7 +393,10 @@ public class FocusHelper { if (pageIndex < (pageCount - 1)) { newParent = getPagedViewCellLayoutChildrenForIndex(container, pageIndex + 1); - newParent.getChildAt(0).requestFocus(); + if (newParent != null) { + child = newParent.getChildAt(0); + if (child != null) child.requestFocus(); + } } else { parent.getChildAt(widgetCount - 1).requestFocus(); } @@ -465,7 +487,6 @@ public class FocusHelper { final int buttonIndex = parent.indexOfChild(v); final int buttonCount = parent.getChildCount(); final int pageIndex = workspace.getCurrentPage(); - final int pageCount = workspace.getChildCount(); // NOTE: currently we don't special case for the phone UI in different // orientations, even though the hotseat is on the side in landscape mode. This @@ -502,7 +523,7 @@ public class FocusHelper { // Select the first bubble text view in the current page of the workspace final CellLayout layout = (CellLayout) workspace.getChildAt(pageIndex); final CellLayoutChildren children = layout.getChildrenLayout(); - final View newIcon = getBubbleTextViewInDirection(layout, children, -1, 1); + final View newIcon = getIconInDirection(layout, children, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } else { @@ -554,38 +575,41 @@ public class FocusHelper { return views; } /** - * Private helper method to find the index of the next BubbleTextView in the delta direction. + * Private helper method to find the index of the next BubbleTextView or FolderIcon in the + * direction delta. + * * @param delta either -1 or 1 depending on the direction we want to search */ - private static View findIndexOfBubbleTextView(ArrayList<View> views, int i, int delta) { + private static View findIndexOfIcon(ArrayList<View> views, int i, int delta) { // Then we find the next BubbleTextView offset by delta from i final int count = views.size(); int newI = i + delta; while (0 <= newI && newI < count) { View newV = views.get(newI); - if (newV instanceof BubbleTextView) { + if (newV instanceof BubbleTextView || newV instanceof FolderIcon) { return newV; } newI += delta; } return null; } - private static View getBubbleTextViewInDirection(CellLayout layout, ViewGroup parent, int i, + private static View getIconInDirection(CellLayout layout, ViewGroup parent, int i, int delta) { final ArrayList<View> views = getCellLayoutChildrenSortedSpatially(layout, parent); - return findIndexOfBubbleTextView(views, i, delta); + return findIndexOfIcon(views, i, delta); } - private static View getBubbleTextViewInDirection(CellLayout layout, ViewGroup parent, View v, + private static View getIconInDirection(CellLayout layout, ViewGroup parent, View v, int delta) { final ArrayList<View> views = getCellLayoutChildrenSortedSpatially(layout, parent); - return findIndexOfBubbleTextView(views, views.indexOf(v), delta); + return findIndexOfIcon(views, views.indexOf(v), delta); } /** - * Private helper method to find the next closest BubbleTextView in the delta direction on the - * next line. + * Private helper method to find the next closest BubbleTextView or FolderIcon in the direction + * delta on the next line. + * * @param delta either -1 or 1 depending on the line and direction we want to search */ - private static View getClosestBubbleTextViewOnLine(CellLayout layout, ViewGroup parent, View v, + private static View getClosestIconOnLine(CellLayout layout, ViewGroup parent, View v, int lineDelta) { final ArrayList<View> views = getCellLayoutChildrenSortedSpatially(layout, parent); final CellLayout.LayoutParams lp = (CellLayout.LayoutParams) v.getLayoutParams(); @@ -602,7 +626,8 @@ public class FocusHelper { View newV = views.get(index); CellLayout.LayoutParams tmpLp = (CellLayout.LayoutParams) newV.getLayoutParams(); boolean satisfiesRow = (lineDelta < 0) ? (tmpLp.cellY < row) : (tmpLp.cellY > row); - if (satisfiesRow && newV instanceof BubbleTextView) { + if (satisfiesRow && + (newV instanceof BubbleTextView || newV instanceof FolderIcon)) { float tmpDistance = (float) Math.sqrt(Math.pow(tmpLp.cellX - lp.cellX, 2) + Math.pow(tmpLp.cellY - lp.cellY, 2)); if (tmpDistance < closestDistance) { @@ -624,17 +649,15 @@ public class FocusHelper { } /** - * Handles key events in a Workspace containing BubbleTextView. + * Handles key events in a Workspace containing. */ - static boolean handleBubbleTextViewKeyEvent(BubbleTextView v, int keyCode, KeyEvent e) { + static boolean handleIconKeyEvent(View v, int keyCode, KeyEvent e) { CellLayoutChildren parent = (CellLayoutChildren) v.getParent(); final CellLayout layout = (CellLayout) parent.getParent(); final Workspace workspace = (Workspace) layout.getParent(); final ViewGroup launcher = (ViewGroup) workspace.getParent(); final ViewGroup tabs = (ViewGroup) launcher.findViewById(R.id.qsb_bar); final ViewGroup hotseat = (ViewGroup) launcher.findViewById(R.id.hotseat); - int iconIndex = parent.indexOfChild(v); - int iconCount = parent.getChildCount(); int pageIndex = workspace.indexOfChild(layout); int pageCount = workspace.getChildCount(); @@ -645,13 +668,13 @@ public class FocusHelper { case KeyEvent.KEYCODE_DPAD_LEFT: if (handleKeyEvent) { // Select the previous icon or the last icon on the previous page if possible - View newIcon = getBubbleTextViewInDirection(layout, parent, v, -1); + View newIcon = getIconInDirection(layout, parent, v, -1); if (newIcon != null) { newIcon.requestFocus(); } else { if (pageIndex > 0) { parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1); - newIcon = getBubbleTextViewInDirection(layout, parent, + newIcon = getIconInDirection(layout, parent, parent.getChildCount(), -1); if (newIcon != null) { newIcon.requestFocus(); @@ -667,13 +690,13 @@ public class FocusHelper { case KeyEvent.KEYCODE_DPAD_RIGHT: if (handleKeyEvent) { // Select the next icon or the first icon on the next page if possible - View newIcon = getBubbleTextViewInDirection(layout, parent, v, 1); + View newIcon = getIconInDirection(layout, parent, v, 1); if (newIcon != null) { newIcon.requestFocus(); } else { if (pageIndex < (pageCount - 1)) { parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1); - newIcon = getBubbleTextViewInDirection(layout, parent, -1, 1); + newIcon = getIconInDirection(layout, parent, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } else { @@ -688,7 +711,7 @@ public class FocusHelper { case KeyEvent.KEYCODE_DPAD_UP: if (handleKeyEvent) { // Select the closest icon in the previous line, otherwise select the tab bar - View newIcon = getClosestBubbleTextViewOnLine(layout, parent, v, -1); + View newIcon = getClosestIconOnLine(layout, parent, v, -1); if (newIcon != null) { newIcon.requestFocus(); wasHandled = true; @@ -700,7 +723,7 @@ public class FocusHelper { case KeyEvent.KEYCODE_DPAD_DOWN: if (handleKeyEvent) { // Select the closest icon in the next line, otherwise select the button bar - View newIcon = getClosestBubbleTextViewOnLine(layout, parent, v, 1); + View newIcon = getClosestIconOnLine(layout, parent, v, 1); if (newIcon != null) { newIcon.requestFocus(); wasHandled = true; @@ -715,7 +738,7 @@ public class FocusHelper { // if there is no previous page if (pageIndex > 0) { parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1); - View newIcon = getBubbleTextViewInDirection(layout, parent, -1, 1); + View newIcon = getIconInDirection(layout, parent, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } else { @@ -723,7 +746,7 @@ public class FocusHelper { workspace.snapToPage(pageIndex - 1); } } else { - View newIcon = getBubbleTextViewInDirection(layout, parent, -1, 1); + View newIcon = getIconInDirection(layout, parent, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } @@ -737,7 +760,7 @@ public class FocusHelper { // if there is no previous page if (pageIndex < (pageCount - 1)) { parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1); - View newIcon = getBubbleTextViewInDirection(layout, parent, -1, 1); + View newIcon = getIconInDirection(layout, parent, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } else { @@ -745,7 +768,7 @@ public class FocusHelper { workspace.snapToPage(pageIndex + 1); } } else { - View newIcon = getBubbleTextViewInDirection(layout, parent, + View newIcon = getIconInDirection(layout, parent, parent.getChildCount(), -1); if (newIcon != null) { newIcon.requestFocus(); @@ -757,7 +780,90 @@ public class FocusHelper { case KeyEvent.KEYCODE_MOVE_HOME: if (handleKeyEvent) { // Select the first icon on this page - View newIcon = getBubbleTextViewInDirection(layout, parent, -1, 1); + View newIcon = getIconInDirection(layout, parent, -1, 1); + if (newIcon != null) { + newIcon.requestFocus(); + } + } + wasHandled = true; + break; + case KeyEvent.KEYCODE_MOVE_END: + if (handleKeyEvent) { + // Select the last icon on this page + View newIcon = getIconInDirection(layout, parent, + parent.getChildCount(), -1); + if (newIcon != null) { + newIcon.requestFocus(); + } + } + wasHandled = true; + break; + default: break; + } + return wasHandled; + } + + /** + * Handles key events for items in a Folder. + */ + static boolean handleFolderKeyEvent(View v, int keyCode, KeyEvent e) { + CellLayoutChildren parent = (CellLayoutChildren) v.getParent(); + final CellLayout layout = (CellLayout) parent.getParent(); + final Folder folder = (Folder) layout.getParent(); + View title = folder.mFolderName; + + final int action = e.getAction(); + final boolean handleKeyEvent = (action != KeyEvent.ACTION_UP); + boolean wasHandled = false; + switch (keyCode) { + case KeyEvent.KEYCODE_DPAD_LEFT: + if (handleKeyEvent) { + // Select the previous icon + View newIcon = getIconInDirection(layout, parent, v, -1); + if (newIcon != null) { + newIcon.requestFocus(); + } + } + wasHandled = true; + break; + case KeyEvent.KEYCODE_DPAD_RIGHT: + if (handleKeyEvent) { + // Select the next icon + View newIcon = getIconInDirection(layout, parent, v, 1); + if (newIcon != null) { + newIcon.requestFocus(); + } else { + title.requestFocus(); + } + } + wasHandled = true; + break; + case KeyEvent.KEYCODE_DPAD_UP: + if (handleKeyEvent) { + // Select the closest icon in the previous line + View newIcon = getClosestIconOnLine(layout, parent, v, -1); + if (newIcon != null) { + newIcon.requestFocus(); + } + } + wasHandled = true; + break; + case KeyEvent.KEYCODE_DPAD_DOWN: + if (handleKeyEvent) { + // Select the closest icon in the next line + View newIcon = getClosestIconOnLine(layout, parent, v, 1); + if (newIcon != null) { + newIcon.requestFocus(); + } else { + title.requestFocus(); + } + } + wasHandled = true; + break; + case KeyEvent.KEYCODE_MOVE_HOME: + if (handleKeyEvent) { + // Select the first icon on this page + View newIcon = getIconInDirection(layout, parent, -1, 1); if (newIcon != null) { newIcon.requestFocus(); } @@ -767,7 +873,7 @@ public class FocusHelper { case KeyEvent.KEYCODE_MOVE_END: if (handleKeyEvent) { // Select the last icon on this page - View newIcon = getBubbleTextViewInDirection(layout, parent, + View newIcon = getIconInDirection(layout, parent, parent.getChildCount(), -1); if (newIcon != null) { newIcon.requestFocus(); diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index f44d3ed60..8a198f875 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -53,7 +53,8 @@ import java.util.ArrayList; * Represents a set of icons chosen by the user or generated by the system. */ public class Folder extends LinearLayout implements DragSource, View.OnClickListener, - View.OnLongClickListener, DropTarget, FolderListener, TextView.OnEditorActionListener { + View.OnLongClickListener, DropTarget, FolderListener, TextView.OnEditorActionListener, + View.OnFocusChangeListener { private static final String TAG = "Launcher.Folder"; @@ -93,7 +94,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private int[] mEmptyCell = new int[2]; private Alarm mReorderAlarm = new Alarm(); private Alarm mOnExitAlarm = new Alarm(); - private TextView mFolderName; private int mFolderNameHeight; private Rect mHitRect = new Rect(); private Rect mTempRect = new Rect(); @@ -101,6 +101,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private boolean mDeleteFolderOnDropCompleted = false; private boolean mSuppressFolderDeletion = false; private boolean mItemAddedBackToSelfViaIcon = false; + FolderEditText mFolderName; private boolean mIsEditingName = false; private InputMethodManager mInputMethodManager; @@ -134,8 +135,11 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList if (sHintText == null) { sHintText = res.getString(R.string.folder_hint_text); } - mLauncher = (Launcher) context; + // We need this view to be focusable in touch mode so that when text editing of the folder + // name is complete, we have something to focus on, thus hiding the cursor and giving + // reliable behvior when clicking the text field (since it will always gain focus on click). + setFocusableInTouchMode(true); } @Override @@ -143,7 +147,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList super.onFinishInflate(); mContent = (CellLayout) findViewById(R.id.folder_content); mContent.setGridSize(0, 0); - mFolderName = (TextView) findViewById(R.id.folder_name); + mFolderName = (FolderEditText) findViewById(R.id.folder_name); + mFolderName.setFolder(this); + mFolderName.setOnFocusChangeListener(this); // We find out how tall the text view wants to be (it is set to wrap_content), so that // we can allocate the appropriate amount of space for it. @@ -153,7 +159,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList // We disable action mode for now since it messes up the view on phones mFolderName.setCustomSelectionActionModeCallback(mActionModeCallback); - mFolderName.setCursorVisible(false); mFolderName.setOnEditorActionListener(this); mFolderName.setSelectAllOnFocus(true); mFolderName.setInputType(mFolderName.getInputType() | @@ -190,16 +195,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } } - public boolean onInterceptTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mFolderName.getHitRect(mHitRect); - if (mHitRect.contains((int) ev.getX(), (int) ev.getY()) && !mIsEditingName) { - startEditingFolderName(); - } - } - return false; - } - public boolean onLongClick(View v) { Object tag = v.getTag(); if (tag instanceof ShortcutInfo) { @@ -233,7 +228,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList public void startEditingFolderName() { mFolderName.setHint(""); - mFolderName.setCursorVisible(true); mIsEditingName = true; } @@ -248,8 +242,11 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList // gets saved. mInfo.setTitle(mFolderName.getText().toString()); LauncherModel.updateItemInDatabase(mLauncher, mInfo); - mFolderName.setCursorVisible(false); - mFolderName.clearFocus(); + + // In order to clear the focus from the text field, we set the focus on ourself. This + // ensures that every time the field is clicked, focus is gained, giving reliable behavior. + requestFocus(); + Selection.setSelection((Spannable) mFolderName.getText(), 0, 0); mIsEditingName = false; } @@ -320,6 +317,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } mItemsInvalidated = true; + updateTextViewFocus(); mInfo.addListener(this); if (!sDefaultFolderName.contentEquals(mInfo.title)) { @@ -410,12 +408,20 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList if (cling != null) { cling.bringToFront(); } + setFocusOnFirstChild(); } }); oa.setDuration(mExpandDuration); oa.start(); } + private void setFocusOnFirstChild() { + View firstChild = mContent.getChildAt(0, 0); + if (firstChild != null) { + firstChild.requestFocus(); + } + } + public void animateClosed() { if (!(getParent() instanceof DragLayer)) return; @@ -512,6 +518,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList CellLayout.LayoutParams lp = new CellLayout.LayoutParams(item.cellX, item.cellY, item.spanX, item.spanY); boolean insert = false; + textView.setOnKeyListener(new FolderKeyEventListener()); mContent.addViewToCellLayout(textView, insert ? 0 : -1, (int)item.id, lp, true); return true; } @@ -817,12 +824,14 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList lp.cellX = vacant[0]; lp.cellY = vacant[1]; ItemInfo info = (ItemInfo) v.getTag(); - info.cellX = vacant[0]; - info.cellY = vacant[1]; + if (info.cellX != vacant[0] || info.cellY != vacant[1]) { + info.cellX = vacant[0]; + info.cellY = vacant[1]; + LauncherModel.addOrMoveItemInDatabase(mLauncher, info, mInfo.id, 0, + info.cellX, info.cellY); + } boolean insert = false; mContent.addViewToCellLayout(v, insert ? 0 : -1, (int)info.id, lp, true); - LauncherModel.addOrMoveItemInDatabase(mLauncher, info, mInfo.id, 0, - info.cellX, info.cellY); } mItemsInvalidated = true; } @@ -840,6 +849,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList parent.removeView(this); mDragController.removeDropTarget((DropTarget) this); clearFocus(); + mFolderIcon.requestFocus(); if (mRearrangeOnClose) { setupContentForNumItems(getItemCount()); @@ -886,6 +896,19 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } } + // This method keeps track of the last item in the folder for the purposes + // of keyboard focus + private void updateTextViewFocus() { + View lastChild = getItemAt(getItemCount() - 1); + getItemAt(getItemCount() - 1); + if (lastChild != null) { + mFolderName.setNextFocusDownId(lastChild.getId()); + mFolderName.setNextFocusRightId(lastChild.getId()); + mFolderName.setNextFocusLeftId(lastChild.getId()); + mFolderName.setNextFocusUpId(lastChild.getId()); + } + } + public void onDrop(DragObject d) { ShortcutInfo item; if (d.dragInfo instanceof ApplicationInfo) { @@ -961,7 +984,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } public void onItemsChanged() { + updateTextViewFocus(); } + public void onTitleChanged(CharSequence title) { } @@ -991,4 +1016,10 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList public void getLocationInDragLayer(int[] loc) { mLauncher.getDragLayer().getLocationInDragLayer(this, loc); } + + public void onFocusChange(View v, boolean hasFocus) { + if (v == mFolderName && hasFocus) { + startEditingFolderName(); + } + } } diff --git a/src/com/android/launcher2/FolderEditText.java b/src/com/android/launcher2/FolderEditText.java new file mode 100644 index 000000000..13169bd51 --- /dev/null +++ b/src/com/android/launcher2/FolderEditText.java @@ -0,0 +1,36 @@ +package com.android.launcher2; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.widget.EditText; + +public class FolderEditText extends EditText { + + private Folder mFolder; + + public FolderEditText(Context context) { + super(context); + } + + public FolderEditText(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FolderEditText(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public void setFolder(Folder folder) { + mFolder = folder; + } + + @Override + public boolean onKeyPreIme(int keyCode, KeyEvent event) { + // Catch the back button on the soft keyboard so that we can just close the activity + if (event.getKeyCode() == android.view.KeyEvent.KEYCODE_BACK) { + mFolder.doneEditingFolderName(true); + } + return super.onKeyPreIme(keyCode, event); + } +} diff --git a/src/com/android/launcher2/FolderInfo.java b/src/com/android/launcher2/FolderInfo.java index 3ae31d278..f59707671 100644 --- a/src/com/android/launcher2/FolderInfo.java +++ b/src/com/android/launcher2/FolderInfo.java @@ -56,6 +56,7 @@ class FolderInfo extends ItemInfo { for (int i = 0; i < listeners.size(); i++) { listeners.get(i).onAdd(item); } + itemsChanged(); } /** @@ -68,6 +69,7 @@ class FolderInfo extends ItemInfo { for (int i = 0; i < listeners.size(); i++) { listeners.get(i).onRemove(item); } + itemsChanged(); } public void setTitle(CharSequence title) { diff --git a/src/com/android/launcher2/Hotseat.java b/src/com/android/launcher2/Hotseat.java index f6ce05904..85412c669 100644 --- a/src/com/android/launcher2/Hotseat.java +++ b/src/com/android/launcher2/Hotseat.java @@ -58,7 +58,7 @@ public class Hotseat extends FrameLayout { public void setup(Launcher launcher) { mLauncher = launcher; - setOnKeyListener(new HotseatBubbleTextViewKeyEventListener()); + setOnKeyListener(new HotseatIconKeyEventListener()); } CellLayout getLayout() { @@ -100,7 +100,7 @@ public class Hotseat extends FrameLayout { BubbleTextView allAppsButton = (BubbleTextView) inflater.inflate(R.layout.application, mContent, false); allAppsButton.setCompoundDrawablesWithIntrinsicBounds(null, - context.getResources().getDrawable(R.drawable.ic_allapps), null, null); + context.getResources().getDrawable(R.drawable.all_apps_button_icon), null, null); // allAppsButton.setText(context.getString(R.string.all_apps_button_label)); allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label)); allAppsButton.setOnClickListener(new View.OnClickListener() { diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 82dc8c460..83bce6db7 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -75,9 +75,9 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.Surface; import android.view.View; -import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.WindowManager; +import android.view.View.OnLongClickListener; import android.view.accessibility.AccessibilityEvent; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; @@ -325,7 +325,7 @@ public final class Launcher extends Activity } // On large interfaces, we want the screen to auto-rotate based on the current orientation - if (LauncherApplication.isScreenLarge()) { + if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); } } @@ -876,10 +876,16 @@ public final class Launcher extends Activity if (appInfo.targetSdkVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { Resources r = getResources(); - p.left = r.getDimensionPixelSize(R.dimen.app_widget_padding_left); - p.right = r.getDimensionPixelSize(R.dimen.app_widget_padding_right); - p.top = r.getDimensionPixelSize(R.dimen.app_widget_padding_top); - p.bottom = r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom); + // The default padding values are private API currently, but will be added in + // API level 15. The current values are (8, 8, 8, 8). + p.left = r.getDimensionPixelSize(com.android.internal. + R.dimen.default_app_widget_padding_left); + p.right = r.getDimensionPixelSize(com.android.internal. + R.dimen.default_app_widget_padding_right); + p.top = r.getDimensionPixelSize(com.android.internal. + R.dimen.default_app_widget_padding_top); + p.bottom = r.getDimensionPixelSize(com.android.internal. + R.dimen.default_app_widget_padding_bottom); } return p; @@ -1147,16 +1153,18 @@ public final class Launcher extends Activity // also will cancel mWaitingForResult. closeSystemDialogs(); - closeFolder(); - boolean alreadyOnHome = ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); + Folder openFolder = mWorkspace.getOpenFolder(); // In all these cases, only animate if we're already on home mWorkspace.exitWidgetResizeMode(); - if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive()) { + if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive() && + openFolder == null) { mWorkspace.moveToDefaultScreen(true); } + + closeFolder(); exitSpringLoadedDragMode(); showWorkspace(alreadyOnHome); @@ -1302,7 +1310,8 @@ public final class Launcher extends Activity Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS); settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - Intent help = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.help_url))); + String helpUrl = getString(R.string.help_url); + Intent help = new Intent(Intent.ACTION_VIEW, Uri.parse(helpUrl)); help.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); @@ -1317,10 +1326,12 @@ public final class Launcher extends Activity .setIcon(android.R.drawable.ic_menu_preferences) .setIntent(settings) .setAlphabeticShortcut('P'); - menu.add(0, MENU_HELP, 0, R.string.menu_help) - .setIcon(android.R.drawable.ic_menu_help) - .setIntent(help) - .setAlphabeticShortcut('H'); + if (!helpUrl.isEmpty()) { + menu.add(0, MENU_HELP, 0, R.string.menu_help) + .setIcon(android.R.drawable.ic_menu_help) + .setIntent(help) + .setAlphabeticShortcut('H'); + } return true; } @@ -1873,6 +1884,9 @@ public final class Launcher extends Activity public void closeFolder() { Folder folder = mWorkspace.getOpenFolder(); if (folder != null) { + if (folder.isEditingName()) { + folder.dismissEditingName(); + } closeFolder(folder); // Dismiss the folder cling diff --git a/src/com/android/launcher2/LauncherAppWidgetHostView.java b/src/com/android/launcher2/LauncherAppWidgetHostView.java index 791711893..1a4a45e5e 100644 --- a/src/com/android/launcher2/LauncherAppWidgetHostView.java +++ b/src/com/android/launcher2/LauncherAppWidgetHostView.java @@ -116,18 +116,6 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView { } @Override - public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) { - super.setAppWidget(appWidgetId, info); - // Sometimes the AppWidgetManager returns a null AppWidgetProviderInfo object for - // a widget, eg. for some widgets in safe mode. - if (info != null) { - // We add necessary padding to the AppWidgetHostView - Launcher.Padding padding = mLauncher.getPaddingForWidget(info.provider); - setPadding(padding.left, padding.top, padding.right, padding.bottom); - } - } - - @Override public int getDescendantFocusability() { return ViewGroup.FOCUS_BLOCK_DESCENDANTS; } diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index d7e9e06e0..afb2b94f5 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -39,6 +39,7 @@ import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewParent; import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.Interpolator; import android.widget.Checkable; @@ -402,6 +403,14 @@ public abstract class PagedView extends ViewGroup { if (mTouchState == TOUCH_STATE_REST) { pageEndMoving(); } + + // Notify the user when the page changes + if (AccessibilityManager.getInstance(getContext()).isEnabled()) { + AccessibilityEvent ev = + AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_SCROLLED); + ev.getText().add(getCurrentPageDescription()); + sendAccessibilityEventUnchecked(ev); + } return true; } return false; @@ -1664,18 +1673,6 @@ public abstract class PagedView extends ViewGroup { */ public abstract void syncPageItems(int page, boolean immediate); - protected void postInvalidatePageData(final boolean clearViews) { - post(new Runnable() { - // post the call to avoid a call to requestLayout from a layout pass - public void run() { - if (clearViews) { - removeAllViews(); - } - invalidatePageData(); - } - }); - } - protected void invalidatePageData() { invalidatePageData(-1, false); } @@ -1872,27 +1869,6 @@ public abstract class PagedView extends ViewGroup { } } - @Override - public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { - // Do not append text content to scroll events they are fired frequently - // and the client has already received another event type with the text. - if (event.getEventType() != AccessibilityEvent.TYPE_VIEW_SCROLLED) { - super.dispatchPopulateAccessibilityEvent(event); - } - - onPopulateAccessibilityEvent(event); - return false; - } - - @Override - public void onPopulateAccessibilityEvent(AccessibilityEvent event) { - super.onPopulateAccessibilityEvent(event); - - if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) { - event.getText().add(getCurrentPageDescription()); - } - } - protected String getCurrentPageDescription() { int page = (mNextPage != INVALID_PAGE) ? mNextPage : mCurrentPage; return String.format(mContext.getString(R.string.default_scroll_format), diff --git a/src/com/android/launcher2/PagedViewWidget.java b/src/com/android/launcher2/PagedViewWidget.java index 053c2ea1a..adf94ab09 100644 --- a/src/com/android/launcher2/PagedViewWidget.java +++ b/src/com/android/launcher2/PagedViewWidget.java @@ -52,6 +52,9 @@ import com.android.launcher.R; public class PagedViewWidget extends LinearLayout implements Checkable { static final String TAG = "PagedViewWidgetLayout"; + private static final int sPreviewFadeInDuration = 80; + private static final int sPreviewFadeInStaggerDuration = 20; + private final Paint mPaint = new Paint(); private Bitmap mHolographicOutline; private HolographicOutlineHelper mHolographicOutlineHelper; @@ -96,42 +99,61 @@ public class PagedViewWidget extends LinearLayout implements Checkable { setClipToPadding(false); } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + final ImageView image = (ImageView) findViewById(R.id.widget_preview); + if (image != null) { + FastBitmapDrawable preview = (FastBitmapDrawable) image.getDrawable(); + if (preview != null && preview.getBitmap() != null) { + preview.getBitmap().recycle(); + } + image.setImageDrawable(null); + } + } + public void applyFromAppWidgetProviderInfo(AppWidgetProviderInfo info, - FastBitmapDrawable preview, int maxWidth, int[] cellSpan, - HolographicOutlineHelper holoOutlineHelper) { + int maxWidth, int[] cellSpan, HolographicOutlineHelper holoOutlineHelper) { mHolographicOutlineHelper = holoOutlineHelper; final ImageView image = (ImageView) findViewById(R.id.widget_preview); if (maxWidth > -1) { image.setMaxWidth(maxWidth); } - image.setImageDrawable(preview); image.setContentDescription(info.label); mPreviewImageView = image; final TextView name = (TextView) findViewById(R.id.widget_name); name.setText(info.label); - name.setLayerType(View.LAYER_TYPE_SOFTWARE, null); final TextView dims = (TextView) findViewById(R.id.widget_dims); if (dims != null) { dims.setText(String.format(mDimensionsFormatString, cellSpan[0], cellSpan[1])); - dims.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } } public void applyFromResolveInfo(PackageManager pm, ResolveInfo info, - FastBitmapDrawable preview, HolographicOutlineHelper holoOutlineHelper) { + HolographicOutlineHelper holoOutlineHelper) { mHolographicOutlineHelper = holoOutlineHelper; CharSequence label = info.loadLabel(pm); final ImageView image = (ImageView) findViewById(R.id.widget_preview); - image.setImageDrawable(preview); image.setContentDescription(label); mPreviewImageView = image; final TextView name = (TextView) findViewById(R.id.widget_name); name.setText(label); - name.setLayerType(View.LAYER_TYPE_SOFTWARE, null); final TextView dims = (TextView) findViewById(R.id.widget_dims); if (dims != null) { dims.setText(String.format(mDimensionsFormatString, 1, 1)); - dims.setLayerType(View.LAYER_TYPE_SOFTWARE, null); + } + } + + void applyPreview(FastBitmapDrawable preview, int index) { + final ImageView image = (ImageView) findViewById(R.id.widget_preview); + if (preview != null) { + image.setImageDrawable(preview); + image.setAlpha(0f); + image.animate() + .alpha(1f) + .setDuration(sPreviewFadeInDuration + (index * sPreviewFadeInStaggerDuration)) + .start(); } } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index bf18456ae..70289d4a0 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -469,7 +469,7 @@ public class Workspace extends SmoothPagedView } layout = (CellLayout) getChildAt(screen); - child.setOnKeyListener(new BubbleTextViewKeyEventListener()); + child.setOnKeyListener(new IconKeyEventListener()); } CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams(); @@ -1882,6 +1882,12 @@ public class Workspace extends SmoothPagedView dragRect = new Rect(0, 0, child.getWidth(), previewSize); } + // Clear the pressed state if necessary + if (child instanceof BubbleTextView) { + BubbleTextView icon = (BubbleTextView) child; + icon.clearPressedOrFocusedBackground(); + } + mDragController.startDrag(b, dragLayerX, dragLayerY, source, child.getTag(), DragController.DRAG_ACTION_MOVE, dragRect); b.recycle(); @@ -3051,6 +3057,9 @@ public class Workspace extends SmoothPagedView } cellLayout.onDropChild(mDragInfo.cell); } + if (d.cancelled && mDragInfo.cell != null) { + mDragInfo.cell.setVisibility(VISIBLE); + } mDragOutline = null; mDragInfo = null; } |