Merge "Code cleanup: DashboardAdapter.category is no longer a list"

This commit is contained in:
TreeHugger Robot
2017-07-01 01:06:58 +00:00
committed by Android (Google) Code Review
5 changed files with 58 additions and 80 deletions

View File

@@ -107,7 +107,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
List<Condition> conditions, SuggestionParser suggestionParser,
SuggestionDismissController.Callback callback) {
List<Tile> suggestions = null;
List<DashboardCategory> categories = null;
DashboardCategory category = null;
int suggestionConditionMode = DashboardData.HEADER_MODE_DEFAULT;
mContext = context;
@@ -123,7 +123,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
if (savedInstanceState != null) {
suggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
categories = savedInstanceState.getParcelableArrayList(STATE_CATEGORY_LIST);
category = savedInstanceState.getParcelable(STATE_CATEGORY_LIST);
suggestionConditionMode = savedInstanceState.getInt(
STATE_SUGGESTION_CONDITION_MODE, suggestionConditionMode);
mSuggestionsShownLogged = savedInstanceState.getStringArrayList(
@@ -135,7 +135,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
mDashboardData = new DashboardData.Builder()
.setConditions(conditions)
.setSuggestions(suggestions)
.setCategories(categories)
.setCategory(category)
.setSuggestionConditionMode(suggestionConditionMode)
.build();
}
@@ -144,14 +144,14 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
return mDashboardData.getSuggestions();
}
public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
public void setCategoriesAndSuggestions(DashboardCategory category,
List<Tile> suggestions) {
tintIcons(categories, suggestions);
tintIcons(category, suggestions);
final DashboardData prevData = mDashboardData;
mDashboardData = new DashboardData.Builder(prevData)
.setSuggestions(suggestions)
.setCategories(categories)
.setCategory(category)
.build();
notifyDashboardDataChanged(prevData);
List<Tile> shownSuggestions = null;
@@ -173,13 +173,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
}
}
public void setCategory(List<DashboardCategory> category) {
public void setCategory(DashboardCategory category) {
tintIcons(category, null);
final DashboardData prevData = mDashboardData;
Log.d(TAG, "adapter setCategory called");
mDashboardData = new DashboardData.Builder(prevData)
.setCategories(category)
.setCategory(category)
.build();
notifyDashboardDataChanged(prevData);
}
@@ -480,11 +479,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
}
}
private void onBindCategory(DashboardItemHolder holder, DashboardCategory category) {
holder.title.setText(category.title);
}
private void tintIcons(List<DashboardCategory> categories, List<Tile> suggestions) {
private void tintIcons(DashboardCategory category, List<Tile> suggestions) {
if (!mDashboardFeatureProvider.shouldTintIcon()) {
return;
}
@@ -493,7 +488,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
android.R.attr.colorControlNormal});
final int tintColor = a.getColor(0, mContext.getColor(R.color.fallback_tintColor));
a.recycle();
for (DashboardCategory category : categories) {
if (category != null) {
for (Tile tile : category.tiles) {
if (tile.isIconTintable) {
// If this drawable is tintable, tint it to match the color.
@@ -512,12 +507,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
void onSaveInstanceState(Bundle outState) {
final List<Tile> suggestions = mDashboardData.getSuggestions();
final List<DashboardCategory> categories = mDashboardData.getCategories();
final DashboardCategory category = mDashboardData.getCategory();
if (suggestions != null) {
outState.putParcelableArrayList(STATE_SUGGESTION_LIST, new ArrayList<>(suggestions));
}
if (categories != null) {
outState.putParcelableArrayList(STATE_CATEGORY_LIST, new ArrayList<>(categories));
if (category != null) {
outState.putParcelable(STATE_CATEGORY_LIST, category);
}
outState.putStringArrayList(STATE_SUGGESTIONS_SHOWN_LOGGED, mSuggestionsShownLogged);
outState.putInt(STATE_SUGGESTION_CONDITION_MODE,

View File

@@ -66,14 +66,14 @@ public class DashboardData {
static final int STABLE_ID_CONDITION_CONTAINER = 4;
private final List<Item> mItems;
private final List<DashboardCategory> mCategories;
private final DashboardCategory mCategory;
private final List<Condition> mConditions;
private final List<Tile> mSuggestions;
@HeaderMode
private final int mSuggestionConditionMode;
private DashboardData(Builder builder) {
mCategories = builder.mCategories;
mCategory = builder.mCategory;
mConditions = builder.mConditions;
mSuggestions = builder.mSuggestions;
mSuggestionConditionMode = builder.mSuggestionConditionMode;
@@ -112,8 +112,8 @@ public class DashboardData {
return null;
}
public List<DashboardCategory> getCategories() {
return mCategories;
public DashboardCategory getCategory() {
return mCategory;
}
public List<Condition> getConditions() {
@@ -262,10 +262,9 @@ public class DashboardData {
&& !hasConditions
&& hiddenSuggestion == 0);
for (int i = 0; mCategories != null && i < mCategories.size(); i++) {
DashboardCategory category = mCategories.get(i);
for (int j = 0; j < category.tiles.size(); j++) {
final Tile tile = category.tiles.get(j);
if(mCategory != null) {
for (int j = 0; j < mCategory.tiles.size(); j++) {
final Tile tile = mCategory.tiles.get(j);
addToItemList(tile, R.layout.dashboard_tile, Objects.hash(tile.title),
true /* add */);
}
@@ -311,7 +310,7 @@ public class DashboardData {
@HeaderMode
private int mSuggestionConditionMode = HEADER_MODE_DEFAULT;
private List<DashboardCategory> mCategories;
private DashboardCategory mCategory;
private List<Condition> mConditions;
private List<Tile> mSuggestions;
@@ -319,14 +318,14 @@ public class DashboardData {
}
public Builder(DashboardData dashboardData) {
mCategories = dashboardData.mCategories;
mCategory = dashboardData.mCategory;
mConditions = dashboardData.mConditions;
mSuggestions = dashboardData.mSuggestions;
mSuggestionConditionMode = dashboardData.mSuggestionConditionMode;
}
public Builder setCategories(List<DashboardCategory> categories) {
this.mCategories = categories;
public Builder setCategory(DashboardCategory category) {
this.mCategory = category;
return this;
}

View File

@@ -292,15 +292,12 @@ public class DashboardSummary extends InstrumentedFragment
return;
}
// Temporary hack to wrap homepage category into a list. Soon we will create adapter
// API that takes a single category.
List<DashboardCategory> categories = new ArrayList<>();
categories.add(mDashboardFeatureProvider.getTilesForCategory(
CategoryKey.CATEGORY_HOMEPAGE));
final DashboardCategory category = mDashboardFeatureProvider.getTilesForCategory(
CategoryKey.CATEGORY_HOMEPAGE);
if (suggestions != null) {
mAdapter.setCategoriesAndSuggestions(categories, suggestions);
mAdapter.setCategoriesAndSuggestions(category, suggestions);
} else {
mAdapter.setCategory(categories);
mAdapter.setCategory(category);
}
}
}