From 5db04d7ed4d126578c7490b3ce398492345bd2ba Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Thu, 3 Jun 2021 15:33:24 -0400
Subject: [PATCH] misc: inconsistency adjustment for readonly lineEdit

1. Make version number in AboutPopUp selectable
2. Remove "Copy"/"Paste" options in the context menu when the
   lineEdit is readonly
3. Make texts in UserProfile selectable

Change-Id: I53b7566841d84cb8ad27298f995f99a2de6384f0
---
 src/commoncomponents/LineEditContextMenu.qml  |  7 ++-
 src/commoncomponents/MaterialLineEdit.qml     |  1 +
 src/constant/JamiStrings.qml                  |  1 +
 src/mainview/components/AboutPopUp.qml        | 22 ++++----
 src/mainview/components/UserProfile.qml       | 50 +++++++++++++++----
 .../components/JamiUserIdentity.qml           | 16 ++----
 6 files changed, 61 insertions(+), 36 deletions(-)

diff --git a/src/commoncomponents/LineEditContextMenu.qml b/src/commoncomponents/LineEditContextMenu.qml
index 1a1f6ff74..c3a90bad7 100644
--- a/src/commoncomponents/LineEditContextMenu.qml
+++ b/src/commoncomponents/LineEditContextMenu.qml
@@ -33,6 +33,7 @@ ContextMenuAutoLoader {
     property var lineEditObj
     property var selectionStart
     property var selectionEnd
+    property bool selectOnly: false
 
     property list<GeneralMenuItem> menuItems: [
         GeneralMenuItem {
@@ -47,7 +48,7 @@ ContextMenuAutoLoader {
         GeneralMenuItem {
             id: cut
 
-            canTrigger: lineEditObj.selectedText.length
+            canTrigger: lineEditObj.selectedText.length && !selectOnly
             itemName: JamiStrings.cut
 
             onClicked: {
@@ -57,6 +58,7 @@ ContextMenuAutoLoader {
         GeneralMenuItem {
             id: paste
 
+            canTrigger: !selectOnly
             itemName: JamiStrings.paste
             onClicked: {
                 lineEditObj.paste()
@@ -65,6 +67,9 @@ ContextMenuAutoLoader {
     ]
 
     function openMenuAt(mouseEvent) {
+        if (lineEditObj.selectedText.length === 0 && selectOnly)
+            return
+
         x = mouseEvent.x
         y = mouseEvent.y
 
diff --git a/src/commoncomponents/MaterialLineEdit.qml b/src/commoncomponents/MaterialLineEdit.qml
index 2b482d345..45adb3047 100644
--- a/src/commoncomponents/MaterialLineEdit.qml
+++ b/src/commoncomponents/MaterialLineEdit.qml
@@ -85,6 +85,7 @@ TextField {
         id: lineEditContextMenu
 
         lineEditObj: root
+        selectOnly: readOnly
     }
 
     Image {
diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index 31a3ff71d..da316f3b5 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -414,6 +414,7 @@ Item {
     property string saveProfile: qsTr("Save profile")
     property string enterRVName: qsTr("Enter the rendezvous point's name")
     property string generatingRV: qsTr("Creating rendezvous point…")
+    property string information: qsTr("Information")
 
     // RevokeDevicePasswordDialog
     property string confirmRemovalRequest: qsTr("Enter the account password to confirm the removal of this device")
diff --git a/src/mainview/components/AboutPopUp.qml b/src/mainview/components/AboutPopUp.qml
index 0919791f4..57e60590b 100644
--- a/src/mainview/components/AboutPopUp.qml
+++ b/src/mainview/components/AboutPopUp.qml
@@ -69,29 +69,28 @@ ModalPopup {
                         smooth: true
                         antialiasing: true
 
-                        source: JamiTheme.darkTheme? "qrc:/images/logo-jami-standard-coul-white.svg" : "qrc:/images/logo-jami-standard-coul.svg"
+                        source: JamiTheme.darkTheme?
+                                    "qrc:/images/logo-jami-standard-coul-white.svg" :
+                                    "qrc:/images/logo-jami-standard-coul.svg"
                     }
 
-                    Label {
+                    MaterialLineEdit {
                         id: jamiVersionText
 
                         Layout.alignment: Qt.AlignCenter
                         Layout.preferredWidth: contentRect.width
-                        Layout.preferredHeight: textMetricsjamiVersionText.boundingRect.height
 
                         font.pointSize: JamiTheme.textFontSize
 
-                        horizontalAlignment: Text.AlignHCenter
-                        verticalAlignment: Text.AlignVCenter
+                        padding: 0
+                        readOnly: true
+                        selectByMouse: true
 
-                        text: textMetricsjamiVersionText.text
+                        text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
                         color: JamiTheme.textColor
 
-                        TextMetrics {
-                            id: textMetricsjamiVersionText
-                            font: jamiVersionText.font
-                            text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
-                        }
+                        horizontalAlignment: Text.AlignHCenter
+                        verticalAlignment: Text.AlignVCenter
                     }
 
                     Label {
@@ -133,7 +132,6 @@ ModalPopup {
                         horizontalAlignment: Text.AlignHCenter
                         verticalAlignment: Text.AlignVCenter
 
-
                         // TextMetrics does not work for multi-line.
                         text: JamiStrings.declaration
                     }
diff --git a/src/mainview/components/UserProfile.qml b/src/mainview/components/UserProfile.qml
index 0e0f6b874..26712f53f 100644
--- a/src/mainview/components/UserProfile.qml
+++ b/src/mainview/components/UserProfile.qml
@@ -71,21 +71,31 @@ BaseDialog {
             }
 
             // Visible when user alias is not empty or equals to id.
-            Text {
+            MaterialLineEdit {
                 id: contactAlias
 
                 Layout.alignment: Qt.AlignLeft
 
                 font.pointSize: JamiTheme.titleFontSize
-                text: textMetricsContactAliasText.elidedText
+                font.kerning: true
                 color: JamiTheme.textColor
                 visible: aliasText ? (aliasText === idText ? false : true) : false
 
+                padding: 0
+                readOnly: true
+                selectByMouse: true
+
+                wrapMode: Text.NoWrap
+                text: textMetricsContactAliasText.elidedText
+
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
+
                 TextMetrics {
                     id: textMetricsContactAliasText
                     font: contactAlias.font
                     text: aliasText
-                    elideWidth: userProfileContentRect.width-200
+                    elideWidth: userProfileContentRect.width - 200
                     elide: Qt.ElideMiddle
                 }
             }
@@ -98,7 +108,7 @@ BaseDialog {
             Text {
                 Layout.alignment: Qt.AlignRight
                 font.pointSize: JamiTheme.menuFontSize
-                text: qsTr("Information")
+                text: JamiStrings.information
                 color: JamiTheme.textColor
             }
 
@@ -113,16 +123,26 @@ BaseDialog {
             }
 
             // Visible when user name is not empty or equals to alias.
-            Text {
+            MaterialLineEdit {
                 id: contactDisplayName
 
                 Layout.alignment: Qt.AlignLeft
 
                 font.pointSize: JamiTheme.textFontSize
-                text: textMetricsContactDisplayNameText.elidedText
+                font.kerning: true
                 color: JamiTheme.textColor
                 visible: registeredNameText ? (registeredNameText === idText ? false : true) : false
 
+                padding: 0
+                readOnly: true
+                selectByMouse: true
+
+                wrapMode: Text.NoWrap
+                text: textMetricsContactDisplayNameText.elidedText
+
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
+
                 TextMetrics {
                     id: textMetricsContactDisplayNameText
                     font: contactDisplayName.font
@@ -139,22 +159,30 @@ BaseDialog {
                 color: JamiTheme.faddedFontColor
             }
 
-            TextEdit {
+            MaterialLineEdit {
                 id: contactId
 
                 Layout.alignment: Qt.AlignLeft
 
-                selectByMouse: true
-                readOnly: true
                 font.pointSize: JamiTheme.textFontSize
-                text: textMetricsContactIdText.elidedText
+                font.kerning: true
                 color: JamiTheme.textColor
 
+                padding: 0
+                readOnly: true
+                selectByMouse: true
+
+                wrapMode: Text.NoWrap
+                text: textMetricsContactIdText.elidedText
+
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
+
                 TextMetrics {
                     id: textMetricsContactIdText
                     font: contactId.font
                     text: idText
-                    elideWidth: userProfileContentRect.width-200
+                    elideWidth: userProfileContentRect.width - 200
                     elide: Qt.ElideMiddle
                 }
             }
diff --git a/src/settingsview/components/JamiUserIdentity.qml b/src/settingsview/components/JamiUserIdentity.qml
index b4ec1dd9d..dfecc5ef5 100644
--- a/src/settingsview/components/JamiUserIdentity.qml
+++ b/src/settingsview/components/JamiUserIdentity.qml
@@ -77,14 +77,13 @@ ColumnLayout {
             verticalAlignment: Text.AlignVCenter
         }
 
-        TextField {
+        MaterialLineEdit {
             id: currentRingID
 
-            property var backgroundColor: "transparent"
-            property var borderColor: "transparent"
-
             anchors.verticalCenter: parent.verticalCenter
 
+            width: parent.width - idLabel.width
+                   - JamiTheme.preferredMarginSize
             height: JamiTheme.preferredFieldHeight
 
             font.pointSize: JamiTheme.textFontSize
@@ -95,20 +94,13 @@ ColumnLayout {
             readOnly: true
             selectByMouse: true
 
+            wrapMode: Text.NoWrap
             text: currentRingIDText.elidedText
             color: JamiTheme.textColor
 
             horizontalAlignment: Text.AlignRight
             verticalAlignment: Text.AlignVCenter
 
-            background: Rectangle {
-                anchors.fill: parent
-                radius: 0
-                border.color: currentRingID.borderColor
-                border.width: 0
-                color: currentRingID.backgroundColor
-            }
-
             TextMetrics {
                 id: currentRingIDText
 
-- 
GitLab