From ff94b044cf221df0b1cc4087a0dd171225ae9ed5 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Mon, 9 Apr 2018 17:54:13 +0100 Subject: [PATCH] Show discovery bounce after work profile is created BUG: 72804698 Change-Id: Ifa59ed5d82d12eb65323e86af9c8db2c3e9920a3 --- .../android/launcher3/allapps/DiscoveryBounce.java | 12 ++++++++++-- .../allapps/PersonalWorkSlidingTabStrip.java | 2 +- .../android/launcher3/compat/UserManagerCompat.java | 2 ++ .../launcher3/compat/UserManagerCompatVL.java | 10 ++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/allapps/DiscoveryBounce.java b/src/com/android/launcher3/allapps/DiscoveryBounce.java index e8c5f15df9..48fdd73bee 100644 --- a/src/com/android/launcher3/allapps/DiscoveryBounce.java +++ b/src/com/android/launcher3/allapps/DiscoveryBounce.java @@ -111,7 +111,8 @@ public class DiscoveryBounce extends AbstractFloatingView { private static void showForHomeIfNeeded(Launcher launcher, boolean withDelay) { if (!launcher.isInState(NORMAL) - || launcher.getSharedPrefs().getBoolean(HOME_BOUNCE_SEEN, false) + || (launcher.getSharedPrefs().getBoolean(HOME_BOUNCE_SEEN, false) + && !shouldShowForWorkProfile(launcher)) || AbstractFloatingView.getTopOpenView(launcher) != null || UserManagerCompat.getInstance(launcher).isDemoUser() || ActivityManager.isRunningInTestHarness()) { @@ -138,7 +139,8 @@ public class DiscoveryBounce extends AbstractFloatingView { || !launcher.hasBeenResumed() || launcher.isForceInvisible() || launcher.getDeviceProfile().isVerticalBarLayout() - || launcher.getSharedPrefs().getBoolean(SHELF_BOUNCE_SEEN, false) + || (launcher.getSharedPrefs().getBoolean(SHELF_BOUNCE_SEEN, false) + && !shouldShowForWorkProfile(launcher)) || UserManagerCompat.getInstance(launcher).isDemoUser() || ActivityManager.isRunningInTestHarness()) { return; @@ -174,4 +176,10 @@ public class DiscoveryBounce extends AbstractFloatingView { view.mIsOpen = true; launcher.getDragLayer().addView(view); } + + private static boolean shouldShowForWorkProfile(Launcher launcher) { + return !launcher.getSharedPrefs().getBoolean( + PersonalWorkSlidingTabStrip.KEY_SHOWED_PEEK_WORK_TAB, false) + && UserManagerCompat.getInstance(launcher).hasWorkProfile(); + } } diff --git a/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java b/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java index a916697bf0..31c5914b81 100644 --- a/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java +++ b/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java @@ -39,7 +39,7 @@ public class PersonalWorkSlidingTabStrip extends LinearLayout implements PageInd private static final int POSITION_PERSONAL = 0; private static final int POSITION_WORK = 1; - private static final String KEY_SHOWED_PEEK_WORK_TAB = "showed_peek_work_tab"; + public static final String KEY_SHOWED_PEEK_WORK_TAB = "showed_peek_work_tab"; private final Paint mSelectedIndicatorPaint; private final Paint mDividerPaint; diff --git a/src/com/android/launcher3/compat/UserManagerCompat.java b/src/com/android/launcher3/compat/UserManagerCompat.java index 03e3861eae..ad5147734e 100644 --- a/src/com/android/launcher3/compat/UserManagerCompat.java +++ b/src/com/android/launcher3/compat/UserManagerCompat.java @@ -64,4 +64,6 @@ public abstract class UserManagerCompat { public abstract boolean isDemoUser(); public abstract boolean requestQuietModeEnabled(boolean enableQuietMode, UserHandle user); public abstract boolean isAnyProfileQuietModeEnabled(); + + public abstract boolean hasWorkProfile(); } diff --git a/src/com/android/launcher3/compat/UserManagerCompatVL.java b/src/com/android/launcher3/compat/UserManagerCompatVL.java index 1ff69818a9..eec3438496 100644 --- a/src/com/android/launcher3/compat/UserManagerCompatVL.java +++ b/src/com/android/launcher3/compat/UserManagerCompatVL.java @@ -119,6 +119,16 @@ public class UserManagerCompatVL extends UserManagerCompat { return users == null ? Collections.emptyList() : users; } + @Override + public boolean hasWorkProfile() { + synchronized (this) { + if (mUsers != null) { + return mUsers.size() > 1; + } + } + return getUserProfiles().size() > 1; + } + @Override public CharSequence getBadgedLabelForUser(CharSequence label, UserHandle user) { if (user == null) {