summaryrefslogtreecommitdiffstats
path: root/examples/bluetooth/pingpong/assets/Board.qml
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)
    }
}