Commit Graph

272 Commits

Author SHA1 Message Date
Andy Wickham 9e754b008d Adds ability to use LauncherPreviewRenderer in Sandbox.
This is mostly a proof-of-concept for future use and
tweaks as desired by UX.

The idea is to better replicate the actual UI.

Screenshot: https://drive.google.com/file/d/1EGDgcrSH2QZuSh6P3zWLBl6L8Xd-gtFY/view?usp=sharing

Bug: 148542211
Change-Id: Ibed4b8118346ef72599463c9fd6a2f71166993fd
2020-09-16 19:35:18 -07:00
Tracy Zhou ef9596d4c1 Only load the first page in grid preview
Bug: 160662425
Test: manual (verified correctness)
Change-Id: I9dc3b7d7b84924ffb588470d4b6b20431a62b6cd
2020-09-10 14:10:41 -07:00
TreeHugger Robot 3cc22175e9 Merge "Moving hotseat predictions to ModelDelegate" into ub-launcher3-master 2020-08-24 18:42:01 +00:00
Tony Wickham b176dc99b2 Set new scrimMultiplier instead of scrimProgress for overview -> home
Animating this new property allows us to adjust the scrim without
competing with other state animations that could be setting the
scrim progress. Also reset scrimMultipler = 1 for state transitions.

Test: Swipe from home to overview, then during that transition swipe
from overview to home; when the former transition ends while the
second is still in progress, ensure scrim value doesn't jump

Bug: 144170434
Change-Id: I44b57ced1c6902e558fe1818bcbf11ceb4ff2f6f
2020-08-19 18:42:00 -07:00
Sunny Goyal 0fc3d1275a Moving hotseat predictions to ModelDelegate
Bug: 160748731

Change-Id: I8db7856a17e0b6ca45b4d5ec3513f788f22db11a
2020-08-17 08:43:07 -07:00
Andy Wickham a310e9c035 Refactors LauncherPreviewRenderer to better support subclassing.
Basically this removes the inner class MainThreadRenderer, which
was only created and used for its populate() method in the parent's
getRenderedView() method. All methods and members of that subclass
are merged into the parent LauncherPreviewRenderer class, and
getRenderedView() simply inlines the previous populate() code.

Other smaller changes:
 - Extracted out shouldShowQsb() and shouldShowRealLauncherPreview()
 - Disables search view and its children to prevent interaction

Change-Id: I7d0cce73efbe022c16661a0ad66eefe5cb285641
2020-08-12 20:02:27 -07:00
Sunny Goyal eaf7a95546 Changing minimum supported Launcher version to 26
Change-Id: I49fcf874430ac53c3246371e179fbd828e14e4da
2020-07-29 17:30:19 -07:00
Sunny Goyal 8b74cc761b Moving all-apps predictions to Launcher model
Predictions are loaded and managed by Launcher model and follow
the model lifecycle. They are then bound to the callback which
handles the UI

Bug: 160748731
Change-Id: I4a3ea0698d80fafe94afb4ce66ffa7f4a6a91c68
2020-07-29 13:07:52 -07:00
Sunny Goyal 5d09b2e358 Updating some comments and variables
Change-Id: Ib3223c66e9ce187cebc6ce26a46b228f95787778
2020-07-17 18:58:49 +00:00
Tracy Zhou b023873bc3 Improve grid preview performance
After breaking down the time we spend in rendering preview under a different grid setting, I found out that we spend a huge amount of time loading the workspace. It takes a long time in non preview case (launcher workspace init), so to optimize we should try to cut down things that are not necessary for preview. Widget model loading (widget and shortcut updates) takes half of the time, and can be optimized with minimal risks / code changes.

Bug: 160662425
Test: Manual

Change-Id: I89029d0ddf6e2517077a0ba3fbbcfdcd60b268d9
2020-07-14 23:30:03 +00:00
Tracy Zhou f957ff9123 Do preview grid migration in a worker thread
Also remove USE_SURFACE_VIEW_FOR_PREVIEW flag

Fixes: 159755324
Test: manual
Change-Id: I6517c34911e217a69063226b01e4583194902f9c
(cherry picked from commit 633a4bdf57)
2020-06-25 21:04:25 +00:00
Tracy Zhou bc305fc7fe Support predicted icons in preview
Fixes: 152789575
Test: https://screenshot.googleplex.com/r3AtHp3TAh0
Change-Id: I22f7ee2a69f2df12ade16f50bf455651dbfce597
2020-05-29 09:58:01 -07:00
TreeHugger Robot 5a763db39d Merge "Clearing track-path bitmap cache when the icon shape changes" into ub-launcher3-rvc-dev 2020-05-27 21:12:51 +00:00
Sunny Goyal 0b83e24216 Clearing track-path bitmap cache when the icon shape changes
Bug: 157123766
Change-Id: Ie7efaab55de47afff593012a906f3912aca90ce9
2020-05-27 20:14:53 +00:00
Tracy Zhou b1eeeafa6f Merge "Permission protect GridOptionsProvider" into ub-launcher3-rvc-dev 2020-05-26 22:36:37 +00:00
Tracy Zhou c6f3b4d0c7 Permission protect GridOptionsProvider
Fixes: 152004429
Test: Manual
Change-Id: I2576322b68b128acf28536a5e37a9853ac9d03c3
2020-05-23 01:24:25 -07:00
Tracy Zhou 542b89eaa3 Merge "Don't continue rendering preview screen when binder is dead" into ub-launcher3-rvc-dev 2020-05-13 22:20:07 +00:00
Tracy Zhou 7087a7bd91 Don't continue rendering preview screen when binder is dead
Fixes: 155365052
Test: manually quick switches between different grid options
Change-Id: I31dc14b0a50b5e3a5c81272b693303034fcf8b40
2020-05-13 14:06:05 -07:00
Samuel Fufa 167210a323 Keep Predicted icon same size when dragging
-> In addition, this also prevents the drawing of ring effect for predicted icon when view is about to be copied to drag bitmap. Icon will scale to full size (without ring) when dropped.

Video attached to bug report

Bug: 152325754
Test: Manual
Change-Id: Ibd1a5dbf76c41bdc30ae851ad914a4d0e32703c8
2020-05-13 11:22:27 -07:00
Tracy Zhou 9a1becebec Merge "Fade in grid preview" into ub-launcher3-rvc-dev 2020-05-13 00:45:37 +00:00
Tracy Zhou 0d880c876b Fade in grid preview
Fixes: 156406762
Test: https://drive.google.com/open?id=1JshUMjd1ASjHcAhnAiG3PEC-6wCRY7EE
Change-Id: I6a99650796fe64a6c11ee9fad6904b14373c6363
2020-05-12 14:43:44 -07: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 e396abf502 Moving model data structures to a separate file
Change-Id: I77ad7a5219e72d2e0d6c1803de2ac3ed6a65a8f7
2020-04-09 13:20:39 -07:00
Adam Cohen 370164c4f7 Fix drag and drop regression when dragging a scaled widget
Missed this case in ag/10736229; the symptom was that if you picked up a widget when it was scaled due to split-screen, the widget would disappear

Test: manual

Change-Id: I26810fcf820f7053b6445989dce6598e1df55a8e
2020-04-08 18:00:35 -07:00
Tracy Zhou 5d35b86558 Merge "Switch to public API for surface view when rendering preview" into ub-launcher3-master 2020-04-06 22:51:49 +00:00
Tracy Zhou bb353d3741 Switch to public API for surface view when rendering preview
Bug: 152003916
Test: Manual
Change-Id: I539ed2876d869366fa7635f4467d19e8488b7a1a
2020-04-06 14:39:52 -07:00
Sunny Goyal c4d3201538 Removing support for fake landscape
Bug: 111068105
Change-Id: If31d2f700ddee1d21541735de3a8006ee2a53c5c
2020-04-03 17:11:35 -07:00
Tracy Zhou c0000450b5 Support grid preview with v2 migration algorithm
The focus of ag/10346770 is around the actual algorithm, while in the meantime our preview logic has changed during the code review of ag/10100264.

GridSizeMigrationTaskV2 addresses both cases, the difference being preview passes in constructed IDP while actual migration uses IDP from the current Context.

When doing actual migration, we call METHOD_UPDATE_CURRENT_OPEN_HELPER to update the current db helper and copy the favorites table from the previous db into the current db in favorites_tmp table. Then we do migration from there.

When calculating preview, I added METHOD_PREP_FOR_PREVIEW in this change to copy the favorites table from the intended grid setting to the current grid setting in favorites_preview table. Then we calculate migration from the current favorites table to favorites_preview table and save into favorites_preview table.

Bug: 144052802
Fixes: 144052839

Test: Manual

Change-Id: I64a8b61a4e0bf8399c0ae1af4ef9d2bde0f1ee2f
2020-03-25 21:58:19 -07:00
TreeHugger Robot 6ae56860de Merge "Don't draw bottom scrim in fully gestural mode" into ub-launcher3-master 2020-03-21 03:43:52 +00:00
Tony Wickham 81feb2c547 Don't draw bottom scrim in fully gestural mode
The scrim exists primarily to protect nav bar buttons which
don't exist in this mode.

Change-Id: Ic6de7d54f27f135eecb116ac09714c91c05b88da
2020-03-20 18:37:26 -07:00
Adam Cohen f946e0a5ee Merge "Refactor / Cleanup / Simplify a bunch of dnd related rendering / animation" into ub-launcher3-master 2020-03-21 01:27:08 +00:00
Adam Cohen 650869973a Refactor / Cleanup / Simplify a bunch of dnd related rendering / animation
Addresses:
=> Fix folder icon drop location mapping (was very far off)
=> Fix BubbleTextView drop animation shifted by a few pixels
=> Get rid multiple unnecessary calls to setDragMode(none), was breaking
   some of the reorder flow; still some issues to address here.
=> Fix folder icon parallax (didn't work when the folder had a dot)

Test: manual

Change-Id: I5959cf341996f75d30212353ec096ed25bf40ea5
2020-03-21 01:26:09 +00:00
Tony Wickham 5de624c286 Merge "Support blacklisting live wallpapers from showing sysui scrims" into ub-launcher3-master 2020-03-20 01:31:35 +00:00
Tony Wickham d6f917f182 Support blacklisting live wallpapers from showing sysui scrims
Add wallpaper changed broadcast receiver to BaseDragLayer, which
checks if the new wallpaper is blacklisted and relays that to
remove the scrims.

Bug: 150144115
Change-Id: I55b7b98fdd419cd76532492461a872367efed67b
2020-03-19 16:32:33 -07:00
Jon Miranda 42e7c503e1 Polish app open scrim animation.
We used to hide the scrim animation immediately, now we fade it out along with
the rest of the draglayer.

Also uses staggered workspace animation when resuming launcher from other
means ie. back gesture -> home

Bug: 145242991
Change-Id: Ib2161746f79ae5eaceac02d1416aa9bd7ecfeac4
2020-03-19 11:59:59 -07:00
Jon Miranda c298078241 Add staggered workspace animation to keyguard unlock animation.
Added behind FeatureFlag.KEYGUARD_ANIMATION due to dependency on
Ie94ab8ecd35e9dcc28d0b8f7aaeb058e15b0f80b.

Added dynamic resource unlock_staggered_velocity_dp_per_s so that the
animation can be tuned.

Bug: 151238866
Change-Id: I4d349d32cc7d86be3cdc582c2a7c565be2931444
2020-03-17 14:27:35 -07:00
Tracy Zhou 85f0c3b841 Use SurfaceView to render grid preview
Demo: https://drive.google.com/open?id=1wQ8dT5bfTxSh-NRQpNBwTCkKOtOOUMPj

Bug: 150224413
Test: Manual
Change-Id: I44e7baed1bcd15351e03dcbeb2b525bc1b325478
2020-03-12 23:06:36 -07:00
Sunny Goyal dbcc63edeb Removing some autoboxing during property animation
Change-Id: Ibd6f20c565a4d66dc6d606b3f0bbc96fec66fe56
2020-03-10 08:43:55 +00:00
Tracy Zhou bd22546683 Render user's actual workspace in ThemePicker preview (Part 6)
Didn't test out widgets in Part 5. So in this change,
- Added some widget classes to the PreviewContext WHITELIST
- Manually update widget model after loading workspace since we do not attach widget listeners to the LauncherAppModel for preview.

Change-Id: I0a555b2319b2e91432dbd58289ddb66aca1384df
2020-03-02 00:44:55 -08:00
Tracy Zhou be13d109b7 Render user's actual workspace in ThemePicker preview (Part 3)
go/grid-migration-preview

With this change, we can see actual grid migration in wallpaper preview.

The approach here: we use a tmp table (favorites_preview) here specifically for this preview (to write off the migration results), and load from this tmp table workspace items if migration is necessary and successful. Otherwise, we load from the current workspace.

UPDATED: this change should be completely compatible with the new multi-db grid migration algorithm. Here is why
1. In LauncherPreviewRender#renderScreenShot, I added a check to decide which grid migration preview method we should call. Once v2 preview method is implemented, it should be integrated with other parts of this change perfectly (the reason will be mentioned below).
2. While we have multiple DBs, mOpenHelper in LauncherProvider always points to the current db we are using. Queries using CONTENT_URI is routed to whatever DB mOpenHelper points to, so it works perfectly to directly operate on CONTENT_URI even when we use multi-db underneath the hood.
3. With 1 and 2 mentioned, I believe in order for this preview change to support multi-db, we only need to implement the V2 grid migration algorithm. Because most of what we are doing in this change is wrapped in GridSizeMigrationTask, it's perfectly safeguarded.

Bug: 144052839
Change-Id: Ie6d6048d77326f96546c8a180a7cd8f15b47e4c4
2020-02-21 15:49:00 -08:00
Tracy Zhou 7be160170d Merge "Render user's actual workspace in ThemePicker preview (Part 5)" into ub-launcher3-master 2020-02-20 05:53:45 +00:00
Tracy Zhou 10a285dc24 Render user's actual workspace in ThemePicker preview (Part 5)
This change takes care of rendering widgets using widget provider's layout info.

Test: manual
Bug: 144052839

Change-Id: I7002d8bf653513cdd317736d550a47f61f0ee474
2020-02-19 16:46:25 -08:00
Zak Cohen 3eeb41de9a Rename flag IS_DOGFOOD to IS_STUDIO.
The flag is only set when building from Android Studio... and is never
used for dogfood.

Test: local
Change-Id: I898d585f4558c2437f0152ef102bea59c351f80b
2020-02-14 14:19:59 -08:00
Sunny Goyal 3c43157405 Adding a utility class to easily track bitmap creations during View.draw
Change-Id: I8b85564aad475e823f345ae96e922b35eab06f8e
2020-01-31 18:13:54 +00:00
TreeHugger Robot 0618d689e8 Merge changes from topic "state-supplier" into ub-launcher3-master
* changes:
  Translate recents slightly while dragging after pausing
  Two-zone model: swipe up from nav bar vs above it
  Change LauncherState to Supplier<LauncherState> in tests
2020-01-29 03:06:04 +00:00
Tony Wickham 4fdba14cfb Two-zone model: swipe up from nav bar vs above it
When ENABLE_OVERVIEW_ACTIONS flag is enabled, swiping up from the nav
bar goes to overview if you hold, or the first home screen if you don't.

- Added NoButtonNavBarToOverviewTouchController, which extends
  FlingAndHoldTouchController but only works if you start from the nav
  bar. Otherwise it falls back to PortraitStatesTouchController to
  handle normal state transition to all apps.
- Added HintState. This is where the workspace/hotseat/qsb scale down
  when you swipe up from the nav bar, to hint that you're about to
  either go to overview or the first home screen.
  - Added getQsbScaleAndTranslation() to allow Overview and Hint states
    to treat it as part of the hotseat.
  - Since Overview needs to show above the QSB as it's animating, bring
    Overview to the front and update OverviewScrim to handle the case
    where there's no view above Overview to draw the scrim beneath.
- ENABLE_OVERVIEW_ACTIONS is always false in 2-button mode, since the
  shelf is crucial to that mode.

Bug: 143361609
Change-Id: I743481bb239dc77f7024dc98ba68a43534da2637
2020-01-28 18:31:10 -08:00
Sunny Goyal 09b03c55df Optimizing some slow calls on the main thread
Change-Id: I4eed5f7e5bf1316556d6985a610918fc709a7471
2020-01-28 22:18:14 +00:00
Sunny Goyal a7a5bf3101 Adding support for multiple Model clients
Bug: 137568159
Change-Id: Ia4db800b19cc80c695fcb9ea28e07709dfd08c6a
2020-01-10 12:23:27 -08:00
Tracy Zhou 4d7b244f3f Render user's actual workspace in ThemePicker preview (Part 2)
With this change, we can also render folders in preview. It's built on top of part 1.

Test: Go to grid options, choose a different grid option, and see user's workspace rendered in the preview
Bug: 144052839
Change-Id: Iaf6d8af6b909ece4147ea250d95dec3d2c0019d3
2020-01-08 15:42:58 -08:00
Sunny Goyal 73b5a27b14 Updating some non-final static objects
Updating various static objects to use a standard pattern so that
it is easier to track and cleanup those objects

Bug: 141376165
Change-Id: Ia539cbfa338d544dddad771c5027b6748762768b
2019-12-11 13:22:58 -08:00