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

Commit 378ca5e9 authored by Alina Zaidi's avatar Alina Zaidi Committed by Android (Google) Code Review
Browse files

Merge "Bug fixes for widget picker search." into sc-dev

parents 99060b30 2e732e95
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
    android:background="@drawable/bg_widgets_searchbox"
    android:padding="12dp">

    <EditText
    <com.android.launcher3.ExtendedEditText
        android:id="@+id/widgets_search_bar_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
+3 −0
Original line number Diff line number Diff line
@@ -84,6 +84,9 @@
    <!-- Text shown when there is no widgets shown in the popup view showing all available widgets
         installed on the device. [CHAR_LIMIT=none] -->
    <string name="no_widgets_available">No widgets available</string>
    <!-- Text shown when there are no matching widget search results for user's search query.
         [CHAR_LIMIT=none] -->
    <string name="no_search_results">No search results</string>

    <!-- All Apps -->
    <!-- Search bar text in the apps view. [CHAR_LIMIT=50] -->
+4 −5
Original line number Diff line number Diff line
@@ -24,9 +24,9 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;

import android.content.Context;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;

import com.android.launcher3.ExtendedEditText;
import com.android.launcher3.search.SearchAlgorithm;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;

@@ -45,7 +45,7 @@ public class WidgetsSearchBarControllerTest {

    private WidgetsSearchBarController mController;
    private Context mContext;
    private EditText mEditText;
    private ExtendedEditText mEditText;
    private ImageButton mCancelButton;
    @Mock
    private SearchModeListener mSearchModeListener;
@@ -56,7 +56,7 @@ public class WidgetsSearchBarControllerTest {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mEditText = new EditText(mContext);
        mEditText = new ExtendedEditText(mContext);
        mCancelButton = new ImageButton(mContext);
        mController = new WidgetsSearchBarController(
                mSearchAlgorithm, mEditText, mCancelButton, mSearchModeListener);
@@ -116,11 +116,10 @@ public class WidgetsSearchBarControllerTest {
    }

    @Test
    public void cancelSearch_shouldInformSearchModeListenerToExitSearch() {
    public void cancelSearch_shouldInformSearchModeListenerToClearResultsAndExitSearch() {
        mCancelButton.performClick();

        verify(mSearchModeListener).exitSearchMode();
        verifyNoMoreInteractions(mSearchModeListener);
    }

    @Test
+19 −1
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.launcher3.widget.picker.search.WidgetsSearchBar;
import com.android.launcher3.workprofile.PersonalWorkPagedView;
import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

@@ -161,8 +162,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet
                mAdapters.get(currentActivePage).mWidgetsRecyclerView;

        updateNoWidgetsView(currentAdapterHolder);

        attachScrollbarToRecyclerView(currentRecyclerView);
        resetExpandedHeaders();
    }

    private void attachScrollbarToRecyclerView(WidgetsRecyclerView recyclerView) {
@@ -180,6 +181,13 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        mNoWidgetsView.setVisibility(isWidgetAvailable ? GONE : VISIBLE);
    }

    private void updateNoSearchResultsView(boolean isVisible) {
        mNoWidgetsView.setVisibility(isVisible ? VISIBLE : GONE);
        if (isVisible) {
            mNoWidgetsView.setText(R.string.no_search_results);
        }
    }

    private void reset() {
        mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.scrollToTop();
        if (mHasWorkProfile) {
@@ -323,10 +331,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        if (mIsInSearchMode) return;
        setViewVisibilityBasedOnSearch(/*isInSearchMode= */ true);
        attachScrollbarToRecyclerView(mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView);
        resetExpandedHeaders();
    }

    @Override
    public void exitSearchMode() {
        onSearchResults(new ArrayList<>());
        setViewVisibilityBasedOnSearch(/*isInSearchMode=*/ false);
        if (mHasWorkProfile) {
            mViewPager.snapToPage(AdapterHolder.PRIMARY);
@@ -337,6 +347,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet
    @Override
    public void onSearchResults(List<WidgetsListBaseEntry> entries) {
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries);
        updateNoSearchResultsView(
                mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.getItemCount() == 0);
    }

    private void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
@@ -350,6 +362,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        }
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView
                .setVisibility(mIsInSearchMode ? VISIBLE : GONE);
        mNoWidgetsView.setVisibility(GONE);
    }

    private void resetExpandedHeaders() {
        mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.resetExpandedHeader();
        mAdapters.get(AdapterHolder.WORK).mWidgetsListAdapter.resetExpandedHeader();
    }

    private void open(boolean animate) {
+18 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.launcher3.widget.picker;

import android.content.Context;
import android.os.Process;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
@@ -176,6 +177,14 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
        mDiffReporter.process(mVisibleEntries, newVisibleEntries, mRowComparator);
    }

    /**
     * Resets any expanded widget header.
     */
    public void resetExpandedHeader() {
        mWidgetsContentVisiblePackageUserKey = null;
        updateVisibleEntries();
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int pos) {
        ViewHolderBinder viewHolderBinder = mViewHolderBinders.get(getItemViewType(pos));
@@ -259,7 +268,14 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC

        @Override
        public int compare(WidgetsListBaseEntry a, WidgetsListBaseEntry b) {
            return mComparator.compare(a.mPkgItem.title.toString(), b.mPkgItem.title.toString());
            int i = mComparator.compare(a.mPkgItem.title.toString(), b.mPkgItem.title.toString());
            if (i != 0) {
                return i;
            }
            // Prioritize entries from current user over other users if the entries are same.
            if (a.mPkgItem.user.equals(b.mPkgItem.user)) return 0;
            if (a.mPkgItem.user.equals(Process.myUserHandle())) return -1;
            return 1;
        }
    }
}
Loading