summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable-hdpi/all_apps_button_focused.pngbin1043 -> 1865 bytes
-rw-r--r--res/drawable-hdpi/all_apps_button_normal.pngbin688 -> 620 bytes
-rw-r--r--res/drawable-hdpi/all_apps_button_pressed.pngbin1041 -> 1862 bytes
-rw-r--r--res/drawable-hdpi/hotseat_bg_center.9.pngbin0 -> 3633 bytes
-rw-r--r--res/drawable-hdpi/hotseat_bg_left.9.pngbin0 -> 3767 bytes
-rw-r--r--res/drawable-hdpi/hotseat_bg_right.9.pngbin0 -> 3399 bytes
-rw-r--r--res/drawable-hdpi/hotseat_browser_focused.pngbin0 -> 3730 bytes
-rw-r--r--res/drawable-hdpi/hotseat_browser_normal.pngbin0 -> 3060 bytes
-rw-r--r--res/drawable-hdpi/hotseat_browser_pressed.pngbin0 -> 3631 bytes
-rw-r--r--res/drawable-hdpi/hotseat_left.pngbin0 -> 1764 bytes
-rw-r--r--res/drawable-hdpi/hotseat_phone_focused.pngbin0 -> 2539 bytes
-rw-r--r--res/drawable-hdpi/hotseat_phone_normal.pngbin0 -> 1830 bytes
-rw-r--r--res/drawable-hdpi/hotseat_phone_pressed.pngbin0 -> 2505 bytes
-rw-r--r--res/drawable-hdpi/hotseat_right.pngbin0 -> 2935 bytes
-rw-r--r--res/drawable-hdpi/trashcan.pngbin1714 -> 2026 bytes
-rw-r--r--res/drawable-hdpi/trashcan_hover.pngbin2232 -> 2063 bytes
-rw-r--r--res/drawable-land-hdpi/hotseat_bg_center.9.pngbin0 -> 3137 bytes
-rw-r--r--res/drawable-land-hdpi/hotseat_bg_left.9.pngbin0 -> 3409 bytes
-rw-r--r--res/drawable-land-hdpi/hotseat_bg_right.9.pngbin0 -> 3347 bytes
-rw-r--r--res/drawable-mdpi/all_apps_button_focused.pngbin830 -> 1107 bytes
-rw-r--r--res/drawable-mdpi/all_apps_button_normal.pngbin695 -> 733 bytes
-rw-r--r--res/drawable-mdpi/all_apps_button_pressed.pngbin821 -> 1109 bytes
-rw-r--r--res/drawable-mdpi/home_button_focused.pngbin1872 -> 2422 bytes
-rw-r--r--res/drawable-mdpi/home_button_normal.pngbin1551 -> 680 bytes
-rw-r--r--res/drawable-mdpi/home_button_pressed.pngbin1854 -> 2382 bytes
-rw-r--r--res/drawable-mdpi/hotseat_bg_center.9.pngbin0 -> 363 bytes
-rw-r--r--res/drawable-mdpi/hotseat_bg_left.9.pngbin0 -> 523 bytes
-rw-r--r--res/drawable-mdpi/hotseat_bg_right.9.pngbin0 -> 574 bytes
-rw-r--r--res/drawable-mdpi/hotseat_browser_focused.pngbin0 -> 2627 bytes
-rw-r--r--res/drawable-mdpi/hotseat_browser_normal.pngbin0 -> 2173 bytes
-rw-r--r--res/drawable-mdpi/hotseat_browser_pressed.pngbin0 -> 2575 bytes
-rw-r--r--res/drawable-mdpi/hotseat_phone_focused.pngbin0 -> 2179 bytes
-rw-r--r--res/drawable-mdpi/hotseat_phone_normal.pngbin0 -> 1608 bytes
-rw-r--r--res/drawable-mdpi/hotseat_phone_pressed.pngbin0 -> 2128 bytes
-rw-r--r--res/drawable-mdpi/trashcan.pngbin1241 -> 1562 bytes
-rw-r--r--res/drawable-mdpi/trashcan_hover.pngbin1391 -> 1709 bytes
-rw-r--r--res/drawable/hotseat_browser.xml23
-rw-r--r--res/drawable/hotseat_phone.xml23
-rw-r--r--res/layout-land/launcher.xml56
-rw-r--r--res/layout-port/launcher.xml57
-rw-r--r--res/values-land/styles.xml41
-rw-r--r--res/values/dimens.xml10
-rw-r--r--res/values/styles.xml19
-rw-r--r--src/com/android/launcher2/DeleteZone.java20
-rw-r--r--src/com/android/launcher2/Launcher.java79
45 files changed, 277 insertions, 51 deletions
diff --git a/res/drawable-hdpi/all_apps_button_focused.png b/res/drawable-hdpi/all_apps_button_focused.png
index 94f7b080a..55574ed63 100644
--- a/res/drawable-hdpi/all_apps_button_focused.png
+++ b/res/drawable-hdpi/all_apps_button_focused.png
Binary files differ
diff --git a/res/drawable-hdpi/all_apps_button_normal.png b/res/drawable-hdpi/all_apps_button_normal.png
index 188d528aa..7e7ec868d 100644
--- a/res/drawable-hdpi/all_apps_button_normal.png
+++ b/res/drawable-hdpi/all_apps_button_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/all_apps_button_pressed.png b/res/drawable-hdpi/all_apps_button_pressed.png
index 600dea9fe..3ccb5afb7 100644
--- a/res/drawable-hdpi/all_apps_button_pressed.png
+++ b/res/drawable-hdpi/all_apps_button_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_center.9.png b/res/drawable-hdpi/hotseat_bg_center.9.png
new file mode 100644
index 000000000..0567b7765
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_left.9.png b/res/drawable-hdpi/hotseat_bg_left.9.png
new file mode 100644
index 000000000..aaf42c4f0
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_right.9.png b/res/drawable-hdpi/hotseat_bg_right.9.png
new file mode 100644
index 000000000..2b8149b6e
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_focused.png b/res/drawable-hdpi/hotseat_browser_focused.png
new file mode 100644
index 000000000..6044238ca
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_browser_focused.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_normal.png b/res/drawable-hdpi/hotseat_browser_normal.png
new file mode 100644
index 000000000..e6eb94e37
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_browser_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_pressed.png b/res/drawable-hdpi/hotseat_browser_pressed.png
new file mode 100644
index 000000000..918afb443
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_browser_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_left.png b/res/drawable-hdpi/hotseat_left.png
new file mode 100644
index 000000000..5dabf57ec
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_left.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_focused.png b/res/drawable-hdpi/hotseat_phone_focused.png
new file mode 100644
index 000000000..3e84a583b
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_phone_focused.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_normal.png b/res/drawable-hdpi/hotseat_phone_normal.png
new file mode 100644
index 000000000..e8a869c52
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_phone_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_pressed.png b/res/drawable-hdpi/hotseat_phone_pressed.png
new file mode 100644
index 000000000..dc4ad6e6e
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_phone_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_right.png b/res/drawable-hdpi/hotseat_right.png
new file mode 100644
index 000000000..114bcb588
--- /dev/null
+++ b/res/drawable-hdpi/hotseat_right.png
Binary files differ
diff --git a/res/drawable-hdpi/trashcan.png b/res/drawable-hdpi/trashcan.png
index d356f4533..482fbd888 100644
--- a/res/drawable-hdpi/trashcan.png
+++ b/res/drawable-hdpi/trashcan.png
Binary files differ
diff --git a/res/drawable-hdpi/trashcan_hover.png b/res/drawable-hdpi/trashcan_hover.png
index 7dda19e04..484acef59 100644
--- a/res/drawable-hdpi/trashcan_hover.png
+++ b/res/drawable-hdpi/trashcan_hover.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_center.9.png b/res/drawable-land-hdpi/hotseat_bg_center.9.png
new file mode 100644
index 000000000..f6a59fa6d
--- /dev/null
+++ b/res/drawable-land-hdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_left.9.png b/res/drawable-land-hdpi/hotseat_bg_left.9.png
new file mode 100644
index 000000000..8320e7392
--- /dev/null
+++ b/res/drawable-land-hdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_right.9.png b/res/drawable-land-hdpi/hotseat_bg_right.9.png
new file mode 100644
index 000000000..2d74f2bb9
--- /dev/null
+++ b/res/drawable-land-hdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_focused.png b/res/drawable-mdpi/all_apps_button_focused.png
index f026ee457..a9d5a3f59 100644
--- a/res/drawable-mdpi/all_apps_button_focused.png
+++ b/res/drawable-mdpi/all_apps_button_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_normal.png b/res/drawable-mdpi/all_apps_button_normal.png
index eb3c85d65..227215b41 100644
--- a/res/drawable-mdpi/all_apps_button_normal.png
+++ b/res/drawable-mdpi/all_apps_button_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_pressed.png b/res/drawable-mdpi/all_apps_button_pressed.png
index 1f44aa14a..e24325242 100644
--- a/res/drawable-mdpi/all_apps_button_pressed.png
+++ b/res/drawable-mdpi/all_apps_button_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_focused.png b/res/drawable-mdpi/home_button_focused.png
index 75767ef9e..29fcbd069 100644
--- a/res/drawable-mdpi/home_button_focused.png
+++ b/res/drawable-mdpi/home_button_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_normal.png b/res/drawable-mdpi/home_button_normal.png
index 8229bee64..58ff95887 100644
--- a/res/drawable-mdpi/home_button_normal.png
+++ b/res/drawable-mdpi/home_button_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_pressed.png b/res/drawable-mdpi/home_button_pressed.png
index 1ff1a30b8..32337d623 100644
--- a/res/drawable-mdpi/home_button_pressed.png
+++ b/res/drawable-mdpi/home_button_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_center.9.png b/res/drawable-mdpi/hotseat_bg_center.9.png
new file mode 100644
index 000000000..fd3636182
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_left.9.png b/res/drawable-mdpi/hotseat_bg_left.9.png
new file mode 100644
index 000000000..180bcbbb2
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_right.9.png b/res/drawable-mdpi/hotseat_bg_right.9.png
new file mode 100644
index 000000000..88967a0ac
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_focused.png b/res/drawable-mdpi/hotseat_browser_focused.png
new file mode 100644
index 000000000..de8defc30
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_browser_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_normal.png b/res/drawable-mdpi/hotseat_browser_normal.png
new file mode 100644
index 000000000..35205a236
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_browser_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_pressed.png b/res/drawable-mdpi/hotseat_browser_pressed.png
new file mode 100644
index 000000000..d0a072e28
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_browser_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_focused.png b/res/drawable-mdpi/hotseat_phone_focused.png
new file mode 100644
index 000000000..15ec1c608
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_phone_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_normal.png b/res/drawable-mdpi/hotseat_phone_normal.png
new file mode 100644
index 000000000..d759b1f6b
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_phone_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_pressed.png b/res/drawable-mdpi/hotseat_phone_pressed.png
new file mode 100644
index 000000000..fcdf07316
--- /dev/null
+++ b/res/drawable-mdpi/hotseat_phone_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/trashcan.png b/res/drawable-mdpi/trashcan.png
index a8c0fb5b9..4f01d76fd 100644
--- a/res/drawable-mdpi/trashcan.png
+++ b/res/drawable-mdpi/trashcan.png
Binary files differ
diff --git a/res/drawable-mdpi/trashcan_hover.png b/res/drawable-mdpi/trashcan_hover.png
index d4fe3a498..fb7474a5f 100644
--- a/res/drawable-mdpi/trashcan_hover.png
+++ b/res/drawable-mdpi/trashcan_hover.png
Binary files differ
diff --git a/res/drawable/hotseat_browser.xml b/res/drawable/hotseat_browser.xml
new file mode 100644
index 000000000..3c327bf35
--- /dev/null
+++ b/res/drawable/hotseat_browser.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true" android:drawable="@drawable/hotseat_browser_pressed" />
+ <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/hotseat_browser_focused" />
+ <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/hotseat_browser_normal" />
+ <item android:drawable="@drawable/hotseat_browser_normal" />
+</selector>
+
diff --git a/res/drawable/hotseat_phone.xml b/res/drawable/hotseat_phone.xml
new file mode 100644
index 000000000..318a81ebe
--- /dev/null
+++ b/res/drawable/hotseat_phone.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true" android:drawable="@drawable/hotseat_phone_pressed" />
+ <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/hotseat_phone_focused" />
+ <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/hotseat_phone_normal" />
+ <item android:drawable="@drawable/hotseat_phone_normal" />
+</selector>
+
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 44e1cfb55..22b4825bf 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -75,24 +75,11 @@
android:focusable="true"
android:clickable="true" />
- <com.android.launcher2.HandleView
- android:id="@+id/all_apps_button"
- android:layout_width="@dimen/button_bar_height"
- android:layout_height="wrap_content"
- android:layout_gravity="right|center_vertical"
-
- android:focusable="true"
- android:clickable="true"
-
- android:scaleType="center"
- android:src="@drawable/all_apps_button"
- launcher:direction="vertical"
- />
-
<com.android.launcher2.DeleteZone
android:id="@+id/delete_zone"
- android:layout_width="@dimen/button_bar_height"
+ android:layout_width="@dimen/button_bar_height_portrait"
android:layout_height="match_parent"
+ android:layout_marginBottom="@dimen/half_status_bar_height"
android:layout_gravity="right|center_vertical"
android:scaleType="center"
@@ -101,4 +88,43 @@
launcher:direction="vertical"
/>
+ <RelativeLayout
+ android:id="@+id/all_apps_button_cluster"
+ android:layout_height="fill_parent"
+ android:layout_width="@dimen/button_bar_height_portrait"
+ android:layout_gravity="right|center_vertical"
+ android:layout_marginBottom="@dimen/half_status_bar_height"
+ android:padding="4dip"
+ >
+
+ <com.android.launcher2.HandleView
+ style="@style/HotseatButton"
+ android:id="@+id/all_apps_button"
+ android:layout_centerInParent="true"
+
+ android:src="@drawable/all_apps_button"
+ launcher:direction="vertical"
+ />
+
+ <ImageView
+ android:id="@+id/hotseat_left"
+ style="@style/HotseatButton.Left"
+ android:layout_below="@id/all_apps_button"
+
+ android:src="@drawable/hotseat_phone"
+
+ android:onClick="launchHotSeat"
+ />
+
+ <ImageView
+ android:id="@+id/hotseat_right"
+ style="@style/HotseatButton.Right"
+ android:layout_above="@id/all_apps_button"
+
+ android:src="@drawable/hotseat_browser"
+
+ android:onClick="launchHotSeat"
+ />
+
+ </RelativeLayout>
</com.android.launcher2.DragLayer>
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index b1b1736c9..3b181d136 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -63,25 +63,11 @@
android:scaleType="center"
android:src="@drawable/home_arrows_right"
-
- android:onClick="nextScreen"
-
- android:focusable="true"
- android:clickable="true" />
- <com.android.launcher2.HandleView
- android:id="@+id/all_apps_button"
- android:layout_width="wrap_content"
- android:layout_height="@dimen/button_bar_height"
- android:layout_gravity="bottom|center_horizontal"
+ android:onClick="nextScreen"
android:focusable="true"
- android:clickable="true"
-
- android:scaleType="center"
- android:src="@drawable/all_apps_button"
- launcher:direction="horizontal"
- />
+ android:clickable="true" />
<com.android.launcher2.DeleteZone
android:id="@+id/delete_zone"
@@ -95,4 +81,43 @@
launcher:direction="horizontal"
/>
+ <RelativeLayout
+ android:id="@+id/all_apps_button_cluster"
+ android:layout_width="fill_parent"
+ android:layout_height="@dimen/button_bar_height"
+ android:layout_gravity="bottom|center_horizontal"
+ android:padding="4dip"
+ >
+
+ <com.android.launcher2.HandleView
+ style="@style/HotseatButton"
+ android:id="@+id/all_apps_button"
+ android:layout_centerInParent="true"
+
+ android:src="@drawable/all_apps_button"
+ launcher:direction="horizontal"
+ />
+
+ <ImageView
+ android:id="@+id/hotseat_left"
+ style="@style/HotseatButton.Left"
+ android:layout_toLeftOf="@id/all_apps_button"
+
+ android:src="@drawable/hotseat_phone"
+
+ android:onClick="launchHotSeat"
+ />
+
+ <ImageView
+ android:id="@+id/hotseat_right"
+ style="@style/HotseatButton.Right"
+ android:layout_toRightOf="@id/all_apps_button"
+
+ android:src="@drawable/hotseat_browser"
+
+ android:onClick="launchHotSeat"
+ />
+
+ </RelativeLayout>
+
</com.android.launcher2.DragLayer>
diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml
new file mode 100644
index 000000000..251c717e1
--- /dev/null
+++ b/res/values-land/styles.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+-->
+
+<resources>
+ <style name="HotseatButton">
+ <item name="android:paddingTop">12dip</item>
+ <item name="android:paddingBottom">12dip</item>
+ <item name="android:background">@drawable/hotseat_bg_center</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_width">fill_parent</item>
+ <item name="android:scaleType">center</item>
+ <item name="android:focusable">true</item>
+ <item name="android:clickable">true</item>
+ </style>
+ <style name="HotseatButton.Left">
+ <item name="android:layout_marginBottom">4dip</item>
+ <item name="android:background">@drawable/hotseat_bg_left</item>
+ </style>
+ <style name="HotseatButton.Right">
+ <item name="android:layout_marginTop">4dip</item>
+ <item name="android:background">@drawable/hotseat_bg_right</item>
+ </style>
+
+</resources>
+
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 132a1ce55..5e3bb98ef 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -16,5 +16,15 @@
<resources>
<dimen name="title_texture_width">120px</dimen>
+
+ <!-- height of the bottom row of controls -->
<dimen name="button_bar_height">56dip</dimen>
+
+ <!-- so we have access to this dimension in landscape mode even though
+ button_bar_height changes -->
+ <dimen name="button_bar_height_portrait">56dip</dimen>
+
+ <!-- roughly half a status bar (for vertically centering the right-hand
+ button cluster in landscape) -->
+ <dimen name="half_status_bar_height">12dip</dimen>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index f90810fd3..c2082111c 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -65,4 +65,23 @@
<item name="android:paddingRight">10dip</item>
</style>
+ <style name="HotseatButton">
+ <item name="android:paddingLeft">12dip</item>
+ <item name="android:paddingRight">12dip</item>
+ <item name="android:background">@drawable/hotseat_bg_center</item>
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">fill_parent</item>
+ <item name="android:scaleType">center</item>
+ <item name="android:focusable">true</item>
+ <item name="android:clickable">true</item>
+ </style>
+ <style name="HotseatButton.Left">
+ <item name="android:layout_marginLeft">4dip</item>
+ <item name="android:background">@drawable/hotseat_bg_left</item>
+ </style>
+ <style name="HotseatButton.Right">
+ <item name="android:layout_marginRight">4dip</item>
+ <item name="android:background">@drawable/hotseat_bg_right</item>
+ </style>
+
</resources>
diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java
index 9065de494..3a6c63d8b 100644
--- a/src/com/android/launcher2/DeleteZone.java
+++ b/src/com/android/launcher2/DeleteZone.java
@@ -183,15 +183,7 @@ public class DeleteZone extends ImageView implements DropTarget, DragController.
animationSet.setDuration(ANIMATION_DURATION);
}
if (mHandleInAnimation == null) {
- if (mOrientation == ORIENTATION_HORIZONTAL) {
- mHandleInAnimation = new TranslateAnimation(Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f, Animation.RELATIVE_TO_SELF, 1.0f,
- Animation.RELATIVE_TO_SELF, 0.0f);
- } else {
- mHandleInAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,
- 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f);
- }
+ mHandleInAnimation = new AlphaAnimation(0.0f, 1.0f);
mHandleInAnimation.setDuration(ANIMATION_DURATION);
}
if (mOutAnimation == null) {
@@ -211,15 +203,7 @@ public class DeleteZone extends ImageView implements DropTarget, DragController.
animationSet.setDuration(ANIMATION_DURATION);
}
if (mHandleOutAnimation == null) {
- if (mOrientation == ORIENTATION_HORIZONTAL) {
- mHandleOutAnimation = new FastTranslateAnimation(Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
- Animation.RELATIVE_TO_SELF, 1.0f);
- } else {
- mHandleOutAnimation = new FastTranslateAnimation(Animation.RELATIVE_TO_SELF,
- 0.0f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f);
- }
+ mHandleOutAnimation = new AlphaAnimation(1.0f, 0.0f);
mHandleOutAnimation.setFillAfter(true);
mHandleOutAnimation.setDuration(ANIMATION_DURATION);
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 868a9d17f..5a2a7d37e 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -26,12 +26,14 @@ import android.app.StatusBarManager;
import android.app.WallpaperManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.Intent.ShortcutIconResource;
import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -41,6 +43,7 @@ import android.graphics.Rect;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ColorDrawable;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
@@ -197,6 +200,17 @@ public final class Launcher extends Activity
private ImageView mPreviousView;
private ImageView mNextView;
+ // Hotseats (quick-launch icons next to AllApps)
+ // TODO: move these intial intents out to Uris in an XML resource
+ private static final int NUM_HOTSEATS = 2;
+ private Intent[] mHotseats = new Intent[] {
+ new Intent(Intent.ACTION_MAIN)
+ .setComponent(ComponentName.unflattenFromString(
+ "com.android.contacts/.ContactsLaunchActivity")),
+ new Intent(Intent.ACTION_WEB_SEARCH, Uri.EMPTY),
+ };
+ private CharSequence[] mHotseatLabels = new CharSequence[2];
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -215,6 +229,7 @@ public final class Launcher extends Activity
android.os.Debug.startMethodTracing("/sdcard/launcher");
}
+ loadHotseats();
checkForLocaleChange();
setWallpaperDimension();
@@ -273,6 +288,8 @@ public final class Launcher extends Activity
writeConfiguration(this, localeConfiguration);
mIconCache.flush();
+
+ loadHotseats();
}
}
@@ -351,6 +368,44 @@ public final class Launcher extends Activity
wpm.suggestDesiredDimensions(width * WALLPAPER_SCREENS_SPAN, height);
}
+ private void loadHotseats() {
+ PackageManager pm = getPackageManager();
+ for (int i=0; i<mHotseats.length; i++) {
+ Intent intent = mHotseats[i];
+
+ if (LOGD) {
+ Log.d(TAG, "loadHotseats: hotseat " + i
+ + " initial intent=[" + intent.toUri(Intent.URI_INTENT_SCHEME)
+ + "]");
+ }
+
+ // fix up the default intents
+ if (intent.getAction().equals(Intent.ACTION_WEB_SEARCH)
+ && intent.getData().equals(Uri.EMPTY)) {
+ // use this to represent "default web browser"
+ intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"));
+ }
+ ComponentName com = intent.resolveActivity(pm);
+ mHotseats[i] = new Intent(Intent.ACTION_MAIN).setComponent(com);
+
+ // load the labels for accessibility
+ try {
+ ActivityInfo ai = pm.getActivityInfo(com, 0);
+ mHotseatLabels[i] = ai.loadLabel(pm);
+ } catch (PackageManager.NameNotFoundException ex) {
+ mHotseatLabels[i] = "";
+ }
+
+ if (LOGD) {
+ Log.d(TAG, "loadHotseats: hotseat " + i
+ + " intent=[" + mHotseats[i].toUri(Intent.URI_INTENT_SCHEME)
+ + "] label=[" + mHotseatLabels[i]
+ + "]"
+ );
+ }
+ }
+ }
+
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mWaitingForResult = false;
@@ -567,6 +622,9 @@ public final class Launcher extends Activity
mHandleView.setOnClickListener(this);
mHandleView.setOnLongClickListener(this);
+ findViewById(R.id.hotseat_left).setContentDescription(mHotseatLabels[0]);
+ findViewById(R.id.hotseat_right).setContentDescription(mHotseatLabels[1]);
+
mPreviousView = (ImageView) dragLayer.findViewById(R.id.previous_screen);
mNextView = (ImageView) dragLayer.findViewById(R.id.next_screen);
@@ -585,7 +643,7 @@ public final class Launcher extends Activity
deleteZone.setLauncher(this);
deleteZone.setDragController(dragController);
- deleteZone.setHandle(mHandleView);
+ deleteZone.setHandle(findViewById(R.id.all_apps_button_cluster));
dragController.setDragScoller(workspace);
dragController.setDragListener(deleteZone);
@@ -610,6 +668,23 @@ public final class Launcher extends Activity
mWorkspace.scrollRight();
}
}
+
+ @SuppressWarnings({"UnusedDeclaration"})
+ public void launchHotSeat(View v) {
+ int index = -1;
+ if (v.getId() == R.id.hotseat_left) {
+ index = 0;
+ } else if (v.getId() == R.id.hotseat_right) {
+ index = 1;
+ }
+
+ if (index >= 0 && mHotseats[index] != null) {
+ startActivitySafely(
+ mHotseats[index],
+ "hotseat"
+ );
+ }
+ }
/**
* Creates a view representing a shortcut.
@@ -1280,7 +1355,7 @@ public final class Launcher extends Activity
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
- Log.e(TAG, "Unable to launch. tag=" + tag + " intent=" + intent);
+ Log.e(TAG, "Unable to launch. tag=" + tag + " intent=" + intent, e);
} catch (SecurityException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
Log.e(TAG, "Launcher does not have the permission to launch " + intent +