diff --git a/src/android/org/linphone/chat/ChatEventsAdapter.java b/src/android/org/linphone/chat/ChatEventsAdapter.java index 83a38e36b..c1cfe7dad 100644 --- a/src/android/org/linphone/chat/ChatEventsAdapter.java +++ b/src/android/org/linphone/chat/ChatEventsAdapter.java @@ -61,6 +61,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -76,16 +77,16 @@ public class ChatEventsAdapter extends BaseAdapter { private LayoutInflater mLayoutInflater; private Bitmap mDefaultBitmap; - public ChatEventsAdapter(Context context, GroupChatFragment fragment, LayoutInflater inflater, EventLog[] history, List participants) { + public ChatEventsAdapter(Context context, GroupChatFragment fragment, LayoutInflater inflater, EventLog[] history, ArrayList participants) { mContext = context; mFragment = fragment; mLayoutInflater = inflater; - mHistory = Arrays.asList(history); + mHistory = new ArrayList<>(Arrays.asList(history)); mParticipants = participants; } public void updateHistory(EventLog[] history) { - mHistory = Arrays.asList(history); + mHistory = new ArrayList<>(Arrays.asList(history)); notifyDataSetChanged(); } @@ -94,7 +95,7 @@ public class ChatEventsAdapter extends BaseAdapter { notifyDataSetChanged(); } - public void setContacts(List participants) { + public void setContacts(ArrayList participants) { mParticipants = participants; } @@ -142,7 +143,7 @@ public class ChatEventsAdapter extends BaseAdapter { if (event.getType() == EventLog.Type.ConferenceChatMessage) { holder.bubbleLayout.setVisibility(View.VISIBLE); - ChatMessage message = null;//event.getChatMessage(); + ChatMessage message = event.getChatMessage(); holder.messageId = message.getMessageId(); message.setUserData(holder); @@ -154,6 +155,9 @@ public class ChatEventsAdapter extends BaseAdapter { if (message.isOutgoing()) { displayName = remoteSender.getDisplayName(); + if (displayName == null || displayName.isEmpty()) { + displayName = remoteSender.getUsername(); + } if (status == ChatMessage.State.InProgress) { holder.messageSendingInProgress.setVisibility(View.VISIBLE); diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 0de221eb1..fc19c9f56 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -58,6 +58,7 @@ import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; import org.linphone.core.Buffer; +import org.linphone.core.Call; import org.linphone.core.ChatMessage; import org.linphone.core.ChatMessageListener; import org.linphone.core.ChatRoom; @@ -95,7 +96,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private String mRemoteSipUri; private Address mRemoteSipAddress; private ChatRoom mChatRoom; - private List mParticipants; + private ArrayList mParticipants; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -571,6 +572,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } }); msg.send(); + mFilesUploadLayout.removeAllViews(); mMessageTextToSend.setText(""); } @@ -581,6 +583,11 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } } + @Override + public void onChatMessageSent(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); + } + @Override public void onUndecryptableMessageReceived(ChatRoom cr, ChatMessage msg) { final Address from = msg.getFromAddress(); @@ -625,20 +632,18 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } @Override - public void onMessageReceived(ChatRoom cr, ChatMessage msg) { + public void onChatMessageReceived(ChatRoom cr, EventLog event) { cr.markAsRead(); LinphoneActivity.instance().updateMissedChatCount(); + ChatMessage msg = event.getChatMessage(); String externalBodyUrl = msg.getExternalBodyUrl(); Content fileTransferContent = msg.getFileTransferInformation(); if (externalBodyUrl != null || fileTransferContent != null) { LinphoneActivity.instance().checkAndRequestExternalStoragePermission(); } - } - @Override - public void onChatMessageReceived(ChatRoom cr, EventLog event_log) { - ChatMessage msg = event_log.getChatMessage(); + mMessagesAdapter.addToHistory(event); } @Override @@ -701,23 +706,32 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } } + @Override + public void onMessageReceived(ChatRoom cr, ChatMessage msg) { + + } + @Override public void onParticipantAdminStatusChanged(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } @Override public void onParticipantDeviceRemoved(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } @Override public void onParticipantRemoved(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } @Override public void onParticipantDeviceAdded(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } @@ -728,11 +742,13 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con @Override public void onParticipantAdded(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } @Override public void onSubjectChanged(ChatRoom cr, EventLog event) { + mMessagesAdapter.addToHistory(event); } diff --git a/submodules/linphone b/submodules/linphone index f702e9a8f..637595573 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit f702e9a8fe0d487ef7cd529287d010ae55512a06 +Subproject commit 637595573d79e14f1fcfcbc1a5d3e5e928d6664d