Commit Graph

130 Commits

Author SHA1 Message Date
Sunny Goyal 179249d804 Dominant color is part of icon cache
> Calculating extracted color during icon generation and storing it in model and DB
> Removing unused logic avoid various types of badge rendering
> Icons are badged with extracted colors, while folder is badged with theme color

Bug: 35428783
Change-Id: I93e30c52fbded7515c3ae1778422e84672eafb56
2018-01-03 16:55:58 -08:00
Sunny Goyal 00ac920241 Simplifying app icon popup
> Using a single linearLayout instead of multiple nested views
> Using clipToOutline for rounded corners instead of using canvas.saveLayer
> Removing nested view elevations and overdraw
> Using LayoutTransition for animating layout changes, instead of manually creating animators

Change-Id: I8e57092f52ca5a032a2756594fdd39788acc5a0d
2017-11-15 16:43:20 -08:00
Sunny Goyal 5bc6b6f14c Consolidating various interpolators
Change-Id: I9588eee3552001b162a1e8d5ccefcfb44d221880
2017-10-26 16:38:55 -07:00
Tony Wickham 5509465317 Merge changes from topic "am-cd88620d-8a17-4592-86c7-f98ff940a436" into ub-launcher3-master
* changes:
  [automerger] Handle null small icon am: 207f7d7f86
  Handle null small icon
2017-10-13 21:18:19 +00:00
Sunny Goyal 10a1bd0e65 Converting PopupContainerWithArrow into a base class so that it is easier
to create other types of popup

Bug: 67585158
Change-Id: I966ae7bb90f941951b26feaf71b3ea30c3f3c0cc
2017-10-10 10:28:05 -07:00
Android Build Merger (Role) d4899cfc2f [automerger] Handle null small icon am: 207f7d7f86
Change-Id: I2003fe3d654829f8a2d1d16a38213cf5a262650f
2017-10-06 21:03:28 +00:00
Tony 207f7d7f86 Handle null small icon
It shouldn't be possible to have a null small icon, but apparently
there are cases where we get one anyway. Might as well handle it
gracefully instead of crashing.

Bug: 67156108
Change-Id: I01ad0251920f7f531a3019eb694946c3d295f9de
2017-10-06 14:03:09 -07:00
Tony Wickham 830578ff22 Cancel notification group summary when all children are cancelled.
This requires maintaining notification group information by mapping
groupKey's to the summary key and child keys.

Bug: 65100024
Change-Id: Idd352ce5e243a0762bf30a9c79d36681456a1b17
2017-10-05 21:12:20 +00:00
Tony Wickham 716688f50e [automerger] Ignore clicks on notifications that don't have intents. am: 22cb37745c
Change-Id: I8973d3ebdb083ed28b8516b8dc26f547f9ab0d52
2017-09-16 00:40:30 +00:00
Tony Wickham 22cb37745c Ignore clicks on notifications that don't have intents.
Bug: 64479852
Change-Id: I3bfff96a12169d0d191a36a8c7e90d4810e9f176
2017-09-15 17:38:48 -07:00
Tony Wickham 2063ebd990 Adjust notification paddings
- Reduce main notification height
- Increase header height and center "Notifications"
- Footer has short height when empty to serve as padding

Bug: 65215656
Change-Id: I691d176628b0b51e8d9af030084b8c29837778dc
2017-09-06 13:37:00 -07:00
Tony Wickham c138515c4e Remove notification dots setting for Launcher3Go
Also remove BADGE_ICONS flag as it is no longer used or necessary.

Bug: 64561196
Change-Id: Icf9656537459a7dbad3a07830eedbdeec8d8f1ce
2017-08-14 15:09:24 -07:00
Tony d48710c283 Unbind notification listener when badging is disabled
- Added SettingsObserver as wrapper around ContentObserver
  to observe Secure or System setting changes.
- NotificationListener and LauncherAppState observe changes
  to the notification dots setting and unbind and rebind
  the NotificationListener service, respectively.

Bug: 36815147
Change-Id: I2cc04ac816a8974969ad0ec759c5402e181fde24
2017-08-03 18:06:14 -07:00
Sunny Goyal b72d8b2c8b Using common fling detection logic for notification and all-apps
> Refactoring SwipeDetector to both allow vertical and horizontal swipes
> Using SwipeDetector and common overscroll effect for notification swipes
  instead of a separate logic

Change-Id: Ib706ee179811ade59ddb68184e1c202365d147c4
2017-07-20 01:33:10 -07:00
Adam Cohen f423f0a6d4 Catch SecurityException from NoMan to workaround possible race condition
b/63636581

Change-Id: Ia06a5be59b2114bda9b4a55ad945fdd832013110
2017-07-14 13:15:06 -07:00
Tony 67a25b3c4d Keep gutter aligned when removing notification footer
Bug: 63262764
Change-Id: I94e7978dafc04fc2673a9bb8c6d24ff20641416f
2017-07-06 08:28:33 -07:00
Tony Wickham cba189344d Ensure notification listener is connected before getting notifications
There was a potential race condition where we would try to do a full
refresh of notifications before the listener was connected. Now we
skip the full refresh if we aren't connected, which is fine because
we also do a full refresh in onListenerConnected() anyway.

Bug: 62107069
Change-Id: I2fe4f49eb8a840230d32034be11fe7765a366e75
2017-06-28 14:14:44 -07:00
Tony Wickham aa2272f81c Popup visual changes
- Don't remove elevation during animation (b/62905720)
- Other adjustments (b/35766387)
  - Add "gutter" between notification and shortcuts
  - Change shortcuts to always be primary color (e.g. white)
  - Scale down shortcut icons when notifications present
  - Apply icon extracted color to "Notifications" header

Change-Id: Idf791dc76d15d05d246000ad73810916d7cd1750
2017-06-27 19:43:18 -07:00
Rajeev Kumar 541e13c265 1. Replace use of java.util.HashSet with android.util.ArraySet in
NotificationListener.
2. Make few instance variable final.
3. Fix an unchecked cast.

Bug: 62466540
Change-Id: I62352c9c9b38f5eaadbbb39c13dfe1411048109d
2017-06-22 18:43:25 -07:00
Rajeev Kumar 226b26e73e Merge "1. Replace use of java.util.HashMap with android.util.ArrayMap in SwipeHelper class 2. Make few instance variables final Bug: 62466540" into ub-launcher3-dorval-polish 2017-06-22 22:40:53 +00:00
Rajeev Kumar 1e10535c16 1. Replace use of java.util.HashMap with android.util.ArrayMap in
SwipeHelper class
2. Make few instance variables final
Bug: 62466540

Change-Id: I6cef170c770f4da8574205ef4f4f43edbfdbbc58
2017-06-22 13:17:31 -07:00
TreeHugger Robot bef710114c Merge "Removing some support lib dependencies" into ub-launcher3-dorval-polish 2017-06-22 00:22:58 +00:00
Tony Wickham 034d74da19 Merge "Show more shortcuts when last notification is dimissed" into ub-launcher3-dorval-polish 2017-06-20 01:36:55 +00:00
TreeHugger Robot 2da5b6a287 Merge "Don't crash when tapping twice on a notification" into ub-launcher3-dorval-polish 2017-06-16 17:53:18 +00:00
Tony cd6885455b Don't crash when tapping twice on a notification
Bug: 62588191
Change-Id: I33671ab08411c4e4e624b579561229d32b7a29c9
2017-06-15 18:14:38 -07:00
Tony 887bd1fe1a Show more shortcuts when last notification is dimissed
We currently only show 2 shortcuts when notifications are
present, but support up to 4 otherwise. With this change,
the hidden shortcuts are added back after dismissing the
notifications, instead of only after closing and reopening
the container.

To ensure the transition is as elegant as possible, we also
separated the shortcuts header from the rest of the shortcuts.
That way we can reveal the new shortcuts without removing the
header (the shortcuts come out from behind the header).

Bug: 38036250
Change-Id: Ie9ab35f9be57cec1d5345e9e70e84e09ea52c9fc
2017-06-15 16:21:34 -07:00
Sunny Goyal de57cafbb2 Removing some support lib dependencies
Change-Id: I028ed591cc9cf0af94fe6e09fadcd255f07cdee5
2017-06-09 08:42:49 -07:00
TreeHugger Robot f6add46e5e Merge "Generalize findContrastColor() to work for dark backgrounds" into ub-launcher3-dorval-polish 2017-06-07 01:00:52 +00:00
Tony Wickham c094a3accb Merge "Don't use CharSequence as notification text" into ub-launcher3-dorval-polish 2017-06-07 00:40:41 +00:00
Tony Wickham 47ab9b1fc5 Generalize findContrastColor() to work for dark backgrounds
Previously it assumed the background was lighter than the foreground.

Bug: 62380473
Change-Id: Icd53750a2f9181890c8b9c62721d07946e115e99
2017-06-06 17:38:57 -07:00
Tony Wickham bd867a3d3e Don't use CharSequence as notification text
If a notification changes the color etc. on the CharSequence, then
it overrode our colors. Gmail for instance always makes the second
text dark (apparently), overriding our dark theme.

Change-Id: Ibd8751d70849fd10fd0114af02d382aba1771d4e
2017-06-06 16:35:33 -07:00
Tony Wickham 90038ebab2 Add support for popup dark theme
Bug: 62380473
Change-Id: Ib22e9b82841bf10b7f139638f268f0a878e3c6b9
2017-06-06 16:34:20 -07:00
Tony Wickham 79b176e42c Fix visibility of notification footer divider
Now it is only visible when the notification footer is present,
instead of always being visible.

Change-Id: Ie85ff31918901115cdfe55b36e75aa80b43e7b13
2017-06-05 17:54:45 -07:00
Tony acaf5b3a37 Remove gap between popup items
- Unround interior corners
- Update colors (shortcuts are gray when next to
  notifications, notifications always white)
- Clean up animation to animate entire popup with
  simple reveal instead of individual items
  animating with reveal and icon scale

Bug: 35766387
Bug: 36110804
Change-Id: I33685d53e2db3904731676123dc230be4dabb5d4
2017-05-31 15:11:43 -07:00
Tony 18c4aa458e Update accessibility for popup
- Content description includes count of notifications.
- Notifications have a dismiss action.
- All icons that support shortcuts will have action to show
  shortcut menu, since there will be system shortcuts even if
  there are no deep shortcuts.

Bug: 36564782
Change-Id: I51b085fa26754f2dcd93c7db6548f2edf054f494
2017-05-11 13:59:52 -07:00
Tony 0b8a6fe532 Visual updates for popup
- Update some dimens
  - Increase left padding for shortcuts
  - Adjust arrow and notification ellipsis offset accordingly
  - Align shortcut dividers to be same width as text
  - Notification text 14sp instead of 15sp
  - Increase width of popup by 12dp
- Shortcuts text 87% black instead of 54%
- Arrow has same color as attached side, so takes on header
  gray instead of white when appropriate

Bug: 37753827
Change-Id: I0844b85995f22218a3b7e605e1653cceaed6cda1
2017-05-09 20:02:23 -05:00
Tony Wickham 61682f2fd4 Merge "Relax notification filter for badges" into ub-launcher3-dorval 2017-05-02 21:19:14 +00:00
Tony Wickham 4441055233 Relax notification filter for badges
- Allow notifications with only title or text, not both (centered in popup)
- Allow notifications without an intent (don't add onClickListener)

Change-Id: I33d9bdbe0d27347d703b6fb81eda64ebdc7429d5
2017-05-02 14:02:37 -07:00
Tony Wickham 24ba787ded Handle back-to-back height reduction animations
We reduce the height of the notification item when the second to last
notification is dismissed (to remove the unused footer) and when the
last notification is removed (to remove the unused notification item).
If the former is runninng when the latter starts, the end result is
janky because we weren't properly cleaning up the first animation when
the second began. We now cancel the existing animation before starting
the second.

Bug: 36172954
Change-Id: I742c15b6f59874bc675b4c20a83e9578ac5e5387
2017-04-27 15:18:37 -07:00
Tony Wickham f77a6f7fd7 Re-enable badges, with all dots
Also updated folder badge (dot) color to light gray,
added notification header back (with same number as
before, where each notification counts as >= 1),
and increased shadow opacity for the dots.

Change-Id: I53a3e0d94f23f482b55b3c10a922939ebb381314
2017-04-27 14:04:56 -07:00
Tony Wickham 0530e8c608 Support notifications with 0 count (show as dots)
- Show number if number > 0
- Show icon if number == 0 and a notification specified an icon to show
- Show a dot otherwise
- In cases of multiple notifications, stack a second badge behind the
  first (visuals will be updated in future CL, as well as support
  stacked dots)
- Folders always show dot if any app within has a badge.

Change-Id: I0a89059b0e0a0d174fe739c9da4f75fa18c0edfa
2017-04-26 19:39:05 -07:00
TreeHugger Robot 46b3a13528 Merge "Remove reflection for a couple of methods" into ub-launcher3-dorval 2017-04-12 00:35:01 +00:00
Tony Wickham ce44516dd8 Update popup to match redlines
- Update specs in dimens.xml and colors.xml
- Move notification count to top right, and keep "Notifications" in left
    - Also removed NotificationHeaderView and instead use FrameLayout
- Limit to 2 shortcuts instead of 3 if there are notifications
- Use SP instead of DP for text (b/35869307)

Bug: 35766387
Change-Id: I892640933ad6351946af3df6c805b98bb4e7cb50
2017-04-11 16:44:38 -07:00
Tony Wickham 8eaa8e64ac Remove reflection for a couple of methods
Bug: 36855196
Change-Id: I3e6b2901d1c12fffd0172e85df98e2e17e737168
2017-04-11 16:39:58 -07:00
Tony Wickham cd4cc97f6f Merge "Disable notification listener on pre-26" into ub-launcher3-dorval 2017-04-10 23:19:52 +00:00
Tony Wickham 5632e183f3 Disable notification listener on pre-26
Also remove isAtLeastO() checks in NotificationListener

Bug: 35443111
Bug: 37207407
Change-Id: If3eef406328f73d114d826e6c8a158bdc3788cac
2017-04-10 15:31:43 -07:00
Tony Wickham 36579219de Only create one bitmap to clip popup item corners
Previously we created a bitmap the size of the entire popup item and
drew a rounded rect in it to clip the corners. Now we create a bitmap
that is only the size of the rounded corner radius, and rotate and
translate it to all four corners to achieve the same clipping.

Besides the reduced memory of this approach, it also simplifies things
when we reduce the item's height (e.g. when the second to last
notification is dismissed), because we no longer have to recreate the
background bitmap to match the new size; the translation calculations
in dispatchDraw() automatically take the current size into account.

Bug: 35869307
Change-Id: I938bbc4bd87479580287426b4197516caf1a64d4
2017-04-07 14:30:25 -07:00
Tony Wickham a4736df685 Temporarily use reflection to get notification badge icon type
Bug: 36855196
Change-Id: I408a98140c68f38327a6cd8ce4cc46c5f2fe34e6
2017-04-03 10:18:42 -07:00
Tony Wickham 3621062339 Use notification counts (instead of assuming all 1)
We still ignore group summary headers, which means, for example,
we won't get Gmail unread count. But single notifications that
have numbers associated, such as messages from a single contact
will be included in the badge count. So if you have 2 hangounts
threads, one with 10 messages and one with 8, the badge would
say 18.

Bug: 34939841
Change-Id: I20b9a857d91715e10c0da400a1cee209d7b837b8
2017-03-27 08:27:12 -07:00
Tony Wickham 2f5bb16915 De-dupe shortcuts with the same id as the main notification.
- Pass NotificationKeyData, which includes the shortcut id, instead of
  just the notification key from NotificationListener
- Remove the shortcut with the same shortcut id as the first
  notification, if it has one, in PopupPopulator#sortAndFilterShorcuts()
- Add some unit tests

Bug: 36571718
Change-Id: I308941b34c525b34686583476e3f82ccb8b7e2d8
2017-03-24 14:18:53 -07:00