-> Pulling out the parts of device profile which can (and need to be)
initialized and accessed without access to an Activity context,
ie. the invariant bits.
-> The invariant bits are stored in InvariantDeviceProfile which is
initialized statically from LauncherAppState.
-> The DeviceProfile contains the Activity context-dependent bits,
and we will create one of these for each Activity instance, and
this instance is accessed through the Launcher activity.
-> It's possible that we can continue to refactor this such that
all appropriate dimensions can be computed without an Activity
context (by only specifying orientation). This would be an
extension of this CL and allow us to know exactly how launcher
will look in both orientations from any context.
Sets the stage for some improvements around b/19514688
Change-Id: Ia7daccf14d8ca2b9cb340b8780b684769e9f1892
> Folder items no longer remain in a linear order when a folder
gets rearranged, and se we need to use createSparseMatrix instead
of createFullArray. Also because of this we need to use getChildAt(x, y)
instead of getChildAt(index)
> Removing traces of AppsCustomizePage (all apps) from FocusHelper
Change-Id: I9007f6b95cb823e27ef4a43ce725fda8ef1b7cf8
- Support LEFT and RIGHT keys to work across workspaces when in RTL mode.
- Folder icons navigate correctly on DPAD_LEFT/RIGHT events
- Folder navigation across pages also works correctly
- Deleted dead code inside FocusHelper
b/20120358
Change-Id: I7f851cb7ed31f666a91b2f856458d7966ea5f712
TL;DR;; On smaller tablets, landscape = vertical hotseat bar, and
portrait = horizontal hotseat bar. However, in larger tablets, hotseat bar is
always horizontal. This is now correctly handled using DeviceProfile.isVerticalBar
method.
b/19732584
Change-Id: I1035c89b4685be12dbc863f8a1465047a5fec6a6
b/19381790
b/16351792
TL;DR;; Previously, when RIGHT is handled on the right most column of the
current page or when LEFT is handled on the left most column, the next
icon of focus is next page 'first' icon or the previous page 'last icon'.
With this change, the row information is preserved when trying to locate
an icon to give focus in the next/previous page.
Next CL: long awaited unit tests that capture corner cases for different
orientation/ device configuration.
Change-Id: I5278bed45275b3e4cb39fb698df35f90bb45a415
TL;DR; (1) Key event navigation from and to the hotseat and icons in the workspace
is now symmetric. Since there is one more icon in the hotseat, only left
N-1 icon navigation was symmetric.
(2) KeyEvent.KEYCODE_DEL and KeyEvent.KEYCODE_FORWARD_DEL can now delete icons
from the workspace. The focus move to the previous icon where the focus
traveled from.
Also contains minor styling and indexing issues.
Bug: 15408321
Bug: 19381790
Change-Id: I16cbcb2693e92eebb830997d01c0bf674073dd51
1) Focus navigation handling is refactored to Focus utility class.
New 2 step dpad navigation algorithm is inside Focus class
2) Introduced a map (or matrix) that indicates where sparse icons are located inside a grid.
This enables getting rid of the icon sorting logic which was costly.
3) Unified all the dpad handling logic inside the handleXXKeyEvent methods
4) DOWN/UP key will allow navigation between workspace icons and the hotseat
5) Folder icons allow DOWN/UP to navigate to the title
b/19381790
Change-Id: Id45b3f215ef7c1ca5f99b08e3d721e219298627a