File upload layout done

This commit is contained in:
Sylvain Berfini 2017-11-01 18:01:56 +01:00
parent 7be868b147
commit b0c4e0edd6
2 changed files with 45 additions and 28 deletions

View file

@ -249,10 +249,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
String appData = message.getAppdata();
if (externalBodyUrl != null) { // Incoming file transfer
if (appData != null) { // Download already done, just display the result
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setText(fileTransferContent.getName());
displayDownloadedFile(message, holder);
displayAttachedFile(message, holder);
} else { // Attachment not yet downloaded
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setText(fileTransferContent.getName());
@ -280,14 +277,21 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
}
} else if (fileTransferContent != null) { // Outgoing file transfer
if (appData != null) {
displayDownloadedFile(message, holder);
displayAttachedFile(message, holder);
}
if (message.getState() == ChatMessage.State.InProgress) {
holder.messageSendingInProgress.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.VISIBLE);
}
} else {
holder.fileTransferLayout.setVisibility(View.GONE);
if (message.getState() == ChatMessage.State.InProgress) {
holder.messageSendingInProgress.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.VISIBLE);
holder.fileTransferAction.setText(mContext.getString(R.string.cancel));
holder.fileTransferAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
message.cancelFileTransfer();
notifyDataSetChanged();
}
});
}
} else if (msg != null) { // This is a else for now, the day we'll be able to send both file and text this won't be anymore
text = LinphoneUtils.getTextWithHttpLinks(msg);
@ -378,7 +382,10 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
mContext.startActivity(intent);
}
private void displayDownloadedFile(ChatMessage message, ChatBubbleViewHolder holder) {
private void displayAttachedFile(ChatMessage message, ChatBubbleViewHolder holder) {
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setText(message.getFileTransferInformation().getName());
String appData = message.getAppdata();
if (LinphoneUtils.isExtensionImage(appData)) {
holder.messageImage.setVisibility(View.VISIBLE);
@ -418,7 +425,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
if (offset == total) {
holder.fileTransferProgressBar.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.GONE);
displayDownloadedFile(message, holder);
displayAttachedFile(message, holder);
} else {
holder.fileTransferProgressBar.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setProgress(offset * 100 / total);

View file

@ -91,7 +91,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
private ViewTreeObserver.OnGlobalLayoutListener mKeyboardListener;
private Uri mImageToUploadUri;
private ChatEventsAdapter mMessagesAdapter;
private ChatEventsAdapter mEventsAdapter;
private String mRemoteSipUri;
private Address mRemoteSipAddress;
private ChatRoom mChatRoom;
@ -405,8 +405,8 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
}
}
if (mMessagesAdapter != null) {
mMessagesAdapter.setContacts(mParticipants);
if (mEventsAdapter != null) {
mEventsAdapter.setContacts(mParticipants);
}
}
@ -462,8 +462,8 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
private void displayChatRoomHistory() {
if (mChatRoom == null) return;
mMessagesAdapter = new ChatEventsAdapter(getActivity(), this, mInflater, mChatRoom.getHistoryEvents(0), mParticipants);
mChatEventsList.setAdapter(mMessagesAdapter);
mEventsAdapter = new ChatEventsAdapter(getActivity(), this, mInflater, mChatRoom.getHistoryEvents(0), mParticipants);
mChatEventsList.setAdapter(mEventsAdapter);
}
private void pickFile() {
@ -557,6 +557,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
content.setName(fileName);
msg = mChatRoom.createFileTransferMessage(content);
msg.setFileTransferFilepath(filePath); // Let the file body handler take care of the upload
msg.setAppdata(filePath);
} else {
msg = mChatRoom.createMessage(text);
}
@ -564,7 +565,16 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
msg.setListener(new ChatMessageListenerStub() {
@Override
public void onFileTransferProgressIndication(ChatMessage message, Content content, int offset, int total) {
ChatBubbleViewHolder holder = (ChatBubbleViewHolder) message.getUserData();
if (holder != null && message.getMessageId().equals(holder.messageId) && message.isOutgoing()) {
if (offset == total) {
holder.fileTransferLayout.setVisibility(View.GONE);
mEventsAdapter.notifyDataSetChanged();
} else {
holder.fileTransferProgressBar.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setProgress(offset * 100 / total);
}
}
}
@Override
@ -598,8 +608,8 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
}
public void scrollToBottom() {
if (((mChatEventsList.getLastVisiblePosition() >= (mMessagesAdapter.getCount() - 1)) && (mChatEventsList.getFirstVisiblePosition() <= (mMessagesAdapter.getCount() - 1)))) {
mChatEventsList.setSelection(mMessagesAdapter.getCount() - 1);
if (((mChatEventsList.getLastVisiblePosition() >= (mEventsAdapter.getCount() - 1)) && (mChatEventsList.getFirstVisiblePosition() <= (mEventsAdapter.getCount() - 1)))) {
mChatEventsList.setSelection(mEventsAdapter.getCount() - 1);
}
}
@ -609,7 +619,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
@Override
public void onChatMessageSent(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
@ -667,7 +677,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
LinphoneActivity.instance().checkAndRequestExternalStoragePermission();
}
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
@ -737,22 +747,22 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
@Override
public void onParticipantAdminStatusChanged(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
public void onParticipantDeviceRemoved(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
public void onParticipantRemoved(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
public void onParticipantDeviceAdded(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
@ -762,12 +772,12 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
@Override
public void onParticipantAdded(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
}
@Override
public void onSubjectChanged(ChatRoom cr, EventLog event) {
mMessagesAdapter.addToHistory(event);
mEventsAdapter.addToHistory(event);
mRoomLabel.setText(event.getSubject());
}