-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.qml
114 lines (104 loc) · 3.64 KB
/
main.qml
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import QtQuick
import QtQuick.Controls
import QtQuick.Window
import QtQuick.Layouts
ApplicationWindow {
id: root
width: Screen.width > 1205 ? 1205 : Screen.width
height: Screen.height !== 681 ? width * 681 / 1205 : Screen.height
visible: true
Rectangle {
id: container
anchors.fill: parent
color: "gray"
onColorChanged: console.log("color changed")
ColumnLayout {
id: colLifeCycle
anchors.centerIn: parent
property alias fromAnotherThread: chkAnotherThread.checked
RowLayout {
id: rowCreate
onEnabledChanged: {
colLifeCycle.onCreateEnabled(enabled)
if (enabled) createStatus.text = "--"
}
Button {
id: btnCreate
text: colLifeCycle.fromAnotherThread ? "Construct Cast from another thread" : "Construct Cast from UI thread"
onClicked: rowCreate.create(chkAnotherThread.checked)
}
CheckBox {
id: chkAnotherThread
checked: false
text: "Invoked from another thread"
}
Rectangle {
width: btnCreate.width
height: btnCreate.height
color: root.getColor(createStatus.text)
Text {
id: createStatus
anchors.centerIn: parent
text: "--"
color: "black"
}
}
function create(anotherThread) {
if (cast_.create(anotherThread)) {
rowCreate.enabled = false
createStatus.text = "OK";
} else {
createStatus.text = "KO";
}
}
}
RowLayout {
id: rowRelease
enabled: false
onEnabledChanged: {
colLifeCycle.onReleaseEnabled(enabled)
if (enabled) releaseStatus.text = "--"
}
Button {
id: btnRelease
text: colLifeCycle.fromAnotherThread ? "Release Cast from another thread" : "Release Cast from UI thread"
onClicked: rowRelease.release()
}
Rectangle {
width: btnRelease.width
height: btnRelease.height
color: root.getColor(releaseStatus.text)
Text {
id: releaseStatus
anchors.centerIn: parent
text: "--"
color: "black"
}
}
function release() {
if (cast_.release()) {
rowRelease.enabled = false
releaseStatus.text = "OK";
} else {
releaseStatus.text = "KO";
}
}
}
function onCreateEnabled(enabled) {
if (!enabled) {
rowRelease.enabled = true;
}
}
function onReleaseEnabled(enabled) {
if (!enabled) {
rowCreate.enabled = true;
}
}
}
}
function getColor(txt) {
if (txt === "--") return "gray"
if (txt === "OK") return "green"
if (txt === "KO") return "red"
}
}