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);
- }
}
}