ConversationAdapter.java

  1package eu.siacs.conversations.ui.adapter;
  2
  3import java.util.List;
  4
  5import eu.siacs.conversations.R;
  6import eu.siacs.conversations.entities.Conversation;
  7import eu.siacs.conversations.entities.Message;
  8import eu.siacs.conversations.ui.ConversationActivity;
  9import eu.siacs.conversations.utils.UIHelper;
 10import android.content.Context;
 11import android.graphics.Color;
 12import android.graphics.Typeface;
 13import android.view.LayoutInflater;
 14import android.view.View;
 15import android.view.ViewGroup;
 16import android.widget.ArrayAdapter;
 17import android.widget.ImageView;
 18import android.widget.TextView;
 19
 20public class ConversationAdapter extends ArrayAdapter<Conversation> {
 21
 22	ConversationActivity activity;
 23
 24	public ConversationAdapter(ConversationActivity activity,
 25			List<Conversation> conversations) {
 26		super(activity, 0, conversations);
 27		this.activity = activity;
 28	}
 29
 30	@Override
 31	public View getView(int position, View view, ViewGroup parent) {
 32		if (view == null) {
 33			LayoutInflater inflater = (LayoutInflater) activity
 34					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 35			view = (View) inflater.inflate(R.layout.conversation_list_row,
 36					parent, false);
 37		}
 38		Conversation conv = getItem(position);
 39		if (!activity.getSlidingPaneLayout().isSlideable()) {
 40			if (conv == activity.getSelectedConversation()) {
 41				view.setBackgroundColor(0xffdddddd);
 42			} else {
 43				view.setBackgroundColor(Color.TRANSPARENT);
 44			}
 45		} else {
 46			view.setBackgroundColor(Color.TRANSPARENT);
 47		}
 48		TextView convName = (TextView) view
 49				.findViewById(R.id.conversation_name);
 50		convName.setText(conv.getName(true));
 51		TextView convLastMsg = (TextView) view
 52				.findViewById(R.id.conversation_lastmsg);
 53		ImageView imagePreview = (ImageView) view
 54				.findViewById(R.id.conversation_lastimage);
 55
 56		Message latestMessage = conv.getLatestMessage();
 57
 58		if (latestMessage.getType() == Message.TYPE_TEXT
 59				|| latestMessage.getType() == Message.TYPE_PRIVATE) {
 60			if ((latestMessage.getEncryption() != Message.ENCRYPTION_PGP)
 61					&& (latestMessage.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED)) {
 62				convLastMsg.setText(conv.getLatestMessage().getBody());
 63			} else {
 64				convLastMsg.setText(activity
 65						.getText(R.string.encrypted_message_received));
 66			}
 67			convLastMsg.setVisibility(View.VISIBLE);
 68			imagePreview.setVisibility(View.GONE);
 69		} else if (latestMessage.getType() == Message.TYPE_IMAGE) {
 70			if (latestMessage.getStatus() >= Message.STATUS_RECEIVED) {
 71				convLastMsg.setVisibility(View.GONE);
 72				imagePreview.setVisibility(View.VISIBLE);
 73				activity.loadBitmap(latestMessage, imagePreview);
 74			} else {
 75				convLastMsg.setVisibility(View.VISIBLE);
 76				imagePreview.setVisibility(View.GONE);
 77				if (latestMessage.getStatus() == Message.STATUS_RECEIVED_OFFER) {
 78					convLastMsg.setText(activity
 79							.getText(R.string.image_offered_for_download));
 80				} else if (latestMessage.getStatus() == Message.STATUS_RECEIVING) {
 81					convLastMsg.setText(activity
 82							.getText(R.string.receiving_image));
 83				} else {
 84					convLastMsg.setText("");
 85				}
 86			}
 87		}
 88
 89		if (!conv.isRead()) {
 90			convName.setTypeface(null, Typeface.BOLD);
 91			convLastMsg.setTypeface(null, Typeface.BOLD);
 92		} else {
 93			convName.setTypeface(null, Typeface.NORMAL);
 94			convLastMsg.setTypeface(null, Typeface.NORMAL);
 95		}
 96
 97		((TextView) view.findViewById(R.id.conversation_lastupdate))
 98				.setText(UIHelper.readableTimeDifference(getContext(), conv
 99						.getLatestMessage().getTimeSent()));
100
101		ImageView profilePicture = (ImageView) view
102				.findViewById(R.id.conversation_image);
103		profilePicture.setImageBitmap(conv.getImage(activity, 56));
104
105		return view;
106	}
107}