From 978e8d793574e68b22d1ce9931f8e4bc4a7825e7 Mon Sep 17 00:00:00 2001 From: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Wed, 10 Nov 2021 10:27:27 -0500 Subject: [PATCH] messagelistview: fix binding loop and simplify typing indicator logic Removed unnecessary settings.json Change-Id: If2eccb5c918192e33cd4e742a98c43c212eee547 --- .gitignore | 1 + .vscode/settings.json | 11 --- src/mainview/components/MessageListView.qml | 87 ++++++++++++--------- 3 files changed, 52 insertions(+), 47 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index c2c1bcf8f..5c45aba0f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ doc/Doxyfile GeneratedFiles/ .vs/ +.vscode/ x64/ x86/ [wW]in32/ diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 01506c8be..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "files.associations": { - "*.tcc": "cpp", - "array": "cpp", - "string": "cpp", - "string_view": "cpp", - "ranges": "cpp", - "thread": "cpp", - "xstring": "cpp" - } -} \ No newline at end of file diff --git a/src/mainview/components/MessageListView.qml b/src/mainview/components/MessageListView.qml index bb2ab9a95..dee42c3bd 100644 --- a/src/mainview/components/MessageListView.qml +++ b/src/mainview/components/MessageListView.qml @@ -297,62 +297,77 @@ ListView { Layout.alignment: Qt.AlignVCenter } - Text { - id: typeIndicatorNameText - - Layout.alignment: Qt.AlignVCenter - Layout.leftMargin: JamiTheme.sbsMessageBasePreferredPadding - Layout.preferredWidth: { - var textSize = text ? JamiQmlUtils.getTextBoundingRect(font, text).width : 0 - var typingContentWidth = typingDots.width + typingDots.anchors.leftMargin - + typeIndicatorNameText.anchors.leftMargin - + typeIndicatorEndingText.contentWidth - return Math.min(typeIndicatorContainer.width - 5 - typingContentWidth, textSize) - } + Connections { + target: MessagesAdapter - font.pointSize: 8 - font.bold: Font.DemiBold - elide: Text.ElideRight - color: JamiTheme.textColor - text: { - var finalText = "" + function onCurrentConvComposingListChanged () { + var typeIndicatorNameTextString = "" var nameList = MessagesAdapter.currentConvComposingList - if (nameList.length > 4) - return "" - if (nameList.length === 1) - return nameList[0] + if (nameList.length > 4) { + typeIndicatorNameText.text = "" + typeIndicatorEndingText.text = JamiStrings.typeIndicatorMax + typeIndicatorNameText.calculateWidth() + return + } + if (nameList.length === 1) { + typeIndicatorNameText.text = nameList[0] + typeIndicatorEndingText.text = + JamiStrings.typeIndicatorSingle.replace("{}", "") + typeIndicatorNameText.calculateWidth() + return + } for (var i = 0; i < nameList.length; i++) { - finalText += nameList[i] + typeIndicatorNameTextString += nameList[i] if (i === nameList.length - 2) - finalText += JamiStrings.typeIndicatorAnd + typeIndicatorNameTextString += JamiStrings.typeIndicatorAnd else if (i !== nameList.length - 1) - finalText += ", " + typeIndicatorNameTextString += ", " } - - return finalText + typeIndicatorNameText.text = typeIndicatorNameTextString + typeIndicatorEndingText.text = + JamiStrings.typeIndicatorPlural.replace("{}", "") + typeIndicatorNameText.calculateWidth() } } Text { - id: typeIndicatorEndingText + id: typeIndicatorNameText + + property int textWidth: 0 + + function calculateWidth () { + if (!text) + return 0 + else { + var textSize = JamiQmlUtils.getTextBoundingRect(font, text).width + var typingContentWidth = typingDots.width + typingDots.anchors.leftMargin + + typeIndicatorNameText.anchors.leftMargin + + typeIndicatorEndingText.contentWidth + typeIndicatorNameText.Layout.preferredWidth = + Math.min(typeIndicatorContainer.width - 5 - typingContentWidth, + textSize) + } + } Layout.alignment: Qt.AlignVCenter + Layout.leftMargin: JamiTheme.sbsMessageBasePreferredPadding font.pointSize: 8 + font.bold: Font.DemiBold + elide: Text.ElideRight color: JamiTheme.textColor - text: { - var nameList = MessagesAdapter.currentConvComposingList + } - if (nameList.length > 4) - return JamiStrings.typeIndicatorMax - if (nameList.length === 1) - return JamiStrings.typeIndicatorSingle.replace("{}", "") + Text { + id: typeIndicatorEndingText - return JamiStrings.typeIndicatorPlural.replace("{}", "") - } + Layout.alignment: Qt.AlignVCenter + + font.pointSize: 8 + color: JamiTheme.textColor } } } -- GitLab