From 9f12373bddb12a45f63bfa337633465084b0c2da Mon Sep 17 00:00:00 2001 From: tomnatan Date: Tue, 25 Jan 2022 10:09:44 +0000 Subject: [PATCH] [11/n] Letterbox Education: set LAUNCHER_TASKBAR_EDUCATION_SHOWING. The setting is set to 1 if the taskbar education should be shown as soon as the animation for opening an app starts and is set back to 0 when the taskbar education window is detached from the window. Bug: 214590804 Test: N/A Change-Id: Id26e3051a6e0ef1f9c2dcbeef98710efbb4df54f --- .../launcher3/QuickstepTransitionManager.java | 14 ++++++++++++++ .../taskbar/LauncherTaskbarUIController.java | 13 ++++++++++--- .../android/launcher3/taskbar/TaskbarEduView.java | 9 +++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index 49b2cc5894..3eb1935ee8 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -16,6 +16,7 @@ package com.android.launcher3; +import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING; import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE; import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN; @@ -75,6 +76,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.SystemProperties; import android.os.UserHandle; +import android.provider.Settings; import android.util.Pair; import android.util.Size; import android.view.SurfaceControl; @@ -682,6 +684,18 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener appAnimator.setInterpolator(LINEAR); appAnimator.addListener(floatingView); appAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController(); + if (taskbarController != null && taskbarController.shouldShowEdu()) { + // LAUNCHER_TASKBAR_EDUCATION_SHOWING is set to true here, when the education + // flow is about to start, to avoid a race condition with other components + // that would show something else to the user as soon as the app is opened. + Settings.Secure.putInt(mLauncher.getContentResolver(), + LAUNCHER_TASKBAR_EDUCATION_SHOWING, 1); + } + } + @Override public void onAnimationEnd(Animator animation) { if (v instanceof BubbleTextView) { diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 4132c684ef..0f91aa2822 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -216,9 +216,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { * Starts the taskbar education flow, if the user hasn't seen it yet. */ public void showEdu() { - if (!FeatureFlags.ENABLE_TASKBAR_EDU.get() - || Utilities.IS_RUNNING_IN_TEST_HARNESS - || mLauncher.getOnboardingPrefs().getBoolean(OnboardingPrefs.TASKBAR_EDU_SEEN)) { + if (!shouldShowEdu()) { return; } mLauncher.getOnboardingPrefs().markChecked(OnboardingPrefs.TASKBAR_EDU_SEEN); @@ -226,6 +224,15 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mControllers.taskbarEduController.showEdu(); } + /** + * Whether the taskbar education should be shown. + */ + public boolean shouldShowEdu() { + return FeatureFlags.ENABLE_TASKBAR_EDU.get() + && !Utilities.IS_RUNNING_IN_TEST_HARNESS + && !mLauncher.getOnboardingPrefs().getBoolean(OnboardingPrefs.TASKBAR_EDU_SEEN); + } + /** * Manually ends the taskbar education flow. */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java index 8525427a64..89d67be685 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java @@ -20,6 +20,7 @@ import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE; import android.animation.PropertyValuesHolder; import android.content.Context; import android.graphics.Rect; +import android.provider.Settings; import android.util.AttributeSet; import android.util.Pair; import android.view.View; @@ -92,6 +93,14 @@ public class TaskbarEduView extends AbstractSlideInView getPopupContainer().addView(this, 1); } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING, 0); + } + /** Show the Education flow. */ public void show() { attachToContainer();