120 lines
2.9 KiB
QML
120 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
|
|
font.styleName: fontAwesome.name
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
text: "\uf105"
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|