From 42b75d43fc79db778212a8ffb5d3767b9de3f786 Mon Sep 17 00:00:00 2001 From: Samuel Fufa Date: Wed, 8 Sep 2021 12:24:02 -0700 Subject: [PATCH] [Work] Fix work apps showing in personal tab The problem here is that we are tracking hasWorkApps and usingTabs using the same value. This leads to work/personal apps showing together when clearing search since mUsingTabs is overridden to false on setLastSearchQuery and later used to determine if tabs should show. Bug: 198546279 Test: Manual Change-Id: I7df5d65472703bedcc9dd688847d9ebd146d5f61 Merged-In: I7df5d65472703bedcc9dd688847d9ebd146d5f61 (cherry picked from commit 564e9ca223debed49ba61681717b5131127f60e0) --- res/values/strings.xml | 1 + .../allapps/AllAppsContainerView.java | 27 ++++++++++--------- .../allapps/LauncherAllAppsContainerView.java | 11 -------- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index d1774e5a03..a6105ebe4a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -153,6 +153,7 @@ Apps list + Search results Personal apps list Work apps list diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 57a3e1c7bb..e779ee80ea 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -120,6 +120,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo protected boolean mUsingTabs; private boolean mIsSearching; + private boolean mHasWorkApps; protected RecyclerViewFastScroller mTouchHandler; protected final Point mFastScrollerOffset = new Point(); @@ -191,7 +192,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo int currentPage = state.getInt(BUNDLE_KEY_CURRENT_PAGE, 0); if (currentPage != 0 && mViewPager != null) { mViewPager.setCurrentPage(currentPage); - rebindAdapters(true); + rebindAdapters(); } else { reset(true); } @@ -245,9 +246,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo break; } } + mHasWorkApps = hasWorkApps; if (!mAH[AdapterHolder.MAIN].appsList.hasFilter()) { - rebindAdapters(hasWorkApps); - if (hasWorkApps) { + rebindAdapters(); + if (mHasWorkApps) { resetWorkProfile(); } } @@ -324,6 +326,8 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mViewPager.getNextPage() == 0 ? R.string.all_apps_button_personal_label : R.string.all_apps_button_work_label; + } else if (mIsSearching) { + descriptionRes = R.string.all_apps_search_results; } else { descriptionRes = R.string.all_apps_button_label; } @@ -372,7 +376,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo }); mHeader = findViewById(R.id.all_apps_header); - rebindAdapters(mUsingTabs, true /* force */); + rebindAdapters(true /* force */); mSearchContainer = findViewById(R.id.search_container_all_apps); mSearchUiManager = (SearchUiManager) mSearchContainer; @@ -441,11 +445,12 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo } } - private void rebindAdapters(boolean showTabs) { - rebindAdapters(showTabs, false /* force */); + private void rebindAdapters() { + rebindAdapters(false /* force */); } - protected void rebindAdapters(boolean showTabs, boolean force) { + protected void rebindAdapters(boolean force) { + boolean showTabs = mHasWorkApps && !mIsSearching; if (showTabs == mUsingTabs && !force) { return; } @@ -628,17 +633,13 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mAH[i].adapter.setLastSearchQuery(query); } mIsSearching = true; - if (mUsingTabs) { - rebindAdapters(false); // hide tabs - } + rebindAdapters(); mHeader.setCollapsed(true); } public void onClearSearchResult() { - if (mUsingTabs) { - rebindAdapters(true); // show tabs - } mIsSearching = false; + rebindAdapters(); getActiveRecyclerView().scrollToTop(); } diff --git a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java index f64b7cbd6c..b6dcec679b 100644 --- a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java @@ -22,7 +22,6 @@ import android.view.MotionEvent; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; -import com.android.launcher3.statemanager.StateManager.StateListener; /** * AllAppsContainerView with launcher specific callbacks @@ -31,8 +30,6 @@ public class LauncherAllAppsContainerView extends AllAppsContainerView { private final Launcher mLauncher; - private StateListener mWorkTabListener; - public LauncherAllAppsContainerView(Context context) { this(context, null); } @@ -74,14 +71,6 @@ public class LauncherAllAppsContainerView extends AllAppsContainerView { mLauncher.getAllAppsController().setScrollRangeDelta(allAppsStartingPositionY); } - @Override - public void setupHeader() { - super.setupHeader(); - if (mWorkTabListener != null && !mUsingTabs) { - mLauncher.getStateManager().removeStateListener(mWorkTabListener); - } - } - @Override public void onActivePageChanged(int currentActivePage) { super.onActivePageChanged(currentActivePage);