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(UIHelper.transformAsciiEmoticons(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}