Commit Graph

744 Commits

Author SHA1 Message Date
Federico Baron 4ee5c429fe Merge changes I6c89c639,I6cab9202 into tm-qpr-dev
* changes:
  Move 'no widgets found' to right pane and add rounded edges to right pane.
  Add ripple effect when a header in widget picker is selected.
2023-02-22 23:24:10 +00:00
Sunny Goyal 936cd17a11 Merge "Simplifying some scrollbar binding logic in all-apps" into tm-qpr-dev 2023-02-22 18:09:32 +00:00
Federico Baron 8f6523a3d6 Move 'no widgets found' to right pane and add rounded edges to right pane.
Previously 'no widgets found' appeared on the left pane, but in large screen landscape we want it to appear on the right pane. Additionally, we added rounded edges to the right pane that turn into sharp edges when we scroll.

Fix: 268558448
Fix: 268557435
Test: Turn on LARGE_SCREEN_WIDGET_PICKER and on tablet landscape mode go to the widget picker and search for a widget that doesn't exist, verify that 'no widgets found' appears on the right pane. Also verify that right pane has rounded corner that turn into sharp corners as we scroll
Change-Id: I6c89c63941e3b0680836828d0c7849d789cbce61
2023-02-22 00:34:10 +00:00
Federico Baron e8217b3c1b Add ripple effect when a header in widget picker is selected.
We need to use setSelected in order to add a ripple effect when a header is selected in tablet landscape mode, and to set the style through XML rather than programmatically the way it was done before in the method `setLargeScreenTheme`.

Fix: 268558453
Test: Turn on LARGE_SCREEN_WIDGET_PICKER and verify that when selecting a header there's a ripple effect on that header
Change-Id: I6cab920258a57118430d1e07416508ef36faa56d
2023-02-21 16:33:18 -08:00
Sunny Goyal 4d18ad4825 Simplifying some scrollbar binding logic in all-apps
Bug: 256684299
Test: Manual
Change-Id: I1cee6cb783f0f805d9a0f0a4b2b668a709cacf1a
2023-02-17 12:28:46 -08:00
Sunny Goyal 239d6e9b8d Adding support for customizing shortcut pinning logic
> Allowing support for overring shortcut badge
> Updating pendingShortcutInfo so that the
  handler can be easily overridden

Bug: 268253894
Test: Verified on device
Change-Id: I3184cb6494bc98c7eed33798b35b4e6e6a1e7ddc
2023-02-17 18:07:23 +00:00
Sunny Goyal cc10ed5532 Merge "Using DiffUtil for calculating widget diff instead of a custom implementation" into tm-qpr-dev 2023-02-16 23:28:19 +00:00
Fengjiang Li 56ebfc4900 Merge "[Predictive Back] Widget to home polish: show extra rows at bottom during animation" into tm-qpr-dev 2023-02-16 19:40:24 +00:00
Fengjiang Li cb640da2bb [Predictive Back] Widget to home polish: show extra rows at bottom during animation
1. setClipChildren(false) for WidgetFullSheet and content view during animation
2. setClipToOutline(true) for WidgetsRecyclerView and provide ViewOutlineProvider to expand bottom by 5% of height
3. Override calculateExtraLayoutSpace() for ScrollableLayoutManager
4. Manually modify AbstractSlideInView#mContent's background drawable during scale animation

bug: b/260956481
Test: manual

Change-Id: Ic391639de887cf4a70bc4965dc0b1fd9bc12dd2c
2023-02-15 15:33:29 -08:00
TreeHugger Robot 3f07d154fb Merge "Deferred widget update" into tm-qpr-dev 2023-02-15 20:01:07 +00:00
Sunny Goyal 892fab2c14 Using DiffUtil for calculating widget diff instead
of a custom implementation

This uses the same version as all-apps and avoids whole list refresh
when a widget entry is expanded for the first time

Removing tests which were essentially testing the diffing logic

Bug: 268646258
Test: Verified on device
Change-Id: I4799c66b4674e754547317317e7a63f098fce735
2023-02-14 20:59:29 +00:00
Federico Baron b215c5416e Remove unused file WidgetsListSearchHeaderHolder
WidgetsListSearchHeaderHolder was the only file that remained after all the redundant widget search header logic got removed. It is dead code now so this CL deletes it.

Bug: 268646258
Test: Verified on device
Change-Id: I670364bd7c2d5ce46d2c8837ef483e5ac2315547
2023-02-14 01:49:55 -08:00
Sunny Goyal a13cc8167f Deferred widget update
Maintaing a list of pending updates while the host
is not listening, so that these can be applied when
host starts listening again

Bug: 267351283
Test: Manual
Change-Id: I38423862a3461724b36f17ffe44e44c55fee06de
2023-02-13 14:54:25 -08:00
Sunny Goyal 77e732a1c4 Moving widget background to xml, so that the same constantstate is
used for all entries

This helps reduce launcher memory by avoiding multuple duplicate
drawable generation

Bug: 268646258
Test: Verified on device
Change-Id: I829750f081cfce65063b35a614b903066d9a4bed
2023-02-13 05:49:31 +00:00
Sunny Goyal 62a4932310 Removing unnecessary search header duplication
Bug: 268646258
Test: Verified on device
Change-Id: I33a7df6a523e5600dc6251c3d8feff1236362705
2023-02-10 11:26:05 -08:00
Federico Baron 740541e0a0 Merge "Implement two pane widget picker" into tm-qpr-dev 2023-02-10 17:20:55 +00:00
Federico Baron 4b1a38bb7d Implement two pane widget picker
The widget picker design is currently not optimized for large screen form factor devices.
We resolve that by adding a two pane widget picker like that of the design in go/widget-picker-2023.

Bug: 256684299
Test: Make sure to be on a tablet in landscape mode.
        1.Turn on flag LARGE_SCREEN_WIDGET_PICKER.
        2. Press and hold on an empty spot in workspace until the popup menu appears.
        3. Click widgets.
        4. Notice the new two pane layout
Change-Id: Ia3ea17dc320f72f9bc5dea52399ff51d9161602b
2023-02-09 16:36:45 -08:00
Alex Chau bcde1d5aa9 Log sizes being sent to widgets
Bug: 267448330
Test: manual
Change-Id: I25039c9c5721f4746a07e701caffacd0c7bd2609
2023-02-03 17:16:03 +00:00
Fengjiang Li 6bb8d79549 Predictive back: widget to all apps
This CL adds a layer of OnBackPressedHanlderRouter to Launcher:
1. 4 OnBackPressedHandler(s) are added in such order: auto cancel action mode handler, drag handler, view handler and state handler
2. first handler who can handle back will handle the entire back gesture
3. Let WidgetsFullSheet to handle widget to all apps transition

Bug: b/260956481
Test: manual
Change-Id: Idbce3dcec746226dd68aaabaddc8fe01334e9673
2023-01-24 15:51:46 -08:00
Sihua Ma db7f098bc1 Re-enable the fast scroll in widget picker
Fix: 258299457
Test: Manual
Change-Id: Ic069f5304827de40be88b80590f5c6c7d88b13b2
2023-01-04 15:47:07 -08:00
Sihua Ma 04c89fe38e Merge "Add QuickstepWidgetHolder for widget handling" into tm-qpr-dev 2022-12-19 18:22:38 +00:00
Sihua Ma 1db8bc2467 Add QuickstepWidgetHolder for widget handling
Fix: 235358918
Test: Manual
1. Rebooted the device and verified that widgets are still updating properly
2. Changed the theme from dark to daylight, then from daylight back to dark and verified that widgets are working
3. Kept the device on for several days and verified that widgets are still updating
4. Turn on auto-rotate for the launcher, open any app then exit, verified that widgets will not vanish and reappear
5. Add & remove widgets from the screen, added widgets are still updating

Change-Id: I98ee902f7d16b47bd77626201a4fefc897ba17a0
2022-12-16 11:56:36 -08:00
Sihua Ma 1126f57441 Reducing the no-intercept area to widget picker recycler view
This allows drag-to-exit on the bounding area even if the scroll is not on top

Fix: 247121877
Test: Manual
Change-Id: Iebf7af195b717bad5e80ee34fec05fed58827699
2022-12-07 11:11:52 -08:00
Sihua Ma 8bbfcb6581 Move LauncherWidgetHolder to widget package
Making LauncherAppWidgetHost package-private as well

Bug: 235358918
Test: N/A
Change-Id: If022ec8d429579a972991872b2dc11db76719341
2022-11-16 14:31:14 -08:00
Sihua Ma aa2b872d1c Move most of the functions in LauncherAppWidgetHost to LauncherWidgetHolder
Test: N/A
Bug: 235358918
Change-Id: I343419376491203a195154f2766b12e5def38879
2022-11-16 14:30:08 -08:00
Sihua Ma 17137e8bce Merge "Created LauncherWidgetHolder as a wrapper for LauncherAppWidgetHost" into tm-qpr-dev 2022-10-27 17:53:28 +00:00
Sihua Ma 0593a0d3ec Created LauncherWidgetHolder as a wrapper for LauncherAppWidgetHost
The wrapper class is created for further changes that will run the wrapped host in the background.

Test: N/A
Bug: 235358918
Change-Id: I9bd6fc2749c5d4a4d3391fb75d0c3ff1e13d17bf
2022-10-26 10:57:13 -07:00
Sihua Ma a28182d9c6 Correctly show the widget in the recommendation table
Test: Manual
Bug: 246121954
Change-Id: Ib32a20683b3dc456417549284744642ad451a829
2022-10-25 14:40:02 -07:00
Sihua Ma 4421353ce8 Merge "Get rid of setInteractionHandler call to the host in launcher" into tm-qpr-dev 2022-10-25 02:44:16 +00:00
Sihua Ma 8ca56fe1cd Get rid of setInteractionHandler call to the host in launcher
Bug: 235358918
Test: N/A
Change-Id: I0defac1831825bf0a13a601dd1502b4ca022bc2e
2022-10-24 14:56:11 -07:00
Sunny Goyal f34811d3a3 Revert "Revert "Updating the scroll calculation from recyclerView to avoid view inflation""
Test: ABTD
https://android-build.googleplex.com/builds/abtd/run/L52600000956969786

This reverts commit cee6ddf3de.

Reason for revert: Fixed in ag/20239136

Change-Id: I0e8446e66d9a86a94b40fcbd6de14da07abe8e5c
2022-10-22 15:37:47 +00:00
Sunny Goyal fc1928e324 Optimizing some icon generation code:
1) Fixing missing shadow from shortcut icons
2) Chaning all-apps icon rendering to draw background/foreground separately
   This allows us to reuse the bitmap generated for themed icons, instead of
   creating a new everytime

Bug: 248308987
Test: Verified on device
Change-Id: Ia3cbefb21a2ce676d6bb2df3d9375d61b5bed61b
2022-10-20 10:40:54 -07:00
Hui Kang 2a28ae8a3f Merge "Revert "Updating the scroll calculation from recyclerView to avoid view inflation"" into tm-qpr-dev 2022-10-17 21:20:09 +00:00
Hui Kang cee6ddf3de Revert "Updating the scroll calculation from recyclerView to avoid view inflation"
This reverts commit 20bbe95ddb.

Reason for revert: Causing flake in Ironwood test: b/248295569

Test: ABTD
Before: Flaky, 14/50 PASSED
https://android-build.googleplex.com/builds/abtd/run/L33900000956890639

Revert: 50/50 PASSED
https://android-build.googleplex.com/builds/abtd/run/L49200000956887317

Change-Id: I41f4428c74e581323f90c716a7852b5e553ae27d
2022-10-17 20:37:49 +00:00
TreeHugger Robot 860657a5f2 Merge "Updating the scroll calculation from recyclerView to avoid view inflation" into tm-qpr-dev 2022-09-16 23:07:54 +00:00
Pinyao Ting fc14807d7a Fix launcher crash related to widget updates
LauncherAppWidgetHost fails to cleanup deferred widget when launcher
started binding the widgets in workspace, which leads to a crash because
widgets that was previously attached to the workspace get re-attached to
the workspace.

Bug: 245016152
Test: manual
Change-Id: I4de261e08cfdcee74f210c39bcadf403b98887ab
2022-09-14 13:22:29 -07:00
Alex Chau 3d2c062567 Change wallpaper depth in widget picker
- Also changed widget picker open/close duration, refactored the values into DeviceProfile
- Generalized MultiAdditivePropertyFactory to accept aggregator as parameter

Bug: 240580498
Test: manual
Change-Id: I6886ca514593e404b8d7b0e8ed44f20ec2b77c73
2022-09-13 12:20:56 +08:00
Sunny Goyal 20bbe95ddb Updating the scroll calculation from recyclerView to avoid view inflation
> Updating the LayoutManager's scroll calculation instead of a separate
  implementation to better support recyclerView's calculations
> Caching the view sizes during layout to avoid view-inflation for
  unknown types
> Fixing scrollbar jump during scroll when widget list is expanded
> Fixing scrollbar never reaching end when onboarding card is displayed
  in work tab

Bug: 240343082
Test: Verified on device that new views are not inflated
Change-Id: Ied11ccf65b053691c5c126c4bf8de306ec24786d
2022-09-12 12:24:34 -07:00
Pinyao Ting 96d3c589ef Explicit Nullbility in Launcher (Part 3)
This CL updates the nullabality on ItemInfo related classes.

Bug: 242895652
Test: manual
Change-Id: I5fa17a17ff876486431f48d750abdc31afbc56a0
2022-09-08 09:36:00 -07:00
vadimt f6ef879cf4 Moving all sources that are shared between Launcher and TAPL in one directory
This will help SysUI test team (who uses TAPL) to set up Gradle build for their tests.

Bug: 202567877, 234414088
Test: presubmit
Change-Id: I3d923ea4b54d1a4c3d2b345be09692727d30433e
2022-07-27 20:18:46 +00:00
Sunny Goyal 9b458a0012 Generalizing the PredicitonScroll view so that in can be used in all-apps
Bug: 234008165
Test: Verified no-functionality-change on device
Change-Id: Ie17d58148b9bdcb08847beb24114b0494437b30e
2022-07-06 12:29:01 -07:00
Sunny Goyal 4827a7d5a9 Fixing widget accessibility node order
Making sure that that search and prediction bar are on top of
RecyclerView/PagedView. This is determined by the widget of the
drawn width of the views if their top matches

Bug: 209579563
Test: Verified that the tite is focused first when opening widgets
Change-Id: Ib800b3743ece915ac4894029462d5776d389ff3f
2022-06-29 11:32:36 -07:00
TreeHugger Robot 5d749d93e6 Merge "Fixing widget size cache loop end-boundary" into tm-qpr-dev 2022-06-28 05:19:32 +00:00
Pinyao Ting 6c7361fb46 Merge "Cache and reuses LauncherAppWidgetHostView when launcher resumes" into tm-qpr-dev 2022-06-27 20:51:22 +00:00
Sunny Goyal 008238ef43 Fixing widget size cache loop end-boundary
Bug: 236961658
Test: Verified on device
Change-Id: Ied629cd875a01abc45a7d055edfde5e156de53ea
2022-06-27 11:25:57 -07:00
Sunny Goyal ed681548fc Moving widget padding to drawable instead of using itemDecorator
ItemDecorator uses item position which is not stable during animations.
Moving it to the background allows the padding to be stable

Bug: 236961658
Test: Verified that the app doesn't crash.
Change-Id: Ied12077de4097e827c5c4157f5196346a301f185
2022-06-23 14:37:17 -07:00
Sunny Goyal bbad97e273 Unifying scroll calculation logic for both widgets and apps recycler view
Also using itemType instead of item object for widget size cache

Bug: 234008165
Test: Verified on device
Change-Id: Ia4b4a00a11627c0c454e4a699570e8ab1667a390
2022-06-16 16:03:37 -07:00
Pinyao Ting e5dbb75acd Cache and reuses LauncherAppWidgetHostView when launcher resumes
Currently by design when launcher enters the background, it stops
listening to updates in widgets. This eventually causes the dilemma
for launcher when it resumes, before the update can be returned from
the system process via IPC, launcher could do one of the following
to fill the gap:
1. show a deferred widget view -- a placeholder that renders the shape
   of the widget -- to let the user know widget is being reloaded.
2. show whichever widget view that was previously displayed to the
   user that may now contain stale content.

There is a descrepancy here since in some edge cases we are showing the
former while in most other cases we are showing the later. This CL added
a short-term fix to address the descrepancy and favors the later where
possible.

Bug: 218067434
Test: manual
Change-Id: I6cd2cd704186267227e2ec47f2581843fd526fa0
2022-06-15 13:23:31 -07:00
Andy Wickham 4ca247a6bb Merge "Moves Search results into a separate RV (take 2)." into tm-dev 2022-05-26 21:41:55 +00:00
Andy Wickham 2ba7797edb Moves Search results into a separate RV (take 2).
Bug: 206905515
Test: Manually verified b/230648542 did not resurface. Tested
on phone and tablet with and without work profile.

Change-Id: If724f635286b9dff2c64255f9ece3568a5cb4ea9
2022-05-24 17:10:24 -07:00