Show suggested widgets header only when there are suggested widgets
Bug: 275435999 Test: Verified suggested widgets header doesn't show up unless there are suggested widgets to show Change-Id: I2ec2ba100d7a6ddc338a36ece75633abba990b2b
This commit is contained in:
@@ -110,6 +110,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
entry -> !mCurrentUser.equals(entry.mPkgItem.user)
|
||||
&& !mUserManagerState.isUserQuiet(entry.mPkgItem.user);
|
||||
protected final boolean mHasWorkProfile;
|
||||
protected boolean mHasRecommendedWidgets;
|
||||
protected final SparseArray<AdapterHolder> mAdapters = new SparseArray();
|
||||
@Nullable private ArrowTipView mLatestEducationalTip;
|
||||
private final OnLayoutChangeListener mLayoutChangeListenerToShowTips =
|
||||
@@ -537,7 +538,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
public void onSearchResults(List<WidgetsListBaseEntry> entries) {
|
||||
mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries);
|
||||
updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
|
||||
mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
|
||||
}
|
||||
|
||||
protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
|
||||
@@ -574,7 +574,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
}
|
||||
List<WidgetItem> recommendedWidgets =
|
||||
mActivityContext.getPopupDataProvider().getRecommendedWidgets();
|
||||
if (recommendedWidgets.size() > 0) {
|
||||
mHasRecommendedWidgets = recommendedWidgets.size() > 0;
|
||||
if (mHasRecommendedWidgets) {
|
||||
float noWidgetsViewHeight = 0;
|
||||
if (mIsNoWidgetsViewNeeded) {
|
||||
// Make sure recommended section leaves enough space for noWidgetsView.
|
||||
@@ -603,14 +604,10 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
mRecommendedWidgetsTable.setRecommendedWidgets(
|
||||
recommendedWidgetsInTable, maxTableHeight);
|
||||
} else {
|
||||
hideRecommendations();
|
||||
mRecommendedWidgetsTable.setVisibility(GONE);
|
||||
}
|
||||
}
|
||||
|
||||
protected void hideRecommendations() {
|
||||
mRecommendedWidgetsTable.setVisibility(GONE);
|
||||
}
|
||||
|
||||
protected float getMaxTableHeight(float noWidgetsViewHeight) {
|
||||
return (mContent.getMeasuredHeight()
|
||||
- mTabsHeight - getHeaderViewHeight()
|
||||
@@ -896,7 +893,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
final WidgetsListAdapter mWidgetsListAdapter;
|
||||
private final DefaultItemAnimator mWidgetsListItemAnimator;
|
||||
|
||||
private WidgetsRecyclerView mWidgetsRecyclerView;
|
||||
WidgetsRecyclerView mWidgetsRecyclerView;
|
||||
|
||||
AdapterHolder(int adapterType) {
|
||||
mAdapterType = adapterType;
|
||||
|
||||
@@ -54,6 +54,7 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
|
||||
private ScrollView mRightPaneScrollView;
|
||||
private WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder;
|
||||
private int mActivePage = -1;
|
||||
|
||||
private final ViewOutlineProvider mViewOutlineProviderRightPane = new ViewOutlineProvider() {
|
||||
@Override
|
||||
@@ -107,7 +108,6 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
mRightPaneScrollView = mContent.findViewById(R.id.right_pane_scroll_view);
|
||||
mRightPaneScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);
|
||||
|
||||
setupSuggestedWidgets(layoutInflater);
|
||||
onRecommendedWidgetsBound();
|
||||
onWidgetsBound();
|
||||
setUpEducationViewsIfNeeded();
|
||||
@@ -117,9 +117,13 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void hideRecommendations() {
|
||||
super.hideRecommendations();
|
||||
mSuggestedWidgetsContainer.setVisibility(GONE);
|
||||
public void onRecommendedWidgetsBound() {
|
||||
super.onRecommendedWidgetsBound();
|
||||
|
||||
if (mSuggestedWidgetsContainer == null && mHasRecommendedWidgets) {
|
||||
setupSuggestedWidgets(LayoutInflater.from(getContext()));
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
}
|
||||
}
|
||||
|
||||
private void setupSuggestedWidgets(LayoutInflater layoutInflater) {
|
||||
@@ -168,13 +172,21 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
|
||||
@Override
|
||||
public void onActivePageChanged(int currentActivePage) {
|
||||
// if the current active page changes to personal or work we set suggestions
|
||||
// to be the selected widget
|
||||
if (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB) {
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
super.onActivePageChanged(currentActivePage);
|
||||
|
||||
// If active page didn't change then we don't want to update the header.
|
||||
if (mActivePage == currentActivePage) {
|
||||
return;
|
||||
}
|
||||
|
||||
super.onActivePageChanged(currentActivePage);
|
||||
mActivePage = currentActivePage;
|
||||
|
||||
if (mSuggestedWidgetsHeader == null) {
|
||||
mAdapters.get(currentActivePage).mWidgetsListAdapter.selectFirstHeaderEntry();
|
||||
mAdapters.get(currentActivePage).mWidgetsRecyclerView.scrollToTop();
|
||||
} else if (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB) {
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -187,16 +199,11 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
super.updateRecyclerViewVisibility(adapterHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
mSuggestedWidgetsContainer.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSearchResults(List<WidgetsListBaseEntry> entries) {
|
||||
super.onSearchResults(entries);
|
||||
mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.selectFirstHeaderEntry();
|
||||
mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -208,13 +215,19 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
|
||||
@Override
|
||||
protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
|
||||
if (isInSearchMode) {
|
||||
mSuggestedWidgetsContainer.setVisibility(GONE);
|
||||
} else {
|
||||
mSuggestedWidgetsContainer.setVisibility(VISIBLE);
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
}
|
||||
super.setViewVisibilityBasedOnSearch(isInSearchMode);
|
||||
|
||||
if (mSuggestedWidgetsHeader != null && mSuggestedWidgetsContainer != null) {
|
||||
if (!isInSearchMode) {
|
||||
mSuggestedWidgetsContainer.setVisibility(VISIBLE);
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
} else {
|
||||
mSuggestedWidgetsContainer.setVisibility(GONE);
|
||||
}
|
||||
} else if (!isInSearchMode) {
|
||||
mAdapters.get(mActivePage).mWidgetsListAdapter.selectFirstHeaderEntry();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -182,12 +182,6 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
|
||||
UiObject2 widgetListView = verifyActiveContainer();
|
||||
UiObject2 header = mLauncher.waitForObjectInContainer(widgetListView,
|
||||
headerSelector);
|
||||
// If we are in a tablet in landscape mode then we will have a two pane view and we use
|
||||
// the right pane to display the widgets table.
|
||||
UiObject2 rightPane = mLauncher.findObjectInContainer(
|
||||
widgetPicker,
|
||||
widgetsContainerSelector);
|
||||
|
||||
// If a header is barely visible in the bottom edge of the screen, its height could be
|
||||
// too small for a scroll gesture. Since all header should have roughly the same height,
|
||||
// let's pick the max height we have seen so far.
|
||||
@@ -209,6 +203,12 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
|
||||
mLauncher.clickLauncherObject(headerTitle);
|
||||
}
|
||||
|
||||
// If we are in a tablet in landscape mode then we will have a two pane view and we
|
||||
// use the right pane to display the widgets table.
|
||||
UiObject2 rightPane = mLauncher.findObjectInContainer(
|
||||
widgetPicker,
|
||||
widgetsContainerSelector);
|
||||
|
||||
// Look for a widgets list.
|
||||
UiObject2 widgetsContainer = mLauncher.findObjectInContainer(
|
||||
rightPane != null ? rightPane : widgetListView,
|
||||
@@ -219,6 +219,13 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
|
||||
}
|
||||
}
|
||||
log("Finding test widget package - scroll with distance: " + scrollDistance);
|
||||
|
||||
// If we are in a tablet in landscape mode then we will have a two pane view and we use
|
||||
// the right pane to display the widgets table.
|
||||
UiObject2 rightPane = mLauncher.findObjectInContainer(
|
||||
widgetPicker,
|
||||
widgetsContainerSelector);
|
||||
|
||||
mLauncher.scrollDownByDistance(hasHeaderExpanded && rightPane != null
|
||||
? rightPane
|
||||
: widgetListView, scrollDistance);
|
||||
|
||||
Reference in New Issue
Block a user