Merge "Clear widgets search bar focus when the user taps outside the search bar" into sc-dev

This commit is contained in:
Steven Ng
2021-05-21 08:52:50 +00:00
committed by Android (Google) Code Review
9 changed files with 21 additions and 53 deletions

View File

@@ -82,7 +82,7 @@ public final class WidgetsListAdapterTest {
mTestProfile.numColumns = 5;
mUserHandle = Process.myUserHandle();
mAdapter = new WidgetsListAdapter(mContext, mMockLayoutInflater, mMockWidgetCache,
mIconCache, null, null, null);
mIconCache, null, null);
mAdapter.registerAdapterDataObserver(mListener);
doAnswer(invocation -> ((ComponentWithLabel) invocation.getArgument(0))

View File

@@ -105,8 +105,7 @@ public final class WidgetsListHeaderViewHolderBinderTest {
mWidgetPreviewLoader,
mIconCache,
/* iconClickListener= */ view -> {},
/* iconLongClickListener= */ view -> false,
/* searchBarUIHelper= */ null);
/* iconLongClickListener= */ view -> false);
mViewHolderBinder = new WidgetsListHeaderViewHolderBinder(
LayoutInflater.from(mTestActivity), mOnHeaderClickListener, widgetsListAdapter);
}

View File

@@ -105,8 +105,7 @@ public final class WidgetsListSearchHeaderViewHolderBinderTest {
mWidgetPreviewLoader,
mIconCache,
/* iconClickListener= */ view -> {},
/* iconLongClickListener= */ view -> false,
/* searchBarUIHelper= */ null);
/* iconLongClickListener= */ view -> false);
mViewHolderBinder = new WidgetsListSearchHeaderViewHolderBinder(
LayoutInflater.from(mTestActivity), mOnHeaderClickListener, widgetsListAdapter);
}

View File

@@ -111,8 +111,7 @@ public final class WidgetsListTableViewHolderBinderTest {
mWidgetPreviewLoader,
mIconCache,
/* iconClickListener= */ view -> {},
/* iconLongClickListener= */ view -> false,
/* searchBarUIHelper= */ null);
/* iconLongClickListener= */ view -> false);
mViewHolderBinder = new WidgetsListTableViewHolderBinder(
mContext,
LayoutInflater.from(mTestActivity),

View File

@@ -61,7 +61,6 @@ import com.android.launcher3.widget.LauncherAppWidgetHost.ProviderChangedListene
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import com.android.launcher3.widget.picker.search.SearchModeListener;
import com.android.launcher3.widget.picker.search.WidgetsSearchBar;
import com.android.launcher3.widget.picker.search.WidgetsSearchBarUIHelper;
import com.android.launcher3.widget.util.WidgetsTableUtils;
import com.android.launcher3.workprofile.PersonalWorkPagedView;
import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener;
@@ -76,8 +75,7 @@ import java.util.stream.IntStream;
*/
public class WidgetsFullSheet extends BaseWidgetSheet
implements Insettable, ProviderChangedListener, OnActivePageChangedListener,
WidgetsRecyclerView.HeaderViewDimensionsProvider, SearchModeListener,
WidgetsSearchBarUIHelper {
WidgetsRecyclerView.HeaderViewDimensionsProvider, SearchModeListener {
private static final String TAG = WidgetsFullSheet.class.getSimpleName();
private static final long DEFAULT_OPEN_DURATION = 267;
@@ -540,6 +538,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet
} else if (getPopupContainer().isEventOverView(mContent, ev)) {
mNoIntercept = !getRecyclerView().shouldContainerScroll(ev, getPopupContainer());
}
if (mSearchAndRecommendationViewHolder.mSearchBar.isSearchBarFocused()
&& !getPopupContainer().isEventOverView(
mSearchAndRecommendationViewHolder.mSearchBarContainer, ev)) {
mSearchAndRecommendationViewHolder.mSearchBar.clearSearchBarFocus();
}
}
return super.onControllerInterceptTouchEvent(ev);
}
@@ -614,11 +618,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet
getWindowInsetsController().hide(WindowInsets.Type.ime());
}
@Override
public void clearSearchBarFocus() {
mSearchAndRecommendationViewHolder.mSearchBar.clearSearchBarFocus();
}
private void showEducationTipOnView(View view) {
mActivityContext.getSharedPrefs().edit()
.putBoolean(WIDGETS_EDUCATION_TIP_SEEN, true).apply();
@@ -686,9 +685,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
apps.getWidgetCache(),
apps.getIconCache(),
/* iconClickListener= */ WidgetsFullSheet.this,
/* iconLongClickListener= */ WidgetsFullSheet.this,
/* WidgetsSearchBarUIHelper= */
mAdapterType == SEARCH ? WidgetsFullSheet.this : null);
/* iconLongClickListener= */ WidgetsFullSheet.this);
mWidgetsListAdapter.setHasStableIds(true);
switch (mAdapterType) {
case PRIMARY:

View File

@@ -42,7 +42,6 @@ import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import com.android.launcher3.widget.model.WidgetsListContentEntry;
import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
import com.android.launcher3.widget.picker.search.WidgetsSearchBarUIHelper;
import java.util.ArrayList;
import java.util.Arrays;
@@ -72,7 +71,6 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
private static final int VIEW_TYPE_WIDGETS_HEADER = R.id.view_type_widgets_header;
private static final int VIEW_TYPE_WIDGETS_SEARCH_HEADER = R.id.view_type_widgets_search_header;
@Nullable private final WidgetsSearchBarUIHelper mSearchBarUIHelper;
private final WidgetsDiffReporter mDiffReporter;
private final SparseArray<ViewHolderBinder> mViewHolderBinders = new SparseArray<>();
private final WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder;
@@ -92,9 +90,7 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
public WidgetsListAdapter(Context context, LayoutInflater layoutInflater,
WidgetPreviewLoader widgetPreviewLoader, IconCache iconCache,
OnClickListener iconClickListener, OnLongClickListener iconLongClickListener,
@Nullable WidgetsSearchBarUIHelper searchBarUIHelper) {
mSearchBarUIHelper = searchBarUIHelper;
OnClickListener iconClickListener, OnLongClickListener iconLongClickListener) {
mDiffReporter = new WidgetsDiffReporter(iconCache, this);
mWidgetsListTableViewHolderBinder = new WidgetsListTableViewHolderBinder(context,
layoutInflater, iconClickListener, iconLongClickListener,
@@ -248,9 +244,6 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
@Override
public void onHeaderClicked(boolean showWidgets, PackageUserKey packageUserKey) {
if (mSearchBarUIHelper != null) {
mSearchBarUIHelper.clearSearchBarFocus();
}
if (showWidgets) {
mWidgetsContentVisiblePackageUserKey = packageUserKey;
updateVisibleEntries();

View File

@@ -75,6 +75,11 @@ public class LauncherWidgetsSearchBar extends LinearLayout implements WidgetsSea
mController.onDestroy();
}
@Override
public boolean isSearchBarFocused() {
return mEditText.isFocused();
}
@Override
public void clearSearchBarFocus() {
mController.clearFocus();

View File

@@ -32,6 +32,9 @@ public interface WidgetsSearchBar {
*/
void reset();
/** Returns {@code true} if the search bar is in focus. */
boolean isSearchBarFocused();
/**
* Clears focus from search bar.
*/

View File

@@ -1,27 +0,0 @@
/*
* Copyright (C) 2021 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.widget.picker.search;
/**
* UI helper for {@link WidgetsSearchBar}.
*/
public interface WidgetsSearchBarUIHelper {
/**
* Clears focus from the search bar.
*/
void clearSearchBarFocus();
}