From e024554908541d40a778d010160d07cbff2fc87a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 3 Nov 2017 12:52:19 +0100 Subject: [PATCH] Added code to display group chat room with only 1 participant other than ourself with the dummy subject like an old simple chat room --- res/values/non_localizable_strings.xml | 2 + .../linphone/chat/ChatCreationFragment.java | 2 +- .../org/linphone/chat/ChatListFragment.java | 8 +-- .../org/linphone/chat/GroupChatFragment.java | 54 +++++++++---------- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index 70111a918..ae91b9e03 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -3,6 +3,8 @@ false + dummy subject + pref_disable_account_key pref_nb_accounts_extra diff --git a/src/android/org/linphone/chat/ChatCreationFragment.java b/src/android/org/linphone/chat/ChatCreationFragment.java index d356a4b7a..0fc4b9445 100644 --- a/src/android/org/linphone/chat/ChatCreationFragment.java +++ b/src/android/org/linphone/chat/ChatCreationFragment.java @@ -289,7 +289,7 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen //LinphoneActivity.instance().displayChat(contactsSelected.get(0).getAddress(), "", ""); //TODO create group chat room with only two participants ? //TODO what subject to set ? - ChatRoom chatRoom = LinphoneManager.getLc().createClientGroupChatRoom("dummy subject"); + ChatRoom chatRoom = LinphoneManager.getLc().createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); chatRoom.setListener(new ChatRoomListenerStub() { @Override public void onStateChanged(ChatRoom cr, ChatRoom.State newState) { diff --git a/src/android/org/linphone/chat/ChatListFragment.java b/src/android/org/linphone/chat/ChatListFragment.java index cd7d78f6c..b1ced2314 100644 --- a/src/android/org/linphone/chat/ChatListFragment.java +++ b/src/android/org/linphone/chat/ChatListFragment.java @@ -434,10 +434,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte holder.displayName.setSelected(true); // For animation - if (chatRoom.canHandleParticipants()) { - holder.displayName.setText(chatRoom.getSubject()); - holder.contactPicture.setImageResource(R.drawable.chat_group_avatar); - } else { + if (!chatRoom.canHandleParticipants() || (chatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject()))) { if (contact != null) { holder.displayName.setText(contact.getFullName()); LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); @@ -445,6 +442,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte holder.displayName.setText(LinphoneUtils.getAddressDisplayName(address)); holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap()); } + } else { + holder.displayName.setText(chatRoom.getSubject()); + holder.contactPicture.setImageResource(R.drawable.chat_group_avatar); } if (unreadMessagesCount > 0) { diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 41d606b88..19e8372a9 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -410,7 +410,12 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private void getContactsForParticipants() { mParticipants = new ArrayList<>(); - if (mChatRoom.canHandleParticipants()) { + if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) { + LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteSipAddress); + if (c != null) { + mParticipants.add(c); + } + } else { int index = 0; StringBuilder participantsLabel = new StringBuilder(); for (Participant p : mChatRoom.getParticipants()) { @@ -426,11 +431,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con if (index != mChatRoom.getNbParticipants()) participantsLabel.append(", "); } mParticipantsLabel.setText(participantsLabel.toString()); - } else { - LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteSipAddress); - if (c != null) { - mParticipants.add(c); - } } if (mEventsAdapter != null) { @@ -463,13 +463,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mBackToCallButton.setVisibility(View.VISIBLE); } else { mBackToCallButton.setVisibility(View.GONE); - if (mChatRoom.canHandleParticipants()) { - mCallButton.setVisibility(View.GONE); - mGroupInfosButton.setVisibility(View.VISIBLE); - mRoomLabel.setText(mChatRoom.getSubject()); - mParticipantsLabel.setVisibility(View.VISIBLE); - - } else { + if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) { mCallButton.setVisibility(View.VISIBLE); mGroupInfosButton.setVisibility(View.GONE); mParticipantsLabel.setVisibility(View.GONE); @@ -481,6 +475,12 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } else { mRoomLabel.setText(mParticipants.get(0).getFullName()); } + } else { + mCallButton.setVisibility(View.GONE); + mGroupInfosButton.setVisibility(View.VISIBLE); + mRoomLabel.setText(mChatRoom.getSubject()); + mParticipantsLabel.setVisibility(View.VISIBLE); + } } } @@ -718,7 +718,20 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con @Override public void onIsComposingReceived(ChatRoom cr, Address remoteAddr, boolean isComposing) { - if (cr.canHandleParticipants()) { + if (!cr.canHandleParticipants() || (cr.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(cr.getSubject()))) { + if (isComposing) { + String displayName; + if (mParticipants.size() > 0) { + displayName = mParticipants.get(0).getFullName(); + } else { + displayName = LinphoneUtils.getAddressDisplayName(remoteAddr); + } + mRemoteComposing.setText(getString(R.string.remote_composing_single).replace("%s", displayName)); + mRemoteComposing.setVisibility(View.VISIBLE); + } else { + mRemoteComposing.setVisibility(View.GONE); + } + } else { ArrayList composing = new ArrayList<>(); for (Address a : cr.getComposingAddresses()) { boolean found = false; @@ -753,19 +766,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } else { mRemoteComposing.setVisibility(View.GONE); } - } else { - if (isComposing) { - String displayName; - if (mParticipants.size() > 0) { - displayName = mParticipants.get(0).getFullName(); - } else { - displayName = LinphoneUtils.getAddressDisplayName(remoteAddr); - } - mRemoteComposing.setText(getString(R.string.remote_composing_single).replace("%s", displayName)); - mRemoteComposing.setVisibility(View.VISIBLE); - } else { - mRemoteComposing.setVisibility(View.GONE); - } } }