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

Commit e5bd97c5 authored by Alina Zaidi's avatar Alina Zaidi Committed by Android (Google) Code Review
Browse files

Merge "Always check for availability of widgets before changing visibility of...

Merge "Always check for availability of widgets before changing visibility of recycler view and no widgets view." into sc-dev
parents 11ec51c4 9f531ee6
Loading
Loading
Loading
Loading
+31 −25
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        WidgetsRecyclerView currentRecyclerView =
                mAdapters.get(currentActivePage).mWidgetsRecyclerView;

        updateNoWidgetsView(currentAdapterHolder);
        updateRecyclerViewVisibility(currentAdapterHolder);
        attachScrollbarToRecyclerView(currentRecyclerView);
        resetExpandedHeaders();
    }
@@ -232,22 +232,17 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        reset();
    }

    private void updateNoWidgetsView(AdapterHolder adapterHolder) {
    private void updateRecyclerViewVisibility(AdapterHolder adapterHolder) {
        boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.getItemCount() > 0;
        adapterHolder.mWidgetsRecyclerView.setVisibility(isWidgetAvailable ? VISIBLE : GONE);

        // Always resets the text in case this is updated by search.
        mNoWidgetsView.setText(R.string.no_widgets_available);
        mNoWidgetsView.setText(
                adapterHolder.mAdapterType == AdapterHolder.SEARCH
                        ? R.string.no_search_results
                        : R.string.no_widgets_available);
        mNoWidgetsView.setVisibility(isWidgetAvailable ? GONE : VISIBLE);
    }

    private void updateNoSearchResultsView(boolean isVisible) {
        mNoWidgetsView.setVisibility(isVisible ? VISIBLE : GONE);
        if (isVisible) {
            mNoWidgetsView.setText(R.string.no_search_results);
        }
    }

    private void reset() {
        mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.scrollToTop();
        if (mHasWorkProfile) {
@@ -394,16 +389,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet

    @Override
    public void onWidgetsBound() {
        if (mIsInSearchMode) {
            return;
        }
        List<WidgetsListBaseEntry> allWidgets = mLauncher.getPopupDataProvider().getAllWidgets();

        AdapterHolder primaryUserAdapterHolder = mAdapters.get(AdapterHolder.PRIMARY);
        primaryUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
        updateNoWidgetsView(primaryUserAdapterHolder);

        if (mHasWorkProfile) {
            mViewPager.setVisibility(VISIBLE);
            mTabsView.setVisibility(VISIBLE);
            AdapterHolder workUserAdapterHolder = mAdapters.get(AdapterHolder.WORK);
            workUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
            onActivePageChanged(mViewPager.getCurrentPage());
        } else {
            updateRecyclerViewVisibility(primaryUserAdapterHolder);
        }
    }

@@ -431,8 +432,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
    @Override
    public void onSearchResults(List<WidgetsListBaseEntry> entries) {
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries);
        updateNoSearchResultsView(
                mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.getItemCount() == 0);
        updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
    }

@@ -440,19 +440,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        mIsInSearchMode = isInSearchMode;
        if (isInSearchMode) {
            mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable.setVisibility(GONE);
        } else {
            onRecommendedWidgetsBound();
        }
            if (mHasWorkProfile) {
            mViewPager.setVisibility(isInSearchMode ? GONE : VISIBLE);
            mTabsView.setVisibility(isInSearchMode ? GONE : VISIBLE);
                mViewPager.setVisibility(GONE);
                mTabsView.setVisibility(GONE);
            } else {
            mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView
                    .setVisibility(isInSearchMode ? GONE : VISIBLE);
                mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.setVisibility(GONE);
            }
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView
                .setVisibility(mIsInSearchMode ? VISIBLE : GONE);
            updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
            // Hide no search results view to prevent it from flashing on enter search.
            mNoWidgetsView.setVisibility(GONE);
        } else {
            mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.setVisibility(GONE);
            // Visibility of recommended widgets, recycler views and headers are handled in methods
            // below.
            onRecommendedWidgetsBound();
            onWidgetsBound();
        }
    }

    private void resetExpandedHeaders() {
@@ -462,11 +465,14 @@ public class WidgetsFullSheet extends BaseWidgetSheet

    @Override
    public void onRecommendedWidgetsBound() {
        if (mIsInSearchMode) {
            return;
        }
        List<WidgetItem> recommendedWidgets =
                mLauncher.getPopupDataProvider().getRecommendedWidgets();
        WidgetsRecommendationTableLayout table =
                mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable;
        if (!mIsInSearchMode && recommendedWidgets.size() > 0) {
        if (recommendedWidgets.size() > 0) {
            // TODO(b/185508758): Revert the following log after debugging.
            if (getHeaderViewHeight() == 0) {
                Log.d(TAG, "Header view height is 0 when inflating recommended widgets");