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

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

Merge "Show suggested widgets header only when there are suggested widgets" into udc-dev

parents 36650acd ba3f77be
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -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,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()
@@ -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;
+34 −21
Original line number Diff line number Diff line
@@ -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 {
        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
+13 −6
Original line number Diff line number Diff line
@@ -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);