From 905049f7c7c8ac25ebe358fbc4b67a5365c13caf Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 19 Apr 2022 15:32:58 +0200 Subject: [PATCH] Fixed chat message display in IMDN view + improved chat bubble layout --- .../MultiLineWrapContentWidthTextView.kt | 21 ++-- .../res/drawable/icon_ephemeral_message.xml | 7 ++ .../res/drawable/icon_forwarded_message.xml | 7 ++ .../res/drawable/icon_replied_message.xml | 7 ++ .../res/layout/chat_message_list_cell.xml | 109 ++++++------------ 5 files changed, 62 insertions(+), 89 deletions(-) create mode 100644 app/src/main/res/drawable/icon_ephemeral_message.xml create mode 100644 app/src/main/res/drawable/icon_forwarded_message.xml create mode 100644 app/src/main/res/drawable/icon_replied_message.xml diff --git a/app/src/main/java/org/linphone/activities/main/chat/views/MultiLineWrapContentWidthTextView.kt b/app/src/main/java/org/linphone/activities/main/chat/views/MultiLineWrapContentWidthTextView.kt index f06828e54..a0b114149 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/views/MultiLineWrapContentWidthTextView.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/views/MultiLineWrapContentWidthTextView.kt @@ -48,22 +48,15 @@ class MultiLineWrapContentWidthTextView : AppCompatTextView { } override fun onMeasure(widthSpec: Int, heightSpec: Int) { - var wSpec = widthSpec - val widthMode = MeasureSpec.getMode(wSpec) + super.onMeasure(widthSpec, heightSpec) - if (widthMode == MeasureSpec.AT_MOST) { - val layout = layout - if (layout != null) { - val maxWidth = ( - ceil(getMaxLineWidth(layout).toDouble()).toInt() + - totalPaddingLeft + - totalPaddingRight - ) - wSpec = MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST) - } + if (layout != null && layout.lineCount >= 2) { + val maxLineWidth = ceil(getMaxLineWidth(layout)).toInt() + val uselessPaddingWidth = layout.width - maxLineWidth + val width = measuredWidth - uselessPaddingWidth + val height = measuredHeight + setMeasuredDimension(width, height) } - - super.onMeasure(wSpec, heightSpec) } private fun getMaxLineWidth(layout: Layout): Float { diff --git a/app/src/main/res/drawable/icon_ephemeral_message.xml b/app/src/main/res/drawable/icon_ephemeral_message.xml new file mode 100644 index 000000000..299072bab --- /dev/null +++ b/app/src/main/res/drawable/icon_ephemeral_message.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_forwarded_message.xml b/app/src/main/res/drawable/icon_forwarded_message.xml new file mode 100644 index 000000000..c210b3dce --- /dev/null +++ b/app/src/main/res/drawable/icon_forwarded_message.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_replied_message.xml b/app/src/main/res/drawable/icon_replied_message.xml new file mode 100644 index 000000000..dcc78b5c6 --- /dev/null +++ b/app/src/main/res/drawable/icon_replied_message.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/chat_message_list_cell.xml b/app/src/main/res/layout/chat_message_list_cell.xml index 4e004f622..e9332a491 100644 --- a/app/src/main/res/layout/chat_message_list_cell.xml +++ b/app/src/main/res/layout/chat_message_list_cell.xml @@ -95,67 +95,39 @@ android:layout_marginLeft="@{selectionListViewModel.isEditionEnabled ? @dimen/edit_chat_message_bubble_left_margin : !data.chatMessage.outgoing ? @dimen/incoming_chat_message_bubble_left_margin : @dimen/outgoing_chat_message_bubble_left_margin}" android:paddingBottom="5dp"> - + android:layout_marginLeft="5dp" + app:drawableLeftCompat="@drawable/icon_forwarded_message" /> - - - - - - - - - - - - - + android:textColor="@color/chat_bubble_text_color" + android:textSize="10sp" + android:fontFamily="sans-serif" + android:textStyle="normal" + android:lineSpacingExtra="3.3sp" + android:text="@string/chat_message_replied" + tools:ignore="SmallSp" + android:drawablePadding="3dp" + app:drawableLeftCompat="@drawable/icon_replied_message" /> - - - - - - - + android:layout_marginLeft="5dp" + android:drawablePadding="3dp" + android:textColor="@color/primary_color" + android:textSize="12sp" + android:fontFamily="sans-serif" + android:textStyle="normal" + android:lineSpacingExtra="3.3sp" + app:drawableRightCompat="@drawable/icon_ephemeral_message" />