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 @@ + + + \ 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 @@ + \ 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 @@ icons/ui/edit.svg icons/ui/end-call.svg icons/ui/expanded.svg + icons/ui/eye-hide.svg + icons/ui/eye-show.svg icons/ui/go-to.svg icons/ui/image-failed.svg icons/ui/image.svg