diff options
author | Tony Wickham <twickham@google.com> | 2015-11-10 16:52:14 -0800 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2015-11-10 16:52:14 -0800 |
commit | 4fc8287c78adee312a51180330021522ccf79690 (patch) | |
tree | ef988c37ee8ee4a27c273596d6a4fa7a0443947a | |
parent | 3cfa97d4c14fa4af3ee3613e44ba7b7128141e31 (diff) | |
download | android_packages_apps_Trebuchet-4fc8287c78adee312a51180330021522ccf79690.tar.gz android_packages_apps_Trebuchet-4fc8287c78adee312a51180330021522ccf79690.tar.bz2 android_packages_apps_Trebuchet-4fc8287c78adee312a51180330021522ccf79690.zip |
Handle more cases in FocusHelper#handleHotseatButtonKeyEvent().
The first of these cases seems like they should already have been
present, and the last couple allow you to switch pages by hitting
arrow keys on the edges of the hotseat.
Bug: 25589939
Change-Id: I9378b209250f7dc376fa97efde979bcee2979537
-rw-r--r-- | src/com/android/launcher3/FocusHelper.java | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/src/com/android/launcher3/FocusHelper.java b/src/com/android/launcher3/FocusHelper.java index 8516afb4e..44403e2df 100644 --- a/src/com/android/launcher3/FocusHelper.java +++ b/src/com/android/launcher3/FocusHelper.java @@ -174,7 +174,7 @@ public class FocusHelper { } /** - * Handles key events in the workspace hot seat (bottom of the screen). + * Handles key events in the workspace hotseat (bottom of the screen). * <p>Currently we don't special case for the phone UI in different orientations, even though * the hotseat is on the side in landscape mode. This is to ensure that accessibility * consistency is maintained across rotations. @@ -263,12 +263,38 @@ public class FocusHelper { countY, matrix, iconIndex, pageIndex, pageCount, Utilities.isRtl(v.getResources())); View newIcon = null; - if (newIconIndex == FocusLogic.NEXT_PAGE_FIRST_ITEM) { - parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1); - newIcon = parent.getChildAt(0); - // TODO(hyunyoungs): handle cases where the child is not an icon but - // a folder or a widget. - workspace.snapToPage(pageIndex + 1); + switch (newIconIndex) { + case FocusLogic.NEXT_PAGE_FIRST_ITEM: + parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1); + newIcon = parent.getChildAt(0); + // TODO(hyunyoungs): handle cases where the child is not an icon but + // a folder or a widget. + workspace.snapToPage(pageIndex + 1); + break; + case FocusLogic.PREVIOUS_PAGE_FIRST_ITEM: + parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1); + newIcon = parent.getChildAt(0); + // TODO(hyunyoungs): handle cases where the child is not an icon but + // a folder or a widget. + workspace.snapToPage(pageIndex - 1); + break; + case FocusLogic.PREVIOUS_PAGE_LAST_ITEM: + parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1); + newIcon = parent.getChildAt(parent.getChildCount() - 1); + // TODO(hyunyoungs): handle cases where the child is not an icon but + // a folder or a widget. + workspace.snapToPage(pageIndex - 1); + break; + case FocusLogic.PREVIOUS_PAGE_LEFT_COLUMN: + case FocusLogic.PREVIOUS_PAGE_RIGHT_COLUMN: + // Go to the previous page but keep the focus on the same hotseat icon. + workspace.snapToPage(pageIndex - 1); + break; + case FocusLogic.NEXT_PAGE_LEFT_COLUMN: + case FocusLogic.NEXT_PAGE_RIGHT_COLUMN: + // Go to the next page but keep the focus on the same hotseat icon. + workspace.snapToPage(pageIndex + 1); + break; } if (parent == iconParent && newIconIndex >= iconParent.getChildCount()) { newIconIndex -= iconParent.getChildCount(); @@ -368,7 +394,7 @@ public class FocusHelper { if (parent != null) { iconLayout = (CellLayout) parent.getParent(); matrix = FocusLogic.createSparseMatrix(iconLayout, - iconLayout.getCountX(), row); + iconLayout.getCountX(), row); newIconIndex = FocusLogic.handleKeyEvent(keyCode, countX + 1, countY, matrix, FocusLogic.PIVOT, newPageIndex, pageCount, Utilities.isRtl(v.getResources())); |