blob: 8d0d99c746545f74354e85f7cd4031f4ae1f418b (
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
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
// Copyright (C) 2014 BlackBerry Limited. All rights reserved.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick 2.0
import QtQuick.Window 2.1
Rectangle {
id: fullWindow
anchors.fill: parent
color: "black"
property double scaleFactor: Math.min(width, height)
Rectangle {
id: board
width: scaleFactor
height: scaleFactor
anchors.centerIn: parent
// Left pedal - server role
Rectangle {
id: leftblock
y: (parent.height/2)
width: (parent.width/27)
height: (parent.height/5)
anchors.left: parent.left
color: "#363636"
radius: width/2
MouseArea {
id: leftMouse
width: (board.width/2)
height: parent.height
anchors.horizontalCenter: parent.horizontalCenter
acceptedButtons: Qt.LeftButton
drag.target: leftblock
drag.axis: Drag.YAxis
drag.minimumY: 0
drag.maximumY: (board.height - leftblock.height)
}
}
// Right pedal - client role
Rectangle {
id: rightblock
y: (parent.height/2)
width: (parent.width/27)
height: (parent.height/5)
anchors.right: parent.right
color: "#363636"
radius: width/2
MouseArea {
id: rightMouse
width: (board.width/2)
height: parent.height
anchors.horizontalCenter: parent.horizontalCenter
acceptedButtons: Qt.LeftButton
drag.target: rightblock
drag.axis: Drag.YAxis
drag.minimumY: 0
drag.maximumY: (board.height - rightblock.height)
}
}
Rectangle {
id: splitter
color: "#363636"
anchors.horizontalCenter: parent.horizontalCenter
height: parent.height
width: parent.width/100
}
Text {
id: leftResult
text: pingPong.leftResult
font.bold: true
font.pixelSize: 30
anchors.right: splitter.left
anchors.top: parent.top
anchors.margins: 15
}
Text {
id: rightResult
text: pingPong.rightResult
font.bold: true
font.pixelSize: 30
anchors.left: splitter.right
anchors.top: parent.top
anchors.margins: 15
}
Rectangle {
id: ball
width: leftblock.width
height: leftblock.width
radius: width/2
color: "#363636"
x: pingPong.ballX * scaleFactor
y: pingPong.ballY * scaleFactor
}
}
// 1 - server role; left pedal
// 2 - client role; right pedal
property int roleSide: pingPong.role
onRoleSideChanged: {
if (pingPong.role == 1) {
rightMouse.opacity = 0.7
rightMouse.enabled = false
}
else if (pingPong.role == 2) {
leftMouse.opacity = 0.7
leftMouse.enabled = false
}
}
property bool deviceMessage: pingPong.showDialog
onDeviceMessageChanged: {
if (pingPong.showDialog) {
info.visible = true;
board.opacity = 0.5;
} else {
info.visible = false;
board.opacity = 1;
}
}
property double leftBlockY: leftblock.y
onLeftBlockYChanged: pingPong.updateLeftBlock(leftblock.y / scaleFactor)
property double leftBlockUpdate: pingPong.leftBlockY
onLeftBlockUpdateChanged: leftblock.y = pingPong.leftBlockY * scaleFactor
property double rightBlockY: rightblock.y
onRightBlockYChanged: pingPong.updateRightBlock(rightblock.y / scaleFactor)
property double rightBlockUpdate: pingPong.rightBlockY
onRightBlockUpdateChanged: rightblock.y = pingPong.rightBlockY * scaleFactor
Component.onCompleted: {
pingPong.updateLeftBlock(leftblock.y / scaleFactor)
pingPong.updateRightBlock(rightblock.y / scaleFactor)
}
}
|