Fixing crash in FocusHelper and removing some old focus code for old Customize layout.

Change-Id: Ifd8a38174bbcf04c0ffeeefb4f42419e82a6ba95
This commit is contained in:
Winson Chung
2011-06-13 18:15:54 -07:00
parent 61fa4197c4
commit faa13255de
4 changed files with 24 additions and 144 deletions
+10 -128
View File
@@ -16,10 +16,6 @@
package com.android.launcher2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import android.content.res.Configuration;
import android.view.KeyEvent;
import android.view.View;
@@ -30,6 +26,10 @@ import android.widget.TabWidget;
import com.android.launcher.R;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* A keyboard listener we set on all the button bar buttons.
*/
@@ -62,13 +62,13 @@ class DockKeyEventListener implements View.OnKeyListener {
}
/**
* A keyboard listener we set on the last tab button in AllApps to jump to then
* A keyboard listener we set on the last tab button in AppsCustomize to jump to then
* market icon and vice versa.
*/
class AllAppsTabKeyEventListener implements View.OnKeyListener {
class AppsCustomizeTabKeyEventListener implements View.OnKeyListener {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return FocusHelper.handleAllAppsTabKeyEvent(v, keyCode, event);
return FocusHelper.handleAppsCustomizeTabKeyEvent(v, keyCode, event);
}
}
@@ -85,9 +85,9 @@ public class FocusHelper {
}
/**
* Handles key events in a AllApps tab between the last tab view and the shop button.
* Handles key events in a AppsCustomize tab between the last tab view and the shop button.
*/
static boolean handleAllAppsTabKeyEvent(View v, int keyCode, KeyEvent e) {
static boolean handleAppsCustomizeTabKeyEvent(View v, int keyCode, KeyEvent e) {
final TabHost tabHost = findTabHostParent(v);
final ViewGroup contents = (ViewGroup)
tabHost.findViewById(com.android.internal.R.id.tabcontent);
@@ -127,124 +127,6 @@ public class FocusHelper {
return v.getVisibility() == View.VISIBLE;
}
/**
* Handles key events in a PageViewExtendedLayout containing PagedViewWidgets.
* To be deprecated.
*/
static boolean handlePagedViewWidgetKeyEvent(PagedViewWidget w, int keyCode, KeyEvent e) {
if (!LauncherApplication.isScreenLarge()) return false;
final PagedViewExtendedLayout parent = (PagedViewExtendedLayout) w.getParent();
final ViewGroup container = (ViewGroup) parent.getParent();
final TabHost tabHost = findTabHostParent(container);
final TabWidget tabs = (TabWidget) tabHost.findViewById(com.android.internal.R.id.tabs);
final int widgetIndex = parent.indexOfChild(w);
final int widgetCount = parent.getChildCount();
final int pageIndex = container.indexOfChild(parent);
final int pageCount = container.getChildCount();
final int action = e.getAction();
final boolean handleKeyEvent = (action != KeyEvent.ACTION_UP);
PagedViewExtendedLayout newParent = null;
boolean wasHandled = false;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
if (handleKeyEvent) {
// Select the previous widget or the last widget on the previous page
if (widgetIndex > 0) {
parent.getChildAt(widgetIndex - 1).requestFocus();
} else {
if (pageIndex > 0) {
newParent = (PagedViewExtendedLayout)
container.getChildAt(pageIndex - 1);
newParent.getChildAt(newParent.getChildCount() - 1).requestFocus();
}
}
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (handleKeyEvent) {
// Select the next widget or the first widget on the next page
if (widgetIndex < (widgetCount - 1)) {
parent.getChildAt(widgetIndex + 1).requestFocus();
} else {
if (pageIndex < (pageCount - 1)) {
newParent = (PagedViewExtendedLayout)
container.getChildAt(pageIndex + 1);
newParent.getChildAt(0).requestFocus();
}
}
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_DPAD_UP:
if (handleKeyEvent) {
// Select widgets tab on the tab bar
tabs.requestFocus();
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
if (handleKeyEvent) {
// TODO: Should focus the global search bar
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_DPAD_CENTER:
if (handleKeyEvent) {
// Simulate a click on the widget
View.OnClickListener clickListener = (View.OnClickListener) container;
clickListener.onClick(w);
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_PAGE_UP:
if (handleKeyEvent) {
// Select the first item on the previous page, or the first item on this page
// if there is no previous page
if (pageIndex > 0) {
newParent = (PagedViewExtendedLayout) container.getChildAt(pageIndex - 1);
newParent.getChildAt(0).requestFocus();
} else {
parent.getChildAt(0).requestFocus();
}
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_PAGE_DOWN:
if (handleKeyEvent) {
// Select the first item on the next page, or the last item on this page
// if there is no next page
if (pageIndex < (pageCount - 1)) {
newParent = (PagedViewExtendedLayout) container.getChildAt(pageIndex + 1);
newParent.getChildAt(0).requestFocus();
} else {
parent.getChildAt(widgetCount - 1).requestFocus();
}
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_MOVE_HOME:
if (handleKeyEvent) {
// Select the first item on this page
parent.getChildAt(0).requestFocus();
}
wasHandled = true;
break;
case KeyEvent.KEYCODE_MOVE_END:
if (handleKeyEvent) {
// Select the last item on this page
parent.getChildAt(widgetCount - 1).requestFocus();
}
wasHandled = true;
break;
default: break;
}
return wasHandled;
}
/**
* Handles key events in a PageViewExtendedLayout containing PagedViewWidgets.
*/
@@ -908,7 +790,7 @@ public class FocusHelper {
final CellLayout layout = (CellLayout) parent.getParent();
final Workspace workspace = (Workspace) layout.getParent();
final ViewGroup launcher = (ViewGroup) workspace.getParent();
final ViewGroup tabs = (ViewGroup) launcher.findViewById(R.id.all_apps_button_cluster);
final ViewGroup tabs = (ViewGroup) launcher.findViewById(R.id.qsb_bar);
int iconIndex = parent.indexOfChild(v);
int iconCount = parent.getChildCount();
int pageIndex = workspace.indexOfChild(layout);