File: TodoStore.qml

package info (click to toggle)
quickflux 1.1.3%2Bgit20201110.2a37acf-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,036 kB
  • sloc: cpp: 2,874; makefile: 26
file content (79 lines) | stat: -rw-r--r-- 1,577 bytes parent folder | download
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
/** Todo Item Store

  A centralized data store of Todo list.

 */
import QtQuick 2.0
import QuickFlux 1.1
import "../actions"

Store {
    property alias model: model

    property int nextUid: 4;

    ListModel {
        // Initial data
        id: model

        ListElement {
            uid: 0
            title: "Task Zero"
            done: true
        }

        ListElement {
            uid: 1
            title: "Task A"
            done: false
        }

        ListElement {
            uid: 2
            title: "Task B"
            done: false
        }

        ListElement {
            uid: 3
            title: "Task C"
            done: false
        }
    }

    Filter {
        // Filter - Add a filter rule to parent

        // Filter item listens on parent's dispatched signal,
        // if a dispatched signal match with its type, it will
        // emit its own "dispatched" signal. Otherwise, it will
        // simply ignore the signal.

        type: ActionTypes.addTask
        onDispatched: {
            var item = {
                uid: nextUid++,
                title: message.title,
                done: false
            }
            model.append(item);
        }
    }

    Filter {
        type: ActionTypes.setTaskDone
        onDispatched: {
            for (var i = 0 ; i < model.count ; i++) {
                var item  = model.get(i);
                if (item.uid === message.uid) {
                    model.setProperty(i,"done",message.done);
                    break;
                }
            }
        }
    }

}