LedDisplay/app/ressources/qml/TextEditDialog.qml

211 lines
6 KiB
QML
Raw Normal View History

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.9
import QtQuick.Controls.Material 2.0
2020-10-18 15:08:12 +02:00
import de.itsblue.LedDisplayController 1.0
Dialog {
id: control
property bool editing
property var editingModel
property var editingModelData
parent: Overlay.overlay
x: (parent.width - width) / 2
y: (parent.height - height) / 2
width: parent.width * 0.9
height: Math.min(parent.height * 0.9, control.implicitHeight)
modal: true
title: editing ? qsTr("Edit text") : qsTr("New text")
onAccepted: {
if(editing) {
editingModelData.active = activeSwitch.checked
editingModelData.text = textTextField.value
editingModelData.runtime = runtimeSpinBox.value
editingModelData.color = colorColorPicker.value
editingModelData.alignment = alignmentComboBox.currentIndex
editingModelData.scroll = scrollSwitch.checked
editingModelData.scrollDirection = scrollDirectionComboBox.currentIndex
editingModelData.scrollSpeed = scrollSpeedSpinBox.value
editingModelData.scrollCount = scrollCountSpinBox.value
}
else {
editingModel.append(textTextField.value,
activeSwitch.checked,
runtimeSpinBox.value,
colorColorPicker.value,
2020-10-18 15:44:18 +02:00
alignmentComboBox.currentIndex,
scrollSwitch.checked,
2020-10-18 15:44:18 +02:00
scrollDirectionComboBox.currentIndex,
scrollSpeedSpinBox.value,
scrollCountSpinBox.value
)
}
}
onDiscarded: {
editingModel.remove(popup.editingModelData.index)
popup.close()
}
contentItem: Flickable {
implicitHeight: dataFieldsGridLayout.height
contentHeight: dataFieldsGridLayout.height
clip: true
boundsBehavior: Flickable.OvershootBounds
ScrollBar.vertical: ScrollBar {
interactive: false
}
ColumnLayout {
id: dataFieldsGridLayout
width: control.width * 0.9
SwitchDelegate {
id: activeSwitch
Layout.fillWidth: true
text: qsTr("Active")
}
TextInputDelegate {
id: textTextField
Layout.fillWidth: true
required: true
placeholderText: qsTr("Enter some text to be displayed")
text: qsTr("Text")
}
SpinBoxDelegate {
id: runtimeSpinBox
Layout.fillWidth: true
editable: true
2020-10-18 15:08:12 +02:00
from: 1
to: 3600
text: qsTr("Runtime (in s)")
}
ColorPickerDelegate {
id: colorColorPicker
Layout.fillWidth: true
text: qsTr("Color")
}
ComboBoxDelegate {
id: alignmentComboBox
Layout.fillWidth: true
2020-10-18 15:44:18 +02:00
model: [qsTr("left"), qsTr("center"), qsTr("right")]
text: qsTr("Alignment")
}
SwitchDelegate {
id: scrollSwitch
Layout.fillWidth: true
text: qsTr("Scroll")
}
2020-10-18 15:44:18 +02:00
ComboBoxDelegate {
id: scrollDirectionComboBox
Layout.fillWidth: true
model: [qsTr("from right to left"), qsTr("from left to right")]
text: qsTr("Scroll")
2020-10-18 15:44:18 +02:00
}
SpinBoxDelegate {
id: scrollSpeedSpinBox
Layout.fillWidth: true
from: 1
to: 10
text: qsTr("Scroll speed")
}
SpinBoxDelegate {
id: scrollCountSpinBox
Layout.fillWidth: true
2020-10-18 15:08:12 +02:00
from: 1
editable: true
text: qsTr("Scroll count")
}
}
}
footer: DialogButtonBox {
// alignment: Qt.AlignHCenter
buttonLayout: DialogButtonBox.GnomeLayout
Material.background: "transparent"
Button {
flat: true
enabled: textTextField.value !== ""
text: qsTr("save")
DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
}
Button {
flat: true
text: qsTr("cancel")
DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
}
Button {
visible: popup.editing
Material.foreground: Material.Red
flat: true
text: qsTr("delete")
DialogButtonBox.buttonRole: DialogButtonBox.DestructiveRole
}
}
function edit(model, modelData) {
editingModel = model
editingModelData = modelData
editing = true
reset()
activeSwitch.checked = editingModelData.active
textTextField.value = editingModelData.text
runtimeSpinBox.value = editingModelData.runtime
colorColorPicker.value = editingModelData.color
alignmentComboBox.currentIndex = editingModelData.alignment
scrollSwitch.checked = editingModelData.scroll
scrollDirectionComboBox.currentIndex = editingModelData.scrollDirection
scrollSpeedSpinBox.value = editingModelData.scrollSpeed
scrollCountSpinBox.value = editingModelData.scrollCount
open()
}
function add(model) {
editingModel = model
editing = false
reset()
open()
}
function reset() {
activeSwitch.checked = true
textTextField.value = ""
2020-10-18 15:08:12 +02:00
runtimeSpinBox.value = 1
colorColorPicker.value = "#ffffff"
alignmentComboBox.currentIndex = 0
scrollSwitch.checked = false
2020-10-18 15:44:18 +02:00
scrollDirectionComboBox.currentIndex = 0
scrollSpeedSpinBox.value = 5
2020-10-18 15:08:12 +02:00
scrollCountSpinBox.value = 1
}
}