summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--resources/icons/ui/eye-hide.svg3
-rw-r--r--resources/icons/ui/eye-show.svg1
-rw-r--r--resources/qml/pages/LoginPage.qml37
-rw-r--r--resources/res.qrc2
4 files changed, 35 insertions, 8 deletions
diff --git a/resources/icons/ui/eye-hide.svg b/resources/icons/ui/eye-hide.svg
new file mode 100644
index 00000000..05d26d96
--- /dev/null
+++ b/resources/icons/ui/eye-hide.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M2.22 2.22a.75.75 0 0 0-.073.976l.073.084 4.034 4.035a9.986 9.986 0 0 0-3.955 5.75.75.75 0 0 0 1.455.364 8.49 8.49 0 0 1 3.58-5.034l1.81 1.81A4 4 0 0 0 14.8 15.86l5.919 5.92a.75.75 0 0 0 1.133-.977l-.073-.084-6.113-6.114.001-.002-6.95-6.946.002-.002-1.133-1.13L3.28 2.22a.75.75 0 0 0-1.06 0ZM12 5.5c-1 0-1.97.148-2.889.425l1.237 1.236a8.503 8.503 0 0 1 9.899 6.272.75.75 0 0 0 1.455-.363A10.003 10.003 0 0 0 12 5.5Zm.195 3.51 3.801 3.8a4.003 4.003 0 0 0-3.801-3.8Z" fill="#212121"/>
+</svg>
\ No newline at end of file
diff --git a/resources/icons/ui/eye-show.svg b/resources/icons/ui/eye-show.svg
new file mode 100644
index 00000000..c4dabfa5
--- /dev/null
+++ b/resources/icons/ui/eye-show.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 9.005a4 4 0 1 1 0 8 4 4 0 0 1 0-8ZM12 5.5c4.613 0 8.596 3.15 9.701 7.564a.75.75 0 1 1-1.455.365 8.503 8.503 0 0 0-16.493.004.75.75 0 0 1-1.455-.363A10.003 10.003 0 0 1 12 5.5Z" fill="#212121"/></svg>
\ No newline at end of file
diff --git a/resources/qml/pages/LoginPage.qml b/resources/qml/pages/LoginPage.qml
index 86188918..8607b8dc 100644
--- a/resources/qml/pages/LoginPage.qml
+++ b/resources/qml/pages/LoginPage.qml
@@ -82,15 +82,36 @@ Item {
                 visible: text
                 wrapMode: TextEdit.Wrap
             }
+            RowLayout {
 
-            MatrixTextField {
-                id: passwordLabel
-                Layout.fillWidth: true
-                label: qsTr("Password")
-                echoMode: TextInput.Password
-                ToolTip.text: qsTr("Your password.")
-                visible: login.passwordSupported
-                Keys.forwardTo: [pwBtn, ssoRepeater]
+                MatrixTextField {
+                    id: passwordLabel
+                    Layout.fillWidth: true
+                    label: qsTr("Password")
+                    echoMode: TextInput.Password
+                    ToolTip.text: qsTr("Your password.")
+                    visible: login.passwordSupported
+                    Keys.forwardTo: [pwBtn, ssoRepeater]
+                }
+
+                ImageButton {
+                    id: showPwButton
+                    Layout.preferredWidth: 30
+                    Layout.preferredHeight: 30
+                    visible: login.passwordSupported
+                    Layout.alignment: Qt.AlignBottom
+                    image: passwordLabel.echoMode === TextInput.Password ? ":/icons/icons/ui/eye-show.svg" : ":/icons/icons/ui/eye-hide.svg"
+                    ToolTip.visible: hovered
+                    ToolTip.text: qsTr("Show/Hide Password")
+                    onClicked: {
+                        if (passwordLabel.echoMode === TextInput.Normal) {
+                            passwordLabel.echoMode = TextInput.Password
+                        }
+                        else {
+                            passwordLabel.echoMode = TextInput.Normal
+                        }
+                    }
+                }
             }
 
             MatrixTextField {
diff --git a/resources/res.qrc b/resources/res.qrc
index fb857d4a..642bc220 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -18,6 +18,8 @@
         <file>icons/ui/edit.svg</file>
         <file>icons/ui/end-call.svg</file>
         <file>icons/ui/expanded.svg</file>
+        <file>icons/ui/eye-hide.svg</file>
+        <file>icons/ui/eye-show.svg</file>
         <file>icons/ui/go-to.svg</file>
         <file>icons/ui/image-failed.svg</file>
         <file>icons/ui/image.svg</file>