Use OneToOne capability instead of participants count and dummy chatroom subject

This commit is contained in:
Sylvain Berfini 2018-01-30 10:56:32 +01:00
parent 00721dc10d
commit 40e614b36a
3 changed files with 26 additions and 20 deletions

View file

@ -90,6 +90,7 @@ import org.linphone.core.CallParams;
import org.linphone.core.CallStats; import org.linphone.core.CallStats;
import org.linphone.core.ChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.Content; import org.linphone.core.Content;
import org.linphone.core.Core; import org.linphone.core.Core;
import org.linphone.core.Core.AuthMethod; 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(); 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 (!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) { if (contact != null) {
LinphoneService.instance().displayMessageNotification(cr.getPeerAddress().asStringUriOnly(), contact.getFullName(), contact.getThumbnailUri(), textMessage); LinphoneService.instance().displayMessageNotification(cr.getPeerAddress().asStringUriOnly(), contact.getFullName(), contact.getThumbnailUri(), textMessage);
} else { } else {

View file

@ -39,6 +39,7 @@ import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address; import org.linphone.core.Address;
import org.linphone.core.ChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.EventLog; import org.linphone.core.EventLog;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.ui.ListSelectionAdapter; import org.linphone.ui.ListSelectionAdapter;
@ -137,7 +138,8 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
ChatRoom chatRoom = mRooms.get(position); ChatRoom chatRoom = mRooms.get(position);
Address remoteAddress = chatRoom.getPeerAddress(); Address remoteAddress = chatRoom.getPeerAddress();
Address contactAddress = remoteAddress; 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(); contactAddress = chatRoom.getParticipants()[0].getAddress();
} }
@ -165,23 +167,25 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
} }
holder.displayName.setSelected(true); // For animation holder.displayName.setSelected(true); // For animation
holder.contactPicture.setImageBitmap(mDefaultBitmap); holder.contactPicture.setImageBitmap(mDefaultBitmap);
if (!chatRoom.canHandleParticipants()) {
contact = ContactsManager.getInstance().findContactFromAddress(contactAddress); if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
if (contact != null) { if (chatRoom.getParticipants().length > 0) {
holder.displayName.setText(contact.getFullName()); contact = ContactsManager.getInstance().findContactFromAddress(chatRoom.getParticipants()[0].getAddress());
LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); 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 { } else {
holder.displayName.setText(LinphoneUtils.getAddressDisplayName(contactAddress)); contact = ContactsManager.getInstance().findContactFromAddress(contactAddress);
} if (contact != null) {
} else if (chatRoom.getNbParticipants() == 1 && mContext.getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject())) { holder.displayName.setText(contact.getFullName());
contact = ContactsManager.getInstance().findContactFromAddress(chatRoom.getParticipants()[0].getAddress()); LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri());
if (contact != null) { } else {
holder.displayName.setText(contact.getFullName()); holder.displayName.setText(LinphoneUtils.getAddressDisplayName(contactAddress));
LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); }
} else {
holder.displayName.setText(LinphoneUtils.getAddressDisplayName(chatRoom.getParticipants()[0].getAddress()));
} }
} else { } else {
holder.displayName.setText(chatRoom.getSubject()); holder.displayName.setText(chatRoom.getSubject());

View file

@ -57,6 +57,7 @@ import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address; import org.linphone.core.Address;
import org.linphone.core.ChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.ChatRoomListener; import org.linphone.core.ChatRoomListener;
import org.linphone.core.Content; import org.linphone.core.Content;
import org.linphone.core.Core; import org.linphone.core.Core;
@ -330,7 +331,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
private void getContactsForParticipants() { private void getContactsForParticipants() {
mParticipants = new ArrayList<>(); 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); LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteParticipantAddress);
if (c != null) { if (c != null) {
mParticipants.add(c); mParticipants.add(c);
@ -376,7 +377,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
LinphoneActivity.instance().updateMissedChatCount(); LinphoneActivity.instance().updateMissedChatCount();
mRemoteParticipantAddress = mRemoteSipAddress; 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(); mRemoteParticipantAddress = mChatRoom.getParticipants()[0].getAddress();
} }
@ -393,7 +394,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
mBackToCallButton.setVisibility(View.VISIBLE); mBackToCallButton.setVisibility(View.VISIBLE);
} else { } else {
mBackToCallButton.setVisibility(View.GONE); 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); mCallButton.setVisibility(View.VISIBLE);
mGroupInfosButton.setVisibility(View.GONE); mGroupInfosButton.setVisibility(View.GONE);
mParticipantsLabel.setVisibility(View.GONE); mParticipantsLabel.setVisibility(View.GONE);