From cafa301ea8a099cdb43d582510fa780438dfa68e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 2 Nov 2023 15:42:47 +0100 Subject: [PATCH] Started grid layout --- app/build.gradle | 3 ++- .../ui/main/chat/model/ChatMessageModel.kt | 10 +++++++-- .../main/res/layout/chat_bubble_content.xml | 18 +++++++-------- .../layout/chat_bubble_content_grid_cell.xml | 22 +++++++++++++++++++ 4 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/layout/chat_bubble_content_grid_cell.xml diff --git a/app/build.gradle b/app/build.gradle index 617698bc3..c759e3d48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,11 +77,12 @@ dependencies { implementation "androidx.core:core-ktx:1.12.0" implementation "androidx.core:core-telecom:1.0.0-alpha02" implementation "androidx.media:media:1.6.0" + implementation "androidx.fragment:fragment-ktx:1.6.2" implementation "androidx.recyclerview:recyclerview:1.3.2" implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation "androidx.window:window:1.1.0" - def nav_version = "2.7.4" + def nav_version = "2.7.5" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt index 83b2fc241..e42004185 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt @@ -65,7 +65,7 @@ class ChatMessageModel @WorkerThread constructor( val text = MutableLiveData() - val bigImagePath = MutableLiveData() + val imagesList = MutableLiveData>() val timestamp = chatMessage.time @@ -106,12 +106,16 @@ class ChatMessageModel @WorkerThread constructor( updateReactionsList() var displayableContentFound = false + var filesContentCount = 0 + val imagesPath = arrayListOf() + val contents = chatMessage.contents for (content in contents) { if (content.isText) { computeTextContent(content) displayableContentFound = true } else { + filesContentCount += 1 if (content.isFile) { val path = content.filePath ?: "" if (path.isNotEmpty()) { @@ -120,7 +124,7 @@ class ChatMessageModel @WorkerThread constructor( ) when (content.type) { "image", "video" -> { - bigImagePath.postValue(path) + imagesPath.add(path) displayableContentFound = true } "audio" -> { @@ -138,6 +142,8 @@ class ChatMessageModel @WorkerThread constructor( } } + imagesList.postValue(imagesPath) + if (!displayableContentFound) { // Temporary workaround to prevent empty bubbles val describe = LinphoneUtils.getTextDescribingMessage(chatMessage) val spannable = Spannable.Factory.getInstance().newSpannable(describe) diff --git a/app/src/main/res/layout/chat_bubble_content.xml b/app/src/main/res/layout/chat_bubble_content.xml index 77882c0de..e02cf9328 100644 --- a/app/src/main/res/layout/chat_bubble_content.xml +++ b/app/src/main/res/layout/chat_bubble_content.xml @@ -13,16 +13,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"> - + android:columnWidth="90dp" + android:numColumns="auto_fit" + android:stretchMode="none" + android:gravity="start" + entries="@{model.imagesList}" + layout="@{@layout/chat_bubble_content_grid_cell}"/> 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 new file mode 100644 index 000000000..00a372bb5 --- /dev/null +++ b/app/src/main/res/layout/chat_bubble_content_grid_cell.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file