Loading src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +5 −8 Original line number Diff line number Diff line Loading @@ -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 = Loading Loading @@ -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) { Loading Loading @@ -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. Loading Loading @@ -603,13 +604,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet mRecommendedWidgetsTable.setRecommendedWidgets( recommendedWidgetsInTable, maxTableHeight); } else { hideRecommendations(); } } protected void hideRecommendations() { mRecommendedWidgetsTable.setVisibility(GONE); } } protected float getMaxTableHeight(float noWidgetsViewHeight) { return (mContent.getMeasuredHeight() Loading Loading @@ -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; Loading src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java +34 −21 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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) { Loading Loading @@ -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 Loading @@ -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 Loading @@ -208,13 +215,19 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet { @Override protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) { if (isInSearchMode) { mSuggestedWidgetsContainer.setVisibility(GONE); } else { super.setViewVisibilityBasedOnSearch(isInSearchMode); if (mSuggestedWidgetsHeader != null && mSuggestedWidgetsContainer != null) { if (!isInSearchMode) { mSuggestedWidgetsContainer.setVisibility(VISIBLE); mSuggestedWidgetsHeader.callOnClick(); } else { mSuggestedWidgetsContainer.setVisibility(GONE); } super.setViewVisibilityBasedOnSearch(isInSearchMode); } else if (!isInSearchMode) { mAdapters.get(mActivePage).mWidgetsListAdapter.selectFirstHeaderEntry(); } } @Override Loading tests/tapl/com/android/launcher3/tapl/Widgets.java +13 −6 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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, Loading @@ -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); Loading Loading
src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +5 −8 Original line number Diff line number Diff line Loading @@ -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 = Loading Loading @@ -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) { Loading Loading @@ -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. Loading Loading @@ -603,13 +604,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet mRecommendedWidgetsTable.setRecommendedWidgets( recommendedWidgetsInTable, maxTableHeight); } else { hideRecommendations(); } } protected void hideRecommendations() { mRecommendedWidgetsTable.setVisibility(GONE); } } protected float getMaxTableHeight(float noWidgetsViewHeight) { return (mContent.getMeasuredHeight() Loading Loading @@ -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; Loading
src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java +34 −21 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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) { Loading Loading @@ -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 Loading @@ -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 Loading @@ -208,13 +215,19 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet { @Override protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) { if (isInSearchMode) { mSuggestedWidgetsContainer.setVisibility(GONE); } else { super.setViewVisibilityBasedOnSearch(isInSearchMode); if (mSuggestedWidgetsHeader != null && mSuggestedWidgetsContainer != null) { if (!isInSearchMode) { mSuggestedWidgetsContainer.setVisibility(VISIBLE); mSuggestedWidgetsHeader.callOnClick(); } else { mSuggestedWidgetsContainer.setVisibility(GONE); } super.setViewVisibilityBasedOnSearch(isInSearchMode); } else if (!isInSearchMode) { mAdapters.get(mActivePage).mWidgetsListAdapter.selectFirstHeaderEntry(); } } @Override Loading
tests/tapl/com/android/launcher3/tapl/Widgets.java +13 −6 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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, Loading @@ -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); Loading