in app/src/main/java/com/google/reviewit/widget/VoteView.java [61:165]
public void init(final Change change, Map<String, Integer> votes) {
final WidgetUtil widgetUtil = new WidgetUtil(getContext());
TreeSet<Integer> allVotingValues = new TreeSet<>();
for (Map.Entry<String, LabelInfo> e : change.info.labels.entrySet()) {
String labelName = e.getKey();
for (String value : e.getValue().values.keySet()) {
if (!change.info.permittedLabels.containsKey(labelName)
|| !change.info.permittedLabels.get(labelName).contains(value)) {
continue;
}
allVotingValues.add(Integer.parseInt(value.trim()));
}
}
TableRow tr = new TableRow(getContext());
tr.setLayoutParams(matchAndWrapTableRowLayout());
addView(tr, matchAndWrapTableLayout());
View v = new View(getContext());
v.setLayoutParams(matchAndWrapTableRowLayout());
tr.addView(v);
LinearLayout l = new LinearLayout(getContext());
l.setLayoutParams(matchAndWrapTableRowLayout());
l.setOrientation(HORIZONTAL);
tr.addView(l);
for (int value : allVotingValues) {
TextView valueText = new TextView(getContext());
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.weight = 1;
valueText.setGravity(Gravity.CENTER_HORIZONTAL);
valueText.setLayoutParams(params);
valueText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
valueText.setTypeface(Typeface.MONOSPACE);
valueText.setText(FormatUtil.formatLabelValue(value));
l.addView(valueText);
}
for (Map.Entry<String, LabelInfo> e :
new TreeMap<>(change.info.labels).entrySet()) {
final String labelName = e.getKey();
LabelInfo label = e.getValue();
tr = new TableRow(getContext());
tr.setLayoutParams(matchAndWrapTableRowLayout());
TextView labelNameText = new TextView(getContext());
TableRow.LayoutParams params = wrapTableRowLayout();
params.setMargins(0, widgetUtil.dpToPx(5), 0, 0);
labelNameText.setLayoutParams(params);
labelNameText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
labelNameText.setText(labelName);
tr.addView(labelNameText);
RadioGroup rg = new RadioGroup(getContext());
TableRow.LayoutParams rgParams = wrapTableRowLayout();
rgParams.gravity = Gravity.CENTER_HORIZONTAL;
rgParams.setMargins(widgetUtil.dpToPx(2), 0, widgetUtil.dpToPx(2), 0);
rg.setLayoutParams(rgParams);
rg.setOrientation(RadioGroup.HORIZONTAL);
tr.addView(rg);
final TextView infoText = new TextView(getContext());
TableRow.LayoutParams infoTextParams = wrapTableRowLayout();
infoTextParams.gravity = Gravity.CENTER_VERTICAL;
infoText.setLayoutParams(infoTextParams);
infoText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
tr.addView(infoText);
for (final Map.Entry<String, String> valueEntry
: label.values.entrySet()) {
if (!change.info.permittedLabels.containsKey(labelName)
|| !change.info.permittedLabels.get(labelName)
.contains(valueEntry.getKey())) {
continue;
}
RadioButton rb = new RadioButton(getContext());
rg.addView(rb);
final int value = Integer.parseInt(valueEntry.getKey().trim());
rb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
infoText.setText(valueEntry.getValue());
for (OnSelectListener l : listeners) {
l.onSelect(labelName, value);
}
}
});
int defaultValue = votes.containsKey(labelName) ? votes.get
(labelName) : (label.defaultValue != null ? label.defaultValue : 0);
if (value == defaultValue) {
rb.performClick();
}
}
addView(tr, matchAndWrapTableLayout());
}
}