Commit Graph

4713 Commits

Author SHA1 Message Date
Sunny Goyal 39b700fcc5 Merge "Normalizing app icons based on the standard icon guidelines" into ub-launcher3-burnaby-polish 2015-12-04 17:56:04 +00:00
Tony Wickham b88d0bccbe Merge "Cleanup keyboard code." into ub-launcher3-burnaby-polish 2015-12-04 17:55:33 +00:00
Tony Wickham 329d8bfa04 Cleanup keyboard code.
This should be the last keyboard CL.
- Fix bug: couldn't focus All Apps button in some cases when the All
Apps column was skipped over. Also added test case for this.
- Stop explicitly passing countX and countY to handleKeyEvent, as
these had to match the matrix dimensions anyways.
- Rename createSparseMatrix() - there were 3 methods of the same name,
but all had different purposes. This is confusing both from a
readability standpoint and also when looking at stack traces.

Change-Id: I08ba8411674fcea43a608856c114dee8dbd22398
2015-12-04 09:48:17 -08:00
Tony Wickham 62b9b6054e Hide the focus indicator view when going to a fullscreen page.
Bug: 25649853
Change-Id: I9f2f221020548b48d816924a1803a1a70d11c412
2015-12-03 14:47:52 -08:00
Tony Wickham 0fa5ada226 Fullscreen pages (e.g. Now) are focusable via keyboard.
Change-Id: I962551651aeb9ac7b57bb51b195adc3140db30d8
2015-12-03 14:27:55 -08:00
Tony Wickham af78b59af1 Make sure pages are always accessible via left/right arrow keys.
- Handle NextPageFirstItem as first focusable item in reading order
- Handle PreviousPageLastItem as last focusable item in reading order
- Check the hotseat after the workspace in both cases above
- Dpad horizontal navigation (left/right) uses these as a last
  resort (Rule3) to guarantee an item takes focus if a page exists

Note that it is necessary to search for a focusable item because
widgets are not yet focusable.

Bug: 25591057
Change-Id: I953648bd76c657d660a38427fdd4108bf9963c23
2015-12-03 14:18:06 -08:00
Tony Wickham b879abd274 Merge "Add special column for All Apps button in FocusLogic's sparse matrix." into ub-launcher3-burnaby-polish 2015-12-03 20:41:28 +00:00
Sunny Goyal fc21830e6b Normalizing app icons based on the standard icon guidelines
Bug: 18245189
Change-Id: Iaadcddbe3f966733a13b2e1fb60ba09a8b3aef9a
2015-12-02 19:46:36 -08:00
Sunny Goyal aa4011e63e Merge "Scaling down the icon before applying the user badge > This also saves memory only create one new bitmap while loading instead of two" into ub-launcher3-burnaby-polish 2015-12-03 03:25:21 +00:00
Tony Wickham ac929f4ad8 Merge "Disallow scrolling if workspace is in transition." into ub-launcher3-burnaby-polish 2015-12-02 23:11:09 +00:00
Sunny Goyal 093a58cc77 Merge "Keeping the focus indicator on the widget view, while a child is focused" into ub-launcher3-burnaby-polish 2015-12-01 23:19:11 +00:00
Sunny Goyal 9326461652 Adding margin to Drag layer instead of checking for right insets at every place
Bug: 25692432
Change-Id: I853f41a17c54b30b7772b9fd8556d9465de84752
2015-12-01 14:43:32 -08:00
Sunny Goyal 0c4e37223f Keeping the focus indicator on the widget view, while a child is focused
Bug: 25199581
Change-Id: Ie08d1438ae0c1b5d4fcaa4d642508c1b9db0f5d4
2015-12-01 14:38:14 -08:00
Sunny Goyal 0c2f0700a5 Only fetching firstInstallTime for an activity when required
Change-Id: Ia16c05718938849f4250802d8770ddfe6dbef055
2015-11-30 09:51:39 -08:00
Sunny Goyal 0b621156f3 Scaling down the icon before applying the user badge
> This also saves memory only create one new bitmap while loading instead of two

Bug: 25027252
Change-Id: Ia594dd65a30f32e99404190f649b334615c9e17f
2015-11-25 11:25:25 -08:00
Sunny Goyal d007d0722c Merge "Allowing widgets to be focusable" into ub-launcher3-burnaby-polish 2015-11-25 18:10:56 +00:00
Tony Wickham 6e83dc4031 Merge "Skip to the end of the folder open animation in battery saver mode." into ub-launcher3-burnaby-polish 2015-11-25 00:02:12 +00:00
Tony Wickham 1a690cb785 Don't let folder be replaced with final item twice.
Bug: 25732317
Change-Id: I77b3ddc8951583bebfb908fda934c9b80ddebce0
2015-11-24 15:34:53 -08:00
Sunny Goyal 7bce5f7988 Tying LauncherAppState lifecycle with LauncherProvider
The content provider is the first component started with the main process,
which makes it ideal for initiating LauncherAppState

Change-Id: I03db82a8949ad1376af53a0033592f421dbf0b15
2015-11-24 12:06:42 -08:00
Sunny Goyal 4ee66259eb Merge "Setting statusbar and nav bar colors in theme instead of code" into ub-launcher3-burnaby-polish 2015-11-23 18:45:41 +00:00
Tony Wickham 298f1c4578 Merge "Focus doesn't leave folders without also closing them." into ub-launcher3-burnaby-polish 2015-11-23 18:43:21 +00:00
Tony Wickham feec2171f8 Focus doesn't leave folders without also closing them.
- Pressing Tab wraps around to the first item from the folder name,
  and vice versa when pressing Shift+Tab.
- When tapping off the folder while editing the text, the folder
  requests focus. We handle the following cases from that state:
    - Pressing an arrow key or Tab gives focus to the first item.
    - Pressing Shift+Tab gives focus to the last item.
- Fix slight corner case where moving from folder name to an item
  didn't update mIsEditingName to false. So when clicking off of
  the folder, it gave focus to the folder (as mentioned above)
  instead of closing the folder like it usually does when icons are
  focused. Not a huge deal, but still worth fixing.
Bug: 25687579
Change-Id: I1bec844c8ccd09529a11b9e3a1d92b3bdf7b2eb3
2015-11-20 15:08:55 -08:00
Tony Wickham a5209e33fc Disallow scrolling if workspace is in transition.
Because going to overview mode scales down the workspace, it was
thinking the touch was moving even though your finger was still. If
the "movement" was large enough, it was treated as a scroll, causing
jank. This was especially prevalent on tablets due to their size.

Bug: 25779718
Change-Id: Idb7833e0087bd24ca840f6afc451bf221f6bc047
2015-11-19 12:45:30 -08:00
Tony Wickham 55bd16bfdc Merge "Stop requesting focus on folder if it was closed without animating." into ub-launcher3-burnaby-polish 2015-11-19 00:36:20 +00:00
Tony Wickham 30bdd6eb69 Stop requesting focus on folder if it was closed without animating.
Bug: 25092436
Change-Id: Ia6b72ec8c9fa02fc159457b81fef12f6fd394769
2015-11-18 02:08:22 +00:00
Sunny Goyal b9c29d455e Fixing crash when uninstalling an app destroys the folder
Bug: 25666490
Bug: 25677822
Change-Id: Id71c04df0a5546ba95239ba2e3f7aabb697375a4
2015-11-14 18:09:20 +05:30
Tony Wickham 6159c242bc Revert "Revert "Reverting folder cell width on portrait phones.""
This reverts commit 1974e98f5e.

Change-Id: I7c5d86de187989c085f676933ce3f1cbd57ed8a7
2015-11-13 18:07:18 +00:00
Tony Wickham 1974e98f5e Revert "Reverting folder cell width on portrait phones."
This reverts commit b25e684a76.

Change-Id: Ie86adc4b35c73ab7ef78d73225b437adc4751172
2015-11-12 23:46:33 +00:00
Tony Wickham b25e684a76 Reverting folder cell width on portrait phones.
The extra folder cell space added in ag/790800 looks bad on phones in
portrait mode, so reverting it here. However, we keep the extra space
on tablets or phones in landscape mode, since it provides more room
for long app names (bug 22462641).

Bug: 25662215
Change-Id: I2a37b884458ee557c9b8cff0c3edef16bfc50efb
2015-11-12 15:34:59 -08:00
Tony Wickham 112ac95571 Skip to the end of the folder open animation in battery saver mode.
Bug: 25666809
Change-Id: I867d56a34fc5e0ad6aaabd8b6df47be05ec31966
2015-11-12 12:51:06 -08:00
Tony Wickham a43f78fc4b Merge "Handle more cases in FocusHelper#handleHotseatButtonKeyEvent()." into ub-launcher3-burnaby-polish 2015-11-11 17:16:14 +00:00
Tony Wickham 4fc8287c78 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
2015-11-10 16:52:14 -08:00
Tony Wickham 26b0142543 Don't add offset to CellLayout's fullscreen children.
Bug: 25411084
Change-Id: Ifbcd0a53cf04a7fc29386f4f09aaf7f972e7354a
2015-11-10 14:49:36 -08:00
Tony Wickham 6cbd22279e Add special column for All Apps button in FocusLogic's sparse matrix.
The All Apps button creates a number of edge cases, mainly because it
causes the hotseat to sometimes have an extra column than the workspace.
Previously, we sort of swept these problems under the rug by simply
ignoring the All Apps button if other icons were present in the hotseat,
with the assumption that those other icons should get focus instead of
the All Apps button. (If possible, we want to stay in the same column
when moving from the workspace to the hotseat.) But this doesn't always
work, as in the attached bug where the hotseat doesn't get focus at all
when the All Apps button is an obvious candidate for it.

By adding a specialized column in the focus matrix for the All Apps
button, we ensure that moving down to the hotseat stays within the
original column when possible, while also allowing the focus to switch
to the All Apps button if appropriate. Furthermore, we take care to skip
over the All Apps column when necessary in order to maintain all
previous functionality.

Bug: 25590522
Change-Id: I5d6a8ee69de8834314c4689246fe7d54329b2eef
2015-11-10 11:40:58 -08:00
Tony Wickham 0e2f3849b8 Merge "Make sure user can always get to next page with keyboard." into ub-launcher3-burnaby-polish 2015-11-06 18:10:05 +00:00
Tony Wickham 0f6f2b181f Merge "Stop explicitly snapping to page when navigating with keyboard." into ub-launcher3-burnaby-polish 2015-11-06 18:08:44 +00:00
Tony Wickham c2964cb6cd Make sure user can always get to next page with keyboard.
There's a case where hitting the left/right arrow in the first/last
column wouldn't give focus to an icon on the next page because it is
vertically too far from the first icon to be considered. This makes
for a bad user experience, because there is no way to switch pages
with the keyboard. So now we brute-force search for an appropriate
icon if none was found in this case.

Bug: 25434120
Change-Id: Ifdead0e3b458717ccb33e2f0ec7c15f1fcce4b95
2015-11-05 12:54:17 -08:00
Sunny Goyal 1b323794f2 Ignoring DeadObjectException in startListening
> As of android M, the platform somtimes throws DeadObjectException
instead of TransactionTooLargeException

Bug: 25305031
Change-Id: I3a98db8a5041aef01640d16f9beb71b72bf598f1
2015-11-05 16:10:55 +05:30
Tony Wickham 25189851ac Stop explicitly snapping to page when navigating with keyboard.
When an icon grabs focus, it already snaps to its own page, so
the explicit snapToPage() is redundant. And in the case where no icon
will grab the focus, the explicit call puts us in a weird state
because the page snaps but the focus doesn't change (see bug).

(This happens, for instance, if you are moving from an icon on the
bottom right of page 1 and the only icon on page 2 is in the top
left. In this case, the second icon won't take focus because the
angle is too wide according to FocusLogic#handleDpadHorizontal().)

Bug: 25434120
Change-Id: I17b0ef7d86426a2599bc948bf2313dca7e112364
2015-11-04 17:44:32 -08:00
Tony Wickham 04e2c9ef56 Stop clearing focus when snapping to a new workspace page.
Clearing the focus was causing the first child in the new page to
immediately take focus, which caused FocusIndicatorView jank when
using a keyboard.

Bug: 25256728
Change-Id: I5ab31ebc3fe370d7ac9e9792b30dab3467023738
2015-10-30 18:04:48 -07:00
Sunny Goyal 25c2e3ef07 Allowing widgets to be focusable
> Pressing 'enter' enters the focus inside the widget.
> If the widget has only one focusable, it directly performs click
> Pressing 'esc' brings the focus back to the parent host.

Bug: 25199581
Change-Id: Ia7fd5d929f5945d61173abd349660a5efbe74afc
2015-10-30 10:03:45 -07:00
Tony Wickham a3c74d10a7 Setting correct height for search bar widget options bundle.
- Seperate search bar height from its top and bottom paddings
- Report this height plus 8dps top and bottom for the widget options
- Use a separate bottom padding to adjust spacing between QSB and
  the workspace
- Add tests to verify the height of the search bar in both normal and
  tall modes (ran on Nexus 6, 7, and 10)
Change-Id: Ia7557785d1b38194eee869d0460456e8f33447d5
2015-10-29 12:18:28 -07:00
Winson Chung cbdb153893 Merge "Disabling the desaturation of fast scroll items." into ub-launcher3-burnaby-polish 2015-10-28 22:35:00 +00:00
Winson c08c59de07 Disabling the desaturation of fast scroll items.
Change-Id: I7e90e3b35dc6473ba5e2319abcea5c0c76cbd708
2015-10-28 15:30:38 -07:00
Sunny Goyal 097db343a4 Setting statusbar and nav bar colors in theme instead of code
Change-Id: I4da50809d14f5fa4e47df47fcfd99df7b713950d
2015-10-28 14:30:01 -07:00
Tony Wickham c3d76582b6 Merge "Add null check in Launcher onNewIntent() before moveToDefaultScreen()." into ub-launcher3-burnaby-polish 2015-10-27 01:02:26 +00:00
Sunny Goyal 1ba7e36cc8 Fixing null check when calling mutateOnMainThread
Bug: 25269169
Change-Id: I74f7fb833a374f59a16487099f1bf72b086e88ee
2015-10-26 10:42:12 -07:00
Tony c1739096b4 Add null check in Launcher onNewIntent() before moveToDefaultScreen().
There is a race condition that occurs primarily (maybe entirely) with
Android Auto, it seems because they hijack the Home intent or something
similar. I'm not exactly sure how Android Auto works, but if I pair my
phone with the Desktop Head Unit (car dashboard emulator), I can repro
the NPE fairly easily by simply force closing Android Auto and then
disconnecting my phone from the DHU. If I don't force close Android
Auto, then pressing home launches Android Auto or other apps that I
assume handle some custom intent, such as Car Home Ultra, instead of
normal Home intents such as Launcher3/Google Now Launcher. So I think
what's happening is that, when the phone is disconnected from the car,
Android Auto restores and launches the real home intent (Launcher 3)
around the same time that it destroys the previous home intent
(Android Auto, Car Home Ultra, etc.). This could cause the NPE if both
intents are actually Launcher 3, as is the case when Android Auto is
already closed, because mWorkspace is set to null in
Launcher#onDestroy() (something like onNewIntent() --> post() called
--> onDestroy() --> post() runs). This is consistent with the fact
that I can guarantee a repro if I use postDelayed() instead of post().

Long-winded explanation aside, I think this fix is safe, especially
since we already have a null check for mWorkspace in onNewIntent(),
just not inside the post().

Bug: 24610231

Change-Id: I42f75b83946f375d947be1961a1f2a03a3707a84
2015-10-26 01:31:53 +00:00
Tony Wickham 52040c2d51 Merge "Set search bar height before setting up views in Launcher." into ub-launcher3-burnaby-polish 2015-10-23 18:38:46 +00:00
Tony Wickham df315180f0 Don't add cells to FocusLogic sparse matrix if they aren't focusable.
Previously, any child of ShortcutAndWidgetContainer was added to the
matrix, causing widgets (which aren't focusable) to be considered as
potential targets to gain focus when an arrow key was pressed. But if
the algorithm chose them, they couldn't take the focus so nothing
happened (i.e. the focus stayed on the app/folder it was on before).

Bug: 25126768
Change-Id: Id55fc310f7f58fb8795cce51dcefe4fd1210f788
2015-10-21 17:50:22 -07:00