@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { if (user == null && chat == null && encryptedChat == null) { super.onLayout(changed, left, top, right, bottom); return; } if (changed) { buildLayout(); } }
public void update(int mask) { int placeHolderId = 0; TLRPC.FileLocation photo = null; if (user != null) { if (user.photo != null) { photo = user.photo.photo_small; } placeHolderId = Utilities.getUserAvatarForId(user.id); } else if (chat != null) { if (chat.photo != null) { photo = chat.photo.photo_small; } placeHolderId = Utilities.getGroupAvatarForId(chat.id); } if (mask != 0) { boolean continueUpdate = false; if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 && user != null || (mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0 && chat != null) { if (lastAvatar != null && photo == null || lastAvatar == null && photo != null && lastAvatar != null && photo != null && (lastAvatar.volume_id != photo.volume_id || lastAvatar.local_id != photo.local_id)) { continueUpdate = true; } } if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_STATUS) != 0 && user != null) { int newStatus = 0; if (user.status != null) { newStatus = user.status.expires; } if (newStatus != lastStatus) { continueUpdate = true; } } if (!continueUpdate && ((mask & MessagesController.UPDATE_MASK_NAME) != 0 && user != null) || (mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0 && chat != null) { String newName; if (user != null) { newName = user.first_name + user.last_name; } else { newName = chat.title; } if (!newName.equals(lastName)) { continueUpdate = true; } } if (!continueUpdate) { return; } } if (user != null) { if (user.status != null) { lastStatus = user.status.expires; } else { lastStatus = 0; } lastName = user.first_name + user.last_name; } else if (chat != null) { lastName = chat.title; } lastAvatar = photo; avatarImage.setImage( photo, "50_50", placeHolderId == 0 ? null : getResources().getDrawable(placeHolderId)); if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) { buildLayout(); } else { requestLayout(); } postInvalidate(); }