From 54bb1c1c2be5fdd1b8e1eda7c9cd6fe40337800f Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 5 Sep 2021 16:23:41 +0200 Subject: Clean up field types --- Fields/Enum.qml | 69 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) (limited to 'Fields/Enum.qml') diff --git a/Fields/Enum.qml b/Fields/Enum.qml index cb49b3b..b594b88 100644 --- a/Fields/Enum.qml +++ b/Fields/Enum.qml @@ -5,54 +5,55 @@ import QtQuick.Controls 2.13 import '../util.js' as Util -Column { +Flow { id: control property var model - property int index: -1 - readonly property string value: index >= 0 ? model.values[index].name : '' + readonly property string value: + choices.checkedButton && choices.checkState !== Qt.Unchecked ? + choices.checkedButton.name : '' function set(val) { - for (var i = 0; i < model.values.length; i++) { - if (model.values[i].name === val) { - index = i - return true - } - } - index = -1 - } - - Keys.onPressed: { - for (var i = 0; i < model.values.length; i++) { - if (model.values[i].key === event.text) { - index = (index === i ? -1 : i) - event.accepted = true + choices.checkState = Qt.Unchecked + for (var i = 0; i < buttons.count; i++) { + if (buttons.itemAt(i).name === val) { + buttons.itemAt(i).checked = true break } } + return value === val } - Flow { - spacing: 5 - width: parent.width + spacing: 5 + + Keys.forwardTo: Array.from({ length: buttons.count }, (_, i) => buttons.itemAt(i)) + + ButtonGroup { id: choices } + Repeater { + id: buttons + + model: control.model.values + delegate: Button { + required property int index + required property var modelData + readonly property string name: modelData.name - ButtonGroup { id: buttons } + text: Util.addShortcut(name, modelData.key) - Repeater { - model: control.model.values - delegate: Button { - ButtonGroup.group: buttons - checkable: true - checked: control.index === index - focusPolicy: Qt.NoFocus + ButtonGroup.group: choices + checkable: true + focusPolicy: Qt.NoFocus - implicitWidth: implicitContentWidth + leftPadding + rightPadding - padding: 0 - leftPadding: 5 - rightPadding: leftPadding + implicitWidth: implicitContentWidth + leftPadding + rightPadding + padding: 0 + leftPadding: 5 + rightPadding: leftPadding - onClicked: control.index = (control.index === index ? -1 : index) - text: Util.addShortcut(modelData.name, modelData.key) + Keys.onPressed: { + if (modelData.key === event.text) { + checked = !checked + event.accepted = true + } } } } -- cgit v1.3