From 3dc3bf509e388792e7a285b48393e357f18c21a6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 8 Nov 2018 13:53:31 +0100 Subject: [PATCH] Allow multiple images + text, but send as multiple messages for now --- res/values/non_localizable_custom.xml | 2 + .../org/linphone/chat/GroupChatFragment.java | 48 +++++++++++-------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index 1aa5cd9d4..d645dcba4 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -86,6 +86,8 @@ linphone-android-photo-temp linphone-android-photo-%s false + true + true false diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 47bb58d61..b48f53b54 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -226,7 +226,9 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { mSendMessageButton.setEnabled(mMessageTextToSend.getText().length() > 0 || mFilesUploadLayout.getChildCount() > 0); if (mChatRoom != null && mMessageTextToSend.getText().length() > 0) { - mAttachImageButton.setEnabled(false); + if (!getResources().getBoolean(R.bool.allow_multiple_images_and_text)) { + mAttachImageButton.setEnabled(false); + } mChatRoom.compose(); } else { mAttachImageButton.setEnabled(true); @@ -755,8 +757,10 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mFilesUploadLayout.addView(pendingFile); - mAttachImageButton.setEnabled(false); // For now limit file per message to 1 - mMessageTextToSend.setEnabled(false); // For now forbid to send both text and picture at the same time + if (!getResources().getBoolean(R.bool.allow_multiple_images_and_text)) { + mAttachImageButton.setEnabled(false); + mMessageTextToSend.setEnabled(false); + } mSendMessageButton.setEnabled(true); } @@ -789,8 +793,10 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mFilesUploadLayout.addView(pendingImage); - mAttachImageButton.setEnabled(false); // For now limit file per message to 1 - mMessageTextToSend.setEnabled(false); // For now forbid to send both text and picture at the same time + if (!getResources().getBoolean(R.bool.allow_multiple_images_and_text)) { + mAttachImageButton.setEnabled(false); + mMessageTextToSend.setEnabled(false); + } mSendMessageButton.setEnabled(true); } @@ -799,12 +805,9 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con */ private void sendMessage() { - String text = mMessageTextToSend.getText().toString(); - - ChatMessage msg; - //TODO: rework when we'll send multiple files at once - if (mFilesUploadLayout.getChildCount() > 0) { - String filePath = (String) mFilesUploadLayout.getChildAt(0).getTag(); + ChatMessage msg = mChatRoom.createEmptyMessage(); + for (int i = 0; i < mFilesUploadLayout.getChildCount(); i++) { + String filePath = (String) mFilesUploadLayout.getChildAt(i).getTag(); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); String extension = LinphoneUtils.getExtensionFromFileName(fileName); Content content = Factory.instance().createContent(); @@ -815,18 +818,25 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } content.setSubtype(extension); content.setName(fileName); - msg = mChatRoom.createFileTransferMessage(content); - msg.setFileTransferFilepath(filePath); // Let the file body handler take care of the upload - msg.setAppdata(filePath); + content.setFilePath(filePath); // Let the file body handler take care of the upload - if (text != null && text.length() > 0) { - msg.addTextContent(text); + if (getResources().getBoolean(R.bool.send_text_and_images_as_different_messages)) { + ChatMessage fileMessage = mChatRoom.createFileTransferMessage(content); + fileMessage.send(); + } else { + msg.addFileContent(content); } - } else { - msg = mChatRoom.createMessage(text); } + + String text = mMessageTextToSend.getText().toString(); + if (text != null && text.length() > 0) { + msg.addTextContent(text); + } + // Set listener not required here anymore, message will be added to messages list and adapter will set the listener - msg.send(); + if (msg.getContents().length > 0) { + msg.send(); + } mFilesUploadLayout.removeAllViews(); mAttachImageButton.setEnabled(true);