184 lines
5.7 KiB
QML
184 lines
5.7 KiB
QML
import QtQuick 2.14
|
||
import QtQuick.Layouts 1.14
|
||
|
||
import StatusQ.Core 0.1
|
||
import StatusQ.Core.Theme 0.1
|
||
import StatusQ.Controls 0.1
|
||
|
||
import utils 1.0
|
||
|
||
Item {
|
||
id: root
|
||
|
||
property var sharedKeycardModule
|
||
|
||
signal validation(bool result)
|
||
|
||
QtObject {
|
||
id: d
|
||
|
||
property bool allEntriesValid: false
|
||
|
||
function processText(text) {
|
||
if(text.length === 0)
|
||
return ""
|
||
if(/(^\s|^\r|^\n)|(\s$|^\r$|^\n$)/.test(text)) {
|
||
return text.trim()
|
||
}
|
||
else if(/\s|\r|\n/.test(text)) {
|
||
return ""
|
||
}
|
||
return text
|
||
}
|
||
|
||
function update() {
|
||
let codeEntered = code0.text.length > 0 && code1.text.length > 0
|
||
|
||
if (codeEntered && code0.text !== code1.text) {
|
||
errorTxt.text = qsTr("The codes don’t match")
|
||
}
|
||
else {
|
||
errorTxt.text = ""
|
||
}
|
||
|
||
d.allEntriesValid = codeEntered && code0.text === code1.text
|
||
if (d.allEntriesValid) {
|
||
root.sharedKeycardModule.setPairingCode(code0.text)
|
||
}
|
||
else {
|
||
root.sharedKeycardModule.setPairingCode("")
|
||
}
|
||
root.validation(d.allEntriesValid)
|
||
}
|
||
}
|
||
|
||
ColumnLayout {
|
||
anchors.fill: parent
|
||
anchors.topMargin: Style.current.xlPadding
|
||
anchors.bottomMargin: Style.current.halfPadding
|
||
anchors.leftMargin: Style.current.xlPadding
|
||
anchors.rightMargin: Style.current.xlPadding
|
||
spacing: Style.current.padding
|
||
clip: true
|
||
|
||
StatusBaseText {
|
||
id: title
|
||
Layout.preferredHeight: Constants.keycard.general.titleHeight
|
||
Layout.alignment: Qt.AlignHCenter
|
||
text: qsTr("Enter a new pairing code")
|
||
font.pixelSize: Constants.keycard.general.fontSize1
|
||
font.weight: Font.Bold
|
||
color: Theme.palette.directColor1
|
||
}
|
||
|
||
StatusBaseText {
|
||
Layout.preferredWidth: code0.width
|
||
Layout.alignment: Qt.AlignCenter
|
||
text: qsTr("Pairing code")
|
||
font.pixelSize: Constants.keycard.general.fontSize2
|
||
color: Theme.palette.directColor1
|
||
}
|
||
|
||
StatusPasswordInput {
|
||
id: code0
|
||
|
||
property bool showPassword: false
|
||
|
||
Layout.preferredWidth: Constants.keycard.general.keycardPairingCodeInputWidth
|
||
Layout.alignment: Qt.AlignCenter
|
||
placeholderText: qsTr("Enter code")
|
||
echoMode: showPassword ? TextInput.Normal : TextInput.Password
|
||
rightPadding: showHideIcon0.width + showHideIcon0.anchors.rightMargin + Style.current.padding / 2
|
||
|
||
onTextChanged: {
|
||
text = d.processText(text)
|
||
d.update()
|
||
}
|
||
|
||
onAccepted: {
|
||
if (d.allEntriesValid &&
|
||
(input.edit.keyEvent === Qt.Key_Return ||
|
||
input.edit.keyEvent === Qt.Key_Enter)) {
|
||
event.accepted = true
|
||
root.sharedKeycardModule.currentState.doPrimaryAction()
|
||
}
|
||
}
|
||
|
||
StatusFlatRoundButton {
|
||
id: showHideIcon0
|
||
visible: code0.text !== ""
|
||
anchors.verticalCenter: parent.verticalCenter
|
||
anchors.right: parent.right
|
||
anchors.rightMargin: 16
|
||
width: 24
|
||
height: 24
|
||
icon.name: code0.showPassword ? "hide" : "show"
|
||
icon.color: Theme.palette.baseColor1
|
||
|
||
onClicked: code0.showPassword = !code0.showPassword
|
||
}
|
||
}
|
||
|
||
Item {
|
||
Layout.fillWidth: true
|
||
Layout.preferredHeight: Style.current.padding
|
||
}
|
||
|
||
StatusBaseText {
|
||
Layout.preferredWidth: code1.width
|
||
Layout.alignment: Qt.AlignCenter
|
||
text: qsTr("Confirm pairing code")
|
||
font.pixelSize: Constants.keycard.general.fontSize2
|
||
color: Theme.palette.directColor1
|
||
}
|
||
|
||
StatusPasswordInput {
|
||
id: code1
|
||
|
||
property bool showPassword: false
|
||
|
||
Layout.preferredWidth: Constants.keycard.general.keycardPairingCodeInputWidth
|
||
Layout.alignment: Qt.AlignCenter
|
||
placeholderText: qsTr("Confirm code")
|
||
echoMode: showPassword ? TextInput.Normal : TextInput.Password
|
||
rightPadding: showHideIcon1.width + showHideIcon1.anchors.rightMargin + Style.current.padding / 2
|
||
|
||
onTextChanged: {
|
||
text = d.processText(text)
|
||
d.update()
|
||
}
|
||
|
||
onAccepted: {
|
||
if (d.allEntriesValid &&
|
||
(input.edit.keyEvent === Qt.Key_Return ||
|
||
input.edit.keyEvent === Qt.Key_Enter)) {
|
||
event.accepted = true
|
||
root.sharedKeycardModule.currentState.doPrimaryAction()
|
||
}
|
||
}
|
||
|
||
StatusFlatRoundButton {
|
||
id: showHideIcon1
|
||
visible: code1.text !== ""
|
||
anchors.verticalCenter: parent.verticalCenter
|
||
anchors.right: parent.right
|
||
anchors.rightMargin: 16
|
||
width: 24
|
||
height: 24
|
||
icon.name: code1.showPassword ? "hide" : "show"
|
||
icon.color: Theme.palette.baseColor1
|
||
|
||
onClicked: code1.showPassword = !code1.showPassword
|
||
}
|
||
}
|
||
|
||
StatusBaseText {
|
||
id: errorTxt
|
||
Layout.alignment: Qt.AlignHCenter
|
||
Layout.fillHeight: true
|
||
font.pixelSize: Constants.keycard.general.fontSize3
|
||
color: Theme.palette.dangerColor1
|
||
}
|
||
}
|
||
}
|