Commit Graph

101 Commits

Author SHA1 Message Date
Willie Koomson ff1a1a9e46 Fix Add button animations
Use AnimatorSet to make the fade animations sequential instead of
simultaneous. Also reduce the total duration to 200ms (100ms fade out,
100ms fade).

Before: http://screencast/cast/NjQ4NTcwMjcyNzQzNDI0MHxjNDY5NDJiNy03Mg
After: http://screencast/cast/NTg5NDA0NDI5ODI0ODE5MnxmMjczMTlmYi05Mw

Bug: 333734220
Test: manual, see screencast
Flag: ACONFIG com.android.launcher3.enable_widget_tap_to_add NEXTFOOD

Change-Id: I2ee87f33c46e5dd07974152fa32393c39a18ecf1
2024-04-25 20:51:15 +00:00
Willie Koomson 0a6e9d765d Fix issue with tap-to-add on recycled WidgetCells
Updates BaseWidgetSheet to check if the last recorded widget cell
to show an add button is still showing an add button before deciding
how to handle the current click.

When a widget is recycled or loses focus, it will reset to the default
state of hiding the add button. However, BaseWidgetSheet still tracks
it. If that cell is clicked again after being reset, we want to show
the add button.

Bug: TODO
Test: manual
Flag: ACONFIG com.android.launcher3.enable_widget_tap_to_add TEAMFOOD
Change-Id: I4614674948a52b8908fabf5c0e5734bf76b9282b
2024-04-15 22:32:51 +00:00
Shamali P 8f44617191 Remove unused badge logic on WidgetCell now that we don't show badges.
See ag/26786552 that removed the usage.

Bug: 331838199
Test: Manual validation
Flag: N/A
Change-Id: I4393df1f8c6c7568925428bb3489081df17aa623
2024-04-04 13:10:00 +00:00
Willie Koomson cdc26951ff Add tap-to-add button to widget picker
This change introduces an "Add" button that appears when a widget
preview is clicked in the widget picker. This button disappears when the
preview is clicked again, or another preview is clicked. When the button
is pressed, it adds that widget to the picker. The add button is
available in the app-specific widget sheet as well.

Bug: 323886237
Test: Manual
Flag: ACONFIG com.android.launcher3.enable_widget_tap_to_add DEVELOPMENT

Change-Id: I86a8a4c22119960c54a885fd2efeb91916b4f9a0
2024-03-15 20:10:45 +00:00
Shamali P 927dd27ece Update the widget previews to use the container sizes
Additionally, adjusts the margins on sides, to make space for displaying
multiple previews side by side.

As a result of this change, previews aren't cropped anymore (indirectly
also fixing b/317366201).

There is one more follow up pending - to limit the height of
recommendations in two pane sheet to only visible area to keep the
suggestions quick to look and concise. It will also help with better
scroll experience when size is same across pages.

* http://screencast/cast/NTQ0Njc4ODgyNjc5MTkzNnxjYzZiYTU2Ny02Yw
* http://screencast/cast/NTk4ODMyMDkxOTE1ODc4NHw3NzdlNTgxZS1kMw
* http://screencast/cast/NTYxOTc5NjIxNjM4MTQ0MHxiMjQ2Njc3OC0zOQ
* http://screencast/cast/NDk4MjIxNjI0MDEzNjE5MnxjY2IwYmIxNi00Mw

Bug: 319152349
Flag: N/A
Test: Image test and table utils test
Change-Id: I07465bd4d84597b560a2b998ff1ccbf9867c0192
2024-03-12 23:47:07 +00:00
Zak Cohen 26c26fe837 Widget Picker - show app icon next to recommended app label.
https://screenshot.googleplex.com/42gUGuSADdrW2CS

Bug: 323887132
Test: Manual, no test for widget cell yet.
Flag: NA
Change-Id: I95e7a645b3664361222d5045114224b17d8fdf34
2024-02-27 13:34:15 -08:00
Treehugger Robot a5e8751f0d Merge "Merging multiple implementations of CancellableTask" into main 2024-02-22 02:54:30 +00:00
Shamali P b3a4d65bb7 Initial UI changes for displaying categorized suggestions.
Ordering changes and some more UI changes in follow-up.

Bug: 318410881
Test: See screenshots
Flag: ACONFIG com.android.launcher3.enable_categorized_widget_recommendations DEVELOPMENT
Change-Id: I77e7f4dcdda32e2921ae56721cddbe261832f0d8
2024-02-16 18:43:20 +00:00
Sunny Goyal cc1dad0cae Merging multiple implementations of CancellableTask
Bug: 318539160
Flag: None
Test: Manual
Change-Id: Ie855427c2676e0ce76655e4dd67472c0b5e435d8
2024-02-15 13:01:10 -08:00
Willie Koomson fedc18e9a8 Use generated RemoteViews preview for widget picker if available
WidgetCell will use the generated RemoteViews preview to display
previews in the widget picker. It will fallback to current preview
methods if not available.

Introduces WidgetManagerHelper.loadGeneratedPreviews as a utility
function. WidgetManagerHelper is passed into the constructor of
WidgetItem to avoid calling
context.getSystemService(AppWidgetManager.class) for each widget.

Bug: 308041327
Test: atest Launcher3Tests:GeneratedPreviewTest
Flag: ACONFIG com.android.launcher3.enable_generated_previews DEVELOPMENT
Change-Id: I37429057cda83a5321884ace2537038e050b9a58
2024-02-13 18:49:44 +00:00
Will Leshner 531fc4985b Handle widget taps in WidgetPickerActivity.
Bug: 307306823
Test: atest Launcher3Tests
Flag: NA
Change-Id: I05cd42eae91447cfe99165096a735f6e04257203
2023-12-07 13:53:45 -08:00
Sunny Goyal 2185f6f420 Loading widget description on the background thread
Bug: 281074741
Test: Varified on device
Flag: N/A
Change-Id: I6b9b13e712534bdc582b98dbfb7bdfcc40d2f19d
2023-05-05 23:15:41 +00:00
Sunny Goyal 8de4199463 Simplifying widget cell layout
Calculating the preview scale during onMeasure to ensure the
content is never clipped.

Bug: 268715418
Test: Verified on device
Change-Id: Ia0fd5ca3ccaae9644e043d75f810e91909a2aea0
2023-05-05 09:28:30 -07:00
Federico Baron 81ffe3d28d Revert "Fix bug where very large widgets get cropped out"
This reverts commit cb36de9e9f.

Reason for revert: b/276644867

Change-Id: If5d5172ab26c71304364b6b528162e551d35ec9f
2023-04-06 19:53:58 +00:00
Federico Baron cb36de9e9f Fix bug where very large widgets get cropped out
Fix: 268715418
Test: Open widget picker on tablet and verify that very large widgets (eg Youtube music recently played) are not cropped on tablets
Change-Id: I0f4609c8b7af889f39cac304ad4f6a44039f5762
2023-03-22 21:24:14 +00:00
Sunny Goyal 82dfc15037 Simplifying code around multiple translation components
Bug: 270759683
Test: Verified on device
Change-Id: I6c758c715828ae25e0e3c60b793cf85d70cb2487
2023-03-02 12:22:03 -08: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
Sunny Goyal d872a97bd0 Updating icon badging logic
Bug: 201682172
Test: Manual
Change-Id: I57421b0c77e12f1cd464e532d2a1383c2cf93981
2021-12-02 22:14:25 +00:00
Sebastian Franco 0a1328d9fb Adding back the badges on widgets for widget recommendations.
Test: Manual Testing
Fix: 202956924
Change-Id: I859d3d93d95bdc8d0742eb6b5dd40ad12a386928
2021-11-17 15:08:09 -06:00
Sunny Goyal 177785eccf Moving all widget picker tests to instrumentation tests
Bug: 196825541
Test: Presubmit
Change-Id: I946f29baedb2e6b29044f8df1bc73b74e9999efe
2021-08-18 15:06:53 -07: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
Steven Ng b014e9098b Merge "Preview layout scaling for RemoteViews preview" into sc-v2-dev 2021-08-11 21:59:45 +00:00
Steven Ng f64b08dcb9 Preview layout scaling for RemoteViews preview
RemoteViews may contain multiple layouts. The best fit layout is
picked after layout. Let's ensure the best fit layout is picked
before scaling a preview

Test: Manual
Fix: 196044656
Change-Id: I41b9f70040befaf96a9af95f9399a816eb0b71cb
2021-08-11 16:37:58 +01:00
Steven Ng caf2e5f350 Use target size to scale down a widget preview image
WidgetCells are being recycled in WidgetFullSheet. getWidth/getHeight
could be a recycled dimension. There is also no guarantee that measure
has taken placed before the scale down logic. Let's use the targeted
width for the scale down logic instead.

Test: Manual
Fix: 195417705
Change-Id: Idfb3cc485604d19658e210709bebde6f163003cf
2021-08-10 18:18:11 +01:00
Steven Ng 2b90d043f6 Fix scaling on widget previews that have width / height set to
wrap_content

If the widget preview has width / height set to wrap_content, we should
set the layout param width / height to the exact dimension after
measurement. Otherwise, we will end up clipping the previews.

Test: manual
Fix: 193144010
Change-Id: I101f7c6d3dbd264fee448b85c54029d5650d6630
2021-07-22 11:19:25 +01:00
Steven Ng 4f0f5d732d Fix widget cell container size
This was the same calculation used before http://ag/15177218.

Test: run AddWidgetTest, AddConfigWidgetTest
Bug: 193819550
Change-Id: I1b5e0072a4c05b656de98f8d42667ae99438c005
2021-07-16 12:43:55 +01:00
Steven Ng 4083ae30db Merge "Scale RemoteViews from requestPinAppWidget shown in AddItemActivity" into sc-v2-dev 2021-07-16 09:24:02 +00:00
Steven Ng 02c75d9897 Fix class cast issue in AddItemActivity am: 671ffb88ca
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15299573

Change-Id: I393d4540df0b32e644e3d1a963db14564281c03c
2021-07-16 02:04:23 +00:00
Steven Ng 2b123833ad Scale RemoteViews from requestPinAppWidget shown in AddItemActivity
Test: manual
Bug: 193144010

Change-Id: Ia2b64c32f92a43a8d71ee82f164543e1e624814a
2021-07-15 17:59:45 +01:00
Steven Ng 671ffb88ca Fix class cast issue in AddItemActivity
AddItemActivity is a standalone activity. There is no Launcher activity
instance. Avoid using LauncherAppWidgetHostView in WidgetCell by
replacing it NavigableAppWidgetHostView instead

Test: Check preview layouts are correctly rendered in widgets picker
      and pin widget dialog. Also test drag and drop to verify the
      local color extraction still works when dragging a preview layout
      from widgets picker to home screen.
Fix: 193765783
Change-Id: I3a734a54941257cebcd7b7f6a4c2c9cc764c5c12
2021-07-15 16:06:51 +01:00
Steven Ng f3d23f67bd Scale widget previews
This CL covers drag requests initiated from Launcher.java but not from
other activities.

Test: Manual
Bug: 193144010
Change-Id: Ieb862d689afe81a5b35aedeb9a277de08c775230
2021-07-15 12:22:37 +01:00
Steven Ng 372e85106d Merge "Fix shortcut size calcuation" into sc-dev 2021-07-13 13:59:41 +00:00
Steven Ng 6fe115b2ae Fix shortcut size calcuation
Shortcut size should be the size of all apps icon + padding

Test: Check shortcuts and widgets are shown without crash in the
      following surfaces with display & font set to largest and
      display cutout enabled. Repeat the same test with normal
      display setting and no cutout.
      1. Full widgets picker
      2. Bottom widgets picker
      3. Pin widget dialog
Fix: 193422438
Change-Id: Ibfebf94e92eed5e9cd1dd4196d98823b0e4dda6b
2021-07-13 12:46:31 +01:00
Steven Ng fbb82586a7 Clear WidgetCell#mItem before recylcing a WidgetCell
This fixes a bug which reuses a previous widget item spans to
compute the preview size.

Fix: 193133048
Test: manual
Change-Id: I5459882e258dc010898854dbbe52a6fa8d84796c
(cherry picked from commit 3d27207ff6)
2021-07-12 10:29:56 +00:00
Pierre Barbier de Reuille a7b3a14e75 Use the computation of the widget size including padding.
Found all the uses of getWidgetSizePx and replaced them with the
computation of padded sizes (checked it all made sense).

Test: Try the various widget pickers.
Bug: 191612352
Change-Id: Id2a8d12ee7ce6baabef186dbb78d817975ea2212
2021-07-02 10:04:06 +01:00
Yogisha Dixit 658c5dafd4 Log widgets source.
Test: manual
(1) Upgrading to new DB version is successful (no errors thrown in logcat)
(2) Widgets that were added with the old DB version have CONTAINER_UNKNOWN as their source container
(3) Widgets that are added with the new DB version still log source container after reboot
Bug: 185778648
Change-Id: Iaa38f0be6bc4cb0d29842f9a2ea0d08de000c930
2021-06-30 17:48:14 +00:00
Steven Ng 85486d1c2c Set the widget preview title a11y text to "{widget name} widget"
Fix: 187376680
Test: Manual
Change-Id: I211d8e2b437091808d1f5a764075af4c3832ef48
2021-06-29 12:12:43 +01:00
Stevie Kideckel a093523299 Load widget preview images before adding the rows to the adapter
This allows for smooth animations as the items will have their full
height resolved

Bug: 190892517
Test: verified locally
Test: CachingWidgetPreviewLoaderTest
Change-Id: I86afc6951a4cc82ae45e63795791d259a3bb3cda
2021-06-18 19:18:29 +00:00
Steven Ng 7e06df2b50 Use WidgetSizes to estimate widget size instead of custom calculation
Also fix 2 bugs in WidgetCell
1. preview layout: padding is added to the AppWidgetHostView rather
   than the preview container. We shouldn't add padding to the size
   of the preview container.
2. widget_preview_shortcut_padding is a padding added to shortcuts but
    not widgets.

Test: Open full widgets picker and observe widgets are rendered
      correctly in the widgets recommendation table. Also, observe
      the generated bitmap images are correctly rendered.
      Run AddWidgetTest.
Bug: 189975670
Change-Id: I00db3200e0b61dc5e82f3c4bfdf34e197ea20314
2021-06-08 11:48:11 +01:00
Steven Ng 4a0e1b40f3 Include widget padding & boarder spacing in widget preview size estimation
Test: Sideload Google dev clock and verify the 5x5 widget preview is
      rendered correctly.
      Verify conversation widget preview is rendered correctly in the
      full widgets picker and priority flow (aka pin widget flow).
Bug: 189975670
Change-Id: I4b0212ae347044c970ba40b9b33439448a6aa941
2021-06-04 15:31:22 +01:00
Stevie Kideckel 43a6be4b82 Remove intrinsic padding from widget previews
Also, scale down the preview size if it's wider than the target cell.

The intrinsic padding prevents the corners of the preview from being
rounded correctly and can lead to clipping or no rounding, especially at
larger sizes.

Bug: 187141692
Test: verified locally
Change-Id: Ie57ad57ba7c102330324bd0439acc55ff4fd83ff
2021-05-25 16:26:32 +00:00
Steven Ng f735c738ea Remove work profile badge from widget previews
Test: Check work profile badge no longer shown on work widget in the
      full and bottom widgets pickers.
Bug: 177675123
Change-Id: I0e5e32e18df832c1919749404094d68805c30556
2021-05-19 21:45:10 +01:00
Steven Ng e973d6f31f Render RemoteViews in LauncherAppWidgetHostView
Test: Pin a conversation widget from a notification. RemoteViews are
      rendered with the default size. Drag-n-drop from the pin widget
      dialog works fine.
Bug: 185934141

Change-Id: Idb76cce2807e55e7b42e2e044712519857beb202
2021-04-21 15:43:51 +01:00
Steven Ng f089f741ad Fix app widget preview layout drag-n-drop & rendering
1. Before this CL, preview layouts are not rendered in both the
   BottomWidgetSheet and SearchPopupSheet because the preview
   width & height are not set correctly.
2. Also applies the right padding to preview layouts.

Bug: 185374336
Test: Drag-n-drop preview layout from the full widgets picker,
      the bottom widgets picker and the search widgets picker.

Change-Id: I2b6303bfe4eb86a4935a5569f6107e9d46448902
2021-04-16 10:41:33 +01:00
Pierre Barbier de Reuille ad41a56166 Stop trying to draw a view not attached to the view tree
The behavior of the framework when we try to do so is undefined. In our
case, it almost work, but no clipping is applied, which is a problem for
Android S (before that, widget couldn't use clipping in the first
place).

Instead of drawing the view through a drawable, this really add the view
and adds also a badge ImageView for badges instead of drawing them
indirectly.

Note that, temporarily, we have to re-allow drawing the view after it
has been attached, but the underlying framework bug being fixed, this
should be fine (I tested it and it really seems to be).

Bug: 183609936
Test: Using hand designed app (see bug)
Change-Id: I929ef8fc81c98c49406f2d940cd5efc28319886d
2021-04-07 15:51:43 +01:00
Sunny Goyal 940c27ef1a Using an independent drawable for rounded corners
Bug: 183641907
Test: Manual
Change-Id: I3114d43d07c03884348e1c33805545f19bb8d540
2021-03-30 14:47:44 -07:00
Sunny Goyal 572aca4ce2 Moving some common functionality to IconLoaderLib
Bug: 183641907
Test: Manual
Change-Id: Icfc7ebb140e4e1678b0715beee2e0e513e707b9e
2021-03-25 10:06:53 -07:00
Pierre Barbier de Reuille adc23265dc Added rounded corner to bitmap Widget Preview
This applies to the widget picker and the initial Widget drop.

Bug: 183615331
Test: Manually using top preinstalled widgets
Change-Id: Ib7ce422dc485396c2aceec6f43e83529d642ecc7
2021-03-25 14:09:18 +00:00
Steven Ng 4235fc129c Renders widget recommendations
Update the tapl test logic to scroll a smaller distance to avoid the
search bar blocking the target touch area.

Test: Open full widgets sheet and observe the widget recommendations
      shown at the top.
      Run AddConfigWidgetTest

Bug: 179797520

Change-Id: I6d53bbb46e2cb928ed7d015aaac604be17d33178
2021-03-19 21:11:32 +00:00
Steven Ng 0226d1ad79 Replace DragView bitmap with drawable
This is a preliminary work for local color extraction. In order to
apply local colors extracted from wallpaper to AppWidgetHostView
during drag, we need to hold a reference of the dragging
AppWidgetHostView.

In this CL, the following changes are made:
1. Instead of using bitmap image directly for icons, folders, shortcuts,
   legacy widget drawable preview, a BitmapDrawable wrapper is
    introduced.
2. Introduce a WidgetHostViewDraggableDrawable which draws
   LauncherAppWidgetHostView directly to canvas. No more bitmap
   generation overhead.
3. Remove drag outline from the drag logic because this will be replaced
   by a new grid color hint UI: https://screenshot.googleplex.com/7jBEVeuxFecFKKT.png

Test: Add: add widgets, shortcuts from widgets tray.
           add icons from all apps.
           create folder.
      Drag: drag existing widgets, shortcuts, folders and icons around

Bug: 182282587
Change-Id: Ia45ff756ea5bb80cf0761f0727a9453d50c204c0
2021-03-16 00:02:38 +00:00