summaryrefslogtreecommitdiff
path: root/Event.qml
diff options
context:
space:
mode:
Diffstat (limited to 'Event.qml')
-rw-r--r--Event.qml123
1 files changed, 0 insertions, 123 deletions
diff --git a/Event.qml b/Event.qml
deleted file mode 100644
index da5c194..0000000
--- a/Event.qml
+++ /dev/null
@@ -1,123 +0,0 @@
-// SPDX-License-Identifier: Unlicense
-
-import QtQuick 2.12
-import QtQuick.Controls 2.13
-import QtQuick.Layouts 1.6
-
-import 'util.js' as Util
-
-// This is the delegate for event list items.
-ItemDelegate {
- id: control
-
- required property var model
- required property int index
- required property int time
-
- property alias fields: inputs.model // field definitions
- property bool editing: false
-
- clip: true
- padding: 2
-
- background: Rectangle {
- anchors.fill: parent
- color: highlighted ? Util.alphize(border.color, 0.1) :
- (index % 2 === 0 ? palette.base : palette.alternateBase)
- border {
- color: editing ? palette.highlight : palette.dark
- width: highlighted ? 1 : 0
- }
- radius: border.width
- }
-
- // Store current inputs in model.
- function store() {
- var values = {}
- for (var i = 0; i < fields.length; i++)
- values[fields[i].name] = inputs.itemAt(i).item.value
- model.values = values
- }
-
- onEditingChanged: {
- if (editing)
- forceActiveFocus()
- }
-
- // Try passing key to each field input in order.
- Keys.forwardTo: Array.from({ length: inputs.count }, (_, i) => inputs.itemAt(i).item)
-
- contentItem: ColumnLayout {
- anchors { left: parent.left; right: parent.right; margins: 5 }
-
- // Event time, tag and summary.
- RowLayout {
- Label {
- text: new Date(model.time).toISOString().substr(12, 9)
- font.pixelSize: 10
- Layout.alignment: Qt.AlignBaseline
- }
- Label {
- text: model.tag
- font.weight: Font.DemiBold
- Layout.alignment: Qt.AlignBaseline
- }
- Label {
- text: {
- var str = ''
- for (var i = 0; i < inputs.count; i++) {
- const field = inputs.model[i]
- const value = model.values[field.name]
- if (value && field.type !== 'TextArea')
- str += (field.type === 'Bool' ? field.name : value) + ' '
- }
- return str
- }
- elide: Text.ElideRight
- textFormat: Text.PlainText
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignBaseline
- }
- }
-
- // Inputs for event‐specific fields.
- GridLayout {
- flow: GridLayout.TopToBottom
- rows: inputs.count
-
- columnSpacing: 10
- visible: editing
-
- // Labels.
- Repeater {
- model: inputs.model
- delegate: Label {
- text: Util.addShortcut(modelData.name, modelData.key)
- Layout.alignment: Qt.AlignRight
- }
- }
-
- // Inputs.
- Repeater {
- id: inputs
- delegate: Loader {
- source: 'qrc:/Fields/' + modelData.type + '.qml'
-
- Layout.fillHeight: true
- Layout.fillWidth: true
-
- // Set input value to what is in the model each time the control is expanded.
- onVisibleChanged: {
- if (item && visible)
- item.set(control.model.values[modelData.name])
- }
-
- Binding {
- target: item; property: 'model'
- value: modelData
- }
- }
- }
- }
- }
-}