LedDisplay/OmobiDisplayApp/ressources/qml/PasswordInputDelegate.qml

119 lines
2.9 KiB
QML

import QtQuick 2.0
import QtQuick.Controls 2.9
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.0
ItemDelegate {
id: control
property string value: ""
property bool required: false
property color textColor: control.required && value === "" ? "red":control.Material.foreground
property string placeholderText: ""
property string repeatPlaceholderText: ""
property int minimumLength: 4
property int maximumLength: 4
onClicked: {
textField.text = value
textEditDialog.open()
}
Text {
anchors {
right: nextPageIconText.left
verticalCenter: parent.verticalCenter
rightMargin: control.padding
}
width: parent.width * 0.6
elide: Text.ElideRight
font.pixelSize: parent.font.pixelSize
horizontalAlignment: Text.AlignRight
text: "****"
}
Text {
id: nextPageIconText
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
rightMargin: control.padding
}
font.pixelSize: parent.height * 0.5
verticalAlignment: Text.AlignVCenter
text: ">"
}
Dialog {
id: textEditDialog
parent: Overlay.overlay
x: (parent.width - width) / 2
y: (parent.height - height) / 2
width: parent.width * 0.9
Material.theme: control.Material.theme
Material.accent: control.Material.accent
modal: true
title: control.text
contentItem: ColumnLayout {
TextField {
id: textField
Layout.fillWidth: true
placeholderText: control.placeholderText
text: control.value
color: text.length < 4 || text.length > 4 ? "red":control.Material.foreground
}
TextField {
id: repeatTextField
Layout.fillWidth: true
placeholderText: control.repeatPlaceholderText
text: control.value
color: repeatTextField.text !== textField.text ? "red":control.Material.foreground
}
}
footer: DialogButtonBox {
// alignment: Qt.AlignHCenter
buttonLayout: DialogButtonBox.GnomeLayout
Material.background: "transparent"
Button {
flat: true
enabled: !(textField.text.length < 4 || textField.text.length > 4) && textField.text === repeatTextField.text
text: "save"
DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
}
Button {
flat: true
text: "cancel"
DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
}
}
onAccepted: {
control.value = textField.text
}
}
}