refactored the message adapter a bit

iNPUTmice created

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 65 
1 file changed, 33 insertions(+), 32 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -25,6 +25,7 @@ import java.util.List;
 
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.entities.Contact;
 import eu.siacs.conversations.entities.Conversation;
 import eu.siacs.conversations.entities.Downloadable;
@@ -339,7 +340,9 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 
 	@Override
 	public View getView(int position, View view, ViewGroup parent) {
-		final Message item = getItem(position);
+		final Message message = getItem(position);
+		final Conversation conversation = message.getConversation();
+		final Account account = conversation.getAccount();
 		int type = getItemViewType(position);
 		ViewHolder viewHolder;
 		if (view == null) {
@@ -407,10 +410,9 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 		}
 
 		if (type == STATUS) {
-			if (item.getConversation().getMode() == Conversation.MODE_SINGLE) {
+			if (conversation.getMode() == Conversation.MODE_SINGLE) {
 				viewHolder.contact_picture.setImageBitmap(activity
-						.avatarService().get(
-								item.getConversation().getContact(),
+						.avatarService().get(conversation.getContact(),
 								activity.getPixel(32)));
 				viewHolder.contact_picture.setAlpha(0.5f);
 				viewHolder.contact_picture
@@ -418,8 +420,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 
 							@Override
 							public void onClick(View v) {
-								String name = item.getConversation()
-										.getName();
+								String name = conversation.getName();
 								String read = getContext()
 										.getString(
 												R.string.contact_has_read_up_to_this_point,
@@ -441,15 +442,15 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 			view.setLayoutParams(view.getLayoutParams());
 			return view;
 		} else if (type == RECEIVED) {
-			Contact contact = item.getContact();
+			Contact contact = message.getContact();
 			if (contact != null) {
 				viewHolder.contact_picture.setImageBitmap(activity.avatarService().get(contact, activity.getPixel(48)));
-			} else if (item.getConversation().getMode() == Conversation.MODE_MULTI) {
-				viewHolder.contact_picture.setImageBitmap(activity.avatarService().get(getDisplayedMucCounterpart(item.getCounterpart()),
+			} else if (conversation.getMode() == Conversation.MODE_MULTI) {
+				viewHolder.contact_picture.setImageBitmap(activity.avatarService().get(getDisplayedMucCounterpart(message.getCounterpart()),
                         activity.getPixel(48)));
 			}
-		} else if (type == SENT) {
-			viewHolder.contact_picture.setImageBitmap(activity.avatarService().get(item.getConversation().getAccount(), activity.getPixel(48)));
+		} else if (type == SENT && viewHolder.contact_picture != null) {
+			viewHolder.contact_picture.setImageBitmap(activity.avatarService().get(account, activity.getPixel(48)));
 		}
 
 		if (viewHolder != null && viewHolder.contact_picture != null) {
@@ -460,7 +461,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 						public void onClick(View v) {
 							if (MessageAdapter.this.mOnContactPictureClickedListener != null) {
 								MessageAdapter.this.mOnContactPictureClickedListener
-										.onContactPictureClicked(item);
+										.onContactPictureClicked(message);
 							}
 
 						}
@@ -472,7 +473,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 						public boolean onLongClick(View v) {
 							if (MessageAdapter.this.mOnContactPictureLongClickedListener != null) {
 								MessageAdapter.this.mOnContactPictureLongClickedListener
-										.onContactPictureLongClicked(item);
+										.onContactPictureLongClicked(message);
 								return true;
 							} else {
 								return false;
@@ -481,10 +482,10 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 					});
 		}
 
-		if (item.getDownloadable() != null && item.getDownloadable().getStatus() != Downloadable.STATUS_UPLOADING) {
-			Downloadable d = item.getDownloadable();
+		if (message.getDownloadable() != null && message.getDownloadable().getStatus() != Downloadable.STATUS_UPLOADING) {
+			Downloadable d = message.getDownloadable();
 			if (d.getStatus() == Downloadable.STATUS_DOWNLOADING) {
-				if (item.getType() == Message.TYPE_FILE) {
+				if (message.getType() == Message.TYPE_FILE) {
 					displayInfoMessage(viewHolder,activity.getString(R.string.receiving_file,d.getMimeType(),d.getProgress()));
 				} else {
 					displayInfoMessage(viewHolder,activity.getString(R.string.receiving_image,d.getProgress()));
@@ -492,35 +493,35 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 			} else if (d.getStatus() == Downloadable.STATUS_CHECKING) {
 				displayInfoMessage(viewHolder,activity.getString(R.string.checking_image));
 			} else if (d.getStatus() == Downloadable.STATUS_DELETED) {
-				if (item.getType() == Message.TYPE_FILE) {
+				if (message.getType() == Message.TYPE_FILE) {
 					displayInfoMessage(viewHolder, activity.getString(R.string.file_deleted));
 				} else {
 					displayInfoMessage(viewHolder, activity.getString(R.string.image_file_deleted));
 				}
 			} else if (d.getStatus() == Downloadable.STATUS_OFFER) {
-				if (item.getType() == Message.TYPE_FILE) {
-					displayDownloadableMessage(viewHolder,item,activity.getString(R.string.download_file,d.getMimeType()));
+				if (message.getType() == Message.TYPE_FILE) {
+					displayDownloadableMessage(viewHolder,message,activity.getString(R.string.download_file,d.getMimeType()));
 				} else {
-					displayDownloadableMessage(viewHolder, item,activity.getString(R.string.download_image));
+					displayDownloadableMessage(viewHolder, message,activity.getString(R.string.download_image));
 				}
 			} else if (d.getStatus() == Downloadable.STATUS_OFFER_CHECK_FILESIZE) {
-				displayDownloadableMessage(viewHolder, item,activity.getString(R.string.check_image_filesize));
+				displayDownloadableMessage(viewHolder, message,activity.getString(R.string.check_image_filesize));
 			} else if (d.getStatus() == Downloadable.STATUS_FAILED) {
-				if (item.getType() == Message.TYPE_FILE) {
+				if (message.getType() == Message.TYPE_FILE) {
 					displayInfoMessage(viewHolder, activity.getString(R.string.file_transmission_failed));
 				} else {
 					displayInfoMessage(viewHolder, activity.getString(R.string.image_transmission_failed));
 				}
 			}
-		} else if (item.getType() == Message.TYPE_IMAGE && item.getEncryption() != Message.ENCRYPTION_PGP && item.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
-			displayImageMessage(viewHolder, item);
-		} else if (item.getType() == Message.TYPE_FILE && item.getEncryption() != Message.ENCRYPTION_PGP && item.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
-			if (item.getImageParams().width > 0) {
-				displayImageMessage(viewHolder,item);
+		} else if (message.getType() == Message.TYPE_IMAGE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
+			displayImageMessage(viewHolder, message);
+		} else if (message.getType() == Message.TYPE_FILE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
+			if (message.getImageParams().width > 0) {
+				displayImageMessage(viewHolder,message);
 			} else {
-				displayOpenableMessage(viewHolder, item);
+				displayOpenableMessage(viewHolder, message);
 			}
-		} else if (item.getEncryption() == Message.ENCRYPTION_PGP) {
+		} else if (message.getEncryption() == Message.ENCRYPTION_PGP) {
 			if (activity.hasPgp()) {
 				displayInfoMessage(viewHolder,activity.getString(R.string.encrypted_message));
 			} else {
@@ -537,13 +538,13 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 							});
 				}
 			}
-		} else if (item.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) {
+		} else if (message.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) {
 			displayDecryptionFailed(viewHolder);
 		} else {
-			displayTextMessage(viewHolder, item);
+			displayTextMessage(viewHolder, message);
 		}
 
-		displayStatus(viewHolder, item);
+		displayStatus(viewHolder, message);
 
 		return view;
 	}