Merge "Don't return early if searching during rebindAdapters()." into udc-dev

This commit is contained in:
TreeHugger Robot
2023-04-05 19:33:43 +00:00
committed by Android (Google) Code Review
4 changed files with 33 additions and 15 deletions
@@ -380,7 +380,23 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
return rv.shouldContainerScroll(ev, dragLayer);
}
/**
* Resets the UI to be ready for fresh interactions in the future. Exits search and returns to
* A-Z apps list.
*
* @param animate Whether to animate the header during the reset (e.g. switching profile tabs).
**/
public void reset(boolean animate) {
reset(animate, true);
}
/**
* Resets the UI to be ready for fresh interactions in the future.
*
* @param animate Whether to animate the header during the reset (e.g. switching profile tabs).
* @param exitSearch Whether to force exit the search state and return to A-Z apps list.
**/
public void reset(boolean animate, boolean exitSearch) {
for (int i = 0; i < mAH.size(); i++) {
if (mAH.get(i).mRecyclerView != null) {
mAH.get(i).mRecyclerView.scrollToTop();
@@ -394,10 +410,12 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
}
// Reset the base recycler view after transitioning home.
updateHeaderScroll(0);
// Reset the search bar after transitioning home.
mSearchUiManager.resetSearch();
// Animate to A-Z with 0 time to reset the animation with proper state management.
animateToSearchState(false, 0);
if (exitSearch) {
// Reset the search bar after transitioning home.
mSearchUiManager.resetSearch();
// Animate to A-Z with 0 time to reset the animation with proper state management.
animateToSearchState(false, 0);
}
}
@Override
@@ -441,7 +459,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
}
// Header keeps track of active recycler view to properly render header protection.
mHeader.setActiveRV(currentActivePage);
reset(true /* animate */);
reset(true /* animate */, !isSearching() /* exitSearch */);
mWorkManager.onActivePageChanged(currentActivePage);
}
@@ -462,12 +480,6 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
return;
}
if (isSearching()) {
mUsingTabs = showTabs;
mWorkManager.detachWorkModeSwitch();
return;
}
if (!FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) {
RecyclerView.ItemDecoration decoration = getMainAdapterProvider().getDecorator();
getSearchRecyclerView().removeItemDecoration(decoration);
@@ -532,7 +544,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.SEARCH).mRecyclerView);
}
protected View replaceAppsRVContainer(boolean showTabs) {
private void replaceAppsRVContainer(boolean showTabs) {
for (int i = AdapterHolder.MAIN; i <= AdapterHolder.WORK; i++) {
AdapterHolder adapterHolder = mAH.get(i);
if (adapterHolder.mRecyclerView != null) {
@@ -586,7 +598,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
layoutBelowSearchContainer(getSearchRecyclerView(), /* tabs= */ false);
}
return rvContainer;
updateSearchResultsVisibility();
}
void setupHeader() {
@@ -521,7 +521,6 @@ public class AllAppsTransitionController
*/
private void onProgressAnimationEnd() {
if (Float.compare(mProgress, 1f) == 0) {
mAppsView.reset(false /* animate */);
if (mShouldControlKeyboard) {
mLauncher.getAppsView().getSearchUiManager().getEditText().hideKeyboard();
}
@@ -228,7 +228,7 @@ public class FloatingHeaderView extends LinearLayout implements
updateExpectedHeight();
mTabsHidden = tabsHidden;
mTabLayout.setVisibility(tabsHidden ? View.GONE : View.VISIBLE);
maybeSetTabVisibility(VISIBLE);
mMainRV = mainRV;
mWorkRV = workRV;
mSearchRV = searchRV;
@@ -250,6 +250,12 @@ public class FloatingHeaderView extends LinearLayout implements
rvType == AdapterHolder.MAIN ? mMainRV
: rvType == AdapterHolder.WORK ? mWorkRV : mSearchRV;
mCurrentRV.addOnScrollListener(mOnScrollListener);
maybeSetTabVisibility(rvType == AdapterHolder.SEARCH ? GONE : VISIBLE);
}
/** Update tab visibility to the given state, only if tabs are active (work profile exists). */
void maybeSetTabVisibility(int visibility) {
mTabLayout.setVisibility(mTabsHidden ? GONE : visibility);
}
private void updateExpectedHeight() {
@@ -125,6 +125,7 @@ public class SearchTransitionController {
mAllAppsContainerView.getFloatingHeaderView().setFloatingRowsCollapsed(true);
mAllAppsContainerView.getFloatingHeaderView().setVisibility(VISIBLE);
mAllAppsContainerView.getFloatingHeaderView().maybeSetTabVisibility(VISIBLE);
mAllAppsContainerView.getAppsRecyclerViewContainer().setVisibility(VISIBLE);
getSearchRecyclerView().setVisibility(VISIBLE);
getSearchRecyclerView().setChildAttachedConsumer(this::onSearchChildAttached);