Commit Graph

108 Commits

Author SHA1 Message Date
Federico Baron 7122921153 Merge "Rename widgets two pane sheet layout files and spec files to more fitting name" into udc-dev 2023-04-05 16:36:36 +00:00
fbaron 55fed64ced Rename widgets two pane sheet layout files and spec files to more fitting name
Currently the names used for widgets two pane sheet files are similar to full sheet files, just with "_large_screen" added to it. This is not a good name as it can cause confusion. The new name includes "_two_pane" which is more indicative of the actual functionality of these files.

Fix: 276917926
Test: verify widget picker two pane still works
Change-Id: I23cf2a20fc137cc3e99c5fdc90100648a0926368
2023-04-04 09:55:31 -07:00
fbaron 12ff85c0ae Don't show two pane widget picker in foldables.
Currently, the two pane widget picker shows up in unfolded foldables. Here we guard against that.

Fix: 276913797
Test: Verify that widget picker in foldable doesn't have two panel layout
Change-Id: I7b949bdf9b0497c381ea43a4b8b473393ff59039
2023-04-04 16:52:33 +00:00
fbaron ba3f77be7d Show suggested widgets header only when there are suggested widgets
Bug: 275435999
Test: Verified suggested widgets header doesn't show up unless there are suggested widgets to show
Change-Id: I2ec2ba100d7a6ddc338a36ece75633abba990b2b
2023-03-31 21:45:07 +00:00
Federico Baron 002317f60c Add subclass for two pane widget picker
Since the regular widget picker and the widget picker for tablet diverge quite a bit, we added a child class for it that extends WidgetsFullSheet.java
There should be no functionality changes with this CL, it's purely changes in code structure.

Bug: 256684299
Test: Turn on LARGE_SCREEN_WIDGET_PICKER flag and verify nothing changes compared to ag/20508230.
Change-Id: Ie0e93534d7b93017cc11a05f67728155d22951f9
2023-03-24 11:48:20 -07:00
fbaron d11a9e1d08 Widget picker two pane polish
-increase width of two pane picker
-center widgets when they're too few to overflow
-make background stretch out all the way to the bottom even when there aren't multiple widgets
-fit many widgets in one row if they fit

Bug: 256684299
Test: open widget picker and notice that all the listed fixes match the last figma added in the bug
Change-Id: Id4e8445f4ffe484c24c04fd9d1b4ffbf93a00bb2
2023-03-21 16:49:45 -07:00
Federico Baron c3ab820144 Add test for widget picker on landscape mode for tablets
When we added widget picker two pane layout, it broke some tests with the flag on. Here we fix those tests.
Bug: 256684299
Test: AddWidgetsTest and TaplTestsLauncher3#testWidget

Change-Id: I383c754016d82fba51fa0b7b0459cd7e83b274d8
2023-03-21 16:48:12 +00:00
Fengjiang Li b7860bd85e [Predictive Back] Remove OnBackPressedHandler
OnBackPressedHandler was mimicking android.window.OnBackAnimationCallback because later one was hidden API to T.

Now that we have moved to U, we can remove the former handler.

Test: manual
Bug: 272797556
Change-Id: Ic5302cfa0a6fb15c4a64bdf5dc331834b1f06f38
2023-03-16 09:39:31 -07:00
Fengjiang Li 11f873da0b [Predictive Back] Add extra bottom space in taskbar all apps to home
Bug: 272797556
Test: manual
Change-Id: Ie84117d4211c382544c9ed8e1226bf70b2bd382d
2023-03-15 10:14:48 -07:00
Sihua Ma a245873fed Merge "Update widget picker row logic to resolve cropping" into tm-qpr-dev 2023-03-07 18:42:46 +00:00
Sihua Ma 16180801e8 Update widget picker row logic to resolve cropping
Using pixels instead of cell spans for calculating the widget picker row
binding logic.

Before: https://screenshot.googleplex.com/3uXX2m7xWh3om5t
Now: https://screenshot.googleplex.com/C593mrQfqTahNrQ

Test: Manual
Fix: 269790954
Change-Id: Ib591a6f6d3cf8b72766e0714b9bc8ceb86b2ba4f
2023-03-06 13:41:24 -08:00
Brian Isganitis d2d2913812 Merge changes from topic "running-in-test-camel" into tm-qpr-dev
* changes:
  Expose IS_RUNNING_IN_TEST_HARNESS as static method.
  Make isTooltipEnabled a getter due to its mutable dependencies.
2023-03-03 23:15:38 +00:00
Brian Isganitis fdd044e16e Expose IS_RUNNING_IN_TEST_HARNESS as static method.
This variable is now mutable, making the uppercase format misleading.
For instance, users might assume they can use this value in other
immutable properties, when they really should be accessing the latest
value every time they need it.

Context: https://source.android.com/docs/setup/contribute/code-style#follow-field-naming-conventions

Test: Manual
Bug: 271160958
Change-Id: Iaaa51d9153cb8a7d686c72e1210b1948029dcfd5
2023-03-03 00:17:33 +00:00
Federico Baron b25d758827 Widget picker closes and reopens when switching orientation on phones when it's not necessary
Widget picker closes and reopens when switching orientation on phones when it's not necessary. We should only close and reopen widget picker if it's tablet since that's when we want to inflate either the regular widget picker or the two pane widget picker. When we're on a phone, we always want to inflate the regular widget picker, so closing and re-inflating is not needed.

Fix: 271474746
Test: Change orientation in phones vs tablets. Verify that both still work.
Change-Id: I6062b056c4e7675bc830b6884761ec1f2eb20b1d
2023-03-02 14:10:09 -08:00
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
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 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
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
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 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
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 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 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
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
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
Thales Lima 28a8b9f158 Add a scrim to AllApps and Widgets
Check the size of the scrim and draw on the bottom of AllApps and Widgets.
Add a padding to the bottom of AllApps and Widgets so content is above the scrim.
Change the color of nav buttons for better accessibility.
Correct width of the Widgets sheets to be the same as AllApps sheet.

Fixes: 221107977
Fixes: 214215594
Test: manual, HSV and Window
Change-Id: Ib7510ffcd80231de7fefcdef65b422174dd74593
2022-05-12 09:38:24 -03:00
Andras Kloczl 142b054e06 Tune widget picker bottom sheet VisD for large screen
Test: Open widget picker by long pressing the home screen.
Open app specific widget picker by long pressing an app icon
that has widgets. Try both landscape and portrait, also on
phone/tablet/foldable.
Bug: 214215594

Change-Id: I7b4b3a8d7421f1d4df84d49a18b465693a17bd7b
2022-03-15 14:01:59 +00:00
Zak Cohen 8e6c9bbb3e Widgets - Filter work widgets when Work Profile is paused.
Test: local
Bug: 188227318

Change-Id: Icbe6f69de9f3776c88df8c56468531940b54f239
2022-03-08 11:33:46 -08:00
kholoud mohamed c76b2035aa Allow overriding enterprise related strings in Launcher
Test: manual
Bug: 188414133
Bug: 211422509
Bug: 188410712
Change-Id: I75858cdcf2057e7c270da5893cd9a90c6753f182
2022-01-28 16:33:03 +00:00
Alina Zaidi fc6837bb65 Do not reorder recommended widgets in widget picker.
This is to show them in ranking order sent by aiai.

Bug: b/201079509
Test: Added unit test in WidgetsTableUtilTest

Change-Id: I366ecaee8bc157aca185f633462d95fbd1dd180b
2021-09-29 15:52:47 +01:00
Steven Ng 0e8a2ce0a9 Fix RecyclerViewFastScroller scrolling in widgets full sheet
See b/200132426 regarding to the bugs.

Test: manually tested full widgets picker scrolling on phone and 2
      panels UI.
Fix: 200132426
Change-Id: I13c7a7262e9357cf0acac1c2c7c069b2118bd527
2021-09-22 18:02:44 +01:00
Sunny Goyal ed2a55f413 Removing widget preview caching
> All previews are generated on demand when the corresponding
  header expands
> Using ItemAnimator to animate layout changes when preview loads

Bug: 196238313
Test: Manual
Change-Id: I0cb859c8443c2c536399e4063f58baecfc7416ad
2021-08-17 17:50:30 -07:00
Sunny Goyal 77acf12905 Fixing header jump
Linking header position to an empty entry in the recyclerView,
instead of calculating the vertical scroll position. This
allows the header to be in sync with the recyclerView scroll and
item animations

Other simplifications:
> Moving top collapse handle out of header view (it doesn't scroll)
> Removing background clipping logic from full-sheet
> Moving tab bar inside the header view

Bug: 196464142
Test: Verified on device
Change-Id: Iae5a0ae9af7ce258e1b391b8e85c5c270fe56197
2021-08-16 09:45:14 -07:00
Steven Ng 3edfa98ba7 Use the right content to estimate the span in WidgetsFullSheet
Test: Manual
Fix: 194784402
Change-Id: I150f4c7b5a0344caa2bea3f1502894cb0f32e208
2021-07-30 13:15:26 +01:00
Steven Ng 24c16de329 Use 32dp as the content margin for widgets pickers in large screen
devices

Test: manual
Bug: 194369046
Change-Id: I7376eab59d57bdd9ccc8a64e9f321358e09ee579
2021-07-27 12:00:52 +01:00
TreeHugger Robot c48e4fa64d Merge "Measure WidgetsFullSheet before estimating the recommended table size" into sc-dev am: 6a01fe49a5
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15359118

Change-Id: I0004e2f55347e018fa553f8b56c26a754a93e0f1
2021-07-22 19:11:55 +00:00
Steven Ng a606d344a6 Measure WidgetsFullSheet before estimating the recommended table
size

Issue: The header view height was obtained before any measurement.

Test: On Pixel 5 4x5 gird with Photo widget shown in recommended
      table, make the device in landscape. Then open the full widgets
      picker. The widgets picker can be scrolled. Before this fix,
      scrolling is not possible.
Fix: 194172597
Change-Id: Ib30cf4b95d2ed23ff28f3d24e103f0e919b3a551
2021-07-22 16:08:15 +01:00
Steven Ng 452e8b8512 Correct # of cells estimation that can fit horizontally in widgets
picker

Fix: 192661517
Test: check widgets are fit correctly in both full & bottom widgets
      picker in portrait and landscape in different grid settings.
Change-Id: Ic1b0589b7ccf62ff1ec1fd5713b4249ba58246a5
2021-07-08 16:23:38 +01:00
Alina Zaidi 57973c328a Make sure search recycler view is bound to fast scroller if user is
in search mode at the time of attachment of work/personal recycler view.

Bug: 191980945
Test: Tested manually.
1) Open widget picker, scroll.
2) Enable dark mode, scroll.
3) Type search query, scroll.
4) Disable dark mode, scroll.
5) Have work profile in phone and repeat the above with work tab open
and search.

Change-Id: I106717091a88868c4bbe3fad0dd71c8344e9c8ed
2021-06-29 16:32:32 +01:00
Steven Ng fbe1836627 Extract common measurement in widgets pickers to its base class
Bug: 191644950
Test: 1. Open the full widget picker. Observe the clock widgets'
         previews are shown properly. Then, rotate the screen and
         observe the clock widgets' previews are shown properly.
      2. Open the bottom widgets picker for clock. Observe the
         clock widgets' previews are shown properly. Then, rotate
         the screen and observe the clock widgets' previews are shown
         properly.
      3. Repeat 1, 2 after changing the system navigation from button
         to gesture.
Change-Id: I564fc2ce0baf3103ae77499380ad69ec38ac6930
2021-06-28 14:55:27 +01:00
Alina Zaidi e92c63f45b Remove scrim from navigation bar from full widget picker.
Bug: 191926325
Test: Manually tested
Change-Id: Idc5fded9e8227a6aa9cf58c9e2cce146dc52a2c6
2021-06-24 20:20:05 +01:00