17 Commits

Author SHA1 Message Date
shamalip
d885e21660 Widget Picker: Update UI layer to support shortcuts
Updates the relevant references to read from the appropriate widget info
 object.

Bug: 370950552
Flag: com.android.launcher3.enable_widget_picker_refactor
Test: Open picker for home screen and lockscreen hosts
Change-Id: I1b2a543b69686d859775618a406901591a32f555
2025-06-08 20:10:54 +00:00
shamalip
9540fc9149 WidgetPicker: Pass no widgets available message to widgets list
- Shows an error message when there are no widgets to show.
- Also adds a spacer item for edge padding to offset floating toolbar.

Bug: 408283627
Flag: com.android.launcher3.enable_widget_picker_refactor
Test: Unit tests
Change-Id: I30f8245c60be0cbaafc287efca8384eee863e7ca
2025-06-05 20:03:25 +00:00
Shamali Patwa
1dd8075f28 Widget picker: add test tags for major screen components
Adds test tags intended to be used from UI automator tests.

Bug: 408283627
Flag: EXEMPT independent module
Test: Test changes
Change-Id: I06b58ebb6f48906fd6e1dd1be74b011d226ce797
2025-06-04 10:22:23 -07:00
Shamali Patwa
afa97055fa Update various tests to prepare for the new picker UI
- Switched the tests that probe old picker to use disabled flag
- Added some more tests for new code
  - A test to use the tap to add listener to add widget to homescreen
  - Updated compose unit test to cover for expanding an item

Bug: 408283627
Flag: EXEMPT independent module
Test: Test changes
Change-Id: I238896ec6e24596db93953a22bb43f6c7abbb9d1
2025-06-03 17:37:40 -07:00
Shamali Patwa
bdc7e215b7 Update picker tests to wrap content with widget picker theme.
Bug: 408283627
Flag: EXEMPT independent module
Test: Not applicable
Change-Id: Ied4f4ddca313262bc125b9fb98e5f2670333375b
2025-06-03 06:00:35 -07:00
Shamali Patwa
acc353194f Implement tap-to-add and drag and drop in the compose widget picker
- adds the logic to toggle add button on tapping preview / details
- adds logic to handle add button click
- adds logic to start drag and drop on long press.

The compose's drag and drop handles drag and drop itself, but in this case we need custom interaction to be able to support calling back listeners / setting result for activity etc. So, we use custom logic with android view.


Bug: 408283627
Flag: EXEMPT independent module
Test: See demo
Change-Id: Ie13c919248f8bdd20f90c4eb4a0bec266aedde27
2025-06-02 18:47:01 -07:00
Shamali Patwa
6710f2faf2 Pass down the widget interaction callback and flag on whether to support drag shadow
Bug: 408283627
Flag: com.android.launcher3.enable_widget_picker_refactor
Test: N/A
Change-Id: I8d04cb3b0e52c202bf6223e0b0e2e10a4ca6fdb8
2025-06-02 18:46:54 -07:00
Shamali Patwa
8e1ac2de44 Repository and datasource implementations backing the widget picker.
Bug: 408283627
Flag: EXEMPT independent module
Test: Existing tests
Change-Id: I0f0b68c25f416c8494f363ecc93a388570f8dfa6
2025-05-28 16:49:18 -07:00
Shamali Patwa
df07059bd4 Add widget picker search screen.
This adds the search screen and view model logic. 

It uses the same composable structure as the landing screen.

Bug: 408283627
Flag: EXEMPT independent module
Test: Unit tests
Change-Id: Ic83090be21b31a4f1b416284f78d5a05d5cd2cdc
2025-05-23 12:12:27 -07:00
Shamali Patwa
e7e3a14e95 Adds widget picker landing screens
This CL includes following:

*   ViewModel base class for reuse across widget picker.
*   Landing screens implemented in both compact and expanded mode.
*   Test cases for the same.

Bug: 408283627
Flag: EXEMPT independent module
Test: Unit tests
Change-Id: Ia4a7f0b972ca0d3863f041aac276cb3c5096a258
2025-05-23 11:52:46 -07:00
Shamali Patwa
cd2104334c Add WidgetsInteractor that enables view layer to interact with widgets
- This is responsible for looking up data from repositories and applying
business rules using use cases.

Bug: 408283627
Flag: EXEMPT independent module
Test: Unit tests
Change-Id: I767186a38b3105085637c75d9aec8ca21788f49f
2025-05-22 16:37:46 -07:00
Shamali Patwa
d3c07f8e9c Add use cases in widget picker domain layer that apply business rules.
These will be used by the interactor classes to provide data to the
ui layer.

- FilterWidgetsForHostUseCase filters widgets that don't match the
 constraints specified by the host
- GroupWidgetAppsByProfileUseCase groups widgets based on their user
profile; and ensures that if work profile is paused, its widgets are
 treated as empty list.

Bug: 408283627
Flag: EXEMPT independent module
Test: Unit tests
Change-Id: I676715daf5e400ba12acf50f867a5aa352d7bdf1
2025-05-22 16:03:27 -07:00
Shamali Patwa
0b3a0df76a Add test for widget previews using remote views.
Bug: 408283627
Flag: EXEMPT independent module
Test: WidgetsGridScreenshotTest:widgetsGrid_remoteViews
Change-Id: I4ce8eb92269af13207180e50793e65e23958cd00
2025-05-19 13:12:10 -07:00
Shamali Patwa
6cea97c382 Disable the flaky compose screenshot test
There seems to be some flakiness with fonts; while I figure it out,
disabling the tests.

Bug: 418064758
Flag: EXEMPT test
Test: Not applicable.
Change-Id: I4ff19db8a18c76814a9af0d0589f1a2aa90d68d1
2025-05-19 07:06:25 -07:00
Shamali P
ef8d996924 Add screenshot tests for the widgets grid in picker
Covers entire grid area with test samples of varying sizes for testing
 the grid placement logic.

Bug: 408283627
Flag: EXEMPT independent module
Test: Screenshot test
Change-Id: I5a4ab0d000e33b71de3760b729922f26445b0e8c
2025-05-13 17:12:57 -07:00
Shamali P
e244e93c6a Add an option to show shadow on the floating toolbar.
In case of two pane layout, the toolbar appears over the list, so, shows
a shadow.

Bug: 408283627
Flag: EXEMPT independent module
Test: Screenshot test
Change-Id: Ifd126adc7dcbd81907809c961577f958c0f9c06b
2025-05-13 17:14:51 +00:00
Shamali P
22ed792253 Move widget picker directory to be under launcher3
Bug: 408283627
Flag: EXEMPT independent module
Test: Unit tests
Change-Id: Ife6bfb3579f4a9923c6c657b1dcca33c94aada4a
2025-05-09 21:27:36 +00:00