Commit Graph

28 Commits

Author SHA1 Message Date
Ats Jenk 4186cf1b96 Fix bubble bar arrow visibility during animation
Bubble bar pointer arrow was being drawn outside of BubbleBarView
bounds.
This caused issues when alpha was applied to the BubbleBarView. With
alpha, BubbleBarView draw was clipped to its bounds and arrow was no
longer visible. This led to the arrow flickering during move animations.
Move animation updates alpha.
Move the pointer arrow inside the bounds of the bar view. Update the bar
height to include the arrow.
Update callers who rely on bubble bar content height to take into
account extra height for the arrow.

Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: move bubble bar left and right, observe arrow is visible
Change-Id: I05866b5c944361b2f10437c3641527ed3c594047
2024-03-06 15:06:05 -08:00
Ats Jenk 77b6225d91 Animate bubble bar location changes
When it is not the initial bubble data, animate bubble bar location
change.

Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: manual, move expanded view from one side to the other, observe the
  location change animates

Change-Id: I52117a31d02e7160ca1d3dc3e724bda2e38f6cbf
2024-03-06 15:03:57 -08:00
Ats Jenk cd0f35383f Introduce bubble bar location that is driven by shell
Adds bubble bar location to the update object that is sent by shell.
Allows repositioning the bubble bar if the location changes.

Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT

Test: manually sending the update to reposition, dragging coming soon
Change-Id: Id430a98116d860a7badcf607edc166c751e12cf8
2024-03-06 10:17:11 -08:00
Ats Jenk d22d73a08c Send bubble bar bounds in display coordinates to wmshell
Bubble bar can be positioned to the left or right side of the screen.
Instead of sending offsets to wmshell, send the bounds of the bar, in
screen coordinates. WMShell can choose how to use that information.

Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: repeat with LTR and RTL system languages:
  - have some bubbles, open an app, expand the bubbles by swiping up
    from bubble bar handle
  - have some bubbles, open an app, expand bubble bar by swiping up on
    navbar handle, tap on bubble bar to expand bubbles
  - have some bubbles, be on home screen, tap on bubble bar to expand a
    bubble

Change-Id: Id2d24831e567171b442ae7f34f055b7195a3e060
2024-01-29 11:32:20 -08:00
Ats Jenk 14f76fe13b Move bubble bar stashed handle to the left for RTL
When system language is set to an RTL language, we move the bubble bar
to the left.
Move the stashed bubble bar handle to the left in this case.
Tweak the bubble bar expand animation so that the bubbles expand from
the left edge.

Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: repeat following steps with LTR and RTL system languages
  - add couple of bubbles to bubble bar, open an app, observe stashed
    handle on the left
  - swipe up from system navbar to show taskbar and bubble bar
  - swipe up from bubble bar handle to show bubble bar and expand it
  - drag bubble bar to dismiss target and back out and release
Change-Id: Ia3b7892bba732a5278168d63db0594087f55fad4
2024-01-23 17:16:49 -08:00
Ats Jenk e0b2ef481c Skip bubble bar arrow animation if arrow detached
Arrow can become detached from the bubble bar background. This can
happen when bubble bar is pinned to the left and the right-most bubble
is selected. When the selected, right-most bubble is removed by drag and
dismiss, the view is removed and bubble bar background is immediately
updated. But we try to animate the arrow to the new selected position.
Before starting to animate arrow position, check if arrow position is
greater than bubble bar width. If it is, the arrow is detached and we
should not try to animate it to the new position. Just move it.

Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: switch to RTL language, have 3 bubbles in bar, expand and select
  the right-most bubble, then dismiss it via drag, observe arrow jumps
  to new position and does not become detached from background
Test: switch to LTR language, try the same, 3 bubbles and dismiss the
  left-most bubble, observe arrow jumps the same and does not become
  detached
Test: select other bubbles, observe arrow position animates to the new
  position
Change-Id: I399db3c3e32b65b9125262bba0a0c32e45865bba
2024-01-23 15:18:09 -08:00
Ats Jenk feb3a68db7 Bubble bar expland/collapse animation when on left
Fix bubble bar collapse and expand animations when bubble bar is pinned
to the left.
When system language is set to an RTL language, bubble bar gets pinned
to the left edge of the screen.
Bubble bar should expand to the right and collapse to the left. Bubbles
in the bubble bar should be ordered from right to left. The most recent
bubble should be at the right in the bubble bar.

Known issue:
  - when the most recent bubble is removed, the arrow animates to a new
    position, but the background is not animated, resulting in arrow
    getting detached from the container. Will be fixed by animating the
    background.

Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: with LTR language set as the system language
  - expand bubble bar with 1 bubble
  - expand bubble bar with multiple bubbles
  - select second bubble, observe after collapse it is set as first
  - dismiss a bubble from bubble bar by dragging
Test: with RTL language set as the system language
  - expand bubble bar with 1 bubble
  - expand bubble bar with multiple bubbles
  - select second bubble, observe after collapse it is set as first
  - dismiss a bubble from bubble bar by dragging

Change-Id: Ic46a5b1a6e45ad225ba509a61147cc6a8cdd0397
2024-01-22 19:06:29 -08:00
Liran Binyamin 447ddf0b63 Make BubbleBarView initially hidden
The BubbleBarView visibility is updated as part of the initial state change.
This CL fixes the issue where switching from floating bubbles to bubble bar
ends up in a state where both the handle and the bar are visible.

Note: once the initial TAPL tests land I will add a test for mode switching

Flag: LEGACY persist.wm.debug.bubble_bar DISABLED
Fixes: 316356971
Test: Manual
      - Add bubble in floating mode
      - Switch to bubble bar
      - Observe that the bubble bar is not visible (only the handle is)
Change-Id: Ib8fc76f90dbf1fee83e594b7f28eed00f1589ae1
2023-12-15 15:49:37 -05:00
Liran Binyamin 90d3a422f8 Cap the width of the bubble bar when collapsed
When the bubble bar is collapsed we now show at most 2 bubbles.

Fixes: 295020145
Test: Manual
      - Add 1 bubble to the bubble bar
      - Collapse bubble bar
      -- Observe that only that bubble is visible
      - Expand the bubble bar
      -- Observe that both that bubble and the overflow are visible
      - Add another bubble
      -- Observe that 2 bubbles are visible when collapsed
      - Add another bubble
      -- Observe that only the first 2 bubbles are visible when collapsed
Change-Id: I5f534f53eefe9a920b8b3258813d67d021c5f2a8
2023-08-23 07:40:56 +00:00
Ivan Tkachenko 90a769d1d3 Bubble bar dismiss interaction
A single bubble and the bubble stack dismiss functionality is implemented using `BubbleDragController`. It attaches a touch listener to the corresponding views and handles gesture interactions.
* When the view is long clicked the dragging to dismiss interaction starts. It scales up the dragged view and presents the dismiss view in the bottom of the window.
* When the bubble or the bubble stack is dragged close to the dismiss target area, it gets pulled towards it and sticks to it. The `MagnetizedObject` and `MagneticTarget` classes are used for it.
* When the dragged view is released outside of the dismiss area, it moves back to the initial position with animation.
* When the dragged bubble is released inside of the dismiss area, it will dismiss the bubble with animation and remove it from the stack.
* When the dragged bubble bar stack is released inside the dismiss area, all the bubbles will get dismissed and the bubble bar will dissapear.

Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: I83393898be61ec522db92688ac2e111ef7d72fe6
2023-07-28 18:17:09 +00:00
Liran Binyamin 36325fd9d7 Check that a bubble exists before reordering it
This avoids re-adding bubbles that have already been removed
after dismissing multiple bubbles at once.

Fixes: 291738088
Test: Manual
      - Add 2 bubbles A and B to the bubble bar
      - Expand the bubble bar
      - Tap 3 dot menu and dismiss
      - Repeat for the next bubble
      - Observe that bubble bar is gone
      - Add a new bubble C
      - Observe that the bubble bar contains only bubble C
Change-Id: Id53811a103d245647489ab8d442cbb2004e0e700
2023-07-18 15:42:56 -04:00
Mady Mellor d76c9cbcd7 Merge "Revert "Bubble bar drag to dismiss"" into udc-qpr-dev 2023-07-13 01:38:05 +00:00
Mady Mellor e7cc3997d0 Revert "Bubble bar drag to dismiss"
Revert submission 23879277-bubble_bar_dismiss

Reason for revert: issues with touch

Reverted changes: /q/submissionid:23879277-bubble_bar_dismiss

Change-Id: I4311abff0e542907b09b0aa865d68257b47f6af1
2023-07-12 22:27:17 +00:00
Ivan Tkachenko e3d4a69749 Merge "Bubble bar drag to dismiss" into udc-qpr-dev 2023-07-12 17:13:50 +00:00
Liran Binyamin 2c1e84b3a1 Merge "Pass bubble bar offsets instead of position to WMShell" into udc-qpr-dev 2023-07-12 14:41:32 +00:00
Ivan Tkachenko eceb797d2f Bubble bar drag to dismiss
* Added dismiss view to the taskbar
* Bubble drag to dismiss of:
  * A single bubble when the bubble bar stack is expanded
  * All bubbles when the bubble bar stack is colapsed
* Added dismiss related calls to WMShell in SystemUI through SystemUIProxy

Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: Ibb62a0b1ab9fafa8a3acf07450ce2132ed605adc
2023-07-12 07:13:12 +01:00
Mady Mellor c299ad645a Show / hide the "update" dot on bubbles in bubble bar
Updates BubbleView to include logic to render the update dot on a
bubble. This only shows for BubbleBarBubbles, not the overflow.

We only show the dot (and the badge) when:
- the bubble has new content / appropriate flags set
- AND the bubbles are expanded
  OR on the first bubble when bubbles are collapsed
- AND when the flyout is not animating (this bit doesn't exist yet)

If a bubble has a dot and is opened, the dot will animate away.
To do this, we update the flags set on a bubble.

The flag needs to be set on WMShell side as well as Launcher side.
When a bubble is shown by WMShell, it automatically updates the flag.
This CL adds code to update the flag on Launcher side when we call
into WMShell to show the bubble.

Test: manual
Bug: 269670235
Change-Id: I32f652effa9a73c567981aa5a2a5864e9c3c0c66
2023-07-11 15:09:29 -07:00
Liran Binyamin 1c03ed001d Pass bubble bar offsets instead of position to WMShell
This allows WMShell to calculate the position of the expanded view
correctly when the bubble bar is being expanded from stashed.

Test: See ag/24012908
Change-Id: I7b917e761c827135942d918917c920b06650f496
2023-07-11 17:08:09 -04:00
Liran Binyamin 7fedde35ad Merge changes I93c2232d,I00daff83 into udc-qpr-dev
* changes:
  Align the bubble bar with the taskbar in overview and app
  Update the bubble bar offset on Home
2023-07-06 18:40:27 +00:00
Liran Binyamin c06c7ff6fa Update the bubble bar offset on Home
This is an initial change that positions the bubble bar aligning it
with the center of the hotseat icons. We still need to center it
with the taskbar when in overview.

This change also fixes the touch issues where sometimes the hotseat
icons don't respond to taps. The fix is twofold:

1. Make sure that taskbar insets are always updated when
   BubbleStashController#setBubblesShowingOnHome is called.
2. Update the touchable region in TaskbarInsetsController to account
   for the Y translation of the bubble bar bounds when the bubble
   bar is visible.

Demo: https://screenshot.googleplex.com/6NRyu2CR7Bjs32x

Bug: 286247080
Test: Manual on a physical device
Change-Id: I00daff8341e4d8f5d141b5e0220726f6c03b437c
2023-07-05 17:29:52 -04:00
Liran Binyamin 16b05e251b Ensure overflow isn't selected when bar is collapsed
After the bubble bar collapsing animation completes, and reordering
is finished, if the bubble overflow is selected, update the selected
bubble to be the first bubble. This ensures that the overflow
is not selected the next time the bubble bar is expanded.

This is done through a callback from the BubbleBarView to the
BubbleBarController with the key of the first bubble. Ideally the view
would just notify that the selected bubble needs to be updated, but
the controller doesn't hold ordering info.

Fixes: 289280431
Test: manual
       - Add 2 bubbles to the bubble bar
       - Expand the bubble bar. The first bubble A should be selected
       - Select the second bubble B
       - Select the overflow
       - Tap on the overflow again to collapse the bubble bar
       - Tap on the bubble bar to expand it
       - Observe that bubble B is first and selected
Change-Id: I0f9c2d628cfaf3a80da55ff634284687425e949a
2023-07-05 12:20:46 -04:00
Mady Mellor d8cb90f010 Merge changes Iaee9aeb0,I76587cf6 into udc-qpr-dev
* changes:
  Fade the bubble bar arrow in and out when the bubble bar expands and collapses.
  Animate the bubble bar width and the bubbles within it as it expands and collapses.
2023-06-27 17:35:58 +00:00
Liran Binyamin cd5591a773 Don't remove the overflow from the bubble bar
When a new bubble is added to the bar and we're over the limit
remove the second to last bubble instead of the overflow.

This change also updates the key of the overflow bubble to
match the one in wmshell.

Bug: 287121592
Test: manual - Add 6 bubbles to the bubble bar
             - The overflow bubble should still be there
Change-Id: Ibd3ab73be5d3afb49f771a1925ebda2c45b55136
2023-06-16 14:51:33 -04:00
Liran Binyamin 3e94d52732 Fade the bubble bar arrow in and out when the bubble bar expands and collapses.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/hKhpM98JZe1gT8bwtYkNeW

Bug: 280604480
Test: Tested on a physical device
Change-Id: Iaee9aeb0a8c1e2bd61816964e4cae5f7bea926ff
2023-06-15 18:07:54 +00:00
Liran Binyamin 35b1f38403 Animate the bubble bar width and the bubbles within it as it expands and collapses.
Fixes: 280604480
Test: Tested on a physical device
Change-Id: I76587cf6ba97700b49c902d42cf4db5f7f3a7152
2023-06-15 17:39:20 +00:00
Liran Binyamin 4e909d07ac Animate the position of the selected bubble arrow in the expanded bubble bar.
Fixes: 280605070
Test: Tested on a physical device
Change-Id: I961254527ba9a26d211c2c348a937a424fa2fb4d
2023-05-09 16:35:30 -04:00
Mady Mellor a088308343 Creates BubbleBarController
Creates BubbleBarController which is responsible for registering
a listener to hear about bubble state changes and propagates those
changes to BubbleBarViewController.

Additionally, it loads the data and creates the individual BubbleViews
that are added to BubbleBarView.

Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I45b0d3a764cd14b2fc5d34aec2b81c7fecb541cf
2023-04-20 09:12:12 -07:00
Mady Mellor 55913d53c6 Creates BubbleBarView & BubbleBarViewController & friends
BubbleBarView shows BubbleViews in a bar similar to transient
taskbar. BubbleBarView can be collapsed (bubbles in a stack) or
expanded (bubbles all visible). When expanded, WMShell will be
notified to show the appropriate expanded bubble view (not part of
this CL).

Also creates BubbleControllers which contains BubbleBarViewController
and will eventually contain other controllers related to stashing
for the bubble bar.

Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I990ab3da6614db90ffff8c40281dc7f16b3957f6
2023-04-17 16:36:28 -07:00