Commit Graph

68 Commits

Author SHA1 Message Date
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
Steven Ng
ae6b34811b WidgetCell & LiveWidgetPreview cleanup
The fixes are:
1. For widgets shown in TableRow, aligns them center vertically.
   This is useful when widgets of different height are shown in
   the same row.
2. Remove background color from WidgetCell
3. Re-enable swipe in FullWidgetsSheet
4. Use the WidgetCell image as the single & long press area because
   1. Previews are now scaled to their default size. The touch area
      should already be larger for widgets that are bigger than 2.4
      cells
   2. WidgetCells also render description. If the user long press the
      description area, the drag view will not align in the middle of
      the user touch / drag area.

Test: Drag-n-drop widgets from FullWidgetsSheet, BottomWidgetsSheet
      and pin widget flow.
      In FullWidgetsSheet, swipe left and right to switch work /
      personal tab.

Video: https://drive.google.com/file/d/1Ur7PwF1a7iwGGRTZczfc0BSVu-Ta6-Vm/view?usp=sharing

Bug: 179797520
Change-Id: I6fe4bc88d1e1b35b1819d8d7f046105f5ed27043
2021-03-08 21:22:08 +00:00
Steven Ng
46b0d8e291 Inflate layout preview for work profile
Also fix a bug which LivePreviewCells are not used in full widgets
sheet.

Test: Temporarily replace the previewLayout with initialLayout
      from the code. Then, open both the full and bottom widgets
      sheet. Observe initial layout is rendered correctly for both
      personal and work profile.

Screenshot: https://screenshot.googleplex.com/BgJycVjzeoU3PNf.png

Bug: 181061277
Change-Id: Id635ee778008b6f94009f50bf4373d3b0f545417
2021-03-05 20:02:31 +00:00
Steven Ng
c7537713ca Add widget description to WidgetCell
Full picker: https://screenshot.googleplex.com/8Dij79K8Pq2KWdm.png
Bottom picker: https://screenshot.googleplex.com/5f9TLra49dYJjLB.png

Test: Manually launch full and bottom widget pickers and observe
      description is only shown for widgets but not shortcut.

Bug: 179797520
Change-Id: I5bfde056906a4a0f4fff9bc9a488f808365173b3
2021-03-01 23:17:32 +00:00
Steven Ng
11773f47d2 Show widget previews in their expected cell sizes
1. Show widget previews in their expected cell sizes.
2. Update the bottom picker to use a table layout rather than
a horizontal scrollbar.
3. Move the title and cell size description to the bottom of
the preview.

Test: Run AddConfigWidgetTest
      Manually open full and bottom widgets picker and observe
      widget previews.
      Video: https://drive.google.com/file/d/1K8A8hK5B4FgPTsX3cb-Yt4a_VjI0pk-w/view?usp=sharing
Bug: 179797520
Change-Id: I938612cb2e2477ce4a3a2d6c8891a0a36fc0978c
2021-02-26 17:47:32 +00:00
Adam Cohen
c77bc45fa5 Fix issues with drag and drop from All Apps in non-default grids
=> Also fix the widget tray in these non-default grids, and the external shortcut addition flow. The layout was broken as it was scaling with the icon size. Instead keep it fixed which looks much better, similar to how we maintain all apps.
=> This also fixes a small jump when dragging shortcuts external to Launcher.

issue 154169001

Change-Id: Iad1e3859dd6fedccce9b5c6633e64426a4630c31
2020-05-08 16:00:08 -07:00
Sunny Goyal
17feee8995 Merging stylus click logic in longpress helper for better state-management
Bug: 150825081
Change-Id: I7c507c41e67c09bff5a4ad3abc7a7a62fecf910e
2020-03-27 19:53:20 +00:00
Sunny Goyal
9c2b96090b Adding SecondaryDisplayLauncher in Launcher using common listener
Bug: 141596722
Change-Id: I480bfadf592f7d0309f17c33a3fe14bb77fb5586
2020-01-30 08:27:27 +00:00
Sunny Goyal
14168431bd Adding support for dynamic calendar and clock icons
Change-Id: Icdba34340a27a4f6dff7310d0bf9fd29aef1330c
2019-10-29 13:50:02 -07:00
Samuel Fufa
aa038af6b3 Scale Icon badges for shortcut and widgets
Test: Manual
Bug: 141262820
Change-Id: I03edc986e3fe1876b6b7ed179b96864d587cb137
2019-10-04 17:06:33 -07:00
Samuel Fufa
f1424a3b38 Decouple grid size and widget preview size in WidgetsRecyclerView
Test: Manual
Bug:142148773
Change-Id: I59aa29e95ddb7d6002a88cf853bae5fcf9811154
2019-10-04 15:15:58 -07:00
vadimt
f87046619c Disable double-tap accessibility action for a widget cell
Before this CL, the cell had 3 announced actions:
1. Add to home screen (a custom action)
2. "Double-tap to activate" - performing this action instructed the user
to use action #3
3. "Double-tap and hold for long press" - starts dragging the widget.

Bug: 116018969
Test: Manual
Change-Id: Ie2378ccb13d182a2558f70f7250055bf86c5e5f6
2019-02-05 13:02:29 -08:00
Sunny Goyal
2b787e5bd6 Using a placeholder icon shape instead of low-res/blurry icon
Bug: 111142970
Change-Id: I867224464ae9c026f4dcb5256ef14fc39c8e751d
2018-08-27 10:43:46 -07:00
Sunny Goyal
f1fbc3fbe7 Converting widget panel into a floating view
> The widget panel is only inflated when needed
> Using the swipe up/down interaction for widgets tray
> Removing additional view wrappers from all-apps
> Widget tray is preserved across activity recreation
> Launcher no longer has WIDGET state, the actual code around
  the states will be removed in a follow-up cl

Bug: 67678570
Bug: 67585158
Change-Id: Ia29a7c33ec81e6c53cc24e2906b7022b6f41755b
2017-10-13 18:47:54 -07:00
Tony Wickham
26b1746593 Add support for system shortcuts in popup container
- Currently the system shortcuts are just widgets and app info
- As shortcuts, they live in ShortcutsItemView
- They are populated either as icons only (if there are deep
  shortcuts) or as icons + text
- Widgets are disabled until binding them is complete (we request for
  them to be bound on long-press now). We should revisit this.

Bug: 34940468
Change-Id: Ia51d002c3b3ede87658bdab57abfc3eeca1ed242
2017-03-30 16:35:56 -07:00
Tony Wickham
50e5165b78 Add WidgetsAndMore bottom sheet
- Contains two rows, one for widgets, and one for "configurable
  shortcuts" that have customization activities
- Extends AbstractFloatingView and uses VerticalPullDetector for
  touch interactions
- No way to show this currently; will add options to popup in followup

Bug: 34940468
Change-Id: Iab62c2cb89428f91119c9c86f9db886496c321fd
2017-03-30 15:48:53 -07:00
Sunny Goyal
c65a0085d7 Adding support for showing the widget preview based on the provided RemoteViews
Bug: 35811129
Change-Id: I336e48cd00cfec2e617ac73bd8a81419b0944aa7
2017-03-17 11:25:29 -07:00
Sunny Goyal
b38fab7573 Adding support for drag and drop for requestPinItem.
On long pressing, the confirmation activity starts a system
drag-n-drop and focuses the launcher activity. We then drive
the launcher drag controller using the system drag event

Caveats:
> We use a transparent preview for system drag and drop and use
  a view inside launcher for actual preview. This gives us better
  control over various animations.
> The parameters for drag operation are passed to the Launcher
  activity using the intent. Since onNewIntent and onDragEvent
  come at different times and are not associated, a random uuid
  is used as mime-type to match the drag event with intent params
> If the workspace is locked (eg, loader is running) the drag
  operation is simply dropped. Will be imporved in follow up cls

Bug: 33584624
Change-Id: I0bb5b25b690f86b6af31a14e11beb669fcb3a281
2017-01-24 22:24:54 -08:00
Sunny Goyal
65513ba58c Using WidgetCell in the Pin Item confirmation prompt for a consistent UI
Also fixing some platform API changes in PinItemRequestCompat

Bug: 33584624
Change-Id: I255829f0079f1a3967bf8d6a337da12c890eb7ec
2017-01-20 15:44:15 -08:00
Sunny Goyal
a2441e88ff Updating widget preview generation to not embed any badge.
Instead drawing badge in the view directly.

This will allow us to reuse the same preview when we do not want to draw
badges. This also simplified badging of shortcut config activities.

Change-Id: I9c07c33bf9c2b8ef81a00026b1d42587868c906f
2017-01-19 14:00:40 -08:00
Sunny Goyal
278359539c Adding support for requesting addition of shortcut/widget
on the workspace.

Bug: 33584624
Change-Id: I664366822fe8088742faff2cce006239ab0771bc
2017-01-18 18:38:34 -08:00
Sunny Goyal
a52ecb0390 Removing all compatibility code below Lollipop
Bug: 32745285
Change-Id: I62971908e3e4402941fab627bbdfd47be64473a3
2016-12-16 15:05:09 -08:00
Sunny Goyal
c13403c612 Defining various modes for CellLayout: Workspace, Hotseat & Folder
> Moving the definition of modes to xml
> Defining attributes in xml

Change-Id: I7a569fdbeb833d569eeeef2f2cbc8214e608ad11
2016-11-21 15:20:16 +05:30
Jon Miranda
6c61323998 Add context to widget dimensions for accessibility.
Bug: 19085860
Change-Id: Ia28c2c14b93945d796226eea3de040e971fd42f0
2016-09-19 11:25:39 -07:00
Andrew Sapperstein
abef55a1c1 Update Launcher to use theme colors.
Instead of using hard-coded variants of colors, use the theme color
that corresponds (colorAccent, colorPrimary, etc).

Updated:
- "Search for more apps" text
- App info drop target hover color
- PageIndicatorDots
- All apps & widget scroll bar & scroll popup colors
- All apps section text color
- widget picker background color

TODO:
- widget picker header color

BUG: 28625102
Change-Id: I74b543ff71b8caef8cd950c8183ac84c759cb4d5
2016-06-20 11:46:44 -07:00
Sunny Goyal
ae50284e0a Moving LauncherAccessibilityDelegate to Launcher to associate it with
activity lifecycle.

Change-Id: Ib815505677fa7ed74bdcfe7141b1d9bea5d7143a
2016-06-17 08:44:51 -07:00
Sunny Goyal
6d02c7a033 Adding some UI tests
> Launcher app from all-apps
> Drag icon to all-apps and launch it
> Add widget from widget tray

Change-Id: I6bd6128a7b560a23a887d1fb40bfcda25b9b02e7
2016-05-26 17:20:22 -07:00
Sunny Goyal
4ddc40130a Creating WidgetCellItem to wrap LauncherAppWidgetProviderInfo and resolveInfo
In PackageItemInfo,, using the user of the first item in the sub-list

Bug: 27585511
Change-Id: I8243f0e5c831af65661ae815489e53e9fcade837
2016-03-18 11:06:01 -07:00
Hyunyoung Song
dfaeff757d Manual revert due to conflict:
am: d31dcbcc7c

* commit 'd31dcbcc7c7901959c65c4e635e59274a1d4c334':
  Manual revert due to conflict:
2016-02-23 19:56:32 +00:00
Hyunyoung Song
d31dcbcc7c Manual revert due to conflict:
Revert "Load label in bg thread to prevent ANR b/27238970"

This reverts commit b62fd09576.

Change-Id: Ia751e3414fb24a18bb8bb9ca09dcd93d0e4249f6
2016-02-23 11:36:21 -08:00
Hyunyoung Song
b62fd09576 Load label in bg thread to prevent ANR
b/27238970

Change-Id: Ic5d77df7d5276cee07861d59427a94fb19691d9c
(cherry picked from commit 72a9953cf4)
2016-02-23 00:45:56 +00:00
Hyunyoung Song
72a9953cf4 Load label in bg thread to prevent ANR
b/27238970

Change-Id: Ic5d77df7d5276cee07861d59427a94fb19691d9c
2016-02-22 16:36:15 -08:00
Mady Mellor
bb83520a62 Refactor StylusEventHelper to provide onButtonPress/Release methods
This will enable an easier migration to the new M APIs for identifying
button presses from stylus / other tools.

Bug: 20430722
Change-Id: I41cfa6eff8d76bb83cf1bdaf6623ec1092ed554c
2015-08-21 11:18:14 -07:00
Sunny Goyal
233ee964a9 Calculating widget minSpans and spans statically/independent of orientation
> Filtering the widget list and excluding widgets which dont fit the grid
 > setting minSpans for the widget item when binding.

Bug: 22541314
Bug: 22559137
Change-Id: Ieda48b56c95bee0c7ec71dd691af7e23e2d43db6
2015-08-03 16:39:49 -07:00