summaryrefslogtreecommitdiffstats
path: root/examples/wayland/custom-extension/qml-client/main.qml
blob: da81055bcb2e1ab0e4680ff6153828dc4ace80ab (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
// Copyright (C) 2017 Erik Larsson.
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtQuick.Window
import io.qt.examples.customextension

Window {
    id: topLevelWindow
    title: "QML Client"
    visible: true
    width: 800
    height: 600

    property real fontSize: height / 50

    Column {
        anchors.centerIn: parent
        width: topLevelWindow.width / 4
        height: 2 * (width + topLevelWindow.height / 12)
        spacing: topLevelWindow.height / 12

        Rectangle {
            id: rect1
            color: "#C0FFEE"
            width: parent.width
            height: width
            clip: true

            Text {
                anchors.centerIn: parent
                text: "Press here to send spin request."
                font.pixelSize: fontSize
                width: parent.width
                height: parent.height
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                wrapMode: Text.WrapAtWordBoundaryOrAnywhere
            }

            TapHandler {
                onTapped: {
                    if (customExtension.active)
                        customExtension.sendSpin(topLevelWindow, 500)
                }
            }
        }

        Rectangle {
            id: rect2
            color: "#decaff"
            width: parent.width
            height: parent.height / 2
            clip: true

            Text {
                anchors.centerIn: parent
                text: "Press here to send bounce request."
                font.pixelSize: fontSize
                width: parent.width
                height: parent.height
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                wrapMode: Text.WrapAtWordBoundaryOrAnywhere
            }

//! [sendBounce]
            TapHandler {
                onTapped: {
                    if (customExtension.active)
                        customExtension.sendBounce(topLevelWindow, 1000)
                }
            }
//! [sendBounce]
        }
    }

//! [CustomExtension]
    CustomExtension {
        id: customExtension
        onActiveChanged: {
            registerWindow(topLevelWindow)
        }
        onFontSize: (window, pixelSize) => {
            topLevelWindow.fontSize = pixelSize
        }
    }
//! [CustomExtension]
}