From bb844739c1e9d0343ae1a387a98a99fb16888142 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 7 May 2024 14:06:25 +0200 Subject: [PATCH] Display audio files duration as well --- .../linphone/ui/main/chat/model/FileModel.kt | 8 +-- .../ConversationDocumentsListViewModel.kt | 3 +- .../ConversationMediaListViewModel.kt | 6 ++- .../layout/chat_bubble_content_grid_cell.xml | 17 +++++- .../chat_bubble_single_media_content.xml | 4 +- .../layout/chat_media_content_grid_cell.xml | 52 +++++++++---------- 6 files changed, 52 insertions(+), 38 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 3a1a1d417..06a307d6f 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 @@ -61,7 +61,7 @@ class FileModel @AnyThread constructor( val isVideoPreview: Boolean - val videoDuration = MutableLiveData() + val audioVideoDuration = MutableLiveData() val isPdf: Boolean @@ -91,10 +91,10 @@ class FileModel @AnyThread constructor( mimeType = FileUtils.getMimeType(mime) isImage = mimeType == FileUtils.MimeType.Image isVideoPreview = mimeType == FileUtils.MimeType.Video - if (isVideoPreview) { + isAudio = mimeType == FileUtils.MimeType.Audio + if (isVideoPreview || isAudio) { getDuration() } - isAudio = mimeType == FileUtils.MimeType.Audio Log.d( "$TAG File has already been downloaded, extension is [$extension], MIME is [$mime]" ) @@ -139,7 +139,7 @@ class FileModel @AnyThread constructor( val seconds = durationInMs / 1000 val duration = TimestampUtils.durationToString(seconds) Log.d("$TAG Duration for file [$file] is $duration") - videoDuration.postValue(duration) + audioVideoDuration.postValue(duration) retriever.release() } catch (e: Exception) { Log.e("$TAG Failed to get duration for file [$file]: $e") diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationDocumentsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationDocumentsListViewModel.kt index 69d423719..fa974031b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationDocumentsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationDocumentsListViewModel.kt @@ -81,8 +81,7 @@ class ConversationDocumentsListViewModel @UiThread constructor() : AbstractConve } } Log.i("$TAG [${documents.size}] documents have been processed") - - documentsList.postValue(list.reversed()) // To have most recent documents at the top + documentsList.postValue(list) operationInProgress.postValue(false) } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationMediaListViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationMediaListViewModel.kt index 0615cd425..cb83fa496 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationMediaListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationMediaListViewModel.kt @@ -65,6 +65,9 @@ class ConversationMediaListViewModel @UiThread constructor() : AbstractConversat val media = chatRoom.mediaContents Log.i("$TAG [${media.size}] media have been fetched") for (mediaContent in media) { + // Do not display voice recordings here, even if they are media file + if (mediaContent.isVoiceRecording) continue + val isEncrypted = mediaContent.isFileEncrypted val path = if (isEncrypted) { Log.i( @@ -85,8 +88,7 @@ class ConversationMediaListViewModel @UiThread constructor() : AbstractConversat } } Log.i("$TAG [${media.size}] media have been processed") - - mediaList.postValue(list.reversed()) // To have most recent files at the top + mediaList.postValue(list) operationInProgress.postValue(false) } } 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 13dd6e837..99d4882cf 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 @@ -46,10 +46,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="5dp" - android:text="@{model.videoDuration, default=`00:42`}" + android:text="@{model.audioVideoDuration, default=`00:42`}" android:textColor="@color/white" android:textSize="12sp" - android:visibility="@{model.isVideoPreview && model.videoDuration.length() > 0 ? View.VISIBLE : View.GONE, default=gone}" + android:visibility="@{model.isVideoPreview && model.audioVideoDuration.length() > 0 ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintBottom_toBottomOf="@id/image" app:layout_constraintStart_toStartOf="@id/image"/> @@ -84,6 +84,19 @@ app:layout_constraintStart_toStartOf="parent" app:tint="?attr/color_main2_600" /> + + diff --git a/app/src/main/res/layout/chat_media_content_grid_cell.xml b/app/src/main/res/layout/chat_media_content_grid_cell.xml index e3ddbc638..afbc3ed3a 100644 --- a/app/src/main/res/layout/chat_media_content_grid_cell.xml +++ b/app/src/main/res/layout/chat_media_content_grid_cell.xml @@ -28,32 +28,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> - - - - + + + + \ No newline at end of file