Fix file transfert view in chat view

This commit is contained in:
Erwan Croze 2019-01-30 15:18:40 +01:00
parent c05862e261
commit 477f483d8f
4 changed files with 54 additions and 26 deletions

View file

@ -117,6 +117,18 @@
android:textAlignment="center"
android:visibility="gone" />
<ImageView
android:id="@+id/file_transfer_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/file_name"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:scaleType="centerInside"
android:src="@drawable/chat_attachment_over"
android:visibility="gone" />
<ImageView
android:id="@+id/image"
@ -150,29 +162,32 @@
android:textColor="#595959"
android:textSize="13.3sp"/>
<RelativeLayout
android:id="@+id/file_transfer_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone">
<RelativeLayout
android:id="@+id/file_transfer_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:visibility="gone">
<ProgressBar
android:id="@+id/progress_bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="150dp"
android:layout_height="5dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:paddingRight="5dp"/>
<ProgressBar
android:id="@+id/progress_bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="150dp"
android:layout_height="5dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingRight="5dp" />
<Button
android:id="@+id/file_transfer_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progress_bar"
android:textAppearance="@style/font8"/>
android:layout_centerInParent="true"
android:gravity="center"
android:textAppearance="@style/font8" />
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/messageLayout"

View file

@ -60,6 +60,7 @@ public class ChatBubbleViewHolder {
public RelativeLayout fileTransferLayout;
public ProgressBar fileTransferProgressBar;
public Button fileTransferAction;
public ImageView fileTransferImage;
public TextView fileName;
public Button openFileButton;
@ -94,6 +95,7 @@ public class ChatBubbleViewHolder {
fileTransferLayout = view.findViewById(R.id.file_transfer_layout);
fileTransferProgressBar = view.findViewById(R.id.progress_bar);
fileTransferAction = view.findViewById(R.id.file_transfer_action);
fileTransferImage = view.findViewById(R.id.file_transfer_image);
fileName = view.findViewById(R.id.file_name);
openFileButton = view.findViewById(R.id.open_file);

View file

@ -211,6 +211,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
holder.imdmIcon.setVisibility(View.INVISIBLE);
holder.imdmLabel.setVisibility(View.INVISIBLE);
holder.rightAnchor.setVisibility(View.VISIBLE);
holder.fileTransferImage.setVisibility(View.GONE);
//holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
if (isEditionEnabled()) {
@ -371,19 +372,21 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
String externalBodyUrl = message.getExternalBodyUrl();
Content fileTransferContent = message.getFileTransferInformation();
if (fileTransferContent != null && fileTransferContent.isFile()) { // Something to display
if (fileTransferContent != null && externalBodyUrl == null && fileTransferContent.isFile()) { // Something to display
displayAttachedFile(message, holder);
}
if (externalBodyUrl != null) { // Incoming file transfer not yet downloaded
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setText(fileTransferContent.getName());
holder.fileName.setText("");
holder.fileName.setVisibility(View.GONE);
holder.fileTransferImage.setVisibility(View.VISIBLE);
holder.fileTransferLayout.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setVisibility(View.GONE);
if (message.isFileTransferInProgress()) { // Incoming file transfer in progress
holder.fileTransferAction.setVisibility(View.GONE);
} else {
holder.fileTransferAction.setVisibility(View.VISIBLE);
holder.fileTransferAction.setText(mContext.getString(R.string.accept));
holder.fileTransferAction.setOnClickListener(new View.OnClickListener() {
@Override
@ -416,6 +419,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
} else if (message.isFileTransferInProgress()) { // Outgoing file transfer in progress
message.setListener(mListener); // add the listener for file upload progress display
holder.messageSendingInProgress.setVisibility(View.GONE);
holder.fileTransferAction.setVisibility(View.VISIBLE);
holder.fileTransferLayout.setVisibility(View.VISIBLE);
holder.fileTransferAction.setText(mContext.getString(R.string.cancel));
holder.fileTransferAction.setOnClickListener(new View.OnClickListener() {

View file

@ -126,6 +126,7 @@ public class ImdnFragment extends Fragment {
mBubble.messageStatus.setVisibility(View.GONE);
mBubble.messageSendingInProgress.setVisibility(View.GONE);
mBubble.imdmLayout.setVisibility(View.INVISIBLE);
mBubble.fileTransferImage.setVisibility(View.GONE);
//mBubble.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
mMessage = mRoom.findMessage(mMessageId);
@ -338,16 +339,22 @@ public class ImdnFragment extends Fragment {
Content fileContent = message.getFileTransferInformation();
String appData = fileContent.getFilePath();
if (fileContent != null && fileContent.isFile() && appData != null) {
String extension = (LinphoneUtils.getExtensionFromFileName(message.getFileTransferInformation().getName()));
if(extension != null) extension = extension.toUpperCase();
else extension = "FILE";
if (message.getExternalBodyUrl() == null) {
String extension = (LinphoneUtils.getExtensionFromFileName(message.getFileTransferInformation().getName()));
if (extension != null) extension = extension.toUpperCase();
else extension = "FILE";
if (extension.length() > 4) extension = extension.substring(0, 3);
if (extension.length() > 4) extension = extension.substring(0, 3);
LinphoneUtils.scanFile(message);
holder.fileName.setText(extension);
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setTag(appData);
LinphoneUtils.scanFile(message);
holder.fileName.setText(extension);
holder.fileName.setVisibility(View.VISIBLE);
holder.fileName.setTag(appData);
} else {
holder.fileName.setText("");
holder.fileName.setVisibility(View.GONE);
holder.fileTransferImage.setVisibility(View.VISIBLE);
}
}
}
}