Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1fb10991 authored by Brian Isganitis's avatar Brian Isganitis
Browse files

Add All Apps search delegate for inflating search box.

Test: Manual
Bug: 216683257
Flag: not needed
Change-Id: I2e1d9b0abf6d370d7ff6d6af2bab002b87330d86
parent 1a5ca938
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -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}. */
+71 −0
Original line number Diff line number Diff line
/*
 * 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);
    }
}