Add message listener to chat room list

This commit is contained in:
Erwan Croze 2018-08-21 15:45:22 +02:00
parent e3b2deae68
commit b181d64e92

View file

@ -38,6 +38,8 @@ import org.linphone.contacts.ContactsManager;
import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatMessageListener;
import org.linphone.core.ChatMessageListenerStub;
import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.ChatRoomListenerStub;
@ -84,6 +86,7 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
private LayoutInflater mLayoutInflater;
private Bitmap mDefaultBitmap, mDefaultGroupBitmap;
private ChatRoomListenerStub mListener;
private ChatMessageListenerStub mChatMessageListener;
public ChatRoomsAdapter(Context context, ListSelectionHelper helper, LayoutInflater inflater) {
super(helper);
@ -100,6 +103,14 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
holder.displayName.setText(cr.getSubject());
}
};
mChatMessageListener = new ChatMessageListenerStub() {
@Override
public void onMsgStateChanged(ChatMessage msg, ChatMessage.State state) {
super.onMsgStateChanged(msg, state);
refresh();
}
};
}
public void refresh() {
@ -159,6 +170,10 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
Address remoteAddress = chatRoom.getPeerAddress();
Address contactAddress = remoteAddress;
if (chatRoom.getLastMessageInHistory() != null && chatRoom.getLastMessageInHistory().isOutgoing()) {
chatRoom.getLastMessageInHistory().setListener(mChatMessageListener);
}
if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) && chatRoom.getParticipants().length > 0) {
contactAddress = chatRoom.getParticipants()[0].getAddress();
}
@ -198,6 +213,8 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
} else {
holder.messageStatus.setImageResource(R.drawable.message_undelivered);
}
} else {
holder.messageStatus.setVisibility(View.GONE);
}
if (!chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())){
Address lastMessageSenderAddress = lastMessage.getFromAddress();