Merge "Some code cleanup"
This commit is contained in:
committed by
Android (Google) Code Review
commit
89f57048a0
@@ -94,19 +94,6 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private View.OnClickListener mConditionClickListener = new View.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
Condition condition = (Condition) v.getTag();
|
|
||||||
//TODO: get rid of setTag/getTag
|
|
||||||
mMetricsFeatureProvider.action(mContext,
|
|
||||||
MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
|
|
||||||
condition.getMetricsConstant());
|
|
||||||
condition.onPrimaryClick();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public DashboardAdapter(Context context, Bundle savedInstanceState,
|
public DashboardAdapter(Context context, Bundle savedInstanceState,
|
||||||
List<Condition> conditions, SuggestionParser suggestionParser,
|
List<Condition> conditions, SuggestionParser suggestionParser,
|
||||||
SuggestionDismissController.Callback callback) {
|
SuggestionDismissController.Callback callback) {
|
||||||
@@ -129,7 +116,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
suggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
|
suggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
|
||||||
category = savedInstanceState.getParcelable(STATE_CATEGORY_LIST);
|
category = savedInstanceState.getParcelable(STATE_CATEGORY_LIST);
|
||||||
suggestionConditionMode = savedInstanceState.getInt(
|
suggestionConditionMode = savedInstanceState.getInt(
|
||||||
STATE_SUGGESTION_CONDITION_MODE, suggestionConditionMode);
|
STATE_SUGGESTION_CONDITION_MODE, suggestionConditionMode);
|
||||||
mSuggestionsShownLogged = savedInstanceState.getStringArrayList(
|
mSuggestionsShownLogged = savedInstanceState.getStringArrayList(
|
||||||
STATE_SUGGESTIONS_SHOWN_LOGGED);
|
STATE_SUGGESTIONS_SHOWN_LOGGED);
|
||||||
} else {
|
} else {
|
||||||
@@ -249,7 +236,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
break;
|
break;
|
||||||
case R.layout.suggestion_condition_container:
|
case R.layout.suggestion_condition_container:
|
||||||
onBindConditionAndSuggestion(
|
onBindConditionAndSuggestion(
|
||||||
(SuggestionAndConditionContainerHolder) holder, position);
|
(SuggestionAndConditionContainerHolder) holder, position);
|
||||||
break;
|
break;
|
||||||
case R.layout.suggestion_condition_header:
|
case R.layout.suggestion_condition_header:
|
||||||
onBindSuggestionConditionHeader((SuggestionAndConditionHeaderHolder) holder,
|
onBindSuggestionConditionHeader((SuggestionAndConditionHeaderHolder) holder,
|
||||||
@@ -262,7 +249,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, false);
|
MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, false);
|
||||||
DashboardData prevData = mDashboardData;
|
DashboardData prevData = mDashboardData;
|
||||||
mDashboardData = new DashboardData.Builder(prevData).setSuggestionConditionMode(
|
mDashboardData = new DashboardData.Builder(prevData).setSuggestionConditionMode(
|
||||||
DashboardData.HEADER_MODE_COLLAPSED).build();
|
DashboardData.HEADER_MODE_COLLAPSED).build();
|
||||||
notifyDashboardDataChanged(prevData);
|
notifyDashboardDataChanged(prevData);
|
||||||
mRecyclerView.scrollToPosition(SUGGESTION_CONDITION_HEADER_POSITION);
|
mRecyclerView.scrollToPosition(SUGGESTION_CONDITION_HEADER_POSITION);
|
||||||
});
|
});
|
||||||
@@ -335,11 +322,11 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
}
|
}
|
||||||
for (Tile suggestion : suggestions) {
|
for (Tile suggestion : suggestions) {
|
||||||
final String suggestionId = mSuggestionFeatureProvider.getSuggestionIdentifier(
|
final String suggestionId = mSuggestionFeatureProvider.getSuggestionIdentifier(
|
||||||
mContext, suggestion);
|
mContext, suggestion);
|
||||||
if (!mSuggestionsShownLogged.contains(suggestionId)) {
|
if (!mSuggestionsShownLogged.contains(suggestionId)) {
|
||||||
mMetricsFeatureProvider.action(
|
mMetricsFeatureProvider.action(
|
||||||
mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
|
mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
|
||||||
suggestionId);
|
suggestionId);
|
||||||
mSuggestionsShownLogged.add(suggestionId);
|
mSuggestionsShownLogged.add(suggestionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -350,9 +337,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
SuggestionConditionHeaderData data) {
|
SuggestionConditionHeaderData data) {
|
||||||
final int curMode = mDashboardData.getSuggestionConditionMode();
|
final int curMode = mDashboardData.getSuggestionConditionMode();
|
||||||
final int nextMode = data.hiddenSuggestionCount > 0 && data.conditionCount > 0
|
final int nextMode = data.hiddenSuggestionCount > 0 && data.conditionCount > 0
|
||||||
&& curMode != DashboardData.HEADER_MODE_SUGGESTION_EXPANDED
|
&& curMode != DashboardData.HEADER_MODE_SUGGESTION_EXPANDED
|
||||||
? DashboardData.HEADER_MODE_SUGGESTION_EXPANDED
|
? DashboardData.HEADER_MODE_SUGGESTION_EXPANDED
|
||||||
: DashboardData.HEADER_MODE_FULLY_EXPANDED;
|
: DashboardData.HEADER_MODE_FULLY_EXPANDED;
|
||||||
final boolean moreSuggestions = data.hiddenSuggestionCount > 0;
|
final boolean moreSuggestions = data.hiddenSuggestionCount > 0;
|
||||||
final boolean hasConditions = data.conditionCount > 0;
|
final boolean hasConditions = data.conditionCount > 0;
|
||||||
if (data.conditionCount > 0) {
|
if (data.conditionCount > 0) {
|
||||||
@@ -377,22 +364,22 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
if (curMode == DashboardData.HEADER_MODE_COLLAPSED) {
|
if (curMode == DashboardData.HEADER_MODE_COLLAPSED) {
|
||||||
if (data.conditionCount > 0) {
|
if (data.conditionCount > 0) {
|
||||||
holder.summary.setText(mContext.getResources().getQuantityString(
|
holder.summary.setText(mContext.getResources().getQuantityString(
|
||||||
R.plurals.suggestions_collapsed_summary,
|
R.plurals.suggestions_collapsed_summary,
|
||||||
data.hiddenSuggestionCount, data.hiddenSuggestionCount));
|
data.hiddenSuggestionCount, data.hiddenSuggestionCount));
|
||||||
} else {
|
} else {
|
||||||
holder.title.setText(mContext.getResources().getQuantityString(
|
holder.title.setText(mContext.getResources().getQuantityString(
|
||||||
R.plurals.suggestions_collapsed_title,
|
R.plurals.suggestions_collapsed_title,
|
||||||
data.hiddenSuggestionCount, data.hiddenSuggestionCount));
|
data.hiddenSuggestionCount, data.hiddenSuggestionCount));
|
||||||
holder.title.setTextColor(Color.BLACK);
|
holder.title.setTextColor(Color.BLACK);
|
||||||
holder.summary.setText(null);
|
holder.summary.setText(null);
|
||||||
}
|
}
|
||||||
} else if (curMode == DashboardData.HEADER_MODE_DEFAULT) {
|
} else if (curMode == DashboardData.HEADER_MODE_DEFAULT) {
|
||||||
if (data.conditionCount > 0) {
|
if (data.conditionCount > 0) {
|
||||||
holder.summary.setText(mContext.getString(
|
holder.summary.setText(mContext.getString(
|
||||||
R.string.suggestions_summary, data.hiddenSuggestionCount));
|
R.string.suggestions_summary, data.hiddenSuggestionCount));
|
||||||
} else {
|
} else {
|
||||||
holder.title.setText(mContext.getString(
|
holder.title.setText(mContext.getString(
|
||||||
R.string.suggestions_more_title, data.hiddenSuggestionCount));
|
R.string.suggestions_more_title, data.hiddenSuggestionCount));
|
||||||
holder.title.setTextColor(Color.BLACK);
|
holder.title.setTextColor(Color.BLACK);
|
||||||
holder.summary.setText(null);
|
holder.summary.setText(null);
|
||||||
}
|
}
|
||||||
@@ -400,7 +387,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
} else if (data.conditionCount > 1) {
|
} else if (data.conditionCount > 1) {
|
||||||
holder.summary.setTextColor(Utils.getColorAccent(mContext));
|
holder.summary.setTextColor(Utils.getColorAccent(mContext));
|
||||||
holder.summary.setText(
|
holder.summary.setText(
|
||||||
mContext.getString(R.string.condition_summary, data.conditionCount));
|
mContext.getString(R.string.condition_summary, data.conditionCount));
|
||||||
} else {
|
} else {
|
||||||
holder.summary.setText(null);
|
holder.summary.setText(null);
|
||||||
}
|
}
|
||||||
@@ -413,16 +400,16 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
holder.itemView.setPadding(0, padding, 0, padding);
|
holder.itemView.setPadding(0, padding, 0, padding);
|
||||||
|
|
||||||
holder.itemView.setOnClickListener(v -> {
|
holder.itemView.setOnClickListener(v -> {
|
||||||
if (moreSuggestions ) {
|
if (moreSuggestions) {
|
||||||
logSuggestions();
|
logSuggestions();
|
||||||
} else if (hasConditions) {
|
} else if (hasConditions) {
|
||||||
mMetricsFeatureProvider.action(mContext,
|
mMetricsFeatureProvider.action(mContext,
|
||||||
MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, true);
|
MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, true);
|
||||||
}
|
}
|
||||||
DashboardData prevData = mDashboardData;
|
DashboardData prevData = mDashboardData;
|
||||||
final boolean wasCollapsed = curMode == DashboardData.HEADER_MODE_COLLAPSED;
|
final boolean wasCollapsed = curMode == DashboardData.HEADER_MODE_COLLAPSED;
|
||||||
mDashboardData = new DashboardData.Builder(prevData)
|
mDashboardData = new DashboardData.Builder(prevData)
|
||||||
.setSuggestionConditionMode(nextMode).build();
|
.setSuggestionConditionMode(nextMode).build();
|
||||||
notifyDashboardDataChanged(prevData);
|
notifyDashboardDataChanged(prevData);
|
||||||
if (wasCollapsed) {
|
if (wasCollapsed) {
|
||||||
mRecyclerView.scrollToPosition(SUGGESTION_CONDITION_HEADER_POSITION);
|
mRecyclerView.scrollToPosition(SUGGESTION_CONDITION_HEADER_POSITION);
|
||||||
@@ -439,13 +426,13 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
if (position == SUGGESTION_CONDITION_HEADER_POSITION
|
if (position == SUGGESTION_CONDITION_HEADER_POSITION
|
||||||
&& suggestions != null && suggestions.size() > 0) {
|
&& suggestions != null && suggestions.size() > 0) {
|
||||||
mSuggestionAdapter = new SuggestionAdapter(mContext, (List<Tile>)
|
mSuggestionAdapter = new SuggestionAdapter(mContext, (List<Tile>)
|
||||||
mDashboardData.getItemEntityByPosition(position), mSuggestionsShownLogged);
|
mDashboardData.getItemEntityByPosition(position), mSuggestionsShownLogged);
|
||||||
mSuggestionDismissHandler = new SuggestionDismissController(mContext,
|
mSuggestionDismissHandler = new SuggestionDismissController(mContext,
|
||||||
holder.data, mSuggestionParser, mCallback);
|
holder.data, mSuggestionParser, mCallback);
|
||||||
holder.data.setAdapter(mSuggestionAdapter);
|
holder.data.setAdapter(mSuggestionAdapter);
|
||||||
} else {
|
} else {
|
||||||
ConditionAdapter adapter = new ConditionAdapter(mContext,
|
ConditionAdapter adapter = new ConditionAdapter(mContext,
|
||||||
(List<Condition>) mDashboardData.getItemEntityByPosition(position),
|
(List<Condition>) mDashboardData.getItemEntityByPosition(position),
|
||||||
mDashboardData.getSuggestionConditionMode());
|
mDashboardData.getSuggestionConditionMode());
|
||||||
adapter.addDismissHandling(holder.data);
|
adapter.addDismissHandling(holder.data);
|
||||||
holder.data.setAdapter(adapter);
|
holder.data.setAdapter(adapter);
|
||||||
@@ -454,19 +441,13 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onBindTile(DashboardItemHolder holder, Tile tile) {
|
private void onBindTile(DashboardItemHolder holder, Tile tile) {
|
||||||
if (tile.remoteViews != null) {
|
holder.icon.setImageDrawable(mCache.getIcon(tile.icon));
|
||||||
final ViewGroup itemView = (ViewGroup) holder.itemView;
|
holder.title.setText(tile.title);
|
||||||
itemView.removeAllViews();
|
if (!TextUtils.isEmpty(tile.summary)) {
|
||||||
itemView.addView(tile.remoteViews.apply(itemView.getContext(), itemView));
|
holder.summary.setText(tile.summary);
|
||||||
|
holder.summary.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
holder.icon.setImageDrawable(mCache.getIcon(tile.icon));
|
holder.summary.setVisibility(View.GONE);
|
||||||
holder.title.setText(tile.title);
|
|
||||||
if (!TextUtils.isEmpty(tile.summary)) {
|
|
||||||
holder.summary.setText(tile.summary);
|
|
||||||
holder.summary.setVisibility(View.VISIBLE);
|
|
||||||
} else {
|
|
||||||
holder.summary.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,7 +488,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
}
|
}
|
||||||
outState.putStringArrayList(STATE_SUGGESTIONS_SHOWN_LOGGED, mSuggestionsShownLogged);
|
outState.putStringArrayList(STATE_SUGGESTIONS_SHOWN_LOGGED, mSuggestionsShownLogged);
|
||||||
outState.putInt(STATE_SUGGESTION_CONDITION_MODE,
|
outState.putInt(STATE_SUGGESTION_CONDITION_MODE,
|
||||||
mDashboardData.getSuggestionConditionMode());
|
mDashboardData.getSuggestionConditionMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateConditionIcons(List<Icon> icons, ViewGroup parent) {
|
private void updateConditionIcons(List<Icon> icons, ViewGroup parent) {
|
||||||
@@ -519,7 +500,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
|||||||
parent.removeAllViews();
|
parent.removeAllViews();
|
||||||
for (int i = 1, size = icons.size(); i < size; i++) {
|
for (int i = 1, size = icons.size(); i < size; i++) {
|
||||||
ImageView icon = (ImageView) inflater.inflate(
|
ImageView icon = (ImageView) inflater.inflate(
|
||||||
R.layout.condition_header_icon, parent, false);
|
R.layout.condition_header_icon, parent, false);
|
||||||
icon.setImageIcon(icons.get(i));
|
icon.setImageIcon(icons.get(i));
|
||||||
parent.addView(icon);
|
parent.addView(icon);
|
||||||
}
|
}
|
||||||
|
@@ -171,30 +171,6 @@ public class DashboardData {
|
|||||||
return POSITION_NOT_FOUND;
|
return POSITION_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the count of suggestions to display
|
|
||||||
*
|
|
||||||
* The displayable count mainly depends on the {@link #mSuggestionConditionMode}
|
|
||||||
* and the size of suggestions list.
|
|
||||||
*
|
|
||||||
* When in default mode, displayable count couldn't be larger than
|
|
||||||
* {@link #DEFAULT_SUGGESTION_COUNT}.
|
|
||||||
*
|
|
||||||
* When in expanded mode, display all the suggestions.
|
|
||||||
*
|
|
||||||
* @return the count of suggestions to display
|
|
||||||
*/
|
|
||||||
public int getDisplayableSuggestionCount() {
|
|
||||||
final int suggestionSize = sizeOf(mSuggestions);
|
|
||||||
if (mSuggestionConditionMode == HEADER_MODE_COLLAPSED) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (mSuggestionConditionMode == HEADER_MODE_DEFAULT) {
|
|
||||||
return Math.min(DEFAULT_SUGGESTION_COUNT, suggestionSize);
|
|
||||||
}
|
|
||||||
return suggestionSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add item into list when {@paramref add} is true.
|
* Add item into list when {@paramref add} is true.
|
||||||
*
|
*
|
||||||
@@ -280,7 +256,7 @@ public class DashboardData {
|
|||||||
if (conditions == null) {
|
if (conditions == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<Condition> result = new ArrayList<Condition>();
|
List<Condition> result = new ArrayList<>();
|
||||||
final int size = conditions == null ? 0 : conditions.size();
|
final int size = conditions == null ? 0 : conditions.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
final Condition condition = conditions.get(i);
|
final Condition condition = conditions.get(i);
|
||||||
@@ -482,7 +458,7 @@ public class DashboardData {
|
|||||||
conditionCount = sizeOf(conditions);
|
conditionCount = sizeOf(conditions);
|
||||||
this.hiddenSuggestionCount = hiddenSuggestionCount;
|
this.hiddenSuggestionCount = hiddenSuggestionCount;
|
||||||
title = conditionCount > 0 ? conditions.get(0).getTitle() : null;
|
title = conditionCount > 0 ? conditions.get(0).getTitle() : null;
|
||||||
conditionIcons = new ArrayList<Icon>();
|
conditionIcons = new ArrayList<>();
|
||||||
for (int i = 0; conditions != null && i < conditions.size(); i++) {
|
for (int i = 0; conditions != null && i < conditions.size(); i++) {
|
||||||
final Condition condition = conditions.get(i);
|
final Condition condition = conditions.get(i);
|
||||||
conditionIcons.add(condition.getIcon());
|
conditionIcons.add(condition.getIcon());
|
||||||
|
Reference in New Issue
Block a user