17 Commits

Author SHA1 Message Date
Shamali Patwa
7423dafef0 Define composition locals for configuring color / font tokens specific to widget picker.
This is so, launcher can map it to existing resource tokens enabling
launchers to easily override resources.

Within picker module, we define a default implementation using material
tokens that can be used as reference for which colors are ideal for
specific picker tokens.

Bug: 408283627
Flag: EXEMPT independent module
Test: See demo
Change-Id: I9c3a6118942114d5a8481f05a6710d8161d56bd7
2025-06-02 21:27:25 -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
97cbe1c132 Add dagger2-compiler to some of picker module targets.
Also mark factories with widget picker annotation.

Bug: 408283627
Flag: EXEMPT independent module
Test: dagger compilation
Change-Id: I716e6cd2eefe44db9a597a80329631484089e84b
2025-05-29 13:26:15 -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
a4ffc73d92 Updates to repository interfaces & data types for widget picker
- I think the previews / featured / search all could be part of widgets
 repository. Internally, it will use separate datasource to prepare the
  respective data - but as a repository, they all are probably just
  a widgets repo.
- Includes minor changes to data types as well to prepare for upcoming
changes.

Bug: 408283627
Flag: EXEMPT independent module
Test: Not applicable - interface changes
Change-Id: I765c11318a655603becdf2cab081f0fcf777da1a
2025-05-22 16:03:16 -07:00
Shamali P
4d7992617b Add preview for widgets using layout / remote views.
Bug: 408283627
Flag: EXEMPT independent module
Test: WidgetsGridScreenshotTest:widgetsGrid_remoteViews
Change-Id: I70dd1438d12729fb85bead5ffdacb4fbc26fb29c
2025-05-19 13:12:02 -07:00
Shamali P
aa6159b111 Implement a grid of widgets for displaying in widget picker
BYPASS_LARGE_CHANGE_WARNING
Bug: 408283627
Flag: EXEMPT independent module
Test: Screenshot test

Change-Id: I0139faa9e522dc8f1fcf3b5fbf3362b5ec07047d
2025-05-13 23:13:59 +00:00
Shamali P
ce557540d7 Add widget preview composable for widget previews in picker
This cl contains just the image previews, the remote view ones in
 follow up

Bug: 408283627
Flag: EXEMPT independent module
Test: See grid screenshot test
Change-Id: Icf5e7eb98f6714b4a2954dcb9fcf75c0249a4d35
2025-05-13 23:12:11 +00:00
Shamali P
4f730ad128 Add details composable for details shown below widget previews in picker
Bug: 408283627
Flag: EXEMPT independent module
Test: See grid screenshot test
Change-Id: I08dfb5fcca9aaf3b630ab1c6ec56fad613127a17
2025-05-13 23:12:11 +00:00
Shamali P
ceab4fe654 Add a temporary component to display app icon for widgets list
This would be replaced with dependency on icon library (whenever that's
available).

Bug: 408283627
Flag: EXEMPT independent module
Test: will be part of larger screenshot test
Change-Id: Ifeff459fd679308a8f8a33d51f99db19898eedd5
2025-05-13 19:10:05 +00:00
Shamali P
901b069a1c Add a search bar for widget picker in compose
Bug: 408283627
Flag: EXEMPT independent module
Test: will be part of larger screenshot test
Change-Id: I933357a98b014f19f5ee8a9e81f02a221a3731e2
2025-05-13 17:14:51 +00:00
Shamali P
dc587e5601 Add top level reusable layouts for widget picker
Bug: 408283627
Flag: EXEMPT independent module
Test: See demo; will be part of larger screenshot test
Change-Id: I10ebc3982b9c64b4b475a3d2201bf1afb1ad654a
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