Files
pallectrum/electrum/gui/qml/components/Pin.qml
Sander van Grieken 2a13212ded implement auth by PIN and allow auth override to wallet password
by passing method='wallet' to auth_protect
2022-07-07 18:30:20 +02:00

91 lines
2.1 KiB
QML

import QtQuick 2.6
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.0
import org.electrum 1.0
import "controls"
Dialog {
id: root
width: parent.width * 2/3
height: parent.height * 1/3
x: (parent.width - width) / 2
y: (parent.height - height) / 2
modal: true
parent: Overlay.overlay
Overlay.modal: Rectangle {
color: "#aa000000"
}
focus: true
standardButtons: Dialog.Cancel
property string mode // [check, enter, change]
property string pincode // old one passed in when change, new one passed out
property int _phase: mode == 'enter' ? 1 : 0 // 0 = existing pin, 1 = new pin, 2 = re-enter new pin
property string _pin
function submit() {
if (_phase == 0) {
if (pin.text == pincode) {
pin.text = ''
if (mode == 'check')
accepted()
else
_phase = 1
return
}
}
if (_phase == 1) {
_pin = pin.text
pin.text = ''
_phase = 2
return
}
if (_phase == 2) {
if (_pin == pin.text) {
pincode = pin.text
accepted()
}
return
}
}
ColumnLayout {
width: parent.width
height: parent.height
Label {
text: [qsTr('Enter PIN'), qsTr('Enter New PIN'), qsTr('Re-enter New PIN')][_phase]
font.pixelSize: constants.fontSizeXXLarge
Layout.alignment: Qt.AlignHCenter
}
TextField {
id: pin
Layout.preferredWidth: root.width *2/3
Layout.alignment: Qt.AlignHCenter
font.pixelSize: constants.fontSizeXXLarge
maximumLength: 6
inputMethodHints: Qt.ImhDigitsOnly
echoMode: TextInput.Password
focus: true
onTextChanged: {
if (text.length == 6) {
submit()
}
}
}
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
}
}