Updated linphone + fixes for file transfer UI

This commit is contained in:
Sylvain Berfini 2017-12-05 17:20:13 +01:00
parent 5d5dfecd0a
commit d129af2a8e
2 changed files with 48 additions and 46 deletions

View file

@ -259,16 +259,20 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
String externalBodyUrl = message.getExternalBodyUrl(); String externalBodyUrl = message.getExternalBodyUrl();
Content fileTransferContent = message.getFileTransferInformation(); Content fileTransferContent = message.getFileTransferInformation();
String appData = message.getAppdata();
if (externalBodyUrl != null) { // Incoming file transfer if (message.getAppdata() != null) { // Something to display
if (appData != null) { // Download already done, just display the result
displayAttachedFile(message, holder); displayAttachedFile(message, holder);
} else { // Attachment not yet downloaded }
if (externalBodyUrl != null) { // Incoming file transfer not yet downloaded
holder.fileName.setVisibility(View.VISIBLE); holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setText(fileTransferContent.getName()); holder.fileName.setText(fileTransferContent.getName());
holder.fileTransferLayout.setVisibility(View.VISIBLE); holder.fileTransferLayout.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setVisibility(View.GONE); holder.fileTransferProgressBar.setVisibility(View.GONE);
if (message.getState() == ChatMessage.State.InProgress && message.getFileTransferFilepath() != null) { // Incoming file transfer in progress
holder.fileTransferAction.setVisibility(View.GONE);
} else {
holder.fileTransferAction.setText(mContext.getString(R.string.accept)); holder.fileTransferAction.setText(mContext.getString(R.string.accept));
holder.fileTransferAction.setOnClickListener(new View.OnClickListener() { holder.fileTransferAction.setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -277,7 +281,6 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
v.setEnabled(false); v.setEnabled(false);
String filename = message.getFileTransferInformation().getName(); String filename = message.getFileTransferInformation().getName();
File file = new File(Environment.getExternalStorageDirectory(), filename); File file = new File(Environment.getExternalStorageDirectory(), filename);
message.setAppdata(file.getPath());
message.setListener(ChatEventsAdapter.this); message.setListener(ChatEventsAdapter.this);
message.setFileTransferFilepath(file.getPath()); message.setFileTransferFilepath(file.getPath());
message.downloadFile(); message.downloadFile();
@ -288,13 +291,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
} }
}); });
} }
} else if (fileTransferContent != null) { // Outgoing file transfer } else if (message.getState() == ChatMessage.State.InProgress && message.getFileTransferFilepath() != null) { // Outgoing file transfer in progress
if (appData != null) {
displayAttachedFile(message, holder);
}
holder.fileTransferLayout.setVisibility(View.GONE);
if (message.getState() == ChatMessage.State.InProgress && message.getFileTransferFilepath() != null) { // Only for file transfer InProgress state
message.setListener(this); // add the listener for file upload progress display message.setListener(this); // add the listener for file upload progress display
holder.messageSendingInProgress.setVisibility(View.GONE); holder.messageSendingInProgress.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.VISIBLE); holder.fileTransferLayout.setVisibility(View.VISIBLE);
@ -307,7 +304,6 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
} }
}); });
} }
}
holder.bubbleLayout.setLayoutParams(layoutParams); holder.bubbleLayout.setLayoutParams(layoutParams);
} else { // Event is not chat message } else { // Event is not chat message
@ -405,6 +401,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
holder.fileName.setText(message.getFileTransferInformation().getName()); holder.fileName.setText(message.getFileTransferInformation().getName());
String appData = message.getAppdata(); String appData = message.getAppdata();
if (appData != null) {
if (LinphoneUtils.isExtensionImage(appData)) { if (LinphoneUtils.isExtensionImage(appData)) {
holder.messageImage.setVisibility(View.VISIBLE); holder.messageImage.setVisibility(View.VISIBLE);
loadBitmap(appData, holder.messageImage); loadBitmap(appData, holder.messageImage);
@ -415,11 +412,12 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
holder.openFileButton.setOnClickListener(new View.OnClickListener() { holder.openFileButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
openFile((String)v.getTag()); openFile((String) v.getTag());
} }
}); });
} }
} }
}
/* /*
* Chat message callbacks * Chat message callbacks
@ -443,8 +441,8 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
if (offset == total) { if (offset == total) {
holder.fileTransferProgressBar.setVisibility(View.GONE); holder.fileTransferProgressBar.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.GONE); holder.fileTransferLayout.setVisibility(View.GONE);
displayAttachedFile(message, holder); displayAttachedFile(message, holder);
message.setFileTransferFilepath(null); // Not needed anymore, will help differenciate between InProgress states for file transfer / message sending
} else { } else {
holder.fileTransferProgressBar.setVisibility(View.VISIBLE); holder.fileTransferProgressBar.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setProgress(offset * 100 / total); holder.fileTransferProgressBar.setProgress(offset * 100 / total);
@ -452,7 +450,11 @@ public class ChatEventsAdapter extends ListSelectionAdapter implements ChatMessa
} }
@Override @Override
public void onMsgStateChanged(ChatMessage msg, ChatMessage.State state) { public void onMsgStateChanged(ChatMessage message, ChatMessage.State state) {
if (state == ChatMessage.State.FileTransferDone && !message.isOutgoing()) {
message.setAppdata(message.getFileTransferFilepath());
message.setFileTransferFilepath(null); // Not needed anymore, will help differenciate between InProgress states for file transfer / message sending
}
notifyDataSetChanged(); notifyDataSetChanged();
} }

@ -1 +1 @@
Subproject commit 71c5088307a50a4bd424e63b27b2698381490eec Subproject commit 52f13d34d0d9a687a25862ee56701a287933209d