From 40e614b36ad17a4691cce03e2b8cd7317fe90a25 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 30 Jan 2018 10:56:32 +0100 Subject: [PATCH] Use OneToOne capability instead of participants count and dummy chatroom subject --- src/android/org/linphone/LinphoneManager.java | 3 +- .../org/linphone/chat/ChatRoomsAdapter.java | 36 ++++++++++--------- .../org/linphone/chat/GroupChatFragment.java | 7 ++-- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index e6381ab5b..c0202972c 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -90,6 +90,7 @@ import org.linphone.core.CallParams; import org.linphone.core.CallStats; import org.linphone.core.ChatMessage; import org.linphone.core.ChatRoom; +import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.Content; import org.linphone.core.Core; import org.linphone.core.Core.AuthMethod; @@ -1066,7 +1067,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou String textMessage = (message.getFileTransferInformation() != null) ? getString(R.string.content_description_incoming_file) : message.getText(); if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat_message_notification)) { - if (!cr.canHandleParticipants() || (cr.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(cr.getSubject()))) { + if (cr.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) { if (contact != null) { LinphoneService.instance().displayMessageNotification(cr.getPeerAddress().asStringUriOnly(), contact.getFullName(), contact.getThumbnailUri(), textMessage); } else { diff --git a/src/android/org/linphone/chat/ChatRoomsAdapter.java b/src/android/org/linphone/chat/ChatRoomsAdapter.java index 875ec10f7..dc53339f3 100644 --- a/src/android/org/linphone/chat/ChatRoomsAdapter.java +++ b/src/android/org/linphone/chat/ChatRoomsAdapter.java @@ -39,6 +39,7 @@ import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; import org.linphone.core.ChatMessage; import org.linphone.core.ChatRoom; +import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.EventLog; import org.linphone.mediastream.Log; import org.linphone.ui.ListSelectionAdapter; @@ -137,7 +138,8 @@ public class ChatRoomsAdapter extends ListSelectionAdapter { ChatRoom chatRoom = mRooms.get(position); Address remoteAddress = chatRoom.getPeerAddress(); Address contactAddress = remoteAddress; - if (chatRoom.getNbParticipants() == 1 && mContext.getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject())) { + + if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) && chatRoom.getParticipants().length > 0) { contactAddress = chatRoom.getParticipants()[0].getAddress(); } @@ -165,23 +167,25 @@ public class ChatRoomsAdapter extends ListSelectionAdapter { } holder.displayName.setSelected(true); // For animation - holder.contactPicture.setImageBitmap(mDefaultBitmap); - if (!chatRoom.canHandleParticipants()) { - contact = ContactsManager.getInstance().findContactFromAddress(contactAddress); - if (contact != null) { - holder.displayName.setText(contact.getFullName()); - LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); + + if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) { + if (chatRoom.getParticipants().length > 0) { + contact = ContactsManager.getInstance().findContactFromAddress(chatRoom.getParticipants()[0].getAddress()); + if (contact != null) { + holder.displayName.setText(contact.getFullName()); + LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); + } else { + holder.displayName.setText(LinphoneUtils.getAddressDisplayName(chatRoom.getParticipants()[0].getAddress())); + } } else { - holder.displayName.setText(LinphoneUtils.getAddressDisplayName(contactAddress)); - } - } else if (chatRoom.getNbParticipants() == 1 && mContext.getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject())) { - contact = ContactsManager.getInstance().findContactFromAddress(chatRoom.getParticipants()[0].getAddress()); - if (contact != null) { - holder.displayName.setText(contact.getFullName()); - LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); - } else { - holder.displayName.setText(LinphoneUtils.getAddressDisplayName(chatRoom.getParticipants()[0].getAddress())); + contact = ContactsManager.getInstance().findContactFromAddress(contactAddress); + if (contact != null) { + holder.displayName.setText(contact.getFullName()); + LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); + } else { + holder.displayName.setText(LinphoneUtils.getAddressDisplayName(contactAddress)); + } } } else { holder.displayName.setText(chatRoom.getSubject()); diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index e688fe66f..fb4c55596 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -57,6 +57,7 @@ import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; import org.linphone.core.ChatMessage; import org.linphone.core.ChatRoom; +import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.ChatRoomListener; import org.linphone.core.Content; import org.linphone.core.Core; @@ -330,7 +331,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private void getContactsForParticipants() { mParticipants = new ArrayList<>(); - if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) { + if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) { LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteParticipantAddress); if (c != null) { mParticipants.add(c); @@ -376,7 +377,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con LinphoneActivity.instance().updateMissedChatCount(); mRemoteParticipantAddress = mRemoteSipAddress; - if (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject())) { + if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) && mChatRoom.getParticipants().length > 0) { mRemoteParticipantAddress = mChatRoom.getParticipants()[0].getAddress(); } @@ -393,7 +394,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mBackToCallButton.setVisibility(View.VISIBLE); } else { mBackToCallButton.setVisibility(View.GONE); - if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) { + if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) { mCallButton.setVisibility(View.VISIBLE); mGroupInfosButton.setVisibility(View.GONE); mParticipantsLabel.setVisibility(View.GONE);