summaryrefslogtreecommitdiff
path: root/Fields/Enum.qml
blob: cb49b3b0b9410d82c531cb3141a3755bed7e151b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// SPDX-License-Identifier: Unlicense

import QtQuick 2.12
import QtQuick.Controls 2.13

import '../util.js' as Util

Column {
    id: control

    property var model
    property int index: -1
    readonly property string value: index >= 0 ? model.values[index].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
                break
            }
        }
    }

    Flow {
        spacing: 5
        width: parent.width

        ButtonGroup { id: buttons }

        Repeater {
            model: control.model.values
            delegate: Button {
                ButtonGroup.group: buttons
                checkable: true
                checked: control.index === index
                focusPolicy: Qt.NoFocus

                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)
            }
        }
    }
}