From 167b42810f4434d487cb5f2b885c3b67b0fda81d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 21 Nov 2024 15:43:19 +0100 Subject: [PATCH] Added download progress percentage label --- .../linphone/ui/main/chat/model/FileModel.kt | 14 +++- .../ui/main/chat/model/MessageModel.kt | 6 +- .../layout/chat_bubble_content_grid_cell.xml | 69 ++++++++++++++----- 3 files changed, 67 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt index 70f0650bb..704b1d4df 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt @@ -54,6 +54,8 @@ class FileModel @AnyThread constructor( val transferProgress = MutableLiveData() + val transferProgressLabel = MutableLiveData() + val mediaPreview = MutableLiveData() val mediaPreviewAvailable = MutableLiveData() @@ -86,7 +88,7 @@ class FileModel @AnyThread constructor( init { mediaPreviewAvailable.postValue(false) - transferProgress.postValue(-1) + updateTransferProgress(-1) formattedFileSize.postValue(FileUtils.bytesToDisplayableSize(fileSize)) if (!isWaitingToBeDownloaded) { @@ -136,6 +138,16 @@ class FileModel @AnyThread constructor( } } + @AnyThread + fun updateTransferProgress(percent: Int) { + transferProgress.postValue(percent) + if (percent < 0 || percent > 100) { + transferProgressLabel.postValue("") + } else { + transferProgressLabel.postValue("$percent%") + } + } + @UiThread fun onClick() { onClicked?.invoke(this) diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt index a4ccc1679..d562c516c 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt @@ -204,7 +204,7 @@ class MessageModel @WorkerThread constructor( } } else if (messageState == ChatMessage.State.FileTransferDone) { Log.i("$TAG File transfer is done") - transferringFileModel?.transferProgress?.postValue(-1) + transferringFileModel?.updateTransferProgress(-1) transferringFileModel = null if (!allFilesDownloaded) { computeContentsList() @@ -258,7 +258,7 @@ class MessageModel @WorkerThread constructor( ) } } - model?.transferProgress?.postValue(percent) + model?.updateTransferProgress(percent) } @WorkerThread @@ -531,7 +531,7 @@ class MessageModel @WorkerThread constructor( "$TAG File [$contentName] will be downloaded at [${content.filePath}]" ) - model.transferProgress.postValue(0) + model.updateTransferProgress(0) transferringFileModel = model chatMessage.downloadContent(content) } else { diff --git a/app/src/main/res/layout/chat_bubble_content_grid_cell.xml b/app/src/main/res/layout/chat_bubble_content_grid_cell.xml index 405713998..35c0dda9c 100644 --- a/app/src/main/res/layout/chat_bubble_content_grid_cell.xml +++ b/app/src/main/res/layout/chat_bubble_content_grid_cell.xml @@ -24,7 +24,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{model.isImage || model.isVideoPreview ? View.GONE : View.VISIBLE}" - app:constraint_referenced_ids="file_name, file_background, file_icon" /> + app:constraint_referenced_ids="file_name, file_background" /> + + - + + + app:layout_constraintBottom_toBottomOf="@id/left_background" + app:layout_constraintStart_toStartOf="@id/left_background"/> + + + app:layout_constraintTop_toTopOf="@id/left_background" + app:layout_constraintBottom_toBottomOf="@id/left_background" + app:layout_constraintStart_toEndOf="@id/left_background"/>