package com.mistareader;
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
import android.text.Html;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Messages_Adapter extends BaseAdapter {
private ArrayList<Message> mMessages;
private int mResource;
private LayoutInflater mInflater;
private static int mUserTextColor = -1;
private static int mAuthorColor = -1;
private static int mAccountColor = -1;
private String mAuthor;
private String mAccount;
private String[] mVotes;
public Messages_Adapter(Context context, Topic currentTopic, String account, int resource) {
mMessages = currentTopic.messages;
mAuthor = currentTopic.user0;
if (currentTopic.is_voting == 1) {
mVotes = new String[5];
for (int i = 0; i < currentTopic.votes.size(); i++) {
mVotes[i] = currentTopic.votes.get(i).voteName;
}
}
mAccount = account;
mResource = resource;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Resources locRes = context.getResources();
mAuthorColor = locRes.getColor(R.color.lightCyan);
mAccountColor = locRes.getColor(R.color.lvLightGreenCol);
TypedValue typedValue = new TypedValue();
Theme theme = context.getTheme();
theme.resolveAttribute(R.attr.text_user, typedValue, true);
mUserTextColor = typedValue.data;
theme.resolveAttribute(R.attr.text_author, typedValue, true);
mAuthorColor = typedValue.data;
theme.resolveAttribute(R.attr.text_account, typedValue, true);
mAccountColor = typedValue.data;
}
static class ViewHolder {
public TextView mess_N;
public TextView mess_Time;
public TextView mess_User;
public TextView mess_Text;
public TextView mess_Replies;
public TextView mess_Vote;
public RelativeLayout mess_filled;
}
@Override
public int getCount() {
return mMessages.size();
}
@Override
public Message getItem(int position) {
return mMessages.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
View v = convertView;
Message currentMessage = mMessages.get(position);
if (v == null) {
v = mInflater.inflate(mResource, parent, false);
holder = new ViewHolder();
holder.mess_filled = (RelativeLayout) v.findViewById(R.id.messageMainFrame);
holder.mess_N = (TextView) v.findViewById(R.id.mess_n);
holder.mess_Time = (TextView) v.findViewById(R.id.mess_time);
holder.mess_User = (TextView) v.findViewById(R.id.mess_user);
holder.mess_Text = (TextView) v.findViewById(R.id.mess_text);
holder.mess_Replies = (TextView) v.findViewById(R.id.mess_replies);
holder.mess_Vote = (TextView) v.findViewById(R.id.mess_vote);
v.setTag(holder);
}
else {
holder = (ViewHolder) v.getTag();}
if (currentMessage.isDeleted == true || !currentMessage.isLoaded)
{
holder.mess_filled.setVisibility(View.GONE);
return v;
}
else
holder.mess_filled.setVisibility(View.VISIBLE);
if (currentMessage.vote > 0) {
holder.mess_Vote.setText(currentMessage.vote+". "+mVotes[currentMessage.vote-1]);
holder.mess_Vote.setVisibility(View.VISIBLE);
}
else
holder.mess_Vote.setVisibility(View.GONE);
holder.mess_Text.setText(Html.fromHtml(currentMessage.text));
if (currentMessage.quoteRepresentation.isEmpty())
holder.mess_Replies.setVisibility(View.GONE);
else
holder.mess_Replies.setVisibility(View.VISIBLE);
holder.mess_User.setText(currentMessage.user);
holder.mess_Replies.setText(currentMessage.quoteRepresentation);
holder.mess_Time.setText(currentMessage.timeText);
holder.mess_N.setText("" + currentMessage.n);
String messUser = currentMessage.user;
if (messUser.equals(mAuthor)) {
holder.mess_User.setTextColor(mAuthorColor);
}
else if (messUser.equals(mAccount))
holder.mess_User.setTextColor(mAccountColor);
else
holder.mess_User.setTextColor(mUserTextColor);
return v;
}
}