aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickvisualdatamodel/data/onChanged.qml
blob: 71dc7d72d7f1143acde01fc7bbbd8ddebc090e65 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import QtQuick 2.0

VisualDataModel {
    id: vm

    property var inserted
    property var removed

    Component.onCompleted: {
        vm.inserted = []
        vm.removed = []
        vi.inserted = []
        vi.removed = []
        si.inserted = []
        si.removed = []
    }

    function verify(changes, indexes, counts, moveIds) {
        if (changes.length != indexes.length
                || changes.length != counts.length
                || changes.length != moveIds.length) {
            console.log("invalid length", changes.length, indexes.length, counts.length, moveIds.length)
            return false
        }

        var valid = true;
        for (var i = 0; i < changes.length; ++i) {
            if (changes[i].index != indexes[i]) {
                console.log(i, "incorrect index. actual:", changes[i].index, "expected:", indexes[i])
                valid = false;
            }
            if (changes[i].count != counts[i]) {
                console.log(i, "incorrect count. actual:", changes[i].count, "expected:", counts[i])
                valid = false;
            }
            if (changes[i].moveId != moveIds[i]) {
                console.log(i, "incorrect moveId. actual:", changes[i].moveId, "expected:", moveIds[i])
                valid = false;
            }
        }
        return valid
    }

    groups: [
        VisualDataGroup {
            id: vi;

            property var inserted
            property var removed

            name: "visible"
            includeByDefault: true

            onChanged: {
                vi.inserted = inserted
                vi.removed = removed
            }
        },
        VisualDataGroup {
            id: si;

            property var inserted
            property var removed

            name: "selected"
            onChanged: {
                si.inserted = inserted
                si.removed = removed
            }
        }
    ]

    model: ListModel {
        id: listModel
        ListElement { number: "one" }
        ListElement { number: "two" }
        ListElement { number: "three" }
        ListElement { number: "four" }
    }

    delegate: Item {}

    items.onChanged: {
        vm.inserted = inserted
        vm.removed = removed
    }
}