Add All Apps search delegate for inflating search box.
Test: Manual Bug: 216683257 Flag: not needed Change-Id: I2e1d9b0abf6d370d7ff6d6af2bab002b87330d86
This commit is contained in:
@@ -70,7 +70,7 @@ import com.android.launcher3.InsettableFrameLayout;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
|
||||
import com.android.launcher3.allapps.search.DefaultSearchAdapterProvider;
|
||||
import com.android.launcher3.allapps.search.AllAppsSearchUiDelegate;
|
||||
import com.android.launcher3.allapps.search.SearchAdapterProvider;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.keyboard.FocusedItemDecorator;
|
||||
@@ -132,6 +132,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
protected final Point mFastScrollerOffset = new Point();
|
||||
protected final int mScrimColor;
|
||||
protected final float mHeaderThreshold;
|
||||
protected final AllAppsSearchUiDelegate mSearchUiDelegate;
|
||||
|
||||
// Used to animate Search results out and A-Z apps in, or vice-versa.
|
||||
private final SearchTransitionController mSearchTransitionController;
|
||||
@@ -217,11 +218,17 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
getActiveRecyclerView().requestFocus();
|
||||
}
|
||||
});
|
||||
mSearchUiDelegate = createSearchUiDelegate();
|
||||
initContent();
|
||||
|
||||
mSearchTransitionController = new SearchTransitionController(this);
|
||||
}
|
||||
|
||||
/** Creates the delegate for initializing search. */
|
||||
protected AllAppsSearchUiDelegate createSearchUiDelegate() {
|
||||
return new AllAppsSearchUiDelegate(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the view hierarchy and internal variables. Any initialization which actually uses
|
||||
* these members should be done in {@link #onFinishInflate()}.
|
||||
@@ -231,7 +238,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
* onFinishInflate -> onPostCreate
|
||||
*/
|
||||
protected void initContent() {
|
||||
mMainAdapterProvider = createMainAdapterProvider();
|
||||
mMainAdapterProvider = mSearchUiDelegate.createMainAdapterProvider();
|
||||
|
||||
mAH.set(AdapterHolder.MAIN, new AdapterHolder(AdapterHolder.MAIN,
|
||||
new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, null)));
|
||||
@@ -252,6 +259,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
mSearchContainer = inflateSearchBox();
|
||||
addView(mSearchContainer);
|
||||
mSearchUiManager = (SearchUiManager) mSearchContainer;
|
||||
mSearchUiDelegate.onInitializeSearchBox();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -341,6 +349,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
*/
|
||||
public void setSearchResults(ArrayList<AdapterItem> results, int searchResultCode) {
|
||||
setSearchResults(results);
|
||||
mSearchUiDelegate.onSearchResultsChanged(results, searchResultCode);
|
||||
}
|
||||
|
||||
private void animateToSearchState(boolean goingToSearch) {
|
||||
@@ -788,12 +797,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
* Inflates the search box
|
||||
*/
|
||||
protected View inflateSearchBox() {
|
||||
return getLayoutInflater().inflate(R.layout.search_container_all_apps, this, false);
|
||||
}
|
||||
|
||||
/** Creates the adapter provider for the main section. */
|
||||
protected SearchAdapterProvider<?> createMainAdapterProvider() {
|
||||
return new DefaultSearchAdapterProvider(mActivityContext);
|
||||
return mSearchUiDelegate.inflateSearchBox();
|
||||
}
|
||||
|
||||
/** The adapter provider for the main section. */
|
||||
@@ -998,7 +1002,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
}
|
||||
|
||||
public LayoutInflater getLayoutInflater() {
|
||||
return LayoutInflater.from(getContext());
|
||||
return mSearchUiDelegate.getLayoutInflater();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1306,6 +1310,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
|
||||
protected void onInitializeRecyclerView(RecyclerView rv) {
|
||||
rv.addOnScrollListener(mScrollListener);
|
||||
mSearchUiDelegate.onInitializeRecyclerView(rv);
|
||||
}
|
||||
|
||||
/** Returns the instance of @{code SearchTransitionController}. */
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (C) 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.launcher3.allapps.search;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.allapps.ActivityAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** Initializes the search box and its interactions with All Apps. */
|
||||
public class AllAppsSearchUiDelegate {
|
||||
|
||||
protected final ActivityAllAppsContainerView<?> mAppsView;
|
||||
protected final ActivityContext mActivityContext;
|
||||
|
||||
public AllAppsSearchUiDelegate(ActivityAllAppsContainerView<?> appsView) {
|
||||
mAppsView = appsView;
|
||||
mActivityContext = ActivityContext.lookupContext(mAppsView.getContext());
|
||||
}
|
||||
|
||||
/** Invoked when an All Apps {@link RecyclerView} is initialized. */
|
||||
public void onInitializeRecyclerView(RecyclerView rv) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/** Invoked when search results are updated in All Apps. */
|
||||
public void onSearchResultsChanged(List<AdapterItem> results, int searchResultCode) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/** Invoked when the search box has been added to All Apps. */
|
||||
public void onInitializeSearchBox() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/** The layout inflater for All Apps and search UI. */
|
||||
public LayoutInflater getLayoutInflater() {
|
||||
return LayoutInflater.from(mAppsView.getContext());
|
||||
}
|
||||
|
||||
/** Inflate the search box for All Apps. */
|
||||
public View inflateSearchBox() {
|
||||
return getLayoutInflater().inflate(R.layout.search_container_all_apps, mAppsView, false);
|
||||
}
|
||||
|
||||
/** Creates the adapter provider for the main section. */
|
||||
public SearchAdapterProvider<?> createMainAdapterProvider() {
|
||||
return new DefaultSearchAdapterProvider(mActivityContext);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user