diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index d006162c4..dba4d930c 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -1050,11 +1050,17 @@ public class ChatMessagesFragment extends Fragment /** Message sending */ private void sendMessage() { ChatMessage msg = mChatRoom.createEmptyMessage(); + boolean isBasicChatRoom = mChatRoom.hasCapability(ChatRoomCapabilities.Basic.toInt()); + boolean sendMultipleImagesAsDifferentMessages = + getResources().getBoolean(R.bool.send_multiple_images_as_different_messages); + boolean sendImageAndTextAsDifferentMessages = + getResources().getBoolean(R.bool.send_text_and_images_as_different_messages); String text = mMessageTextToSend.getText().toString(); boolean hasText = text != null && text.length() > 0; - for (int i = 0; i < mFilesUploadLayout.getChildCount(); i++) { + int filesCount = mFilesUploadLayout.getChildCount(); + for (int i = 0; i < filesCount; i++) { String filePath = (String) mFilesUploadLayout.getChildAt(i).getTag(); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); String extension = FileUtils.getExtensionFromFileName(fileName); @@ -1068,8 +1074,21 @@ public class ChatMessagesFragment extends Fragment content.setName(fileName); content.setFilePath(filePath); // Let the file body handler take care of the upload - if (getResources().getBoolean(R.bool.send_text_and_images_as_different_messages) - && (mFilesUploadLayout.getChildCount() > 1 || hasText)) { + boolean split = + isBasicChatRoom; // Always split contents in basic chat rooms for compatibility + if (hasText && sendImageAndTextAsDifferentMessages) { + split = true; + } else if (mFilesUploadLayout.getChildCount() > 1 + && sendMultipleImagesAsDifferentMessages) { + split = true; + + // Allow the last image to be sent with text if image and text at the same time OK + if (hasText && !sendImageAndTextAsDifferentMessages && i == filesCount - 1) { + split = false; + } + } + + if (split) { ChatMessage fileMessage = mChatRoom.createFileTransferMessage(content); fileMessage.send(); } else { diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml index a6c42887d..adb22b3b0 100644 --- a/app/src/main/res/values/non_localizable_custom.xml +++ b/app/src/main/res/values/non_localizable_custom.xml @@ -96,7 +96,8 @@ linphone-android-photo-%s true true - true + false + true true true