am bc38e611: (-s ours) Import revised translations. DO NOT MERGE
Merge commit 'bc38e611b275f4b857ef950bc1465276b76e4bdf' into eclair
* commit 'bc38e611b275f4b857ef950bc1465276b76e4bdf':
Import revised translations. DO NOT MERGE
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4e60e66..634851c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -71,7 +71,7 @@
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
- android:theme="@style/Theme"
+ android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
android:screenOrientation="nosensor"
android:windowSoftInputMode="stateUnspecified|adjustPan">
<intent-filter>
@@ -85,7 +85,8 @@
<activity
android:name="WallpaperChooser"
android:label="@string/pick_wallpaper"
- android:icon="@drawable/ic_launcher_gallery">
+ android:icon="@drawable/ic_launcher_wallpaper"
+ android:finishOnCloseSystemDialogs="true">
<intent-filter>
<action android:name="android.intent.action.SET_WALLPAPER" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/res/drawable-hdpi/bg_appwidget_error.9.png b/res/drawable-hdpi/bg_appwidget_error.9.png
new file mode 100644
index 0000000..59d9822
--- /dev/null
+++ b/res/drawable-hdpi/bg_appwidget_error.9.png
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_bottom.9.png b/res/drawable-hdpi/box_launcher_bottom.9.png
new file mode 100644
index 0000000..f08c7a2
--- /dev/null
+++ b/res/drawable-hdpi/box_launcher_bottom.9.png
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_normal.9.png b/res/drawable-hdpi/box_launcher_top_normal.9.png
new file mode 100644
index 0000000..98997ad
--- /dev/null
+++ b/res/drawable-hdpi/box_launcher_top_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_pressed.9.png b/res/drawable-hdpi/box_launcher_top_pressed.9.png
new file mode 100644
index 0000000..f52fd48
--- /dev/null
+++ b/res/drawable-hdpi/box_launcher_top_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_selected.9.png b/res/drawable-hdpi/box_launcher_top_selected.9.png
new file mode 100644
index 0000000..8cacf0e
--- /dev/null
+++ b/res/drawable-hdpi/box_launcher_top_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi/delete_handle.png b/res/drawable-hdpi/delete_handle.png
new file mode 100644
index 0000000..d6134a6
--- /dev/null
+++ b/res/drawable-hdpi/delete_handle.png
Binary files differ
diff --git a/res/drawable-hdpi/delete_handle_normal.png b/res/drawable-hdpi/delete_handle_normal.png
new file mode 100644
index 0000000..442d4e6
--- /dev/null
+++ b/res/drawable-hdpi/delete_handle_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/focused_application_background.9.png b/res/drawable-hdpi/focused_application_background.9.png
new file mode 100644
index 0000000..7bf37ef
--- /dev/null
+++ b/res/drawable-hdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_delete.png b/res/drawable-hdpi/ic_delete.png
new file mode 100644
index 0000000..e550372
--- /dev/null
+++ b/res/drawable-hdpi/ic_delete.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_add_folder.png b/res/drawable-hdpi/ic_launcher_add_folder.png
new file mode 100644
index 0000000..2967926
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_add_folder.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_application.png b/res/drawable-hdpi/ic_launcher_application.png
new file mode 100644
index 0000000..8074c4c
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_application.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_appwidget.png b/res/drawable-hdpi/ic_launcher_appwidget.png
new file mode 100644
index 0000000..3dc8b20
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_appwidget.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_folder.png b/res/drawable-hdpi/ic_launcher_folder.png
new file mode 100644
index 0000000..dd71327
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_folder.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_folder_live.png b/res/drawable-hdpi/ic_launcher_folder_live.png
new file mode 100644
index 0000000..e1b1182
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_folder_live.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_folder_open.png b/res/drawable-hdpi/ic_launcher_folder_open.png
new file mode 100644
index 0000000..5b3fcec
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_folder_open.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_gallery.png b/res/drawable-hdpi/ic_launcher_gallery.png
new file mode 100644
index 0000000..e7b1575
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_gallery.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_home.png b/res/drawable-hdpi/ic_launcher_home.png
new file mode 100644
index 0000000..74f6bd7
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_home.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_shortcut.png b/res/drawable-hdpi/ic_launcher_shortcut.png
new file mode 100644
index 0000000..93ab2df
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_shortcut.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_wallpaper.png b/res/drawable-hdpi/ic_launcher_wallpaper.png
new file mode 100644
index 0000000..dcd8709
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_wallpaper.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_search_widget.png b/res/drawable-hdpi/ic_search_widget.png
new file mode 100644
index 0000000..06b9b25
--- /dev/null
+++ b/res/drawable-hdpi/ic_search_widget.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_tray_collapse.png b/res/drawable-hdpi/ic_tray_collapse.png
new file mode 100644
index 0000000..0480ad2
--- /dev/null
+++ b/res/drawable-hdpi/ic_tray_collapse.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_tray_expand.png b/res/drawable-hdpi/ic_tray_expand.png
new file mode 100644
index 0000000..dfc32a4
--- /dev/null
+++ b/res/drawable-hdpi/ic_tray_expand.png
Binary files differ
diff --git a/res/drawable-hdpi/pattern_carbon_fiber_dark.png b/res/drawable-hdpi/pattern_carbon_fiber_dark.png
new file mode 100644
index 0000000..427936f
--- /dev/null
+++ b/res/drawable-hdpi/pattern_carbon_fiber_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/placeholder_google.png b/res/drawable-hdpi/placeholder_google.png
new file mode 100644
index 0000000..923c8b8
--- /dev/null
+++ b/res/drawable-hdpi/placeholder_google.png
Binary files differ
diff --git a/res/drawable-hdpi/search_button_bg.9.png b/res/drawable-hdpi/search_button_bg.9.png
new file mode 100644
index 0000000..9fba3d1
--- /dev/null
+++ b/res/drawable-hdpi/search_button_bg.9.png
Binary files differ
diff --git a/res/drawable-hdpi/search_button_voice.png b/res/drawable-hdpi/search_button_voice.png
new file mode 100644
index 0000000..a60f7d9
--- /dev/null
+++ b/res/drawable-hdpi/search_button_voice.png
Binary files differ
diff --git a/res/drawable-hdpi/search_floater.9.png b/res/drawable-hdpi/search_floater.9.png
new file mode 100644
index 0000000..1c6d836
--- /dev/null
+++ b/res/drawable-hdpi/search_floater.9.png
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_default.9.png b/res/drawable-hdpi/textfield_searchwidget_default.9.png
new file mode 100644
index 0000000..2fe637d
--- /dev/null
+++ b/res/drawable-hdpi/textfield_searchwidget_default.9.png
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_pressed.9.png b/res/drawable-hdpi/textfield_searchwidget_pressed.9.png
new file mode 100644
index 0000000..58af9ba
--- /dev/null
+++ b/res/drawable-hdpi/textfield_searchwidget_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_selected.9.png b/res/drawable-hdpi/textfield_searchwidget_selected.9.png
new file mode 100644
index 0000000..8a84fdc
--- /dev/null
+++ b/res/drawable-hdpi/textfield_searchwidget_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi/tray_handle_normal.png b/res/drawable-hdpi/tray_handle_normal.png
new file mode 100644
index 0000000..f5c3f16
--- /dev/null
+++ b/res/drawable-hdpi/tray_handle_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/tray_handle_pressed.png b/res/drawable-hdpi/tray_handle_pressed.png
new file mode 100644
index 0000000..9d47cab
--- /dev/null
+++ b/res/drawable-hdpi/tray_handle_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/tray_handle_selected.png b/res/drawable-hdpi/tray_handle_selected.png
new file mode 100644
index 0000000..cc9e1b2
--- /dev/null
+++ b/res/drawable-hdpi/tray_handle_selected.png
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_bentgrass.jpg b/res/drawable-hdpi/wallpaper_bentgrass.jpg
new file mode 100644
index 0000000..811149b
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_bentgrass.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_bentgrass_small.jpg b/res/drawable-hdpi/wallpaper_bentgrass_small.jpg
new file mode 100644
index 0000000..68e11ff
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_bentgrass_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_canyon.jpg b/res/drawable-hdpi/wallpaper_canyon.jpg
new file mode 100644
index 0000000..e3e4ffd
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_canyon.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_canyon_small.jpg b/res/drawable-hdpi/wallpaper_canyon_small.jpg
new file mode 100644
index 0000000..c0c7c9d
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_canyon_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_despair.jpg b/res/drawable-hdpi/wallpaper_despair.jpg
new file mode 100644
index 0000000..49933c1
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_despair.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_despair_small.jpg b/res/drawable-hdpi/wallpaper_despair_small.jpg
new file mode 100644
index 0000000..bae448d
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_despair_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_electric.jpg b/res/drawable-hdpi/wallpaper_electric.jpg
new file mode 100644
index 0000000..e5afe4c
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_electric.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_electric_small.jpg b/res/drawable-hdpi/wallpaper_electric_small.jpg
new file mode 100644
index 0000000..c173f7e
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_electric_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_goldengate.jpg b/res/drawable-hdpi/wallpaper_goldengate.jpg
new file mode 100644
index 0000000..f168450
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_goldengate.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_goldengate_small.jpg b/res/drawable-hdpi/wallpaper_goldengate_small.jpg
new file mode 100644
index 0000000..0353b49
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_goldengate_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_grass.jpg b/res/drawable-hdpi/wallpaper_grass.jpg
new file mode 100644
index 0000000..63adc5b
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_grass.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_grass_small.jpg b/res/drawable-hdpi/wallpaper_grass_small.jpg
new file mode 100644
index 0000000..ee98370
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_grass_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_jellyfish.jpg b/res/drawable-hdpi/wallpaper_jellyfish.jpg
new file mode 100644
index 0000000..5540009
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_jellyfish.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_jellyfish_small.jpg b/res/drawable-hdpi/wallpaper_jellyfish_small.jpg
new file mode 100644
index 0000000..4ade3de
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_jellyfish_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_leaves.jpg b/res/drawable-hdpi/wallpaper_leaves.jpg
new file mode 100644
index 0000000..3d20d69
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_leaves.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_leaves_small.jpg b/res/drawable-hdpi/wallpaper_leaves_small.jpg
new file mode 100644
index 0000000..96bc7ad
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_leaves_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_monumentvalley.jpg b/res/drawable-hdpi/wallpaper_monumentvalley.jpg
new file mode 100644
index 0000000..a88c9c5
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_monumentvalley.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_monumentvalley_small.jpg b/res/drawable-hdpi/wallpaper_monumentvalley_small.jpg
new file mode 100644
index 0000000..f3560ff
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_monumentvalley_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_paradise.jpg b/res/drawable-hdpi/wallpaper_paradise.jpg
new file mode 100644
index 0000000..34e58f4
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_paradise.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_paradise_small.jpg b/res/drawable-hdpi/wallpaper_paradise_small.jpg
new file mode 100644
index 0000000..0a6e40c
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_paradise_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_rainbokeh.jpg b/res/drawable-hdpi/wallpaper_rainbokeh.jpg
new file mode 100644
index 0000000..3c256bb
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_rainbokeh.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_rainbokeh_small.jpg b/res/drawable-hdpi/wallpaper_rainbokeh_small.jpg
new file mode 100644
index 0000000..1c1413b
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_rainbokeh_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_ricefield.jpg b/res/drawable-hdpi/wallpaper_ricefield.jpg
new file mode 100644
index 0000000..f47c3de
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_ricefield.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_ricefield_small.jpg b/res/drawable-hdpi/wallpaper_ricefield_small.jpg
new file mode 100644
index 0000000..2e78048
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_ricefield_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_sunset.jpg b/res/drawable-hdpi/wallpaper_sunset.jpg
new file mode 100644
index 0000000..e912fdc
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_sunset.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_sunset_small.jpg b/res/drawable-hdpi/wallpaper_sunset_small.jpg
new file mode 100644
index 0000000..7b2ffb5
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_sunset_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_tree.jpg b/res/drawable-hdpi/wallpaper_tree.jpg
new file mode 100644
index 0000000..07e546c
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_tree.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_tree_small.jpg b/res/drawable-hdpi/wallpaper_tree_small.jpg
new file mode 100644
index 0000000..b5ba0e1
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_tree_small.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_valley.jpg b/res/drawable-hdpi/wallpaper_valley.jpg
new file mode 100644
index 0000000..084098b
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_valley.jpg
Binary files differ
diff --git a/res/drawable-hdpi/wallpaper_valley_small.jpg b/res/drawable-hdpi/wallpaper_valley_small.jpg
new file mode 100644
index 0000000..0dfcbc5
--- /dev/null
+++ b/res/drawable-hdpi/wallpaper_valley_small.jpg
Binary files differ
diff --git a/res/drawable-land-hdpi/delete_handle.png b/res/drawable-land-hdpi/delete_handle.png
new file mode 100644
index 0000000..5bab976
--- /dev/null
+++ b/res/drawable-land-hdpi/delete_handle.png
Binary files differ
diff --git a/res/drawable-land-hdpi/delete_handle_normal.png b/res/drawable-land-hdpi/delete_handle_normal.png
new file mode 100644
index 0000000..f6d4592
--- /dev/null
+++ b/res/drawable-land-hdpi/delete_handle_normal.png
Binary files differ
diff --git a/res/drawable-land-hdpi/ic_delete.png b/res/drawable-land-hdpi/ic_delete.png
new file mode 100644
index 0000000..e78d989
--- /dev/null
+++ b/res/drawable-land-hdpi/ic_delete.png
Binary files differ
diff --git a/res/drawable-land-hdpi/ic_tray_collapse.png b/res/drawable-land-hdpi/ic_tray_collapse.png
new file mode 100644
index 0000000..ccab96c
--- /dev/null
+++ b/res/drawable-land-hdpi/ic_tray_collapse.png
Binary files differ
diff --git a/res/drawable-land-hdpi/ic_tray_expand.png b/res/drawable-land-hdpi/ic_tray_expand.png
new file mode 100644
index 0000000..c1fda59
--- /dev/null
+++ b/res/drawable-land-hdpi/ic_tray_expand.png
Binary files differ
diff --git a/res/drawable-land-hdpi/tray_handle_normal.png b/res/drawable-land-hdpi/tray_handle_normal.png
new file mode 100644
index 0000000..e0cfb24
--- /dev/null
+++ b/res/drawable-land-hdpi/tray_handle_normal.png
Binary files differ
diff --git a/res/drawable-land-hdpi/tray_handle_pressed.png b/res/drawable-land-hdpi/tray_handle_pressed.png
new file mode 100644
index 0000000..646ba59
--- /dev/null
+++ b/res/drawable-land-hdpi/tray_handle_pressed.png
Binary files differ
diff --git a/res/drawable-land-hdpi/tray_handle_selected.png b/res/drawable-land-hdpi/tray_handle_selected.png
new file mode 100644
index 0000000..40aeac1
--- /dev/null
+++ b/res/drawable-land-hdpi/tray_handle_selected.png
Binary files differ
diff --git a/res/drawable-land/delete_handle.png b/res/drawable-land-mdpi/delete_handle.png
similarity index 100%
rename from res/drawable-land/delete_handle.png
rename to res/drawable-land-mdpi/delete_handle.png
Binary files differ
diff --git a/res/drawable-land/delete_handle_normal.png b/res/drawable-land-mdpi/delete_handle_normal.png
similarity index 100%
rename from res/drawable-land/delete_handle_normal.png
rename to res/drawable-land-mdpi/delete_handle_normal.png
Binary files differ
diff --git a/res/drawable-land/ic_delete.png b/res/drawable-land-mdpi/ic_delete.png
similarity index 100%
rename from res/drawable-land/ic_delete.png
rename to res/drawable-land-mdpi/ic_delete.png
Binary files differ
diff --git a/res/drawable-land/ic_tray_collapse.png b/res/drawable-land-mdpi/ic_tray_collapse.png
similarity index 100%
rename from res/drawable-land/ic_tray_collapse.png
rename to res/drawable-land-mdpi/ic_tray_collapse.png
Binary files differ
diff --git a/res/drawable-land/ic_tray_expand.png b/res/drawable-land-mdpi/ic_tray_expand.png
similarity index 100%
rename from res/drawable-land/ic_tray_expand.png
rename to res/drawable-land-mdpi/ic_tray_expand.png
Binary files differ
diff --git a/res/drawable-land/tray_handle_normal.png b/res/drawable-land-mdpi/tray_handle_normal.png
similarity index 100%
rename from res/drawable-land/tray_handle_normal.png
rename to res/drawable-land-mdpi/tray_handle_normal.png
Binary files differ
diff --git a/res/drawable-land/tray_handle_pressed.png b/res/drawable-land-mdpi/tray_handle_pressed.png
similarity index 100%
rename from res/drawable-land/tray_handle_pressed.png
rename to res/drawable-land-mdpi/tray_handle_pressed.png
Binary files differ
diff --git a/res/drawable-land/tray_handle_selected.png b/res/drawable-land-mdpi/tray_handle_selected.png
similarity index 100%
rename from res/drawable-land/tray_handle_selected.png
rename to res/drawable-land-mdpi/tray_handle_selected.png
Binary files differ
diff --git a/res/drawable/bg_appwidget_error.9.png b/res/drawable-mdpi/bg_appwidget_error.9.png
similarity index 100%
rename from res/drawable/bg_appwidget_error.9.png
rename to res/drawable-mdpi/bg_appwidget_error.9.png
Binary files differ
diff --git a/res/drawable/box_launcher_bottom.9.png b/res/drawable-mdpi/box_launcher_bottom.9.png
similarity index 100%
rename from res/drawable/box_launcher_bottom.9.png
rename to res/drawable-mdpi/box_launcher_bottom.9.png
Binary files differ
diff --git a/res/drawable/box_launcher_top_normal.9.png b/res/drawable-mdpi/box_launcher_top_normal.9.png
similarity index 100%
rename from res/drawable/box_launcher_top_normal.9.png
rename to res/drawable-mdpi/box_launcher_top_normal.9.png
Binary files differ
diff --git a/res/drawable/box_launcher_top_pressed.9.png b/res/drawable-mdpi/box_launcher_top_pressed.9.png
similarity index 100%
rename from res/drawable/box_launcher_top_pressed.9.png
rename to res/drawable-mdpi/box_launcher_top_pressed.9.png
Binary files differ
diff --git a/res/drawable/box_launcher_top_selected.9.png b/res/drawable-mdpi/box_launcher_top_selected.9.png
similarity index 100%
rename from res/drawable/box_launcher_top_selected.9.png
rename to res/drawable-mdpi/box_launcher_top_selected.9.png
Binary files differ
diff --git a/res/drawable/focused_application_background.9.png b/res/drawable-mdpi/focused_application_background.9.png
similarity index 100%
rename from res/drawable/focused_application_background.9.png
rename to res/drawable-mdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_launcher_add_folder.png b/res/drawable-mdpi/ic_launcher_add_folder.png
new file mode 100644
index 0000000..4c4bbf3
--- /dev/null
+++ b/res/drawable-mdpi/ic_launcher_add_folder.png
Binary files differ
diff --git a/res/drawable/ic_launcher_application.png b/res/drawable-mdpi/ic_launcher_application.png
similarity index 100%
rename from res/drawable/ic_launcher_application.png
rename to res/drawable-mdpi/ic_launcher_application.png
Binary files differ
diff --git a/res/drawable/ic_launcher_appwidget.png b/res/drawable-mdpi/ic_launcher_appwidget.png
similarity index 100%
rename from res/drawable/ic_launcher_appwidget.png
rename to res/drawable-mdpi/ic_launcher_appwidget.png
Binary files differ
diff --git a/res/drawable/ic_launcher_folder.png b/res/drawable-mdpi/ic_launcher_folder.png
similarity index 100%
rename from res/drawable/ic_launcher_folder.png
rename to res/drawable-mdpi/ic_launcher_folder.png
Binary files differ
diff --git a/res/drawable/ic_launcher_folder_live.png b/res/drawable-mdpi/ic_launcher_folder_live.png
similarity index 100%
rename from res/drawable/ic_launcher_folder_live.png
rename to res/drawable-mdpi/ic_launcher_folder_live.png
Binary files differ
diff --git a/res/drawable/ic_launcher_folder_open.png b/res/drawable-mdpi/ic_launcher_folder_open.png
similarity index 100%
rename from res/drawable/ic_launcher_folder_open.png
rename to res/drawable-mdpi/ic_launcher_folder_open.png
Binary files differ
diff --git a/res/drawable/ic_launcher_gallery.png b/res/drawable-mdpi/ic_launcher_gallery.png
similarity index 100%
rename from res/drawable/ic_launcher_gallery.png
rename to res/drawable-mdpi/ic_launcher_gallery.png
Binary files differ
diff --git a/res/drawable/ic_launcher_home.png b/res/drawable-mdpi/ic_launcher_home.png
similarity index 100%
rename from res/drawable/ic_launcher_home.png
rename to res/drawable-mdpi/ic_launcher_home.png
Binary files differ
diff --git a/res/drawable/ic_launcher_shortcut.png b/res/drawable-mdpi/ic_launcher_shortcut.png
similarity index 100%
rename from res/drawable/ic_launcher_shortcut.png
rename to res/drawable-mdpi/ic_launcher_shortcut.png
Binary files differ
diff --git a/res/drawable/ic_launcher_gallery.png b/res/drawable-mdpi/ic_launcher_wallpaper.png
similarity index 100%
copy from res/drawable/ic_launcher_gallery.png
copy to res/drawable-mdpi/ic_launcher_wallpaper.png
Binary files differ
diff --git a/res/drawable/ic_search_widget.png b/res/drawable-mdpi/ic_search_widget.png
similarity index 100%
rename from res/drawable/ic_search_widget.png
rename to res/drawable-mdpi/ic_search_widget.png
Binary files differ
diff --git a/res/drawable/pattern_carbon_fiber_dark.png b/res/drawable-mdpi/pattern_carbon_fiber_dark.png
similarity index 100%
rename from res/drawable/pattern_carbon_fiber_dark.png
rename to res/drawable-mdpi/pattern_carbon_fiber_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/placeholder_google.png b/res/drawable-mdpi/placeholder_google.png
new file mode 100644
index 0000000..4af30aa
--- /dev/null
+++ b/res/drawable-mdpi/placeholder_google.png
Binary files differ
diff --git a/res/drawable/search_button_bg.9.png b/res/drawable-mdpi/search_button_bg.9.png
similarity index 100%
rename from res/drawable/search_button_bg.9.png
rename to res/drawable-mdpi/search_button_bg.9.png
Binary files differ
diff --git a/res/drawable/search_button_voice.png b/res/drawable-mdpi/search_button_voice.png
similarity index 100%
rename from res/drawable/search_button_voice.png
rename to res/drawable-mdpi/search_button_voice.png
Binary files differ
diff --git a/res/drawable/search_floater.9.png b/res/drawable-mdpi/search_floater.9.png
similarity index 100%
rename from res/drawable/search_floater.9.png
rename to res/drawable-mdpi/search_floater.9.png
Binary files differ
diff --git a/res/drawable/textfield_searchwidget_default.9.png b/res/drawable-mdpi/textfield_searchwidget_default.9.png
similarity index 100%
rename from res/drawable/textfield_searchwidget_default.9.png
rename to res/drawable-mdpi/textfield_searchwidget_default.9.png
Binary files differ
diff --git a/res/drawable/textfield_searchwidget_pressed.9.png b/res/drawable-mdpi/textfield_searchwidget_pressed.9.png
similarity index 100%
rename from res/drawable/textfield_searchwidget_pressed.9.png
rename to res/drawable-mdpi/textfield_searchwidget_pressed.9.png
Binary files differ
diff --git a/res/drawable/textfield_searchwidget_selected.9.png b/res/drawable-mdpi/textfield_searchwidget_selected.9.png
similarity index 100%
rename from res/drawable/textfield_searchwidget_selected.9.png
rename to res/drawable-mdpi/textfield_searchwidget_selected.9.png
Binary files differ
diff --git a/res/drawable/wallpaper_beach.jpg b/res/drawable-mdpi/wallpaper_beach.jpg
similarity index 100%
rename from res/drawable/wallpaper_beach.jpg
rename to res/drawable-mdpi/wallpaper_beach.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_beach_small.jpg b/res/drawable-mdpi/wallpaper_beach_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_beach_small.jpg
rename to res/drawable-mdpi/wallpaper_beach_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_blue.jpg b/res/drawable-mdpi/wallpaper_blue.jpg
similarity index 100%
rename from res/drawable/wallpaper_blue.jpg
rename to res/drawable-mdpi/wallpaper_blue.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_blue_small.jpg b/res/drawable-mdpi/wallpaper_blue_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_blue_small.jpg
rename to res/drawable-mdpi/wallpaper_blue_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_green.jpg b/res/drawable-mdpi/wallpaper_green.jpg
similarity index 100%
rename from res/drawable/wallpaper_green.jpg
rename to res/drawable-mdpi/wallpaper_green.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_green_small.jpg b/res/drawable-mdpi/wallpaper_green_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_green_small.jpg
rename to res/drawable-mdpi/wallpaper_green_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_grey.jpg b/res/drawable-mdpi/wallpaper_grey.jpg
similarity index 100%
rename from res/drawable/wallpaper_grey.jpg
rename to res/drawable-mdpi/wallpaper_grey.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_grey_small.jpg b/res/drawable-mdpi/wallpaper_grey_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_grey_small.jpg
rename to res/drawable-mdpi/wallpaper_grey_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_jellyfish.jpg b/res/drawable-mdpi/wallpaper_jellyfish.jpg
similarity index 100%
rename from res/drawable/wallpaper_jellyfish.jpg
rename to res/drawable-mdpi/wallpaper_jellyfish.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_jellyfish_small.jpg b/res/drawable-mdpi/wallpaper_jellyfish_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_jellyfish_small.jpg
rename to res/drawable-mdpi/wallpaper_jellyfish_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_lake.jpg b/res/drawable-mdpi/wallpaper_lake.jpg
similarity index 100%
rename from res/drawable/wallpaper_lake.jpg
rename to res/drawable-mdpi/wallpaper_lake.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_lake_small.jpg b/res/drawable-mdpi/wallpaper_lake_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_lake_small.jpg
rename to res/drawable-mdpi/wallpaper_lake_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_mountain.jpg b/res/drawable-mdpi/wallpaper_mountain.jpg
similarity index 100%
rename from res/drawable/wallpaper_mountain.jpg
rename to res/drawable-mdpi/wallpaper_mountain.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_mountain_small.jpg b/res/drawable-mdpi/wallpaper_mountain_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_mountain_small.jpg
rename to res/drawable-mdpi/wallpaper_mountain_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_path.jpg b/res/drawable-mdpi/wallpaper_path.jpg
similarity index 100%
rename from res/drawable/wallpaper_path.jpg
rename to res/drawable-mdpi/wallpaper_path.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_path_small.jpg b/res/drawable-mdpi/wallpaper_path_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_path_small.jpg
rename to res/drawable-mdpi/wallpaper_path_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_pink.jpg b/res/drawable-mdpi/wallpaper_pink.jpg
similarity index 100%
rename from res/drawable/wallpaper_pink.jpg
rename to res/drawable-mdpi/wallpaper_pink.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_pink_small.jpg b/res/drawable-mdpi/wallpaper_pink_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_pink_small.jpg
rename to res/drawable-mdpi/wallpaper_pink_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_road.jpg b/res/drawable-mdpi/wallpaper_road.jpg
similarity index 100%
rename from res/drawable/wallpaper_road.jpg
rename to res/drawable-mdpi/wallpaper_road.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_road_small.jpg b/res/drawable-mdpi/wallpaper_road_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_road_small.jpg
rename to res/drawable-mdpi/wallpaper_road_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_snow_leopard.jpg b/res/drawable-mdpi/wallpaper_snow_leopard.jpg
similarity index 100%
rename from res/drawable/wallpaper_snow_leopard.jpg
rename to res/drawable-mdpi/wallpaper_snow_leopard.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_snow_leopard_small.jpg b/res/drawable-mdpi/wallpaper_snow_leopard_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_snow_leopard_small.jpg
rename to res/drawable-mdpi/wallpaper_snow_leopard_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_sunrise.jpg b/res/drawable-mdpi/wallpaper_sunrise.jpg
similarity index 100%
rename from res/drawable/wallpaper_sunrise.jpg
rename to res/drawable-mdpi/wallpaper_sunrise.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_sunrise_small.jpg b/res/drawable-mdpi/wallpaper_sunrise_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_sunrise_small.jpg
rename to res/drawable-mdpi/wallpaper_sunrise_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_sunset.jpg b/res/drawable-mdpi/wallpaper_sunset.jpg
similarity index 100%
rename from res/drawable/wallpaper_sunset.jpg
rename to res/drawable-mdpi/wallpaper_sunset.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_sunset_small.jpg b/res/drawable-mdpi/wallpaper_sunset_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_sunset_small.jpg
rename to res/drawable-mdpi/wallpaper_sunset_small.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_zanzibar.jpg b/res/drawable-mdpi/wallpaper_zanzibar.jpg
similarity index 100%
rename from res/drawable/wallpaper_zanzibar.jpg
rename to res/drawable-mdpi/wallpaper_zanzibar.jpg
Binary files differ
diff --git a/res/drawable/wallpaper_zanzibar_small.jpg b/res/drawable-mdpi/wallpaper_zanzibar_small.jpg
similarity index 100%
rename from res/drawable/wallpaper_zanzibar_small.jpg
rename to res/drawable-mdpi/wallpaper_zanzibar_small.jpg
Binary files differ
diff --git a/res/drawable-port/delete_handle.png b/res/drawable-port-mdpi/delete_handle.png
similarity index 100%
rename from res/drawable-port/delete_handle.png
rename to res/drawable-port-mdpi/delete_handle.png
Binary files differ
diff --git a/res/drawable-port/delete_handle_normal.png b/res/drawable-port-mdpi/delete_handle_normal.png
similarity index 100%
rename from res/drawable-port/delete_handle_normal.png
rename to res/drawable-port-mdpi/delete_handle_normal.png
Binary files differ
diff --git a/res/drawable-port/ic_delete.png b/res/drawable-port-mdpi/ic_delete.png
similarity index 100%
rename from res/drawable-port/ic_delete.png
rename to res/drawable-port-mdpi/ic_delete.png
Binary files differ
diff --git a/res/drawable-port/ic_tray_collapse.png b/res/drawable-port-mdpi/ic_tray_collapse.png
similarity index 100%
rename from res/drawable-port/ic_tray_collapse.png
rename to res/drawable-port-mdpi/ic_tray_collapse.png
Binary files differ
diff --git a/res/drawable-port/ic_tray_expand.png b/res/drawable-port-mdpi/ic_tray_expand.png
similarity index 100%
rename from res/drawable-port/ic_tray_expand.png
rename to res/drawable-port-mdpi/ic_tray_expand.png
Binary files differ
diff --git a/res/drawable-port/tray_handle_normal.png b/res/drawable-port-mdpi/tray_handle_normal.png
similarity index 100%
rename from res/drawable-port/tray_handle_normal.png
rename to res/drawable-port-mdpi/tray_handle_normal.png
Binary files differ
diff --git a/res/drawable-port/tray_handle_pressed.png b/res/drawable-port-mdpi/tray_handle_pressed.png
similarity index 100%
rename from res/drawable-port/tray_handle_pressed.png
rename to res/drawable-port-mdpi/tray_handle_pressed.png
Binary files differ
diff --git a/res/drawable-port/tray_handle_selected.png b/res/drawable-port-mdpi/tray_handle_selected.png
similarity index 100%
rename from res/drawable-port/tray_handle_selected.png
rename to res/drawable-port-mdpi/tray_handle_selected.png
Binary files differ
diff --git a/res/drawable/placeholder_google.png b/res/drawable/placeholder_google.png
deleted file mode 100644
index e852909..0000000
--- a/res/drawable/placeholder_google.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/wallpaper_frog.jpg b/res/drawable/wallpaper_frog.jpg
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable/wallpaper_frog.jpg
+++ /dev/null
diff --git a/res/drawable/wallpaper_frog_small.jpg b/res/drawable/wallpaper_frog_small.jpg
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable/wallpaper_frog_small.jpg
+++ /dev/null
diff --git a/res/drawable/wallpaper_turtle.jpg b/res/drawable/wallpaper_turtle.jpg
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable/wallpaper_turtle.jpg
+++ /dev/null
diff --git a/res/drawable/wallpaper_turtle_small.jpg b/res/drawable/wallpaper_turtle_small.jpg
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable/wallpaper_turtle_small.jpg
+++ /dev/null
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 8214863..2fc5cb7 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -42,7 +42,7 @@
android:layout_height="fill_parent"
android:orientation="horizontal"
- android:bottomOffset="7dip"
+ android:bottomOffset="4dip"
android:handle="@+id/all_apps"
android:content="@+id/content">
diff --git a/res/layout-land/live_folder_grid.xml b/res/layout-land/live_folder_grid.xml
index bb623b0..ab06091 100644
--- a/res/layout-land/live_folder_grid.xml
+++ b/res/layout-land/live_folder_grid.xml
@@ -21,7 +21,7 @@
android:orientation="vertical">
<Button
- android:id="@+id/close"
+ android:id="@+id/folder_close"
android:background="@drawable/box_launcher_top"
android:gravity="left|center_vertical"
android:textSize="14sp"
@@ -31,7 +31,7 @@
android:layout_height="wrap_content" />
<GridView
- android:id="@id/content"
+ android:id="@+id/folder_content"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
diff --git a/res/layout-land/user_folder.xml b/res/layout-land/user_folder.xml
index fbf337b..0eba315 100644
--- a/res/layout-land/user_folder.xml
+++ b/res/layout-land/user_folder.xml
@@ -18,7 +18,7 @@
android:orientation="vertical">
<Button
- android:id="@+id/close"
+ android:id="@+id/folder_close"
android:background="@drawable/box_launcher_top"
android:gravity="left|center_vertical"
android:textSize="14sp"
@@ -28,7 +28,7 @@
android:layout_height="wrap_content" />
<GridView
- android:id="@id/content"
+ android:id="@id/folder_content"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 7dcacd6..9370e7d 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -42,7 +42,7 @@
android:layout_height="fill_parent"
android:topOffset="5dip"
- android:bottomOffset="7dip"
+ android:bottomOffset="4dip"
android:handle="@+id/all_apps"
android:content="@+id/content">
diff --git a/res/layout-port/live_folder_grid.xml b/res/layout-port/live_folder_grid.xml
index e5bcafe..096d6b4 100644
--- a/res/layout-port/live_folder_grid.xml
+++ b/res/layout-port/live_folder_grid.xml
@@ -21,7 +21,7 @@
android:orientation="vertical">
<Button
- android:id="@+id/close"
+ android:id="@+id/folder_close"
android:background="@drawable/box_launcher_top"
android:gravity="left|center_vertical"
android:textSize="14sp"
@@ -31,7 +31,7 @@
android:layout_height="wrap_content" />
<GridView
- android:id="@id/content"
+ android:id="@id/folder_content"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
diff --git a/res/layout-port/user_folder.xml b/res/layout-port/user_folder.xml
index 27d70fc..47ce910 100644
--- a/res/layout-port/user_folder.xml
+++ b/res/layout-port/user_folder.xml
@@ -18,7 +18,7 @@
android:orientation="vertical">
<Button
- android:id="@+id/close"
+ android:id="@+id/folder_close"
android:background="@drawable/box_launcher_top"
android:gravity="left|center_vertical"
android:textSize="14sp"
@@ -28,7 +28,7 @@
android:layout_height="wrap_content" />
<GridView
- android:id="@id/content"
+ android:id="@id/folder_content"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
diff --git a/res/layout/application_list.xml b/res/layout/application_list.xml
index 230a951..30539cc 100644
--- a/res/layout/application_list.xml
+++ b/res/layout/application_list.xml
@@ -26,11 +26,10 @@
android:orientation="horizontal">
<ImageView android:id="@+id/icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="@android:dimen/app_icon_size"
+ android:layout_height="@android:dimen/app_icon_size"
android:layout_gravity="center_vertical"
-
- android:scaleType="center" />
+ android:scaleType="fitCenter" />
<LinearLayout
android:layout_width="0dip"
diff --git a/res/layout/live_folder_list.xml b/res/layout/live_folder_list.xml
index f96a190..ab7bcf2 100644
--- a/res/layout/live_folder_list.xml
+++ b/res/layout/live_folder_list.xml
@@ -21,7 +21,7 @@
android:orientation="vertical">
<Button
- android:id="@+id/close"
+ android:id="@+id/folder_close"
android:background="@drawable/box_launcher_top"
android:gravity="left|center_vertical"
android:textSize="14sp"
@@ -31,7 +31,7 @@
android:layout_height="wrap_content" />
<ListView
- android:id="@id/content"
+ android:id="@id/folder_content"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 6551740..8895693 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Nastavit tapetu"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galerie tapet"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Aplikace není v telefonu nainstalována."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurace..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Název složky"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Přejmenovat složku"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Rámeček fotografie"</string>
<string name="add_search" msgid="7104834713685095105">"Vyhledávání"</string>
<string name="out_of_space" msgid="8365249326091984698">"Na této ploše již není místo."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Byl vytvořen zástupce %s."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Zástupce %s byl odebrán."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Zástupce %s již existuje."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl vytvořen."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl odebrán."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Zástupce <xliff:g id="NAME">%s</xliff:g> již existuje."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Vyberte zástupce"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Vybrat složku"</string>
<string name="menu_add" msgid="3065046628354640854">"Přidat"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index dae2499..70c9d20 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Angiv tapet"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Tapetgalleri"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Programmet er ikke installeret på din telefon."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurer ..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Omdøb mappe"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Billedramme"</string>
<string name="add_search" msgid="7104834713685095105">"Søg"</string>
<string name="out_of_space" msgid="8365249326091984698">"Der er ikke mere plads på Startskærmen."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Genvejen \"%s\" blev oprettet."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Genvejen \"%s\" blev fjernet."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Genvejen \"%s\" findes allerede."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev oprettet."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev fjernet."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" findes allerede."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Vælg genvej"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Vælg mappe"</string>
<string name="menu_add" msgid="3065046628354640854">"Tilføj"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3676eba..a6c8b3f 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Hintergrund festlegen"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galerie"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Anwendung ist nicht auf dem Telefon installiert."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurieren..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Ordnername"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Ordner umbenennen"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Bildrahmen"</string>
<string name="add_search" msgid="7104834713685095105">"Suchen"</string>
<string name="out_of_space" msgid="8365249326091984698">"Auf dem Startbildschirm ist kein Platz mehr vorhanden."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Verknüpfung \"%s\" erstellt"</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Verknüpfung \"%s\" wurde entfernt."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Verknüpfung \"%s\" ist bereits vorhanden."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde erstellt."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde entfernt."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung ist bereits vorhanden."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Tastenkürzel auswählen"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Ordner auswählen"</string>
<string name="menu_add" msgid="3065046628354640854">"Hinzufügen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 091f3fd..6466262 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Ορισμός ταπετσαρίας"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Συλλογή ταπετσαριών"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Η εφαρμογή δεν έχει εγκατασταθεί στο τηλέφωνό σας."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Διαμόρφωση..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Όνομα φακέλου"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Μετονομασία φακέλου"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Πλαίσιο εικόνας"</string>
<string name="add_search" msgid="7104834713685095105">"Αναζήτηση"</string>
<string name="out_of_space" msgid="8365249326091984698">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Δημιουργήθηκε η συντόμευση \"%s\"."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Η συντόμευση \"%s\" καταργήθηκε."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Η συντόμευση \"%s\" υπάρχει ήδη."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Δημιουργήθηκε η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\" καταργήθηκε."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\" υπάρχει ήδη."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Επιλογή συντόμευσης"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Επιλογή φακέλου"</string>
<string name="menu_add" msgid="3065046628354640854">"Προσθήκη"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 015b48f..6b41373 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel tapiz"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galería de papel tapiz"</string>
<string name="activity_not_found" msgid="3571057450431950427">"La aplicación no está instalada en tu computadora."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
<string name="rename_action" msgid="6016003384693240896">"Aceptar"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Marco de imagen"</string>
<string name="add_search" msgid="7104834713685095105">"Buscar"</string>
<string name="out_of_space" msgid="8365249326091984698">"No hay más espacio en esta pantalla de la página principal"</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"El acceso directo \"%s\" ha sido creado."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"El acceso directo \"%s\" ha sido eliminado."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"El acceso directo \"%s\" ya existe."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" creado."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ha sido eliminado."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ya existe."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Seleccionar acceso directo"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Seleccionar carpeta"</string>
<string name="menu_add" msgid="3065046628354640854">"Agregar"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b9832a6..2cef42d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Establecer fondo de pantalla"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galería de fondos de pantalla"</string>
<string name="activity_not_found" msgid="3571057450431950427">"La aplicación no está instalada en el teléfono."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
<string name="rename_action" msgid="6016003384693240896">"Aceptar"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Picture frame"</string>
<string name="add_search" msgid="7104834713685095105">"Búsqueda de Google"</string>
<string name="out_of_space" msgid="8365249326091984698">"No queda espacio en esta pantalla de página principal."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Se ha creado el acceso directo \"%s\"."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Se ha eliminado el acceso directo \"%s\"."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"El acceso directo \"%s\" ya existe."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Se ha creado el acceso directo \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Se ha eliminado el acceso directo \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ya existe."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Seleccionar acceso directo"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Seleccionar carpeta"</string>
<string name="menu_add" msgid="3065046628354640854">"Añadir"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f912473..4293d16 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Sélectionner"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galerie"</string>
<string name="activity_not_found" msgid="3571057450431950427">"L\'application n\'est pas installée sur votre téléphone."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configurer..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nom du dossier"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Renommer le dossier"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Cadre d\'image"</string>
<string name="add_search" msgid="7104834713685095105">"Recherche"</string>
<string name="out_of_space" msgid="8365249326091984698">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Raccourci \"%s\" créé."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Le raccourci \"%s\" a été supprimé."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Le raccourci \"%s\" existe déjà."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été créé."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été supprimé."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" existe déjà."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Sélectionner un raccourci"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Sélectionner le dossier"</string>
<string name="menu_add" msgid="3065046628354640854">"Ajouter"</string>
diff --git a/res/values-hdpi/wallpapers.xml b/res/values-hdpi/wallpapers.xml
new file mode 100644
index 0000000..352a626
--- /dev/null
+++ b/res/values-hdpi/wallpapers.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<resources>
+ <string-array name="wallpapers" translatable="false">
+ <item>wallpaper_bentgrass</item>
+ <item>wallpaper_canyon</item>
+ <item>wallpaper_despair</item>
+ <item>wallpaper_electric</item>
+ <item>wallpaper_goldengate</item>
+ <item>wallpaper_grass</item>
+ <item>wallpaper_jellyfish</item>
+ <item>wallpaper_leaves</item>
+ <item>wallpaper_monumentvalley</item>
+ <item>wallpaper_paradise</item>
+ <item>wallpaper_rainbokeh</item>
+ <item>wallpaper_ricefield</item>
+ <item>wallpaper_sunset</item>
+ <item>wallpaper_tree</item>
+ <item>wallpaper_valley</item>
+ </string-array>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 5db6825..f13daa1 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Imposta sfondo"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galleria sfondi"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Applicazione non installata sul telefono."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configura..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nome cartella"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Rinomina cartella"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Cornice immagini"</string>
<string name="add_search" msgid="7104834713685095105">"Ricerca"</string>
<string name="out_of_space" msgid="8365249326091984698">"Spazio nella schermata Home esaurito."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Collegamento \"%s\" creato."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"La scorciatoia \"%s\" è stata rimossa."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Scorciatoia \"%s\" già presente."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Collegamento \"<xliff:g id="NAME">%s</xliff:g>\" creato."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Il collegamento \"<xliff:g id="NAME">%s</xliff:g>\" è stato rimosso."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Collegamento \"<xliff:g id="NAME">%s</xliff:g>\" già presente."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Seleziona collegamento"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Seleziona cartella"</string>
<string name="menu_add" msgid="3065046628354640854">"Aggiungi"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d6eb7ab..defc4cf 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"壁紙に設定"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"壁紙ギャラリー"</string>
<string name="activity_not_found" msgid="3571057450431950427">"アプリケーションがインストールされていません。"</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"設定..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"フォルダ名"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"フォルダ名を変更"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"写真フレーム"</string>
<string name="add_search" msgid="7104834713685095105">"検索"</string>
<string name="out_of_space" msgid="8365249326091984698">"ホーム画面に空きスペースがありません。"</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"ショートカット「%s」を作成しました。"</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"ショートカット「%s」が削除されました。"</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"ショートカット「%s」は既に存在します。"</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を作成しました。"</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を削除しました。"</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」は既に存在します。"</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"ショートカットを選択"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"フォルダの選択"</string>
<string name="menu_add" msgid="3065046628354640854">"追加"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 451051a..be4657e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"배경화면 설정"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"배경화면 갤러리"</string>
<string name="activity_not_found" msgid="3571057450431950427">"휴대전화에 설치되어 있지 않은 응용프로그램입니다."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"구성..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"폴더 이름"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"폴더 이름 바꾸기"</string>
<string name="rename_action" msgid="6016003384693240896">"확인"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"사진 프레임"</string>
<string name="add_search" msgid="7104834713685095105">"검색"</string>
<string name="out_of_space" msgid="8365249326091984698">"홈 화면에 더 이상 공간이 없습니다."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"바로가기(\'%s\')가 생성되었습니다."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"바로가기(\'%s\')가 삭제되었습니다."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"바로가기(\'%s\')가 이미 있습니다."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 생성되었습니다."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 삭제되었습니다."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 이미 있습니다."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"바로가기 선택"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"폴더 선택"</string>
<string name="menu_add" msgid="3065046628354640854">"추가"</string>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
new file mode 100644
index 0000000..00ec58d
--- /dev/null
+++ b/res/values-land/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <dimen name="search_widget_inset">19dip</dimen>
+ <dimen name="gesture_thumbnail_inset">8dip</dimen>
+ <dimen name="gesture_thumbnail_size">64dip</dimen>
+ <dimen name="cell_width">106dip</dimen>
+ <dimen name="cell_height">74dip</dimen>
+</resources>
diff --git a/res/values-mdpi/wallpapers.xml b/res/values-mdpi/wallpapers.xml
new file mode 100644
index 0000000..33039b0
--- /dev/null
+++ b/res/values-mdpi/wallpapers.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<resources>
+ <string-array name="wallpapers" translatable="false">
+ <item>wallpaper_lake</item>
+ <item>wallpaper_sunset</item>
+ <item>wallpaper_beach</item>
+ <item>wallpaper_snow_leopard</item>
+ <item>wallpaper_path</item>
+ <item>wallpaper_sunrise</item>
+ <item>wallpaper_mountain</item>
+ <item>wallpaper_road</item>
+ <item>wallpaper_jellyfish</item>
+ <item>wallpaper_zanzibar</item>
+ <item>wallpaper_blue</item>
+ <item>wallpaper_grey</item>
+ <item>wallpaper_green</item>
+ <item>wallpaper_pink</item>
+ </string-array>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 369252b..e9f39d3 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Velg bakgrunnsbilde"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Bildegalleri"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Applikasjonen er ikke installert."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurer"</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Gi nytt navn til mappe"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Bilderamme"</string>
<string name="add_search" msgid="7104834713685095105">"Søk"</string>
<string name="out_of_space" msgid="8365249326091984698">"Ikke nok plass på skrivebordet."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Opprettet snarveien «%s»."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Fjernet snarveien «%s»."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Snarveien «%s» finnes allerede."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Opprettet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Fjernet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Snarveien «<xliff:g id="NAME">%s</xliff:g>» finnes allerede."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Velg snarvei"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Velg mappe"</string>
<string name="menu_add" msgid="3065046628354640854">"Legg til"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index af98a01..5640d61 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Achtergrond instellen"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Achtergrondgalerij"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Deze toepassing is niet geïnstalleerd op uw telefoon."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configureren..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Mapnaam"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Naam van map wijzigen"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Fotolijstje"</string>
<string name="add_search" msgid="7104834713685095105">"Zoeken"</string>
<string name="out_of_space" msgid="8365249326091984698">"Er is geen ruimte meer op dit startscherm."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Snelkoppeling \'%s\' gemaakt."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Snelkoppeling \'%s\' is verwijderd."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Snelkoppeling \'%s\' bestaat al."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is gemaakt."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is verwijderd."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' bestaat al."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Snelkoppeling selecteren"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Map selecteren"</string>
<string name="menu_add" msgid="3065046628354640854">"Toevoegen"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 769295a..57671e8 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Ustaw tapetę"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galeria tapet"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Aplikacja nie jest zainstalowana w telefonie."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfiguruj..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nazwa folderu"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Zmień nazwę folderu"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Ramka obrazu"</string>
<string name="add_search" msgid="7104834713685095105">"Wyszukiwarka"</string>
<string name="out_of_space" msgid="8365249326091984698">"Brak miejsca na tej stronie głównej"</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Utworzono skrót „%s”."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Skrót „%s” został usunięty."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Skrót „%s” już istnieje."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został utworzony."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został usunięty."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Skrót „<xliff:g id="NAME">%s</xliff:g>” już istnieje."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Wybierz skrót"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Wybierz folder"</string>
<string name="menu_add" msgid="3065046628354640854">"Dodaj"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5d355ad..1ee3725 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Definir imagem de fundo"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galeria de imagens de fundo"</string>
<string name="activity_not_found" msgid="3571057450431950427">"A aplicação não está instalada no telefone."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Mudar o nome da pasta"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Moldura de imagem"</string>
<string name="add_search" msgid="7104834713685095105">"Pesquisar"</string>
<string name="out_of_space" msgid="8365249326091984698">"Não existe espaço suficiente neste ecrã principal."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Atalho \"%s\" criado."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"O atalho \"%s\" foi removido."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"O atalho \"%s\" já existe."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi criado."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" já existe."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Seleccione o atalho"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Seleccione a pasta"</string>
<string name="menu_add" msgid="3065046628354640854">"Adicionar"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 65ea6de..9cf9f38 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel de parede"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Galeria de papel de parede"</string>
<string name="activity_not_found" msgid="3571057450431950427">"O aplicativo não está instalado no seu telefone."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Renomear pasta"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Frame da imagem"</string>
<string name="add_search" msgid="7104834713685095105">"Pesquisar"</string>
<string name="out_of_space" msgid="8365249326091984698">"Não há mais espaço nesta tela da Página inicial."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"O atalho \"%s\" foi criado."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"O atalho \"%s\" foi removido."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"O atalho \"%s\" já existe."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Atalho \"<xliff:g id="NAME">%s</xliff:g>\" criado."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" já existe."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Selecionar atalho"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Selecionar pasta"</string>
<string name="menu_add" msgid="3065046628354640854">"Adicionar"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8a231cc..c92630b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Установить обои"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Фотоальбом: обои"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Приложение не установлено на телефоне."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Настроить..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Название папки"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Переименовать папку"</string>
<string name="rename_action" msgid="6016003384693240896">"ОК"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Рамка фотографии"</string>
<string name="add_search" msgid="7104834713685095105">"Поиск"</string>
<string name="out_of_space" msgid="8365249326091984698">"На этом главном экране нет свободного места."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Клавиша быстрого вызова \"%s\" создана."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Клавиша быстрого вызова \"%s\" была удалена."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Клавиша быстрого вызова \"%s\" уже существует."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" создан"</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" удален."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" уже существует."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Выберите ярлык"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Выбор папки"</string>
<string name="menu_add" msgid="3065046628354640854">"Добавить"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index f59dc9e..07dc10f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Ange bakgrund"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Bakgrundsgalleri"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Programmet är inte installerat på din telefon."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurera..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Mappnamn"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Byt namn på mapp"</string>
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Bildram"</string>
<string name="add_search" msgid="7104834713685095105">"Sök"</string>
<string name="out_of_space" msgid="8365249326091984698">"Det finns inte plats för mer på den här startsidan."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"Genvägen %s har skapats."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"Genvägen %s har tagits bort."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"Genvägen %s finns redan."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har skapats."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har tagits bort."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" finns redan."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Välj genväg"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Välj mapp"</string>
<string name="menu_add" msgid="3065046628354640854">"Lägg till"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 947473b..0047271 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"Duvar kağıdını ayarla"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"Duvar kağıdı galerisi"</string>
<string name="activity_not_found" msgid="3571057450431950427">"Uygulama telefonunuza yüklenmemiş."</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"Yapılandır..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"Klasör adı"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"Klasörü yeniden adlandır"</string>
<string name="rename_action" msgid="6016003384693240896">"Tamam"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"Resim çerçevesi"</string>
<string name="add_search" msgid="7104834713685095105">"Arama"</string>
<string name="out_of_space" msgid="8365249326091984698">"Bu Ana ekranda başka yer yok."</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"\"%s\" kısayolu oluşturuldu."</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"\"%s\" kısayolu kaldırıldı."</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"\"%s\" kısayolu zaten var."</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu oluşturuldu."</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu kaldırıldı."</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu zaten var."</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"Kısayolu seçin"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"Klasörü seçin"</string>
<string name="menu_add" msgid="3065046628354640854">"Ekle"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 0fa7d53..3146747 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"设置壁纸"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"壁纸图库"</string>
<string name="activity_not_found" msgid="3571057450431950427">"您的手机上未安装应用程序。"</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"配置..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"文件夹名称"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"重命名文件夹"</string>
<string name="rename_action" msgid="6016003384693240896">"确定"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"相框"</string>
<string name="add_search" msgid="7104834713685095105">"搜索"</string>
<string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有更多空间。"</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"已创建快捷方式“%s”。"</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"已删除快捷方式“%s”。"</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"已有快捷方式“%s”。"</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已创建。"</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已删除。"</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已存在。"</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"选择快捷方式"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"选择文件夹"</string>
<string name="menu_add" msgid="3065046628354640854">"添加"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b5ccc5d..4f275d8 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -22,6 +22,7 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"設定桌布"</string>
<string name="pick_wallpaper" msgid="2674908923379130941">"桌布集"</string>
<string name="activity_not_found" msgid="3571057450431950427">"應用程式未安裝到手機。"</string>
+ <string name="configure_wallpaper" msgid="2820186271419674623">"設定..."</string>
<string name="rename_folder_label" msgid="5646236631298452787">"資料夾名稱"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"重新命名資料夾"</string>
<string name="rename_action" msgid="6016003384693240896">"確定"</string>
@@ -39,9 +40,9 @@
<string name="add_photo_frame" msgid="3154058437359487954">"相框"</string>
<string name="add_search" msgid="7104834713685095105">"搜尋"</string>
<string name="out_of_space" msgid="8365249326091984698">"首頁已無空間"</string>
- <string name="shortcut_installed" msgid="6179314539443046225">"已建立「%s」捷徑。"</string>
- <string name="shortcut_uninstalled" msgid="2758997515869993129">"已移除「%s」捷徑"</string>
- <string name="shortcut_duplicate" msgid="4887186782641532074">"已有「%s」捷徑。"</string>
+ <string name="shortcut_installed" msgid="7071557296331322355">"已建立「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
+ <string name="shortcut_uninstalled" msgid="2129499669449749995">"已移除「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
+ <string name="shortcut_duplicate" msgid="4757756326465060694">"已有「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
<string name="title_select_shortcut" msgid="2858897527672831763">"選取捷徑"</string>
<string name="title_select_live_folder" msgid="3753447798805166749">"選取資料夾"</string>
<string name="menu_add" msgid="3065046628354640854">"新增"</string>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 1fcad81..66da2f3 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -83,5 +83,8 @@
<attr name="screen" format="string" />
<attr name="x" format="string" />
<attr name="y" format="string" />
+ <attr name="icon" format="reference" />
+ <attr name="title" format="reference" />
+ <attr name="uri" format="string" />
</declare-styleable>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b802353..fbd5419 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -18,4 +18,6 @@
<dimen name="search_widget_inset">19dip</dimen>
<dimen name="gesture_thumbnail_inset">8dip</dimen>
<dimen name="gesture_thumbnail_size">64dip</dimen>
+ <dimen name="cell_width">80dip</dimen>
+ <dimen name="cell_height">100dip</dimen>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2796171..70ddea8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -34,6 +34,8 @@
<string name="pick_wallpaper">Wallpaper gallery</string>
<!-- Displayed when user selects a shortcut for an app that was uninstalled -->
<string name="activity_not_found">Application is not installed on your phone.</string>
+ <!-- List item for configuring the current wallpaper -->
+ <string name="configure_wallpaper">Configure...</string>
<!-- Folders -->
<skip />
@@ -75,11 +77,11 @@
<!-- Error message when user has filled a home screen, possibly not used -->
<string name="out_of_space">No more room on this Home screen.</string>
<!-- Message displayed when a shortcut is created by an external application -->
- <string name="shortcut_installed">Shortcut \"%s\" created.</string>
+ <string name="shortcut_installed">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" created.</string>
<!-- Message displayed when a shortcut is uninstalled by an external application -->
- <string name="shortcut_uninstalled">Shortcut \"%s\" was removed.</string>
+ <string name="shortcut_uninstalled">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" was removed.</string>
<!-- Message displayed when an external application attemps to create a shortcut that already exists -->
- <string name="shortcut_duplicate">Shortcut \"%s\" already exists.</string>
+ <string name="shortcut_duplicate">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" already exists.</string>
<!-- Title of dialog when user is selecting shortcut to add to homescreen -->
<string name="title_select_shortcut">Select shortcut</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6f4365f..24b99fa 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -18,11 +18,6 @@
-->
<resources>
- <style name="Theme" parent="android:Theme">
- <item name="android:windowBackground">@null</item>
- <item name="android:windowNoTitle">true</item>
- </style>
-
<style name="WorkspaceIcon">
<item name="android:textSize">13dip</item>
<item name="android:singleLine">true</item>
diff --git a/src/com/android/launcher/AddAdapter.java b/src/com/android/launcher/AddAdapter.java
index a6c889e..d10c10a 100644
--- a/src/com/android/launcher/AddAdapter.java
+++ b/src/com/android/launcher/AddAdapter.java
@@ -75,10 +75,10 @@
R.drawable.ic_launcher_appwidget, ITEM_APPWIDGET));
mItems.add(new ListItem(res, R.string.group_live_folders,
- R.drawable.ic_launcher_folder_live, ITEM_LIVE_FOLDER));
+ R.drawable.ic_launcher_add_folder, ITEM_LIVE_FOLDER));
mItems.add(new ListItem(res, R.string.group_wallpapers,
- R.drawable.ic_launcher_gallery, ITEM_WALLPAPER));
+ R.drawable.ic_launcher_wallpaper, ITEM_WALLPAPER));
}
diff --git a/src/com/android/launcher/AllAppsGridView.java b/src/com/android/launcher/AllAppsGridView.java
index b8f7902..723ee90 100644
--- a/src/com/android/launcher/AllAppsGridView.java
+++ b/src/com/android/launcher/AllAppsGridView.java
@@ -62,6 +62,11 @@
}
@Override
+ public boolean isOpaque() {
+ return !mTexture.hasAlpha();
+ }
+
+ @Override
protected void onFinishInflate() {
setOnItemClickListener(this);
setOnItemLongClickListener(this);
diff --git a/src/com/android/launcher/CellLayout.java b/src/com/android/launcher/CellLayout.java
index 73dbb3e..e53f2b3 100644
--- a/src/com/android/launcher/CellLayout.java
+++ b/src/com/android/launcher/CellLayout.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.res.TypedArray;
+import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
@@ -123,8 +124,7 @@
// Generate an id for each view, this assumes we have at most 256x256 cells
// per workspace screen
final LayoutParams cellParams = (LayoutParams) params;
- child.setId(((getId() & 0xFF) << 16) |
- (cellParams.cellX & 0xFF) << 8 | (cellParams.cellY & 0xFF));
+ cellParams.regenerateId = true;
super.addView(child, index, params);
}
@@ -344,6 +344,15 @@
findOccupiedCells(xCount, yCount, occupied, ignoreView);
}
+ return findAllVacantCellsFromOccupied(occupied, xCount, yCount);
+ }
+
+ /**
+ * Variant of findAllVacantCells that uses LauncerModel as its source rather than the
+ * views.
+ */
+ CellInfo findAllVacantCellsFromOccupied(boolean[][] occupied,
+ final int xCount, final int yCount) {
CellInfo cellInfo = new CellInfo();
cellInfo.cellX = -1;
@@ -401,16 +410,6 @@
}
/**
- * Given a point, return the cell that most closely encloses that point
- * @param x X coordinate of the point
- * @param y Y coordinate of the point
- * @param result Array of 2 ints to hold the x and y coordinate of the cell
- */
- void pointToCellRounded(int x, int y, int[] result) {
- pointToCellExact(x + (mCellWidth / 2), y + (mCellHeight / 2), result);
- }
-
- /**
* Given a cell coordinate, return the point that represents the upper left corner of that cell
*
* @param cellX X coordinate of the cell
@@ -496,6 +495,11 @@
lp.setup(cellWidth, cellHeight, mWidthGap, mHeightGap, longAxisStartPadding,
shortAxisStartPadding);
}
+
+ if (lp.regenerateId) {
+ child.setId(((getId() & 0xFF) << 16) | (lp.cellX & 0xFF) << 8 | (lp.cellY & 0xFF));
+ lp.regenerateId = false;
+ }
int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
int childheightMeasureSpec =
@@ -602,13 +606,15 @@
* @param targetXY Destination area to move to
*/
void onDropChild(View child, int[] targetXY) {
- LayoutParams lp = (LayoutParams) child.getLayoutParams();
- lp.cellX = targetXY[0];
- lp.cellY = targetXY[1];
- lp.isDragging = false;
- mDragRect.setEmpty();
- child.requestLayout();
- invalidate();
+ if (child != null) {
+ LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ lp.cellX = targetXY[0];
+ lp.cellY = targetXY[1];
+ lp.isDragging = false;
+ mDragRect.setEmpty();
+ child.requestLayout();
+ invalidate();
+ }
}
void onDropAborted(View child) {
@@ -631,49 +637,6 @@
}
/**
- * Drag a child over the specified position
- *
- * @param child The child that is being dropped
- * @param cellX The child's new x cell location
- * @param cellY The child's new y cell location
- */
- void onDragOverChild(View child, int cellX, int cellY) {
- int[] cellXY = mCellXY;
- pointToCellRounded(cellX, cellY, cellXY);
- LayoutParams lp = (LayoutParams) child.getLayoutParams();
- cellToRect(cellXY[0], cellXY[1], lp.cellHSpan, lp.cellVSpan, mDragRect);
- invalidate();
- }
-
- /**
- * Computes a bounding rectangle for a range of cells
- *
- * @param cellX X coordinate of upper left corner expressed as a cell position
- * @param cellY Y coordinate of upper left corner expressed as a cell position
- * @param cellHSpan Width in cells
- * @param cellVSpan Height in cells
- * @param dragRect Rectnagle into which to put the results
- */
- public void cellToRect(int cellX, int cellY, int cellHSpan, int cellVSpan, RectF dragRect) {
- final boolean portrait = mPortrait;
- final int cellWidth = mCellWidth;
- final int cellHeight = mCellHeight;
- final int widthGap = mWidthGap;
- final int heightGap = mHeightGap;
-
- final int hStartPadding = portrait ? mShortAxisStartPadding : mLongAxisStartPadding;
- final int vStartPadding = portrait ? mLongAxisStartPadding : mShortAxisStartPadding;
-
- int width = cellHSpan * cellWidth + ((cellHSpan - 1) * widthGap);
- int height = cellVSpan * cellHeight + ((cellVSpan - 1) * heightGap);
-
- int x = hStartPadding + cellX * (cellWidth + widthGap);
- int y = vStartPadding + cellY * (cellHeight + heightGap);
-
- dragRect.set(x, y, x + width, y + height);
- }
-
- /**
* Computes the required horizontal and vertical cell spans to always
* fit the given rectangle.
*
@@ -683,13 +646,15 @@
public int[] rectToCell(int width, int height) {
// Always assume we're working with the smallest span to make sure we
// reserve enough space in both orientations.
- int actualWidth = mCellWidth + mWidthGap;
- int actualHeight = mCellHeight + mHeightGap;
+ final Resources resources = getResources();
+ int actualWidth = resources.getDimensionPixelSize(R.dimen.cell_width);
+ int actualHeight = resources.getDimensionPixelSize(R.dimen.cell_height);
int smallerSize = Math.min(actualWidth, actualHeight);
-
+
// Always round up to next largest cell
int spanX = (width + smallerSize) / smallerSize;
int spanY = (height + smallerSize) / smallerSize;
+
return new int[] { spanX, spanY };
}
@@ -830,6 +795,8 @@
@ViewDebug.ExportedProperty
int y;
+ boolean regenerateId;
+
public LayoutParams(Context c, AttributeSet attrs) {
super(c, attrs);
cellHSpan = 1;
diff --git a/src/com/android/launcher/DragController.java b/src/com/android/launcher/DragController.java
index 29cf15a..93dbddb 100644
--- a/src/com/android/launcher/DragController.java
+++ b/src/com/android/launcher/DragController.java
@@ -66,14 +66,4 @@
* {@link #DRAG_ACTION_COPY}
*/
void startDrag(View v, DragSource source, Object info, int dragAction);
-
- /**
- * Sets the drag listner which will be notified when a drag starts or ends.
- */
- void setDragListener(DragListener l);
-
- /**
- * Remove a previously installed drag listener.
- */
- void removeDragListener(DragListener l);
}
diff --git a/src/com/android/launcher/DragLayer.java b/src/com/android/launcher/DragLayer.java
index 070c938..87bd87a 100644
--- a/src/com/android/launcher/DragLayer.java
+++ b/src/com/android/launcher/DragLayer.java
@@ -113,25 +113,8 @@
private DropTarget mLastDropTarget;
private final Paint mTrashPaint = new Paint();
- private final Paint mEstimatedPaint = new Paint();
private Paint mDragPaint;
- /**
- * If true, draw a "snag" showing where the object currently being dragged
- * would end up if dropped from current location.
- */
- private static final boolean DRAW_TARGET_SNAG = false;
-
- private Rect mEstimatedRect = new Rect();
- private float[] mDragCenter = new float[2];
- private float[] mEstimatedCenter = new float[2];
- private boolean mDrawEstimated = false;
-
- private int mTriggerWidth = -1;
- private int mTriggerHeight = -1;
-
- private static final int DISTANCE_DRAW_SNAG = 20;
-
private static final int ANIMATION_STATE_STARTING = 1;
private static final int ANIMATION_STATE_RUNNING = 2;
private static final int ANIMATION_STATE_DONE = 3;
@@ -161,9 +144,10 @@
// Make estimated paint area in gray
int snagColor = context.getResources().getColor(R.color.snag_callout_color);
- mEstimatedPaint.setColor(snagColor);
- mEstimatedPaint.setStrokeWidth(3);
- mEstimatedPaint.setAntiAlias(true);
+ Paint estimatedPaint = new Paint();
+ estimatedPaint.setColor(snagColor);
+ estimatedPaint.setStrokeWidth(3);
+ estimatedPaint.setAntiAlias(true);
}
@@ -209,9 +193,6 @@
int width = viewBitmap.getWidth();
int height = viewBitmap.getHeight();
- mTriggerWidth = width * 2 / 3;
- mTriggerHeight = height * 2 / 3;
-
Matrix scale = new Matrix();
float scaleFactor = v.getWidth();
scaleFactor = (scaleFactor + DRAG_SCALE) /scaleFactor;
@@ -288,12 +269,6 @@
break;
}
} else {
- // Only draw estimate drop "snag" when requested
- if (DRAW_TARGET_SNAG && mDrawEstimated) {
- canvas.drawLine(mDragCenter[0], mDragCenter[1], mEstimatedCenter[0], mEstimatedCenter[1], mEstimatedPaint);
- canvas.drawCircle(mEstimatedCenter[0], mEstimatedCenter[1], 8, mEstimatedPaint);
- }
-
// Draw actual icon being dragged
canvas.drawBitmap(mDragBitmap,
mScrollX + mLastMotionX - mTouchOffsetX - mBitmapOffsetX,
@@ -401,14 +376,6 @@
// Invalidate current icon position
rect.union(left - 1, top - 1, left + width + 1, top + height + 1);
- mDragCenter[0] = rect.centerX();
- mDragCenter[1] = rect.centerY();
-
- // Invalidate any old estimated location
- if (DRAW_TARGET_SNAG && mDrawEstimated) {
- rect.union(mEstimatedRect);
- }
-
final int[] coordinates = mDropCoordinates;
DropTarget dropTarget = findDropTarget((int) x, (int) y, coordinates);
if (dropTarget != null) {
@@ -430,30 +397,6 @@
}
}
- // Render estimated drop "snag" only outside of width
- mDrawEstimated = false;
- if (DRAW_TARGET_SNAG && dropTarget != null) {
- Rect foundEstimate = dropTarget.estimateDropLocation(mDragSource,
- (int) (scrollX + mLastMotionX), (int) (scrollY + mLastMotionY),
- (int) mTouchOffsetX, (int) mTouchOffsetY, mDragInfo, mEstimatedRect);
-
- if (foundEstimate != null) {
- mEstimatedCenter[0] = foundEstimate.centerX();
- mEstimatedCenter[1] = foundEstimate.centerY();
-
- int deltaX = (int) Math.abs(mEstimatedCenter[0] - mDragCenter[0]);
- int deltaY = (int) Math.abs(mEstimatedCenter[1] - mDragCenter[1]);
-
- if (deltaX > mTriggerWidth || deltaY > mTriggerHeight) {
- mDrawEstimated = true;
- }
- }
- }
-
- // Include new estimated area in invalidated rectangle
- if (DRAW_TARGET_SNAG && mDrawEstimated) {
- rect.union(mEstimatedRect);
- }
invalidate(rect);
mLastDropTarget = dropTarget;
@@ -584,6 +527,7 @@
mListener = l;
}
+ @SuppressWarnings({"UnusedDeclaration"})
public void removeDragListener(DragListener l) {
mListener = null;
}
@@ -615,7 +559,6 @@
public void run() {
if (mDragScroller != null) {
- mDrawEstimated = false;
if (mDirection == SCROLL_LEFT) {
mDragScroller.scrollLeft();
} else {
diff --git a/src/com/android/launcher/DragSource.java b/src/com/android/launcher/DragSource.java
index 0ac25bb..743352a 100644
--- a/src/com/android/launcher/DragSource.java
+++ b/src/com/android/launcher/DragSource.java
@@ -23,6 +23,5 @@
*
*/
public interface DragSource {
- void setDragger(DragController dragger);
void onDropCompleted(View target, boolean success);
}
diff --git a/src/com/android/launcher/DropTarget.java b/src/com/android/launcher/DropTarget.java
index 4835323..ef2f87c 100644
--- a/src/com/android/launcher/DropTarget.java
+++ b/src/com/android/launcher/DropTarget.java
@@ -59,23 +59,4 @@
* @return True if the drop will be accepted, false otherwise.
*/
boolean acceptDrop(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo);
-
- /**
- * Estimate the surface area where this object would land if dropped at the
- * given location.
- *
- * @param source DragSource where the drag started
- * @param x X coordinate of the drop location
- * @param y Y coordinate of the drop location
- * @param xOffset Horizontal offset with the object being dragged where the
- * original touch happened
- * @param yOffset Vertical offset with the object being dragged where the
- * original touch happened
- * @param dragInfo Data associated with the object being dragged
- * @param recycle {@link Rect} object to be possibly recycled.
- * @return Estimated area that would be occupied if object was dropped at
- * the given location. Should return null if no estimate is found,
- * or if this target doesn't provide estimations.
- */
- Rect estimateDropLocation(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo, Rect recycle);
}
diff --git a/src/com/android/launcher/Folder.java b/src/com/android/launcher/Folder.java
index fb4e8d6..0644f8b 100644
--- a/src/com/android/launcher/Folder.java
+++ b/src/com/android/launcher/Folder.java
@@ -47,7 +47,6 @@
* Which item is being dragged
*/
protected ApplicationInfo mDragItem;
- private boolean mCloneInfo;
/**
* Used to inflate the Workspace from XML.
@@ -64,11 +63,11 @@
protected void onFinishInflate() {
super.onFinishInflate();
- mContent = (AbsListView) findViewById(R.id.content);
+ mContent = (AbsListView) findViewById(R.id.folder_content);
mContent.setOnItemClickListener(this);
mContent.setOnItemLongClickListener(this);
- mCloseButton = (Button) findViewById(R.id.close);
+ mCloseButton = (Button) findViewById(R.id.folder_close);
mCloseButton.setOnClickListener(this);
mCloseButton.setOnLongClickListener(this);
}
@@ -94,9 +93,6 @@
}
ApplicationInfo app = (ApplicationInfo) parent.getItemAtPosition(position);
- if (mCloneInfo) {
- app = new ApplicationInfo(app);
- }
mDragger.startDrag(view, this, app, DragController.DRAG_ACTION_COPY);
mLauncher.closeFolder(this);
@@ -105,10 +101,6 @@
return true;
}
- void setCloneInfo(boolean cloneInfo) {
- mCloneInfo = cloneInfo;
- }
-
public void setDragger(DragController dragger) {
mDragger = dragger;
}
diff --git a/src/com/android/launcher/ItemInfo.java b/src/com/android/launcher/ItemInfo.java
index 71cee18..0962ef0 100644
--- a/src/com/android/launcher/ItemInfo.java
+++ b/src/com/android/launcher/ItemInfo.java
@@ -129,5 +129,5 @@
}
}
}
-
+
}
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index 710578f..b247542 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -18,12 +18,12 @@
import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Application;
import android.app.Dialog;
import android.app.ISearchManager;
-import android.app.IWallpaperService;
import android.app.SearchManager;
import android.app.StatusBarManager;
+import android.app.WallpaperInfo;
+import android.app.WallpaperManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -34,6 +34,7 @@
import android.content.IntentFilter;
import android.content.Intent.ShortcutIconResource;
import android.content.pm.ActivityInfo;
+import android.content.pm.LabeledIntent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
@@ -41,12 +42,10 @@
import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.os.Handler;
-import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.MessageQueue;
@@ -59,6 +58,7 @@
import android.text.TextUtils;
import android.text.method.TextKeyListener;
import static android.util.Log.*;
+import android.util.SparseArray;
import android.view.Display;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -96,8 +96,6 @@
private static final boolean PROFILE_ROTATE = false;
private static final boolean DEBUG_USER_INTERFACE = false;
- private static final int WALLPAPER_SCREENS_SPAN = 2;
-
private static final int MENU_GROUP_ADD = 1;
private static final int MENU_ADD = Menu.FIRST + 1;
private static final int MENU_WALLPAPER_SETTINGS = MENU_ADD + 1;
@@ -118,6 +116,7 @@
static final String EXTRA_CUSTOM_WIDGET = "custom_widget";
static final String SEARCH_WIDGET = "search_widget";
+ static final int WALLPAPER_SCREENS_SPAN = 2;
static final int SCREEN_COUNT = 3;
static final int DEFAULT_SCREN = 1;
static final int NUMBER_CELLS_X = 4;
@@ -157,15 +156,13 @@
private static final LauncherModel sModel = new LauncherModel();
- private static Bitmap sWallpaper;
-
private static final Object sLock = new Object();
private static int sScreen = DEFAULT_SCREN;
- private static WallpaperIntentReceiver sWallpaperReceiver;
-
private final BroadcastReceiver mApplicationsReceiver = new ApplicationsIntentReceiver();
+ private final BroadcastReceiver mCloseSystemDialogsReceiver = new CloseSystemDialogsIntentReceiver();
private final ContentObserver mObserver = new FavoritesChangeObserver();
+ private final ContentObserver mWidgetObserver = new AppWidgetResetObserver();
private LayoutInflater mInflater;
@@ -341,19 +338,14 @@
}
private void setWallpaperDimension() {
- IBinder binder = ServiceManager.getService(WALLPAPER_SERVICE);
- IWallpaperService wallpaperService = IWallpaperService.Stub.asInterface(binder);
+ WallpaperManager wpm = (WallpaperManager)getSystemService(WALLPAPER_SERVICE);
Display display = getWindowManager().getDefaultDisplay();
boolean isPortrait = display.getWidth() < display.getHeight();
final int width = isPortrait ? display.getWidth() : display.getHeight();
final int height = isPortrait ? display.getHeight() : display.getWidth();
- try {
- wallpaperService.setDimensionHints(width * WALLPAPER_SCREENS_SPAN, height);
- } catch (RemoteException e) {
- // System is dead!
- }
+ wpm.suggestDesiredDimensions(width * WALLPAPER_SCREENS_SPAN, height);
}
@Override
@@ -561,7 +553,6 @@
workspace.setOnLongClickListener(this);
workspace.setDragger(dragLayer);
workspace.setLauncher(this);
- loadWallpaper();
deleteZone.setLauncher(this);
deleteZone.setDragController(dragLayer);
@@ -788,35 +779,39 @@
return info;
}
+ void closeSystemDialogs() {
+ getWindow().closeAllPanels();
+
+ try {
+ dismissDialog(DIALOG_CREATE_SHORTCUT);
+ // Unlock the workspace if the dialog was showing
+ mWorkspace.unlock();
+ } catch (Exception e) {
+ // An exception is thrown if the dialog is not visible, which is fine
+ }
+
+ try {
+ dismissDialog(DIALOG_RENAME_FOLDER);
+ // Unlock the workspace if the dialog was showing
+ mWorkspace.unlock();
+ } catch (Exception e) {
+ // An exception is thrown if the dialog is not visible, which is fine
+ }
+ }
+
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// Close the menu
if (Intent.ACTION_MAIN.equals(intent.getAction())) {
- getWindow().closeAllPanels();
+ closeSystemDialogs();
// Set this flag so that onResume knows to close the search dialog if it's open,
// because this was a new intent (thus a press of 'home' or some such) rather than
// for example onResume being called when the user pressed the 'back' button.
mIsNewIntent = true;
- try {
- dismissDialog(DIALOG_CREATE_SHORTCUT);
- // Unlock the workspace if the dialog was showing
- mWorkspace.unlock();
- } catch (Exception e) {
- // An exception is thrown if the dialog is not visible, which is fine
- }
-
- try {
- dismissDialog(DIALOG_RENAME_FOLDER);
- // Unlock the workspace if the dialog was showing
- mWorkspace.unlock();
- } catch (Exception e) {
- // An exception is thrown if the dialog is not visible, which is fine
- }
-
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) !=
Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) {
@@ -840,12 +835,63 @@
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
- // Do not call super here
+ // NOTE: Do NOT do this. Ever. This is a terrible and horrifying hack.
+ //
+ // Home loads the content of the workspace on a background thread. This means that
+ // a previously focused view will be, after orientation change, added to the view
+ // hierarchy at an undeterminate time in the future. If we were to invoke
+ // super.onRestoreInstanceState() here, the focus restoration would fail because the
+ // view to focus does not exist yet.
+ //
+ // However, not invoking super.onRestoreInstanceState() is equally bad. In such a case,
+ // panels would not be restored properly. For instance, if the menu is open then the
+ // user changes the orientation, the menu would not be opened in the new orientation.
+ //
+ // To solve both issues Home messes up with the internal state of the bundle to remove
+ // the properties it does not want to see restored at this moment. After invoking
+ // super.onRestoreInstanceState(), it removes the panels state.
+ //
+ // Later, when the workspace is done loading, Home calls super.onRestoreInstanceState()
+ // again to restore focus and other view properties. It will not, however, restore
+ // the panels since at this point the panels' state has been removed from the bundle.
+ //
+ // This is a bad example, do not do this.
+ //
+ // If you are curious on how this code was put together, take a look at the following
+ // in Android's source code:
+ // - Activity.onRestoreInstanceState()
+ // - PhoneWindow.restoreHierarchyState()
+ // - PhoneWindow.DecorView.onAttachedToWindow()
+ //
+ // The source code of these various methods shows what states should be kept to
+ // achieve what we want here.
+
+ Bundle windowState = savedInstanceState.getBundle("android:viewHierarchyState");
+ SparseArray<Parcelable> savedStates = null;
+ int focusedViewId = View.NO_ID;
+
+ if (windowState != null) {
+ savedStates = windowState.getSparseParcelableArray("android:views");
+ windowState.remove("android:views");
+ focusedViewId = windowState.getInt("android:focusedViewId", View.NO_ID);
+ windowState.remove("android:focusedViewId");
+ }
+
+ super.onRestoreInstanceState(savedInstanceState);
+
+ if (windowState != null) {
+ windowState.putSparseParcelableArray("android:views", savedStates);
+ windowState.putInt("android:focusedViewId", focusedViewId);
+ windowState.remove("android:Panels");
+ }
+
mSavedInstanceState = savedInstanceState;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getCurrentScreen());
final ArrayList<Folder> folders = mWorkspace.getOpenFolders();
@@ -857,8 +903,6 @@
ids[i] = info.id;
}
outState.putLongArray(RUNTIME_STATE_USER_FOLDERS, ids);
- } else {
- super.onSaveInstanceState(outState);
}
final boolean isConfigurationChange = getChangingConfigurations() != 0;
@@ -910,7 +954,9 @@
sModel.abortLoaders();
getContentResolver().unregisterContentObserver(mObserver);
+ getContentResolver().unregisterContentObserver(mWidgetObserver);
unregisterReceiver(mApplicationsReceiver);
+ unregisterReceiver(mCloseSystemDialogsReceiver);
}
@Override
@@ -990,7 +1036,7 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- if (mDesktopLocked) return false;
+ if (mDesktopLocked && mSavedInstanceState == null) return false;
super.onCreateOptionsMenu(menu);
menu.add(MENU_GROUP_ADD, MENU_ADD, 0, R.string.menu_add)
@@ -1021,7 +1067,9 @@
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- mMenuAddInfo = mWorkspace.findAllVacantCells(null);
+ // We can't trust the view state here since views we may not be done binding.
+ // Get the vacancy state from the model instead.
+ mMenuAddInfo = mWorkspace.findAllVacantCellsFromModel();
menu.setGroupEnabled(MENU_GROUP_ADD, mMenuAddInfo != null && mMenuAddInfo.valid);
return true;
@@ -1268,7 +1316,18 @@
private void startWallpaper() {
final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
- startActivity(Intent.createChooser(pickWallpaper, getString(R.string.chooser_wallpaper)));
+ Intent chooser = Intent.createChooser(pickWallpaper,
+ getText(R.string.chooser_wallpaper));
+ WallpaperManager wm = (WallpaperManager)
+ getSystemService(Context.WALLPAPER_SERVICE);
+ WallpaperInfo wi = wm.getWallpaperInfo();
+ if (wi != null && wi.getSettingsActivity() != null) {
+ LabeledIntent li = new LabeledIntent(getPackageName(),
+ R.string.configure_wallpaper, 0);
+ li.setClassName(wi.getPackageName(), wi.getSettingsActivity());
+ chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { li });
+ }
+ startActivity(chooser);
}
/**
@@ -1277,22 +1336,13 @@
* wallpaper.
*/
private void registerIntentReceivers() {
- if (sWallpaperReceiver == null) {
- final Application application = getApplication();
-
- sWallpaperReceiver = new WallpaperIntentReceiver(application, this);
-
- IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
- application.registerReceiver(sWallpaperReceiver, filter);
- } else {
- sWallpaperReceiver.setLauncher(this);
- }
-
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
registerReceiver(mApplicationsReceiver, filter);
+ filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+ registerReceiver(mCloseSystemDialogsReceiver, filter);
}
/**
@@ -1302,6 +1352,8 @@
private void registerContentObservers() {
ContentResolver resolver = getContentResolver();
resolver.registerContentObserver(LauncherSettings.Favorites.CONTENT_URI, true, mObserver);
+ resolver.registerContentObserver(LauncherProvider.CONTENT_APPWIDGET_RESET_URI,
+ true, mWidgetObserver);
}
@Override
@@ -1309,11 +1361,20 @@
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
- mWorkspace.dispatchKeyEvent(event);
- if (mDrawer.isOpened()) {
- closeDrawer();
- } else {
- closeFolder();
+ return true;
+ case KeyEvent.KEYCODE_HOME:
+ return true;
+ }
+ } else if (event.getAction() == KeyEvent.ACTION_UP) {
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_BACK:
+ if (!event.isCanceled()) {
+ mWorkspace.dispatchKeyEvent(event);
+ if (mDrawer.isOpened()) {
+ closeDrawer();
+ } else {
+ closeFolder();
+ }
}
return true;
case KeyEvent.KEYCODE_HOME:
@@ -1367,6 +1428,13 @@
sModel.loadUserItems(false, this, false, false);
}
+ /**
+ * Re-listen when widgets are reset.
+ */
+ private void onAppWidgetReset() {
+ mAppWidgetHost.startListening();
+ }
+
void onDesktopItemsLoaded(ArrayList<ItemInfo> shortcuts,
ArrayList<LauncherAppWidgetInfo> appWidgets) {
if (mDestroyed) {
@@ -1559,10 +1627,6 @@
}
}
- DragController getDragController() {
- return mDragLayer;
- }
-
/**
* Launches the intent referred by the clicked shortcut.
*
@@ -1617,20 +1681,6 @@
}
}
- private void loadWallpaper() {
- // The first time the application is started, we load the wallpaper from
- // the ApplicationContext
- if (sWallpaper == null) {
- final Drawable drawable = getWallpaper();
- if (drawable instanceof BitmapDrawable) {
- sWallpaper = ((BitmapDrawable) drawable).getBitmap();
- } else {
- throw new IllegalStateException("The wallpaper must be a BitmapDrawable.");
- }
- }
- mWorkspace.loadWallpaper(sWallpaper);
- }
-
/**
* Opens the user fodler described by the specified tag. The opening of the folder
* is animated relative to the specified View. If the View is null, no animation
@@ -2044,6 +2094,16 @@
}
/**
+ * Receives notifications when applications are added/removed.
+ */
+ private class CloseSystemDialogsIntentReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ closeSystemDialogs();
+ }
+ }
+
+ /**
* Receives notifications whenever the user favorites have changed.
*/
private class FavoritesChangeObserver extends ContentObserver {
@@ -2058,39 +2118,16 @@
}
/**
- * Receives intents from other applications to change the wallpaper.
+ * Receives notifications whenever the appwidgets are reset.
*/
- private static class WallpaperIntentReceiver extends BroadcastReceiver {
- private final Application mApplication;
- private WeakReference<Launcher> mLauncher;
-
- WallpaperIntentReceiver(Application application, Launcher launcher) {
- mApplication = application;
- setLauncher(launcher);
- }
-
- void setLauncher(Launcher launcher) {
- mLauncher = new WeakReference<Launcher>(launcher);
+ private class AppWidgetResetObserver extends ContentObserver {
+ public AppWidgetResetObserver() {
+ super(new Handler());
}
@Override
- public void onReceive(Context context, Intent intent) {
- // Load the wallpaper from the ApplicationContext and store it locally
- // until the Launcher Activity is ready to use it
- final Drawable drawable = mApplication.getWallpaper();
- if (drawable instanceof BitmapDrawable) {
- sWallpaper = ((BitmapDrawable) drawable).getBitmap();
- } else {
- throw new IllegalStateException("The wallpaper must be a BitmapDrawable.");
- }
-
- // If Launcher is alive, notify we have a new wallpaper
- if (mLauncher != null) {
- final Launcher launcher = mLauncher.get();
- if (launcher != null) {
- launcher.loadWallpaper();
- }
- }
+ public void onChange(boolean selfChange) {
+ onAppWidgetReset();
}
}
diff --git a/src/com/android/launcher/LauncherModel.java b/src/com/android/launcher/LauncherModel.java
index d69bd13..25cbca3 100644
--- a/src/com/android/launcher/LauncherModel.java
+++ b/src/com/android/launcher/LauncherModel.java
@@ -48,7 +48,7 @@
* for the Launcher.
*/
public class LauncherModel {
- static final boolean DEBUG_LOADERS = true;
+ static final boolean DEBUG_LOADERS = false;
static final String LOG_TAG = "HomeLoaders";
private static final int UI_NOTIFICATION_RATE = 4;
@@ -476,7 +476,7 @@
Utilities.createIconThumbnail(info.activityInfo.loadIcon(manager), context);
application.filtered = false;
}
-
+
private static final AtomicInteger sAppsLoaderCount = new AtomicInteger(1);
private static final AtomicInteger sWorkspaceLoaderCount = new AtomicInteger(1);
@@ -1132,6 +1132,43 @@
}
/**
+ * Fills in the occupied structure with all of the shortcuts, apps, folders and widgets in
+ * the model.
+ */
+ void findAllOccupiedCells(boolean[][] occupied, int countX, int countY, int screen) {
+ final ArrayList<ItemInfo> desktopItems = mDesktopItems;
+ if (desktopItems != null) {
+ final int count = desktopItems.size();
+ for (int i = 0; i < count; i++) {
+ ItemInfo item = desktopItems.get(i);
+ addOccupiedCells(occupied, screen, desktopItems.get(i));
+ }
+ }
+
+ final ArrayList<LauncherAppWidgetInfo> desktopAppWidgets = mDesktopAppWidgets;
+ if (desktopAppWidgets != null) {
+ final int count = desktopAppWidgets.size();
+ for (int i = 0; i < count; i++) {
+ addOccupiedCells(occupied, screen, desktopAppWidgets.get(i));
+ }
+ }
+ }
+
+ /**
+ * Add the footprint of the specified item to the occupied array
+ */
+ private void addOccupiedCells(boolean[][] occupied, int screen,
+ ItemInfo item) {
+ if (item.screen == screen) {
+ for (int xx = item.cellX; xx < item.cellX + item.spanX; xx++) {
+ for (int yy = item.cellY; yy < item.cellY + item.spanY; yy++) {
+ occupied[xx][yy] = true;
+ }
+ }
+ }
+ }
+
+ /**
* @return The current list of applications
*/
ApplicationsAdapter getApplicationsAdapter() {
@@ -1139,20 +1176,6 @@
}
/**
- * @return The current list of desktop items
- */
- ArrayList<ItemInfo> getDesktopItems() {
- return mDesktopItems;
- }
-
- /**
- * @return The current list of desktop items
- */
- ArrayList<LauncherAppWidgetInfo> getDesktopAppWidgets() {
- return mDesktopAppWidgets;
- }
-
- /**
* Add an item to the desktop
* @param info
*/
@@ -1394,26 +1417,6 @@
}
/**
- * Add an item to the database in a specified container. Sets the container, screen, cellX and
- * cellY fields of the item. Also assigns an ID to the item.
- */
- static boolean addGestureToDatabase(Context context, ItemInfo item, boolean notify) {
- final ContentValues values = new ContentValues();
- final ContentResolver cr = context.getContentResolver();
-
- item.onAddToDatabase(values);
-
- Uri result = cr.insert(notify ? LauncherSettings.Gestures.CONTENT_URI :
- LauncherSettings.Gestures.CONTENT_URI_NO_NOTIFICATION, values);
-
- if (result != null) {
- item.id = Integer.parseInt(result.getPathSegments().get(1));
- }
-
- return result != null;
- }
-
- /**
* Update an item to the database in a specified container.
*/
static void updateItemInDatabase(Context context, ItemInfo item) {
@@ -1447,84 +1450,4 @@
cr.delete(LauncherSettings.Favorites.CONTENT_URI,
LauncherSettings.Favorites.CONTAINER + "=" + info.id, null);
}
-
- static void deleteGestureFromDatabase(Context context, ItemInfo item) {
- final ContentResolver cr = context.getContentResolver();
-
- cr.delete(LauncherSettings.Gestures.getContentUri(item.id, false), null, null);
- }
-
- static void updateGestureInDatabase(Context context, ItemInfo item) {
- final ContentValues values = new ContentValues();
- final ContentResolver cr = context.getContentResolver();
-
- item.onAddToDatabase(values);
-
- cr.update(LauncherSettings.Gestures.getContentUri(item.id, false), values, null, null);
- }
-
-
- ApplicationInfo queryGesture(Context context, String id) {
- final ContentResolver contentResolver = context.getContentResolver();
- final PackageManager manager = context.getPackageManager();
- final Cursor c = contentResolver.query(
- LauncherSettings.Gestures.CONTENT_URI, null, LauncherSettings.Gestures._ID + "=?",
- new String[] { id }, null);
-
- ApplicationInfo info = null;
-
- try {
- final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures._ID);
- final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.INTENT);
- final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.TITLE);
- final int iconTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_TYPE);
- final int iconIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON);
- final int iconPackageIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_PACKAGE);
- final int iconResourceIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_RESOURCE);
- final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ITEM_TYPE);
-
- String intentDescription;
- Intent intent;
-
- if (c.moveToNext()) {
- int itemType = c.getInt(itemTypeIndex);
-
- switch (itemType) {
- case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
- case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
- intentDescription = c.getString(intentIndex);
- try {
- intent = Intent.parseUri(intentDescription, 0);
- } catch (java.net.URISyntaxException e) {
- return null;
- }
-
- if (itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
- info = getApplicationInfo(manager, intent, context);
- } else {
- info = getApplicationInfoShortcut(c, context, iconTypeIndex,
- iconPackageIndex, iconResourceIndex, iconIndex);
- }
-
- if (info == null) {
- info = new ApplicationInfo();
- info.icon = manager.getDefaultActivityIcon();
- }
-
- info.isGesture = true;
- info.title = c.getString(titleIndex);
- info.intent = intent;
- info.id = c.getLong(idIndex);
-
- break;
- }
- }
- } catch (Exception e) {
- w(LOG_TAG, "Could not load gesture with name " + id);
- } finally {
- c.close();
- }
-
- return info;
- }
}
diff --git a/src/com/android/launcher/LauncherProvider.java b/src/com/android/launcher/LauncherProvider.java
index fc38cdd..848cbdc 100644
--- a/src/com/android/launcher/LauncherProvider.java
+++ b/src/com/android/launcher/LauncherProvider.java
@@ -16,6 +16,9 @@
package com.android.launcher;
+import static android.util.Log.d;
+import static android.util.Log.w;
+
import android.appwidget.AppWidgetHost;
import android.content.ContentProvider;
import android.content.Context;
@@ -24,6 +27,7 @@
import android.content.ComponentName;
import android.content.ContentUris;
import android.content.ContentResolver;
+import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.content.res.TypedArray;
import android.content.pm.PackageManager;
@@ -42,6 +46,7 @@
import android.provider.Settings;
import java.io.IOException;
+import java.net.URISyntaxException;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParserException;
@@ -173,6 +178,7 @@
private static class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG_FAVORITES = "favorites";
private static final String TAG_FAVORITE = "favorite";
+ private static final String TAG_SHORTCUT = "shortcut";
private static final String TAG_CLOCK = "clock";
private static final String TAG_SEARCH = "search";
@@ -531,11 +537,13 @@
a.getString(R.styleable.Favorite_y));
if (TAG_FAVORITE.equals(name)) {
- added = addShortcut(db, values, a, packageManager, intent);
+ added = addAppShortcut(db, values, a, packageManager, intent);
} else if (TAG_SEARCH.equals(name)) {
added = addSearchWidget(db, values);
} else if (TAG_CLOCK.equals(name)) {
added = addClockWidget(db, values);
+ } else if (TAG_SHORTCUT.equals(name)) {
+ added = addShortcut(db, values, a);
}
if (added) i++;
@@ -551,7 +559,7 @@
return i;
}
- private boolean addShortcut(SQLiteDatabase db, ContentValues values, TypedArray a,
+ private boolean addAppShortcut(SQLiteDatabase db, ContentValues values, TypedArray a,
PackageManager packageManager, Intent intent) {
ActivityInfo info;
@@ -576,6 +584,42 @@
}
return true;
}
+
+ private boolean addShortcut(SQLiteDatabase db, ContentValues values, TypedArray a) {
+ Resources r = mContext.getResources();
+
+ final int iconResId = a.getResourceId(R.styleable.Favorite_icon, 0);
+ final int titleResId = a.getResourceId(R.styleable.Favorite_title, 0);
+
+ Intent intent = null;
+ String uri = null;
+ try {
+ uri = a.getString(R.styleable.Favorite_uri);
+ intent = Intent.parseUri(uri, 0);
+ } catch (URISyntaxException e) {
+ w(LauncherModel.LOG_TAG, "Shortcut has malformed uri: " + uri);
+ return false; // Oh well
+ }
+
+ if (iconResId == 0 || titleResId == 0) {
+ w(LauncherModel.LOG_TAG, "Shortcut is missing title or icon resource ID");
+ return false;
+ }
+
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ values.put(Favorites.INTENT, intent.toUri(0));
+ values.put(Favorites.TITLE, r.getString(titleResId));
+ values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_SHORTCUT);
+ values.put(Favorites.SPANX, 1);
+ values.put(Favorites.SPANY, 1);
+ values.put(Favorites.ICON_TYPE, Favorites.ICON_TYPE_RESOURCE);
+ values.put(Favorites.ICON_PACKAGE, mContext.getPackageName());
+ values.put(Favorites.ICON_RESOURCE, mContext.getResources().getResourceName(iconResId));
+
+ db.insert(TABLE_FAVORITES, null, values);
+
+ return true;
+ }
private boolean addSearchWidget(SQLiteDatabase db, ContentValues values) {
// Add a search box
diff --git a/src/com/android/launcher/LauncherSettings.java b/src/com/android/launcher/LauncherSettings.java
index 8cc2559..6c0e2e2 100644
--- a/src/com/android/launcher/LauncherSettings.java
+++ b/src/com/android/launcher/LauncherSettings.java
@@ -90,37 +90,6 @@
static final String ICON = "icon";
}
- static final class Gestures implements BaseLauncherColumns {
- /**
- * The content:// style URL for this table
- */
- static final Uri CONTENT_URI = Uri.parse("content://" +
- LauncherProvider.AUTHORITY + "/" + LauncherProvider.TABLE_GESTURES +
- "?" + LauncherProvider.PARAMETER_NOTIFY + "=true");
-
- /**
- * The content:// style URL for this table. When this Uri is used, no notification is
- * sent if the content changes.
- */
- static final Uri CONTENT_URI_NO_NOTIFICATION = Uri.parse("content://" +
- LauncherProvider.AUTHORITY + "/" + LauncherProvider.TABLE_GESTURES +
- "?" + LauncherProvider.PARAMETER_NOTIFY + "=false");
-
- /**
- * The content:// style URL for a given row, identified by its id.
- *
- * @param id The row id.
- * @param notify True to send a notification is the content changes.
- *
- * @return The unique content URL for the specified row.
- */
- static Uri getContentUri(long id, boolean notify) {
- return Uri.parse("content://" + LauncherProvider.AUTHORITY +
- "/" + LauncherProvider.TABLE_GESTURES + "/" + id + "?" +
- LauncherProvider.PARAMETER_NOTIFY + "=" + notify);
- }
- }
-
/**
* Favorites. When changing these values, be sure to update
* {@link com.android.settings.LauncherAppWidgetBinder} as needed.
diff --git a/src/com/android/launcher/UserFolderInfo.java b/src/com/android/launcher/UserFolderInfo.java
index 639894e..f5907f2 100644
--- a/src/com/android/launcher/UserFolderInfo.java
+++ b/src/com/android/launcher/UserFolderInfo.java
@@ -41,16 +41,7 @@
public void add(ApplicationInfo item) {
contents.add(item);
}
-
- /**
- * Remove an app or shortcut
- *
- * @param item
- */
- public void remove(ApplicationInfo item) {
- contents.remove(item);
- }
-
+
@Override
void onAddToDatabase(ContentValues values) {
super.onAddToDatabase(values);
diff --git a/src/com/android/launcher/Utilities.java b/src/com/android/launcher/Utilities.java
index 4a22cba..30a7893 100644
--- a/src/com/android/launcher/Utilities.java
+++ b/src/com/android/launcher/Utilities.java
@@ -25,7 +25,6 @@
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Paint;
import android.graphics.Rect;
-import android.util.DisplayMetrics;
import android.content.res.Resources;
import android.content.Context;
@@ -46,27 +45,6 @@
Paint.FILTER_BITMAP_FLAG));
}
- static Bitmap centerToFit(Bitmap bitmap, int width, int height, Context context) {
- final int bitmapWidth = bitmap.getWidth();
- final int bitmapHeight = bitmap.getHeight();
-
- if (bitmapWidth < width || bitmapHeight < height) {
- int color = context.getResources().getColor(R.color.window_background);
-
- Bitmap centered = Bitmap.createBitmap(bitmapWidth < width ? width : bitmapWidth,
- bitmapHeight < height ? height : bitmapHeight, Bitmap.Config.RGB_565);
- centered.setDensity(bitmap.getDensity());
- Canvas canvas = new Canvas(centered);
- canvas.drawColor(color);
- canvas.drawBitmap(bitmap, (width - bitmapWidth) / 2.0f, (height - bitmapHeight) / 2.0f,
- null);
-
- bitmap = centered;
- }
-
- return bitmap;
- }
-
/**
* Returns a Drawable representing the thumbnail of the specified Drawable.
* The size of the thumbnail is defined by the dimension
@@ -176,27 +154,40 @@
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
- if (width > 0 && height > 0 && (width < bitmapWidth || height < bitmapHeight)) {
- final float ratio = (float) bitmapWidth / bitmapHeight;
-
- if (bitmapWidth > bitmapHeight) {
- height = (int) (width / ratio);
- } else if (bitmapHeight > bitmapWidth) {
- width = (int) (height * ratio);
+ if (width > 0 && height > 0) {
+ if (width < bitmapWidth || height < bitmapHeight) {
+ final float ratio = (float) bitmapWidth / bitmapHeight;
+
+ if (bitmapWidth > bitmapHeight) {
+ height = (int) (width / ratio);
+ } else if (bitmapHeight > bitmapWidth) {
+ width = (int) (height * ratio);
+ }
+
+ final Bitmap.Config c = (width == sIconWidth && height == sIconHeight) ?
+ bitmap.getConfig() : Bitmap.Config.ARGB_8888;
+ final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);
+ final Canvas canvas = sCanvas;
+ final Paint paint = sPaint;
+ canvas.setBitmap(thumb);
+ paint.setDither(false);
+ paint.setFilterBitmap(true);
+ sBounds.set((sIconWidth - width) / 2, (sIconHeight - height) / 2, width, height);
+ sOldBounds.set(0, 0, bitmapWidth, bitmapHeight);
+ canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);
+ return thumb;
+ } else if (bitmapWidth < width || bitmapHeight < height) {
+ final Bitmap.Config c = Bitmap.Config.ARGB_8888;
+ final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);
+ final Canvas canvas = sCanvas;
+ final Paint paint = sPaint;
+ canvas.setBitmap(thumb);
+ paint.setDither(false);
+ paint.setFilterBitmap(true);
+ canvas.drawBitmap(bitmap, (sIconWidth - bitmapWidth) / 2,
+ (sIconHeight - bitmapHeight) / 2, paint);
+ return thumb;
}
-
- final Bitmap.Config c = (width == sIconWidth && height == sIconHeight) ?
- bitmap.getConfig() : Bitmap.Config.ARGB_8888;
- final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);
- final Canvas canvas = sCanvas;
- final Paint paint = sPaint;
- canvas.setBitmap(thumb);
- paint.setDither(false);
- paint.setFilterBitmap(true);
- sBounds.set((sIconWidth - width) / 2, (sIconHeight - height) / 2, width, height);
- sOldBounds.set(0, 0, bitmapWidth, bitmapHeight);
- canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);
- return thumb;
}
return bitmap;
diff --git a/src/com/android/launcher/WallpaperChooser.java b/src/com/android/launcher/WallpaperChooser.java
index c88a02a..09a9bf7 100644
--- a/src/com/android/launcher/WallpaperChooser.java
+++ b/src/com/android/launcher/WallpaperChooser.java
@@ -17,7 +17,13 @@
package com.android.launcher;
import android.app.Activity;
+import android.app.WallpaperManager;
+import android.content.res.Resources;
+import android.graphics.BitmapFactory;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -26,65 +32,24 @@
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
-import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
-import android.graphics.BitmapFactory;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.content.res.Resources;
import java.io.IOException;
-import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Collections;
public class WallpaperChooser extends Activity implements AdapterView.OnItemSelectedListener,
OnClickListener {
- private static final Integer[] THUMB_IDS = {
- R.drawable.wallpaper_lake_small,
- R.drawable.wallpaper_sunset_small,
- R.drawable.wallpaper_beach_small,
- R.drawable.wallpaper_snow_leopard_small,
- R.drawable.wallpaper_path_small,
- R.drawable.wallpaper_sunrise_small,
- R.drawable.wallpaper_mountain_small,
- R.drawable.wallpaper_road_small,
- R.drawable.wallpaper_jellyfish_small,
- R.drawable.wallpaper_zanzibar_small,
- R.drawable.wallpaper_blue_small,
- R.drawable.wallpaper_grey_small,
- R.drawable.wallpaper_green_small,
- R.drawable.wallpaper_pink_small,
- };
-
- private static final Integer[] IMAGE_IDS = {
- R.drawable.wallpaper_lake,
- R.drawable.wallpaper_sunset,
- R.drawable.wallpaper_beach,
- R.drawable.wallpaper_snow_leopard,
- R.drawable.wallpaper_path,
- R.drawable.wallpaper_sunrise,
- R.drawable.wallpaper_mountain,
- R.drawable.wallpaper_road,
- R.drawable.wallpaper_jellyfish,
- R.drawable.wallpaper_zanzibar,
- R.drawable.wallpaper_blue,
- R.drawable.wallpaper_grey,
- R.drawable.wallpaper_green,
- R.drawable.wallpaper_pink,
- };
-
private Gallery mGallery;
private ImageView mImageView;
private boolean mIsWallpaperSet;
- private BitmapFactory.Options mOptions;
private Bitmap mBitmap;
private ArrayList<Integer> mThumbs;
private ArrayList<Integer> mImages;
+ private WallpaperLoader mLoader;
@Override
public void onCreate(Bundle icicle) {
@@ -95,32 +60,29 @@
setContentView(R.layout.wallpaper_chooser);
- mOptions = new BitmapFactory.Options();
- mOptions.inDither = false;
- mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
-
mGallery = (Gallery) findViewById(R.id.gallery);
mGallery.setAdapter(new ImageAdapter(this));
mGallery.setOnItemSelectedListener(this);
mGallery.setCallbackDuringFling(false);
- Button b = (Button) findViewById(R.id.set);
- b.setOnClickListener(this);
+ findViewById(R.id.set).setOnClickListener(this);
mImageView = (ImageView) findViewById(R.id.wallpaper);
}
private void findWallpapers() {
- mThumbs = new ArrayList<Integer>(THUMB_IDS.length + 4);
- Collections.addAll(mThumbs, THUMB_IDS);
-
- mImages = new ArrayList<Integer>(IMAGE_IDS.length + 4);
- Collections.addAll(mImages, IMAGE_IDS);
+ mThumbs = new ArrayList<Integer>(24);
+ mImages = new ArrayList<Integer>(24);
final Resources resources = getResources();
- final String[] extras = resources.getStringArray(R.array.extra_wallpapers);
final String packageName = getApplication().getPackageName();
+ addWallpapers(resources, packageName, R.array.wallpapers);
+ addWallpapers(resources, packageName, R.array.extra_wallpapers);
+ }
+
+ private void addWallpapers(Resources resources, String packageName, int list) {
+ final String[] extras = resources.getStringArray(list);
for (String extra : extras) {
int res = resources.getIdentifier(extra, "drawable", packageName);
if (res != 0) {
@@ -141,20 +103,21 @@
mIsWallpaperSet = false;
}
- public void onItemSelected(AdapterView parent, View v, int position, long id) {
- final ImageView view = mImageView;
- Bitmap b = BitmapFactory.decodeResource(getResources(), mImages.get(position), mOptions);
- view.setImageBitmap(b);
-
- // Help the GC
- if (mBitmap != null) {
- mBitmap.recycle();
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) {
+ mLoader.cancel(true);
+ mLoader = null;
}
- mBitmap = b;
+ }
- final Drawable drawable = view.getDrawable();
- drawable.setFilterBitmap(true);
- drawable.setDither(true);
+ public void onItemSelected(AdapterView parent, View v, int position, long id) {
+ if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) {
+ mLoader.cancel();
+ }
+ mLoader = (WallpaperLoader) new WallpaperLoader().execute(position);
}
/*
@@ -169,8 +132,8 @@
mIsWallpaperSet = true;
try {
- InputStream stream = getResources().openRawResource(mImages.get(position));
- setWallpaper(stream);
+ WallpaperManager wpm = (WallpaperManager)getSystemService(WALLPAPER_SERVICE);
+ wpm.setResource(mImages.get(position));
setResult(RESULT_OK);
finish();
} catch (IOException e) {
@@ -208,9 +171,17 @@
} else {
image = (ImageView) convertView;
}
-
- image.setImageResource(mThumbs.get(position));
- image.getDrawable().setDither(true);
+
+ int thumbRes = mThumbs.get(position);
+ image.setImageResource(thumbRes);
+ Drawable thumbDrawable = image.getDrawable();
+ if (thumbDrawable != null) {
+ thumbDrawable.setDither(true);
+ } else {
+ Log.e(Launcher.LOG_TAG, String.format(
+ "Error decoding thumbnail resId=%d for wallpaper #%d",
+ thumbRes, position));
+ }
return image;
}
}
@@ -218,4 +189,56 @@
public void onClick(View v) {
selectWallpaper(mGallery.getSelectedItemPosition());
}
+
+ class WallpaperLoader extends AsyncTask<Integer, Void, Bitmap> {
+ BitmapFactory.Options mOptions;
+
+ WallpaperLoader() {
+ mOptions = new BitmapFactory.Options();
+ mOptions.inDither = false;
+ mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
+ }
+
+ protected Bitmap doInBackground(Integer... params) {
+ if (isCancelled()) return null;
+ try {
+ return BitmapFactory.decodeResource(getResources(),
+ mImages.get(params[0]), mOptions);
+ } catch (OutOfMemoryError e) {
+ return null;
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Bitmap b) {
+ if (b == null) return;
+
+ if (!isCancelled() && !mOptions.mCancel) {
+ // Help the GC
+ if (mBitmap != null) {
+ mBitmap.recycle();
+ }
+
+ final ImageView view = mImageView;
+ view.setImageBitmap(b);
+
+ mBitmap = b;
+
+ final Drawable drawable = view.getDrawable();
+ drawable.setFilterBitmap(true);
+ drawable.setDither(true);
+
+ view.postInvalidate();
+
+ mLoader = null;
+ } else {
+ b.recycle();
+ }
+ }
+
+ void cancel() {
+ mOptions.requestCancelDecode();
+ super.cancel(true);
+ }
+ }
}
diff --git a/src/com/android/launcher/Workspace.java b/src/com/android/launcher/Workspace.java
index f5dc633..6a4455c 100644
--- a/src/com/android/launcher/Workspace.java
+++ b/src/com/android/launcher/Workspace.java
@@ -16,14 +16,12 @@
package com.android.launcher;
+import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.content.ComponentName;
import android.content.res.TypedArray;
-import android.graphics.Bitmap;
import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.RectF;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
@@ -56,13 +54,7 @@
private int mDefaultScreen;
- private Paint mPaint;
- private Bitmap mWallpaper;
-
- private int mWallpaperWidth;
- private int mWallpaperHeight;
- private float mWallpaperOffset;
- private boolean mWallpaperLoaded;
+ private final WallpaperManager mWallpaperManager;
private boolean mFirstLayout = true;
@@ -133,6 +125,8 @@
public Workspace(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+ mWallpaperManager = WallpaperManager.getInstance(context);
+
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0);
mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1);
a.recycle();
@@ -148,24 +142,11 @@
mCurrentScreen = mDefaultScreen;
Launcher.setScreen(mCurrentScreen);
- mPaint = new Paint();
- mPaint.setDither(false);
-
final ViewConfiguration configuration = ViewConfiguration.get(getContext());
mTouchSlop = configuration.getScaledTouchSlop();
mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
}
- /**
- * Set the background's wallpaper.
- */
- void loadWallpaper(Bitmap bitmap) {
- mWallpaper = bitmap;
- mWallpaperLoaded = true;
- requestLayout();
- invalidate();
- }
-
@Override
public void addView(View child, int index, LayoutParams params) {
if (!(child instanceof CellLayout)) {
@@ -256,20 +237,6 @@
}
/**
- * Computes a bounding rectangle for a range of cells
- *
- * @param cellX X coordinate of upper left corner expressed as a cell position
- * @param cellY Y coordinate of upper left corner expressed as a cell position
- * @param cellHSpan Width in cells
- * @param cellVSpan Height in cells
- * @param rect Rectnagle into which to put the results
- */
- public void cellToRect(int cellX, int cellY, int cellHSpan, int cellVSpan, RectF rect) {
- ((CellLayout)getChildAt(mCurrentScreen)).cellToRect(cellX, cellY,
- cellHSpan, cellVSpan, rect);
- }
-
- /**
* Sets the current screen.
*
* @param currentScreen
@@ -282,13 +249,6 @@
}
/**
- * Shows the default screen (defined by the firstScreen attribute in XML.)
- */
- void showDefaultScreen() {
- setCurrentScreen(mDefaultScreen);
- }
-
- /**
* Adds the specified child in the current screen. The position and dimension of
* the child are defined by x, y, spanX and spanY.
*
@@ -367,11 +327,6 @@
}
}
- void addWidget(View view, Widget widget) {
- addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX,
- widget.spanY, false);
- }
-
void addWidget(View view, Widget widget, boolean insert) {
addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX,
widget.spanY, insert);
@@ -384,6 +339,18 @@
}
return null;
}
+
+ CellLayout.CellInfo findAllVacantCellsFromModel() {
+ CellLayout group = (CellLayout) getChildAt(mCurrentScreen);
+ if (group != null) {
+ int countX = group.getCountX();
+ int countY = group.getCountY();
+ boolean occupied[][] = new boolean[countX][countY];
+ Launcher.getModel().findAllOccupiedCells(occupied, countX, countY, mCurrentScreen);
+ return group.findAllVacantCellsFromOccupied(occupied, countX, countY);
+ }
+ return null;
+ }
private void clearVacantCache() {
if (mVacantCache != null) {
@@ -391,55 +358,6 @@
mVacantCache = null;
}
}
-
- /**
- * Returns the coordinate of a vacant cell for the current screen.
- */
- boolean getVacantCell(int[] vacant, int spanX, int spanY) {
- CellLayout group = (CellLayout) getChildAt(mCurrentScreen);
- if (group != null) {
- return group.getVacantCell(vacant, spanX, spanY);
- }
- return false;
- }
-
- /**
- * Adds the specified child in the current screen. The position and dimension of
- * the child are defined by x, y, spanX and spanY.
- *
- * @param child The child to add in one of the workspace's screens.
- * @param spanX The number of cells spanned horizontally by the child.
- * @param spanY The number of cells spanned vertically by the child.
- */
- void fitInCurrentScreen(View child, int spanX, int spanY) {
- fitInScreen(child, mCurrentScreen, spanX, spanY);
- }
-
- /**
- * Adds the specified child in the specified screen. The position and dimension of
- * the child are defined by x, y, spanX and spanY.
- *
- * @param child The child to add in one of the workspace's screens.
- * @param screen The screen in which to add the child.
- * @param spanX The number of cells spanned horizontally by the child.
- * @param spanY The number of cells spanned vertically by the child.
- */
- void fitInScreen(View child, int screen, int spanX, int spanY) {
- if (screen < 0 || screen >= getChildCount()) {
- throw new IllegalStateException("The screen must be >= 0 and < " + getChildCount());
- }
-
- final CellLayout group = (CellLayout) getChildAt(screen);
- boolean vacant = group.getVacantCell(mTempCell, spanX, spanY);
- if (vacant) {
- group.addView(child,
- new CellLayout.LayoutParams(mTempCell[0], mTempCell[1], spanX, spanY));
- child.setOnLongClickListener(mLongClickListener);
- if (!(child instanceof Folder)) {
- child.setOnLongClickListener(mLongClickListener);
- }
- }
- }
/**
* Registers the specified listener on each screen contained in this workspace.
@@ -455,11 +373,20 @@
}
}
+ private void updateWallpaperOffset() {
+ updateWallpaperOffset(getChildAt(getChildCount() - 1).getRight() - (mRight - mLeft));
+ }
+
+ private void updateWallpaperOffset(int scrollRange) {
+ mWallpaperManager.setWallpaperOffsets(getWindowToken(), mScrollX / (float) scrollRange, 0);
+ }
+
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
mScrollX = mScroller.getCurrX();
mScrollY = mScroller.getCurrY();
+ updateWallpaperOffset();
postInvalidate();
} else if (mNextScreen != INVALID_SCREEN) {
mCurrentScreen = Math.max(0, Math.min(mNextScreen, getChildCount() - 1));
@@ -471,7 +398,7 @@
@Override
public boolean isOpaque() {
- return !mWallpaper.hasAlpha();
+ return false;
}
@Override
@@ -499,13 +426,6 @@
top + mDrawerContentHeight, Region.Op.DIFFERENCE);
}
- float x = mScrollX * mWallpaperOffset;
- if (x + mWallpaperWidth < mRight - mLeft) {
- x = mRight - mLeft - mWallpaperWidth;
- }
-
- canvas.drawBitmap(mWallpaper, x, (mBottom - mTop - mWallpaperHeight) / 2, mPaint);
-
// ViewGroup.dispatchDraw() supports many features we don't need:
// clip to padding, layout animation, animation listener, disappearing
// children, etc. The following implementation attempts to fast-track
@@ -557,20 +477,9 @@
getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);
}
- if (mWallpaperLoaded) {
- mWallpaperLoaded = false;
- mWallpaper = Utilities.centerToFit(mWallpaper, width,
- MeasureSpec.getSize(heightMeasureSpec), getContext());
- mWallpaperWidth = mWallpaper.getWidth();
- mWallpaperHeight = mWallpaper.getHeight();
- }
-
- final int wallpaperWidth = mWallpaperWidth;
- mWallpaperOffset = wallpaperWidth > width ? (count * width - wallpaperWidth) /
- ((count - 1) * (float) width) : 1.0f;
-
if (mFirstLayout) {
scrollTo(mCurrentScreen * width, 0);
+ updateWallpaperOffset(width * (getChildCount() - 1));
mFirstLayout = false;
}
}
@@ -803,12 +712,14 @@
if (deltaX < 0) {
if (mScrollX > 0) {
scrollBy(Math.max(-mScrollX, deltaX), 0);
+ updateWallpaperOffset();
}
} else if (deltaX > 0) {
final int availableToScroll = getChildAt(getChildCount() - 1).getRight() -
mScrollX - getWidth();
if (availableToScroll > 0) {
scrollBy(Math.min(availableToScroll, deltaX), 0);
+ updateWallpaperOffset();
}
}
}
@@ -908,10 +819,6 @@
}
}
- void addApplicationShortcut(ApplicationInfo info, CellLayout.CellInfo cellInfo) {
- addApplicationShortcut(info, cellInfo, false);
- }
-
void addApplicationShortcut(ApplicationInfo info, CellLayout.CellInfo cellInfo,
boolean insertAtFirst) {
final CellLayout layout = (CellLayout) getChildAt(cellInfo.screen);
@@ -929,7 +836,8 @@
// Move internally
if (mDragInfo != null) {
final View cell = mDragInfo.cell;
- if (mCurrentScreen != mDragInfo.screen) {
+ int index = mScroller.isFinished() ? mCurrentScreen : mNextScreen;
+ if (index != mDragInfo.screen) {
final CellLayout originalCellLayout = (CellLayout) getChildAt(mDragInfo.screen);
originalCellLayout.removeView(cell);
cellLayout.addView(cell);
@@ -941,7 +849,7 @@
final ItemInfo info = (ItemInfo)cell.getTag();
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
LauncherModel.moveItemInDatabase(mLauncher, info,
- LauncherSettings.Favorites.CONTAINER_DESKTOP, mCurrentScreen, lp.cellX, lp.cellY);
+ LauncherSettings.Favorites.CONTAINER_DESKTOP, index, lp.cellX, lp.cellY);
}
}
}
@@ -1031,8 +939,7 @@
/**
* {@inheritDoc}
*/
- public Rect estimateDropLocation(DragSource source, int x, int y,
- int xOffset, int yOffset, Object dragInfo, Rect recycle) {
+ public Rect estimateDropLocation(int x, int y, int xOffset, int yOffset, Rect recycle) {
final CellLayout layout = getCurrentDropLayout();
final CellLayout.CellInfo cellInfo = mDragInfo;
@@ -1072,8 +979,7 @@
}
// Find the best target drop location
- return layout.findNearestVacantArea(pixelX, pixelY,
- spanX, spanY, mVacantCache, recycle);
+ return layout.findNearestVacantArea(pixelX, pixelY, spanX, spanY, mVacantCache, recycle);
}
void setLauncher(Launcher launcher) {
@@ -1085,6 +991,9 @@
}
public void onDropCompleted(View target, boolean success) {
+ // This is a bit expensive but safe
+ clearVacantCache();
+
if (success){
if (target != this && mDragInfo != null) {
final CellLayout cellLayout = (CellLayout) getChildAt(mDragInfo.screen);