diff options
author | George Lin <giolin@google.com> | 2023-03-23 05:51:39 +0000 |
---|---|---|
committer | George Lin <giolin@google.com> | 2023-03-23 20:07:50 +0000 |
commit | 15ef93ecba3fe4ef1dcfc727dffcfe44c5757a54 (patch) | |
tree | 8f35572e9aefe13b8025b2cb889c77308b87a63c | |
parent | a455f4e3a5f1f2724a1b0b1f60069e2aeeabe26f (diff) |
[WPP2] Hide preview bottom components when overlay tabs are shown
For deciding show/hide of the bottom components, we need to take care of 2 cases
1. When on color update, we need to set the QSB flag and re-render the
surface
2. When show/hide the wallpaper control, we specifically send a message
to show/hide the workspace bottom components
Test: https://drive.google.com/file/d/1z1EG6KsLKFxAlS8GBLV16GoGvwI72IHc/view?usp=sharing&resourcekey=0-OGzB0RmiK5qvV2rwMYvUHQ
Test: https://drive.google.com/file/d/1gK54Y5MuHTt2tAuFDxY7z8RIL22J5c9f/view?usp=sharing&resourcekey=0-jPPC1pl1VkCS_tib2-pVxA
Test: https://drive.google.com/file/d/1ntUSgD7KbHPDGNpomQ5zE0D2fsYVeuNA/view?usp=sharing&resourcekey=0-TCuuvL4p022ATzKYuF-Q1A
Test: https://drive.google.com/file/d/1yA1K52N-orajamnrxWD17Qg7bCclmq53/view?usp=sharing&resourcekey=0-6LHnZGM5JpFQISNJ6X7jEg
Bug: 266618769
Change-Id: If8d5bf678d5c9ef23788b0a2702c46c549f8492e
-rw-r--r-- | src/com/android/wallpaper/model/WallpaperSectionController.java | 2 | ||||
-rw-r--r-- | src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java | 32 |
2 files changed, 29 insertions, 5 deletions
diff --git a/src/com/android/wallpaper/model/WallpaperSectionController.java b/src/com/android/wallpaper/model/WallpaperSectionController.java index 4b28b59c..6bb2a152 100644 --- a/src/com/android/wallpaper/model/WallpaperSectionController.java +++ b/src/com/android/wallpaper/model/WallpaperSectionController.java @@ -260,7 +260,9 @@ public class WallpaperSectionController implements parent.removeView(workspaceSurface); if (callback != null) { callback.resetLastSurface(); + callback.setHideBottomRow(false); callback.setWallpaperColors(colors); + callback.maybeRenderPreview(); } parent.addView(workspaceSurface, viewIndex); } diff --git a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java index bb4c0d36..9c26cc3d 100644 --- a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java +++ b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java @@ -46,12 +46,15 @@ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { private static final String TAG = "WsSurfaceHolderCallback"; private static final String KEY_WALLPAPER_COLORS = "wallpaper_colors"; + public static final int MESSAGE_ID_UPDATE_PREVIEW = 1337; + public static final String KEY_HIDE_BOTTOM_ROW = "hide_bottom_row"; private final SurfaceView mWorkspaceSurface; private final PreviewUtils mPreviewUtils; private final boolean mShouldUseWallpaperColors; private final AtomicBoolean mRequestPending = new AtomicBoolean(false); private WallpaperColors mWallpaperColors; + private boolean mHideBottomRow; private boolean mIsWallpaperColorsReady; private Surface mLastSurface; private Message mCallback; @@ -126,27 +129,45 @@ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { } mWallpaperColors = colors; mIsWallpaperColorsReady = true; - maybeRenderPreview(); + } + + /** + * Set the current flag if we should hide the workspace bottom row. + */ + public void setHideBottomRow(boolean hideBottomRow) { + mHideBottomRow = hideBottomRow; + } + + /** + * Hides the components in the bottom row. + * + * @param hide True to hide and false to show. + */ + public void hideBottomRow(boolean hide) { + Bundle data = new Bundle(); + data.putBoolean(KEY_HIDE_BOTTOM_ROW, hide); + send(MESSAGE_ID_UPDATE_PREVIEW, data); } public void setListener(WorkspaceRenderListener listener) { mListener = listener; } - private void maybeRenderPreview() { + /** + * Render the preview with the current selected {@link #mWallpaperColors} and + * {@link #mHideBottomRow}. + */ + public void maybeRenderPreview() { if ((mShouldUseWallpaperColors && !mIsWallpaperColorsReady) || mLastSurface == null) { return; } - mRequestPending.set(true); requestPreview(mWorkspaceSurface, (result) -> { mRequestPending.set(false); if (result != null && mLastSurface != null) { mWorkspaceSurface.setChildSurfacePackage( SurfaceViewUtils.getSurfacePackage(result)); - mCallback = SurfaceViewUtils.getCallback(result); - if (mNeedsToCleanUp) { cleanUp(); } else if (mListener != null) { @@ -216,6 +237,7 @@ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { Bundle request = SurfaceViewUtils.createSurfaceViewRequest(workspaceSurface, mExtras); if (mWallpaperColors != null) { request.putParcelable(KEY_WALLPAPER_COLORS, mWallpaperColors); + request.putBoolean(KEY_HIDE_BOTTOM_ROW, mHideBottomRow); } mPreviewUtils.renderPreview(request, callback); } |