package fi.bitrite.android.ws.view;
import android.content.Context;
import android.graphics.Typeface;
import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import fi.bitrite.android.ws.model.Feedback;
import fi.bitrite.android.ws.util.ArrayTranslator;
import java.util.List;
/**
* Custom table that creates rows dynamically.
*/
public class FeedbackTable extends TableLayout {
ArrayTranslator translator;
Context mContext;
public FeedbackTable(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
if (!isInEditMode()) {
translator = ArrayTranslator.getInstance();
}
}
public void addRows(List<Feedback> feedback) {
int i = 0;
for (Feedback f : feedback) {
TableRow tr = getFeedbackRow();
TextView rating = getFeedbackText(getRowHeaderString(f));
rating.setTypeface(null, Typeface.ITALIC);
rating.setTextSize(16);
rating.setPadding(0, 5, 0, 0);
tr.addView(rating);
addView(tr);
tr = getFeedbackRow();
TextView meta = getFeedbackText(getAuthorString(f));
meta.setTypeface(null, Typeface.ITALIC);
tr.addView(meta);
addView(tr);
tr = getFeedbackRow();
TextView body = getFeedbackText(f.getBody());
body.setPadding(0, 0, 0, 5);
tr.addView(body);
addView(tr);
}
}
private String getRowHeaderString(Feedback f) {
StringBuilder sb = new StringBuilder();
if (!isInEditMode()) {
sb.append(translator.translateHostGuest(f.getGuestOrHost()));
// Present hosted date without DOM because we don't carry that.
int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_MONTH_DAY;
String hostedOn = DateUtils.formatDateTime(mContext, f.getHostingDate().getTime(), flags);
sb.append(" (");
sb.append(hostedOn);
sb.append(") - ");
sb.append(translator.translateRating(f.getRating()));
}
return sb.toString();
}
private String getAuthorString(Feedback f) {
String name = f.getFullname();
if (name == null || name.length() == 0) {
name = "Unknown";
}
return name;
}
private TextView getFeedbackText(String text) {
TextView row = new TextView(getContext());
row.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT
));
row.setText(text);
return row;
}
private TableRow getFeedbackRow() {
TableRow tr = new TableRow(getContext());
tr.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT
));
return tr;
}
}