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

Commit ba3f77be authored by fbaron's avatar fbaron Committed by Federico Baron
Browse files

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
parent cdfdd444
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);