From 7084f6dda0e105885256352d19ea97c2b43938d7 Mon Sep 17 00:00:00 2001 From: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Fri, 4 Jun 2021 13:34:03 -0400 Subject: [PATCH] generalMenuItem: refinement on long text solution for menuItems This will make sure that texts are aligned when some of the texts grow longer (translations) Change-Id: I28300c3eea01d539ca62c6532daf7d802931b425 --- .../contextmenu/GeneralMenuItem.qml | 48 ++++++++++++------- src/constant/JamiTheme.qml | 2 +- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/commoncomponents/contextmenu/GeneralMenuItem.qml b/src/commoncomponents/contextmenu/GeneralMenuItem.qml index e72dd6160..d1069e991 100644 --- a/src/commoncomponents/contextmenu/GeneralMenuItem.qml +++ b/src/commoncomponents/contextmenu/GeneralMenuItem.qml @@ -45,6 +45,9 @@ MenuItem { property int leftBorderWidth: JamiTheme.menuItemsCommonBorderWidth property int rightBorderWidth: JamiTheme.menuItemsCommonBorderWidth + property int itemImageLeftMargin: 24 + property int itemTextMargin: 20 + signal clicked contentItem: AbstractButton { @@ -69,7 +72,7 @@ MenuItem { id: contextMenuItemImage Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft - Layout.leftMargin: status === Image.Ready ? 24 : 0 + Layout.leftMargin: status === Image.Ready ? itemImageLeftMargin : 0 visible: status === Image.Ready @@ -81,28 +84,41 @@ MenuItem { id: contextMenuItemText Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft - Layout.leftMargin: contextMenuItemImage.status === Image.Ready ? 20 : 10 - Layout.rightMargin: contextMenuItemImage.status === Image.Ready ? 20 : 10 + Layout.leftMargin: contextMenuItemImage.status === Image.Ready ? + itemTextMargin : itemTextMargin / 2 + Layout.rightMargin: contextMenuItemImage.status === Image.Ready ? + itemTextMargin : itemTextMargin / 2 Layout.preferredHeight: itemPreferredHeight - Layout.preferredWidth: JamiTheme.contextMenuItemTextPreferredWidth + Layout.fillWidth: true text: itemName color: JamiTheme.textColor font.pointSize: JamiTheme.textFontSize horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - - onWidthChanged: { - if (autoTextSizeAdjustment - && width > contextMenuItemText.Layout.preferredWidth) { - if (width > JamiTheme.contextMenuItemTextMaxWidth) - contextMenuItemText.Layout.preferredWidth - = JamiTheme.contextMenuItemTextMaxWidth - else - contextMenuItemText.Layout.preferredWidth = width - itemPreferredWidth += contextMenuItemText.Layout.preferredWidth - - JamiTheme.contextMenuItemTextPreferredWidth + + TextMetrics { + id: contextMenuItemTextMetrics + + font: contextMenuItemText.font + text: contextMenuItemText.text + + onBoundingRectChanged: { + var sizeToCompare = itemPreferredWidth - + (contextMenuItemImage.source.toString().length > 0 ? + itemTextMargin + itemImageLeftMargin + contextMenuItemImage.width : + itemTextMargin / 2) + if (autoTextSizeAdjustment + && boundingRect.width > sizeToCompare) { + if (boundingRect.width > JamiTheme.contextMenuItemTextMaxWidth) { + itemPreferredWidth += JamiTheme.contextMenuItemTextMaxWidth + - JamiTheme.contextMenuItemTextPreferredWidth + + itemTextMargin + contextMenuItemText.elide = Text.ElideRight + } else + itemPreferredWidth += boundingRect.width + itemTextMargin + - sizeToCompare + } } } } diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml index 345fa04a1..d39931aec 100644 --- a/src/constant/JamiTheme.qml +++ b/src/constant/JamiTheme.qml @@ -198,7 +198,7 @@ Item { property real avatarSizeInCall: 130 property real aboutButtonPreferredWidth: 150 property real callButtonPreferredSize: 50 - property real contextMenuItemTextPreferredWidth: 142 + property real contextMenuItemTextPreferredWidth: 152 property real contextMenuItemTextMaxWidth: 182 property int participantCallInStatusViewWidth: 175 property int participantCallInStatusViewHeight: 300 -- GitLab