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

Commit c330b2c4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Collapse app bar while doing search in app page" into sc-dev

parents 7159bd43 c9ffe473
Loading
Loading
Loading
Loading
+45 −1
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ import android.widget.Spinner;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

@@ -130,6 +132,8 @@ import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.settingsspinner.SettingsSpinnerAdapter;

import com.google.android.material.appbar.AppBarLayout;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -143,7 +147,8 @@ import java.util.Set;
 * intent.
 */
public class ManageApplications extends InstrumentedFragment
        implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener {
        implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener,
        MenuItem.OnActionExpandListener {

    static final String TAG = "ManageApplications";
    static final boolean DEBUG = Build.IS_DEBUGGABLE;
@@ -256,6 +261,7 @@ public class ManageApplications extends InstrumentedFragment
    private boolean mIsPersonalOnly;
    private View mEmptyView;
    private int mFilterType;
    private AppBarLayout mAppBarLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
@@ -426,6 +432,9 @@ public class ManageApplications extends InstrumentedFragment

        mResetAppsHelper.onRestoreInstanceState(savedInstanceState);

        mAppBarLayout = getActivity().findViewById(R.id.app_bar);
        disableToolBarScrollableBehavior();

        return mRootView;
    }

@@ -659,6 +668,7 @@ public class ManageApplications extends InstrumentedFragment

        final MenuItem searchMenuItem = menu.findItem(R.id.search_app_list_menu);
        if (searchMenuItem != null) {
            searchMenuItem.setOnActionExpandListener(this);
            mSearchView = (SearchView) searchMenuItem.getActionView();
            mSearchView.setQueryHint(getText(R.string.search_settings));
            mSearchView.setOnQueryTextListener(this);
@@ -670,6 +680,23 @@ public class ManageApplications extends InstrumentedFragment
        updateOptionsMenu();
    }

    @Override
    public boolean onMenuItemActionExpand(MenuItem item) {
        // To prevent a large space on tool bar.
        mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
        // To prevent user can expand the collapsing tool bar view.
        ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);
        return true;
    }

    @Override
    public boolean onMenuItemActionCollapse(MenuItem item) {
        // We keep the collapsed status after user cancel the search function.
        mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
        ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
        return true;
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        updateOptionsMenu();
@@ -791,6 +818,9 @@ public class ManageApplications extends InstrumentedFragment
            mCurrentPkgName = entry.info.packageName;
            mCurrentUid = entry.info.uid;
            startApplicationDetailsActivity();
            // We disable the scrolling ability in onMenuItemActionCollapse, we should recover it
            // if user selects any app item.
            ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
        }
    }

@@ -842,6 +872,20 @@ public class ManageApplications extends InstrumentedFragment
        }
    }

    private void disableToolBarScrollableBehavior() {
        final CoordinatorLayout.LayoutParams params =
                (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
        final AppBarLayout.Behavior behavior = new AppBarLayout.Behavior();
        behavior.setDragCallback(
                new AppBarLayout.Behavior.DragCallback() {
                    @Override
                    public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
                        return false;
                    }
                });
        params.setBehavior(behavior);
    }

    static class FilterSpinnerAdapter extends SettingsSpinnerAdapter<CharSequence> {

        private final ManageApplications mManageApplications;