aboutsummaryrefslogtreecommitdiffstats
path: root/examples/universalinput/virtualgamepad/ButtonIsland.qml
blob: f8d3eb5fb3cf5c96dcd4e4deb7e1469ee7e00719 (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
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick

Item {
    property alias buttonA: buttonA
    property alias buttonB: buttonB
    property alias buttonX: buttonX
    property alias buttonY: buttonY

    width: 100
    height: 100

    onScaleChanged: {
        resize()
    }

    onXChanged: {
        resize()
    }

    onYChanged: {
        resize()
    }

    onWidthChanged: {
        resize()
    }

    onHeightChanged: {
        resize()
    }

    function resize() {
        let scale = Math.min(width, height) / 3

        buttonA.width = scale
        buttonA.height = scale

        buttonB.width = scale
        buttonB.height = scale

        buttonX.width = scale
        buttonX.height = scale

        buttonY.width = scale
        buttonY.height = scale

        let middleX = (width - scale) / 2
        let middleY = (height - scale) / 2

        buttonB.x = width - scale
        buttonB.y = middleY

        buttonY.x = middleX
        buttonY.y = 0

        buttonX.x = 0
        buttonX.y = middleY

        buttonA.x = middleX
        buttonA.y = height - scale
    }

    JoyButton {
        id: buttonA
        text: "A"
    }

    JoyButton {
        id: buttonB
        text: "B"
    }

    JoyButton {
        id: buttonX
        text: "X"
    }

    JoyButton {
        id: buttonY
        text: "Y"
    }
}