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

Commit 68d6bcd1 authored by Maurice Lam's avatar Maurice Lam Committed by Android (Google) Code Review
Browse files

Merge "Rebuild suggestions when suggestions are dismissed"

parents fb3bdd7e cbf797e6
Loading
Loading
Loading
Loading
+1 −22
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.settings.SettingsActivity;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
import com.android.settings.dashboard.suggestions.SuggestionDismissController;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.drawer.DashboardCategory;
@@ -49,7 +48,7 @@ import java.util.ArrayList;
import java.util.List;

public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.DashboardItemHolder>
        implements SummaryLoader.SummaryConsumer, SuggestionDismissController.Callback {
        implements SummaryLoader.SummaryConsumer {
    public static final String TAG = "DashboardAdapter";
    private static final String STATE_SUGGESTION_LIST = "suggestion_list";
    private static final String STATE_CATEGORY_LIST = "category_list";
@@ -342,26 +341,6 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
        notifyDashboardDataChanged(prevData);
    }

    @Override
    public Tile getSuggestionForPosition(int position) {
        return (Tile) mDashboardData.getItemEntityByPosition(position);
    }

    @Override
    public void onSuggestionDismissed(Tile suggestion) {
        final List<Tile> suggestions = mDashboardData.getSuggestions();
        if (suggestions == null) {
            return;
        }
        suggestions.remove(suggestion);

        final DashboardData prevData = mDashboardData;
        mDashboardData = new DashboardData.Builder(prevData)
                .setSuggestions(suggestions)
                .build();
        notifyDashboardDataChanged(prevData);
    }

    @VisibleForTesting
    void onBindSuggestionHeader(final DashboardItemHolder holder, DashboardData
            .SuggestionHeaderData data) {
+18 −3
Original line number Diff line number Diff line
@@ -34,7 +34,9 @@ import com.android.settings.core.InstrumentedFragment;
import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.dashboard.conditional.ConditionManager.ConditionListener;
import com.android.settings.dashboard.conditional.FocusRecyclerView;
import com.android.settings.dashboard.conditional.FocusRecyclerView.FocusListener;
import com.android.settings.dashboard.suggestions.SuggestionDismissController;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
import com.android.settings.dashboard.suggestions.SuggestionsChecks;
@@ -43,14 +45,15 @@ import com.android.settingslib.SuggestionParser;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener;
import com.android.settingslib.drawer.Tile;

import java.util.ArrayList;
import java.util.List;

public class DashboardSummary extends InstrumentedFragment
        implements SettingsDrawerActivity.CategoryListener, ConditionManager.ConditionListener,
        FocusRecyclerView.FocusListener {
        implements CategoryListener, ConditionListener,
        FocusListener, SuggestionDismissController.Callback {
    public static final boolean DEBUG = false;
    private static final boolean DEBUG_TIMING = false;
    private static final int MAX_WAIT_MILLIS = 700;
@@ -195,7 +198,7 @@ public class DashboardSummary extends InstrumentedFragment
        mAdapter = new DashboardAdapter(getContext(), bundle, mConditionManager.getConditions());
        mDashboard.setAdapter(mAdapter);
        mSuggestionDismissHandler = new SuggestionDismissController(
                getContext(), mDashboard, mSuggestionParser, mAdapter);
                getContext(), mDashboard, mSuggestionParser, this);
        mDashboard.setItemAnimator(new DashboardItemAnimator());
        mSummaryLoader.setSummaryConsumer(mAdapter);
        ConditionAdapterUtils.addDismiss(mDashboard);
@@ -236,6 +239,18 @@ public class DashboardSummary extends InstrumentedFragment
        }
    }

    @Override
    public Tile getSuggestionForPosition(int position) {
        return (Tile) mAdapter.getItem(mAdapter.getItemId(position));
    }

    @Override
    public void onSuggestionDismissed(Tile suggestion) {
        // Refresh the UI to pick up suggestions that can now be shown because, say, a higher
        // priority suggestion has been dismissed, or an exclusive suggestion category is emptied.
        rebuildUI();
    }

    private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> {
        @Override
        protected List<Tile> doInBackground(Void... params) {
+8 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.settings.TestConfig;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.dashboard.conditional.FocusRecyclerView;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.Tile;

import org.junit.Before;
import org.junit.Test;
@@ -109,4 +110,11 @@ public class DashboardSummaryTest {
        mSummary.onCategoriesChanged();
        verify(mSummary).rebuildUI();
    }

    @Test
    public void onSuggestionDismissed_categoryShouldBeRefreshed() {
        doNothing().when(mSummary).rebuildUI();
        mSummary.onSuggestionDismissed(mock(Tile.class));
        verify(mSummary).rebuildUI();
    }
}
 No newline at end of file